lubaiUwU/DSH-WeChatClawBot0

dsh-wechat-clawbot

DSH bundle: WeChat floating-ball bridge (QR login, message relay, ClawBot model config)

包名
dsh-wechat-clawbot
版本
0.1.1
许可证
MIT
最近更新
2026年8月17日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:lubaiUwU/DSH-WeChatClawBot

{"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)。