dsh-chatnode-wechat:从微信操作 DSH 智能体

前言

DSH(DeepSeek Harness)把智能体能力拆成插件。当 DSH profile 已经跑起来后,终端里看状态、发指令、确认权限仍然受限于当前设备和当前窗口。dsh-chatnode-wechat 解决的是另一个入口问题:把 DSH profile 接到微信个人账号,让你在微信里继续聊天、监控会话、停止当前轮次,并直接回复权限请求。

它通过腾讯 iLink bot gateway(ilinkai.weixin.qq.com)连接微信。README 中提到,该机制与 hermes-agentOpenClaw 使用的方式相同。由于这是非官方网关,使用前需要单独考虑账号隔离、权限范围和共存问题。

这是什么

  • 项目:Jesse-njx/dsh-chatnode-wechat
  • 包名:@dsh-cowork/chatnode-wechat
  • 版本:0.1.0
  • 许可证:MIT
  • 定位:DeepSeek Harness 的 iLink gateway + conversation node bundle
  • 作用:连接一个 DSH profile 到一个微信个人账号,实现聊天、监控、审批。

这个 bundle 包含两个可拆分使用的 Cordis 插件:

  • wechat-gatewayWechatGateway):iLink 服务层,提供 QR login、authenticated long-poll、reconnect/backoff、send retry + rate-limit circuit、typing indicator,以及 encrypted CDN media download/upload(downloadImage / sendImage)。
  • wechat-conversation-node:微信与 DSH 之间的 bridge,负责 allowlist gate、session targeting、commands、digest outbound 和 approvals。

整体链路可以这样理解:

WeChat ⇄ iLink ⇄ wechat-gateway ⇄ wechat-conversation-node ⇄ DSH agent session

核心功能

1、QR login 与凭据管理

通过 pnpm login 打印 QR URL,用微信扫码并确认。凭据通过 dsh credentials service 存储,而不是写在 patch 文件里。

2、双向文本与图片

普通文本会路由给当前 active agent。入站图片会被下载、解密并交给 agent;出站图片通过 /send <path> 发回当前联系人。

3、会话目标控制

支持用命令管理 DSH session:

  • /sessions 列出带编号的会话
  • /use N 切换 active session
  • /new <prompt> 创建新的 agent + session 并启动
  • /stop 取消当前 active turn
  • /status 查看 agent status 和 session summary

4、聊天内权限确认

当 DSH 发出 permission request 时,可以在微信里用 /yes/no 回答。

5、摘要式进度反馈

插件以 digest-style messages 报告进度,而不是把每一次 tool call 原样刷屏。

6、强制 allowlist

allowFrom 是必填项,且没有宽松默认值。非 allowlist 发送者的消息会被记录并忽略。

安装与启用

package.json 声明 node >=20。按 README 给出的命令安装并构建:

git clone https://github.com/Jesse-njx/dsh-chatnode-wechat.git
cd dsh-chatnode-wechat
pnpm install && pnpm build
dsh plugin --profile <your-profile> add .

这里的 <your-profile> 需要替换为你要挂载插件的 DSH profile。

然后登录微信账号:

pnpm login

该命令会打印 QR URL。用微信扫码并确认后,登录凭据会写入 $DSH_HOME/.credentials.yaml,经由 dsh-credentials-local 保存。README 说明会写入:

WEIXIN_ACCOUNT_ID
WEIXIN_BOT_TOKEN
WEIXIN_BASE_URL

启动时 bundle 会解析这些凭据,并自动开始 polling。

典型用法

只要已经存在一个 session,默认目标是最近一次 session。可以直接发普通文本或图片,也可以用命令控制。

操作 说明
普通文本 路由到 active agent
图片 下载、解密、保存,并把路径交给 agent
/sessions 列出带编号的 session
/use N 切换到第 N 个 session
/new <prompt> 创建新的 agent + session,并启动
/stop 取消当前 active turn
/status 查看 agent status 和 session summary
/send <path> 把本地图片发给当前联系人
/yes / /no 回答权限请求
/help 查看命令列表

