lubaiUwU/DSH-WeChatClawBot ↗★ 0
dsh-wechat-clawbot
DSH bundle: WeChat floating-ball bridge (QR login, message relay, ClawBot model config)
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:lubaiUwU/DSH-WeChatClawBot说明文档
阅读完整 README ↗{"phase":"logged_in","message":"已恢复登录(使用已保存的凭证)",...} 或 {"phase":"waiting_qrcode",...}
### 安装脚本做了什么
1. `wechat-gateway/` 内 `npm install`(安装 `qrcode` 依赖)。
2. 为 **`dsh-wechat-bot` 和 `dsh-wechat-bridge`** 建立 `node_modules/@deepseek-ai/*` 依赖垫片(软链/junction 到 `$DSH_HOME/profiles/node_modules`)——DSH 按真实路径解析插件,两个包都需要垫片才能找到 `@deepseek-ai/{cordis,schemastery,...}`。`dsh plugin add` 会在 `prepare` / `postinstall` 里自动做这一步。
3. 把插件软链进 `$DSH_HOME/profiles//node_modules/`。
4. 在该 profile 的 `cordis.patch.yml` 注入 `wechat-bot` / `wechat-ui` 两行(若文件是空的 `[]` 则整文件替换,避免无效 YAML)。
卸载:删掉 `cordis.patch.yml` 中对应段与 `profiles//node_modules/` 下对应链接,重启即可;`~/.dsh-wechat/` 删除即退出登录。
## 📱 使用
- **收消息**:微信消息进入**独立的微信对话区**(GUI 侧边栏可见,不会混入你的 GUI 聊天);同对话区上下文连续,**重启 DSH 自动恢复历史记忆**。
- **切换对话**:微信发 `/new`、`/新对话`、`/新会话`,或悬浮球面板点「新对话」→ 新建对话区(旧对话保留);其余时间一直沿用当前对话。
- **ClawBot 使用模型**:面板「快捷选择」列出已配密钥的模型(自动检测密钥状态),或「自定义填写」Provider/模型,选思考强度(off/high/max),保存后**只对微信回合生效**、重启保留;选「跟随 DSH 默认」再保存即清除配置。
- **新联系人**:白名单为空 = 允许所有;陌生人消息会先收到提示,并在面板出现「批准/忽略」。
## ⚙️ 配置
`$DSH_HOME/profiles//cordis.patch.yml`:
```yaml
- insert:
- id: wechat-bot
name: dsh-wechat-bot
config:
gatewayPort: 51235 # 微信网关端口
modelPort: 51236 # 模型配置端点端口
timeoutMs: 300000 # 单回合超时
maxMessageChars: 20000
approval: reject # 回合内审批:自动拒绝并注明(可在 GUI 重跑)
- id: wechat-ui
name: dsh-client-wechat-ui
网关环境变量(wechat-gateway/gateway.mjs):PORT(默认 51235)、STATE_DIR(默认 ~/.dsh-wechat)、UNAPPROVED_REPLY(未授权自动回复文案)、LOG_LEVEL(debug/info)。
🧪 开发与测试
- 语法:
node --check;网关/插件零构建(纯 JS ESM)。 - 会话结算单元测试:
node dsh-wechat-bridge/settle.test.mjs(覆盖 turn/end 结算、超时、报错、丢弃兜底、模型覆盖等场景,共 7 项)。 - 网关可独立运行调试:
cd wechat-gateway && npm install && node gateway.mjs。 - 修改宿主插件或网关后需重启 DSH 生效;修改
client.js(悬浮球)同样重启生效(boot 图缓存)。
🛠️ 排障
| 现象 | 处理 |
|---|---|
| 没有悬浮球 | 确认已装进正在运行的那个 profile(Desktop 用 desktop,CLI 用 web)并重启过应用 |
| DSH Desktop 双击闪退 | 多为 dsh-wechat-bridge 找不到 @deepseek-ai/schemastery。更新到本仓库最新版后重装:dsh plugin --profile desktop add github:lubaiUwU/DSH-WeChatClawBot。临时:给 dsh-wechat-bridge/node_modules/@deepseek-ai/ 建与 bot 相同的 junction 垫片 |
| 面板「无法连接网关」 | 网关没起来。DSH Desktop(Electron)必须用 ELECTRON_RUN_AS_NODE=1 拉起网关(0.1.1 已内置)。检查 netstat -ano | findstr 51235 是否 LISTENING;看日志 wechat-gateway: 行 |
| 登录后重启又要扫码 | 正常情况会自动恢复;若出现「登录已失效」说明 token 被微信侧吊销,需重扫 |
| 微信发消息没反应 | 面板确认状态为「已连接」;新联系人需先批准;日志看 dsh-wechat-bot: 行 |
| 回复失败提示 | 登录态失效:面板解绑后重新扫码,或删 ~/.dsh-wechat/accounts/ |
| 模型配置不生效 | 确认面板保存成功;配置只对微信发起的回合生效(GUI 手动回合不受影响) |
| 想清空所有状态 | 删除 ~/.dsh-wechat/(凭证/模型/会话映射一并清除) |
📄 许可证
MIT。协议核心(iLink 客户端)源自 @tencent-weixin/openclaw-weixin(腾讯官方渠道插件,MIT)。
⚠️ 免责声明:本项目仅供学习与个人自动化研究。使用个人微信账号自动化存在账号风控/封号风险,请使用小号并自行承担后果。本项目与腾讯、DeepSeek 无官方关联。
📱 使用
- 收消息:微信消息进入独立的微信对话区(GUI 侧边栏可见,不会混入你的 GUI 聊天);同对话区上下文连续,重启 DSH 自动恢复历史记忆。
- 切换对话:微信发
/new、/新对话、/新会话,或悬浮球面板点「新对话」→ 新建对话区(旧对话保留);其余时间一直沿用当前对话。 - ClawBot 使用模型:面板「快捷选择」列出已配密钥的模型(自动检测密钥状态),或「自定义填写」Provider/模型,选思考强度(off/high/max),保存后只对微信回合生效、重启保留;选「跟随 DSH 默认」再保存即清除配置。
- 新联系人:白名单为空 = 允许所有;陌生人消息会先收到提示,并在面板出现「批准/忽略」。
⚙️ 配置
$DSH_HOME/profiles//cordis.patch.yml:
- insert:
- id: wechat-bot
name: dsh-wechat-bot
config:
gatewayPort: 51235 # 微信网关端口
modelPort: 51236 # 模型配置端点端口
timeoutMs: 300000 # 单回合超时
maxMessageChars: 20000
approval: reject # 回合内审批:自动拒绝并注明(可在 GUI 重跑)
- id: wechat-ui
name: dsh-client-wechat-ui
网关环境变量(wechat-gateway/gateway.mjs):PORT(默认 51235)、STATE_DIR(默认 ~/.dsh-wechat)、UNAPPROVED_REPLY(未授权自动回复文案)、LOG_LEVEL(debug/info)。