dsh-plugin-channels
Verified@showin2333/dsh-plugin-channels · v1.1.0-dsh.10 · MIT · Web UI
DeepSeek Harness plugin for iMessage, Telegram, Weixin and Discord
Install
dsh plugin add @showin2333/dsh-plugin-channels Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
Message Channels · DSH 渠道插件
长期插件分支:dsh-plugin。main 保留独立 macOS App;不要将本分支合入 main。
将 iMessage、Telegram、微信 iLink、Discord 消息送入 DeepSeek Harness(DSH) 的原生会话,并回传执行结果。当前版本适配 DSH 0.2.1-rc.2;engines.dsh 接受 >=0.2.1-rc.2 <0.3.0,开发依赖仍固定在经过验证的 RC。
DSH 负责 Agent、模型、工具、权限、执行队列、取消和会话日志;本插件负责消息渠道、固定身份绑定、去重和回复投递。宿主与浏览器端均为原生 Cordis 插件,没有独立平台、服务安装器或执行后端。
安装
需要 DSH 0.2.1-rc.2(engines.dsh 接受 >=0.2.1-rc.2 <0.3.0)。iMessage 通道额外要求 macOS 与本机 Messages;Telegram、微信 iLink、Discord 跨平台。
npm 包:@showin2333/dsh-plugin-channels。安装后以 bundle 形式挂载两条 Cordis 行(dsh-channels 与项目分组),浏览器面板由 dsh.client 自动发现。
原 npm 名称 @showin2333/dsh-channels 已迁至此名称。升级保留设置行 ID、渠道绑定与会话记录;先停止旧包,再切换依赖和模块引用,勿同时加载两个包。详见迁移指南。
- 直接安装:DSH → 插件 → 安装,输入
@showin2333/[email protected]。 - 市场安装:先启用
@deepseek-ai/dsh-experimental-plugin-market-bundle,在 插件 → 发现 → 添加索引源 填入下方地址,再从卡片安装。 - 本地开发:
pnpm install && npm run build,在 profile 的dependencies中以link:指向本仓库。
索引地址:https://cdn.jsdelivr.net/gh/ShoWin2333/agent-imessage@dsh-plugin/market/index.json
安装后不会自动连接任何渠道:先按「Desktop 管理面板」配置 workspace、权限预设和凭据引用,再显式启用绑定。升级需要先卸载再安装,DSH 目前没有原地更新动作。
当前闭环
- 四种渠道保留原有适配器与身份过滤:iMessage 的指定号码 DM、Telegram 的指定 Bot/Owner 私聊、微信的指定账号/Owner/上下文、Discord 的 Owner DM 或指定服务器/频道中的明确提及。
- 空闲时文字任务进入 DSH 原生 followup;同一渠道正在执行的轮次内,追加文字通过 steer 在下一步接收;宿主直接发起的轮次不会被渠道接管。渠道游标前进前等待 inbox 落盘。DSH 的
claimed事件关联单条输入和 turn,turn/end后显式 flush 再回传结果。 /cancel、/stop取消本绑定当前与排队的工作;/status查看绑定会话,/help查看命令。取消不等待外发完成。- 外部消息 ID 去重保存在 DSH storage domain;不同渠道、账号、Owner、目的地、工作区、权限配置之间不共用会话。
- 重启恢复已完成但未发送的结果;发送中崩溃或发送异常标为
uncertain,不自动重发。未完成的旧输入不自动重跑;恢复 Agent 后清理旧 inbox,防止新输入意外唤醒旧任务。
渠道审批与问答现已接入 DSH 原生处理器链:先让宿主处理,只在宿主没有处理器时转到当前渠道。/approve <凭据> 仅允许本次操作;/deny <凭据> 拒绝;/answer <凭据> <答案> 返回原生结构化问答。单题可用选项数字或 text:自由文本,多题使用包含所有题目 ID 的 answers JSON。计划审批完整展示详情,必须明确选择原选项;不会把自由文本或推荐项当成批准。
临时凭据绑定当前渠道、精确 Agent 实例和已认领的执行轮次,默认两分钟过期。未确认送达时不能批准;取消、断线、执行结束、卸载及重启都会使其失效。过期或重放命令不进入模型。宿主拒绝、取消、其他错误或 never 审批策略不会被渠道覆盖。具体规则见迁移指南。
消息附件的发送方法与渠道分片行为保留。此版的任务入口为文字,媒体工具和原生定时任务集成尚待后续补齐。
Agent 只读工具
插件注册一个只读工具 channel_status:返回已配置渠道的启停状态、连接阶段和稳定错误码,不含消息内容、凭据或会话标识。宿主未安装/提供 tools 服务时插件不会加载。
Desktop 管理面板
安装后按 ⌘, → 消息渠道,打开 DSH 设置侧栏中的独立插件设置项。面板提供四渠道、项目路径与宿主目录选择接口、宿主已配置模型与推理强度、凭据引用、身份限制、实际运行状态及显式启停。新增绑定默认停用;保存与启动是两个动作。保存使用宿主配置修订号,冲突或失败保留草稿,取消重新载入宿主已保存值。运行中的渠道也可编辑草稿;保存前须确认仅重新连接当前渠道,原会话历史保留。按左侧 Agent 项目选择消息入口,各渠道独立保存、取消及选择宿主模型;不设置模型覆盖时使用 DSH 默认。原生 Workspace 贡献会将精确属于本插件的会话归入对应项目,后续新会话自动挂接。
面板只保存凭据引用名称;名称存在不表示凭据已配置。默认模型跟随宿主,不创建新账号或密钥。权限预设必须已存在于宿主。跨字段和账号唯一性使用同一纯配置 Zod 校验;原生 Settings schema 保持声明式以兼容宿主二次序列化。外部绕过面板写入的非法配置会被运行入口拒绝,保留现有消费者并显示错误;持久化的非法外部配置须修正后才能正常重启。
插件组合
包声明 dsh.bundle.patch,默认 patch 加载插件但不配置任何绑定,因此不会连接真实渠道。宿主必须提供原生 Agent factory、session persistence、storage domain、credentials、Agent preset、default model 和 permission preset 服务。
以下为 示例配置,不会被本项目自动应用。credentialRef 仅引用宿主已有凭据;不要把 Token 或 Secret 写入 YAML。cwd 必须是现有绝对路径,permissionPreset 必须由宿主预先定义;插件不创建登录或扩大权限。
- id: dsh-channels
name: '@showin2333/dsh-plugin-channels'
config:
bindings:
- id: owner-telegram
cwd: /absolute/existing/workspace
permissionPreset: workspace-write
credentialRef: TELEGRAM_BOT_TOKEN
channel:
id: telegram
kind: telegram
botId: '123456'
ownerUserId: '234567'
其他渠道的 channel 字段:
# iMessage;credentialRef 指向 Photon project secret
channel:
id: imessage
kind: imessage
projectId: existing-photon-project
senderPhoneNumber: '+15551234567'
assignedPhoneNumber: '+15557654321'
# 微信;credentialRef 指向现有 iLink token;weixin 与 channel 同级
channel:
id: weixin
kind: weixin
accountId: existing-bot-account
weixin:
ownerUserId: existing-owner
baseUrl: https://ilinkai.weixin.qq.com/
# Discord;credentialRef 指向现有 bot token
channel:
id: discord
kind: discord
botId: '123456789012345678'
ownerUserId: '234567890123456789'
# 服务器模式同时填写这两项;省略两项为 Owner DM
guildId: '345678901234567890'
channelId: '456789012345678901'
同一个 Bot、微信账号或 Photon project 只能有一个消费者。真实切换前需核对旧消费者和备份。凭据轮换需由宿主更新引用并重新加载绑定。
本地验证
# 使用 pnpm 11.28.5(已核实的 Desktop 自带版本)
pnpm install --frozen-lockfile --ignore-scripts
npm run check
检查包括类型检查、合成消息/模拟渠道测试、构建和打包清单检查。所有 DSH 包固定在 0.2.1-rc.2,避免预发布 peer 范围混入其他 RC。cordis 和 zod 也固定在经过验证的版本。没有真实消息或付费模型测试脚本。