配置要点

allowFrom 是硬性 allowlist,必填,没有 permissive default。README 中给出的配置示例如下:

# profile patch (cordis.patch.yml)
plugins:
  dsh-chatnode-wechat:
    allowFrom: ["<your-wechat-id>"]   # hard allowlist, REQUIRED, no default
    digestIntervalSec: 300            # heartbeat summary while a turn runs
    approvalTimeoutSec: 600           # approval prompt timeout → default deny
    maxMessageChars: 2000             # WeChat bubble cap (protocol limit)
    sendChunkDelayMs: 1500            # throttle between outbound bubbles
    # cwd: /path/to/workspace         # working dir for `/new` sessions
    # mediaDir: /path/to/media        # inbound image dir (default $DSH_HOME/attachments/wechat)
    # agentPreset: <preset-name>      # agent preset for `/new` sessions
    # agentProvider / agentModel: ... # model route for `/new` agents

几个关键点:

  • allowFrom:只允许指定微信发送者。非 allowlist 消息会被记录并忽略,不会喂给模型。
  • digestIntervalSec:turn 运行期间的 heartbeat summary 间隔。
  • approvalTimeoutSec:权限请求等待超时;README 示例中说明超时后 default deny。
  • maxMessageChars:微信消息气泡长度上限。
  • sendChunkDelayMs:出站消息之间的节流间隔。
  • mediaDir:入站图片目录,默认为 $DSH_HOME/attachments/wechat/

权限确认

微信个人账号没有按钮,因此权限请求会被渲染成编号文本,并在聊天中等待回答。README 中的示例形式如下:

#1 需要你的确认
工具: bash
原因: run a destructive command
回复 /yes 同意,/no 拒绝(仅一条待确认时也可回复 1/2)
超时未回复将自动拒绝。

/yes 表示允许这一次;/no 表示拒绝;如果只有一条待确认请求,也可以按提示回复 12。桥接层只回答当前由该微信用户驱动的 agent 的请求,其他请求会沿着 answerer chain 继续传递。

适用场景与注意

适合场景:

  • 你已经有 DSH profile,希望在微信里继续和 agent 对话。
  • 需要查看 session、切换 session、停止当前 turn。
  • 需要把本地图片发给当前联系人,或者把图片发给 agent 处理。
  • 希望在手机上完成简单的权限确认。

使用前需要注意:

  • 一个微信账号只允许一个 poller。如果同一微信账号上再跑另一个实例、hermes-agentOpenClaw,可能导致 HTTP 403 和消息丢失。建议使用专用微信账号。
  • 该插件走非官方 iLink gateway / protocol。README 提醒腾讯可能限制账号,因此应使用可以接受风险的专用账号。
  • allowFrom 必须配置。不要把它当成默认放行所有微信联系人的入口。
  • DSH 目前是 developer preview。README 和本仓库依赖中,@deepseek-ai/* 系列版本固定在 0.1.0-rc.6
  • 插件会随当前 DSH 进程运行,因此安装前应检查源码、配置项和许可证。本项目许可证为 MIT。
  • 凭据通过 dsh credentials service 存储,不应写进 patch 文件。

结尾

dsh-chatnode-wechat 的价值在于给 DSH profile 增加一个微信侧入口:文本和图片可以双向走,session 可以用命令切换,权限请求可以聊天内确认,进度以摘要消息呈现。它不是官方应用商店里的成品应用,而是 DSH 插件生态下的一个社区 bundle。

GitHub:

https://github.com/Jesse-njx/dsh-chatnode-wechat

项目资料给出的目录页地址为:

https://www.skillhub.cn/plugins/Jesse-njx/dsh-chatnode-wechat

社区目录页是独立站点,不等同于官方应用商店。

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

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

小夜