Repository navigation
Releases
Releases · Shr-CS/dsh-wechat-channel
dsh-wechat-channel v0.1.1
dsh-wechat-channel v0.1.1
微信公众号通道插件:在微信里发指令操控 DeepSeek Harness,并把结果推回微信。
零运行时依赖(只用 Node 内置的 fetch/crypto/http),只声明一个 @deepseek-ai/cordis peerDependency。
工作方式
微信 App ──发消息──▶ 腾讯服务器 ──HTTPS 回调──▶ cloudflared 隧道 ──▶ 本插件
│
① 立刻被动回复「已收到」(≤5 秒)
② 后台跑 DSH 会话(可能几分钟)
③ 客服消息接口把结果推回微信
安装
方式一:用下面这个 .tgz(不需要等 npm)
npm install ./dsh-wechat-channel-0.1.1.tgz
# 或者让 DSH 直接从解压后的目录加载
# dsh plugin --profile web add link:<解压出的绝对路径>方式二:从 GitHub 仓库
git clone https://github.com/Shr-CS/dsh-wechat-channel.git
dsh plugin --profile web add link:<克隆下来的绝对路径>装完需要重启 dsh web 才会加载(patchReload: live 只管补丁层,不管新包)。
配置
在 <DSH_HOME>/profiles/web/cordis.patch.yml 里:
- id: wechat
config:
token: 你自定的一个字符串 # 必须与公众号后台填的 Token 一致
appId: wx******** # 测试号的 appID(异步回复必需)
appSecret: ********
path: /wechat-mp # 刻意避开 /wechat,见下
allowFrom: [] # openid 白名单,空=全部拒绝
requireWhitelist: true⚠️ 两个实测踩到的坑
- 包名不能叫
dsh-wechat—— npm 上已有同名第三方包。DSH 的插件世代系统按名字解析依赖,
你的link:会在插件恢复时被替换成.generations/live/dsh-wechat+<版本>的 junction,
加载的就不是你这份代码了。本包因此命名dsh-wechat-channel。 - 路由不能占用
/wechat/status—— 那个第三方包注册了/wechat/qr与/wechat/status,
而 DSH 的 webserver 对重复路由直接抛错,会让本插件的 effect 整体失败、静默不激活。
本插件用独立前缀/wechat-mp,两者可以共存。
硬约束:微信回调必须公网可达
回调用腾讯的服务器发起,不是你的手机。所以局域网内手机和电脑同一个 WiFi 没有任何用。
只想要「手机控制 DSH」且只在局域网内,请用 @linxin666/dsh-remote-web-ui 的手机浏览器方案。
测试
npm test # 82 项:签名排序、CDATA 注入、白名单、5 秒死线、token 缓存与并发去重、
# 失效重试、长文分条、每用户串行、超时取消、会话淘汰,以及完整异步链路安全模型
配对设备 = 完全控制凭据。 DSH 的 agent 能执行命令、读写文件,而本插件把它暴露到公网。
allowFrom 白名单是唯一准入控制,回调入口有 SHA1 签名校验(定长比较,错误一律 403),
状态端点需要 ?key=<token> 且绝不回显 token。