dsh-wechat-pro:把 DSH 接入微信的 ClawBot 通道插件

前言

做 DSH 开发时,很多操作最终都会落到消息交互上:查看会话、切换工作区、处理工具审批、发送文件、查看连接状态。如果这些动作只发生在 Web 端,开发时的上下文切换会比较频繁。

bwhite55/dsh-wechat-pro 是一个 DeepSeek Harness(DSH)进程内微信 ClawBot 通道插件,目标是把 DSH 接到微信里,让你在微信中继续与真实 DSH 会话交互。它的定位可以概括为:把 DSH 变成微信里的一只「龙虾」。

这是什么

dsh-wechat-probwhite55 维护,许可证为 MIT,版本号为 0.1.0

它是一个 DSH 进程内微信 ClawBot 通道插件,核心能力包括:

  • 微信扫码连接,凭证 24h 自动续连并到期提醒。
  • 微信里的会话与 Web 共享真实 DSH 会话,可跨端续接,属于 Codex 式附着。
  • 在微信内切换工作区、切换工作路径、切换模型和思考强度。
  • 在微信内执行 harness 原生命令,例如 /plan/permission/compact/goal/feedback/export
  • 把高风险工具调用审批转发到微信,回复 /yes 允许、/no 拒绝。
  • 实时推送思考、工具调用等过程事件,最终答复长文自动分片。
  • 支持微信与电脑之间的文件收发。
  • agent 可通过 weixin_send 工具向微信推送消息。

运行环境要求 Node >=22,peerDependencies 要求 @deepseek-ai/cordis ^4.0.1 等 DSH 相关包。

核心功能

扫码连接与续连

插件通过微信 ClawBot 配对连接。连接后,凭证可自动续连,并有到期提醒。

如果 dsh web 在隐藏窗口中运行,终端里看不到二维码,可以通过状态接口获取二维码链接:

http://127.0.0.1:3080/api/dsh-wechat-pro/status

响应里的 qrLink 是当前登录二维码链接。若需要强制重新扫码,可以调用:

POST /api/dsh-wechat-pro/connect

会话共享

微信里新建或切换的会话,是真实 DSH 会话,不是单独维护的一套影子会话。

常用操作包括:

  • /new <名字>:当前工作区内新建会话并切换。
  • /attach <序号|会话ID>:附着 Web 已有会话,实现跨端续接。

这样可以先在一端建立上下文,再在微信端继续同一会话。

工作区切换

微信内支持两类工作区操作:

  • /workspace:在注册工作区间切换,通常通过回复数字选择。
  • /workdir <路径>:切换到任意工作路径,并自动注册为工作区。

这适合在不同项目目录之间来回切,而不用重启或切换 Web 页面。

模型与思考强度

微信内支持按会话切换模型和思考强度:

  • /model:切换模型,下一轮生效。
  • /thinking:切换思考强度,下一轮生效。

输出等级也可以用 /level [级别] 切换,可选 minimalnormalverbose

harness 原生命令

微信内可以直接执行 harness 原生命令,例如:

/plan
/permission
/compact
/goal
/feedback
/export

这些命令不是额外封装的快捷方式,而是直接在 DSH 会话中执行。

工具审批转发微信

当 DSH 触发高风险工具调用时,审批提示会转发到微信。

在微信中回复:

/yes

表示允许。

回复:

/no

表示拒绝。

如果同时存在多个待审批项,可以回复:

允许 <4位码>

来精确选择某一条审批。

流式输出与长文分片

思考、工具调用等过程事件可以实时推送到微信。最终答复如果较长,会自动分片。

微信单条消息约有 2048 字符限制,插件的 replyMaxChars 默认为 3800,超出后会分片发送。

长答复还有一个降级策略:maxReplyChunks 默认为 8。如果分片数超过预算,会降级为「首片 + 完整内容落盘为文件发送」,避免完整内容丢失。

媒体收发

电脑侧可以向微信发送文件:

/send <路径> [说明]

微信侧收到的图片、文件、视频、语音,会自动下载、解密并落盘。

此外,agent 可以使用 weixin_send 工具,在任务过程中随时向微信推送消息。

安装与启用

先安装插件,再启动 Web:

dsh plugin --profile web add github:bwhite55/dsh-wechat-pro
dsh web

启动后,在微信中添加 ClawBot/龙虾,扫二维码配对,就可以开始对话。

如果在隐藏窗口中运行 dsh web,可以通过状态接口拿到二维码:

http://127.0.0.1:3080/api/dsh-wechat-pro/status

也可以强制重新扫码:

POST /api/dsh-wechat-pro/connect

典型用法

下面这些指令来自插件说明,可以在微信中直接使用。

查看帮助、状态和连接剩余时间:

/help
/status
/time

切换工作区:

/workspace

按提示回复数字,即可选择目标工作区。

切换任意工作路径:

/workdir <路径>

新建会话并切换:

/new <名字>

附着 Web 已有会话:

/attach <序号|会话ID>

切换模型:

/model

切换思考强度:

/thinking

切换输出等级:

/level minimal
/level normal
/level verbose

发送电脑文件到微信:

/send <路径> [说明]

处理高风险审批:

/yes
/no
允许 <4位码>

执行 harness 原生命令:

/plan
/permission
/compact
/goal
/feedback
/export

配置项

插件提供配置项,也支持 DSH_WXBOT_* 环境变量。

常见配置项包括:

  • autoConnect
  • allowFrom
  • dataDir
  • baseUrl
  • replyMaxChars
  • streamLevel
  • mirrorWebTurns
  • replyTimeoutMs
  • announceToAgent

其中几个比较关键的点:

  • allowFrom:用于控制允许接入的微信用户。建议只放行自己的微信号。
  • replyMaxChars:默认 3800。超出后会自动分片。
  • mirrorWebTurns:默认只推送微信发起的回合;如果设置为 true,Web 发起的回合也会推送到微信。
  • streamLevel:可配置为 minimalnormalverbose。微信内也可以用 /level 覆盖。资料中对默认值存在不一致表述,这里不确认默认值;如果更关注发送额度,建议选择 minimal

发送限制与额度风险

腾讯 iLink 对单条入站消息的回复发送有额度限制。

如果过程消息发送过多,尤其是 normalverbose 下每个工具调用都推送一条,可能触发:

sendMessage ret=-2 prepare failed

后续发送可能会被拒。因此,若不确定额度情况,优先选择 minimal,只接收最终答复与错误信息。

发送失败时,关键消息会自动重试一次,并记录到:

dataDir/logs/wechat-pro.log

数据与安全

使用前建议明确本地会保存哪些数据:

  • 凭证文件 weixin-auth.json 含 bot token,等于以该微信身份收发消息的凭据,不要外传。
  • 联系人注册表、媒体、日志保存在 dataDir 对应目录。
  • 发送失败日志位于 dataDir/logs/wechat-pro.log
  • 控制路由 /api/dsh-wechat-pro/* 仅监听回环地址,LAN 暴露会被拒绝。

插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

建议保持 DSH 自身权限为 workspace-write,并用 allowFrom 只放行自己的微信号。

本地测试

插件支持 mock iLink 本地测试和自动化测试,包括通道冒烟、harness 集成、真实模型 e2e。

先安装依赖并构建:

pnpm install
pnpm run build

可以运行 mock iLink:

node tests/test-mock-ilink.mjs --port 8899

也可以运行通道冒烟测试:

node tests/channel-smoke.mjs

如果运行真实模型 e2e 测试,需要设置 DEEPSEEK_API_KEY,并会消耗少量配额。

结尾

dsh-wechat-pro 的价值在于把 DSH 的会话、工作区、模型切换、工具审批、文件收发等能力接到微信里,同时保持与 Web 端共享真实 DSH 会话。它适合需要在消息入口中持续使用 DSH 的开发者。

目录页:https://www.skillhub.cn/plugins/bwhite55/dsh-wechat-pro

GitHub:https://github.com/bwhite55/dsh-wechat-pro

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye