🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

微信机器人接入 xmanrui/dsh-weixin

DeepSeek Harness
xmanrui77 天前有提交已提供中文文档扫描:含敏感能力

扫码把微信机器人接入 Harness 收发消息

31.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xmanrui/dsh-weixin
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · other
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@xmanrui/dsh-weixin(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/16 13:44:16

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 30 处,展示前 30 条)
  • 读取本地文件
    lib/index.js:384
    const normalized = normalizeDocument(JSON.parse(await readFile(this.#path, "utf8")));
  • 删除本地文件
    lib/index.js:433
    await unlink(this.#path);
  • 写入本地文件
    lib/index.js:456
    await mkdir(dirname(this.#path), { recursive: true, mode: 448 });
  • 写入本地文件
    lib/index.js:458
    await writeFile(temporary, `${JSON.stringify(document, null, 2)}
  • 写入本地文件
    lib/index.js:463
    await rename(temporary, this.#path);
  • 发起网络请求
    lib/index.js:572
    const response = await fetch(new URL(`/api/${method}`, this.#baseUrl), {
  • 执行外部命令来自配置/变量
    lib/index.js:598
    this.#managedProcess = spawn(this.#dshBin, [
  • 读取本地文件
    lib/index.js:725
    this.#state = normalizeState(JSON.parse(await readFile2(this.#path, "utf8")));
  • 删除本地文件
    lib/index.js:768
    await unlink2(this.#path);
  • 写入本地文件
    lib/index.js:778
    await mkdir2(dirname2(this.#path), { recursive: true, mode: 448 });
  • 写入本地文件
    lib/index.js:780
    await writeFile2(temporary, snapshot, { encoding: "utf8", mode: 384 });
  • 写入本地文件
    lib/index.js:781
    await rename2(temporary, this.#path);
  • 删除本地文件
    lib/index.js:1806
    await unlink3(statePath(botId));
  • 执行外部命令固定命令
    bin/dsh-weixin.mjs:30
    const result = spawnSync('dsh', args, {
  • 写入本地文件
    plugin-src/client/build.mjs:36
    await mkdir(dirname(outputPath), { recursive: true });
  • 写入本地文件
    plugin-src/client/build.mjs:37
    await writeFile(outputPath, wrapped, 'utf8');
  • 写入本地文件
    plugin-src/host/build.mjs:11
    await mkdir(dirname(outputPath), { recursive: true });
  • 删除本地文件
    plugin-src/host/production.mjs:97
    await unlink(statePath(botId));
  • 读取本地文件
    src/config-store.mjs:94
    const normalized = normalizeDocument(JSON.parse(await readFile(this.#path, 'utf8')));
  • 删除本地文件
    src/config-store.mjs:149
    await unlink(this.#path);
  • 写入本地文件
    src/config-store.mjs:174
    await mkdir(dirname(this.#path), { recursive: true, mode: 0o700 });
  • 写入本地文件
    src/config-store.mjs:176
    await writeFile(temporary, `${JSON.stringify(document, null, 2)}\n`, {
  • 写入本地文件
    src/config-store.mjs:180
    await rename(temporary, this.#path);
  • 发起网络请求
    src/harness-client.mjs:136
    const response = await fetch(new URL(`/api/${method}`, this.#baseUrl), {
  • 执行外部命令来自配置/变量
    src/harness-client.mjs:165
    this.#managedProcess = spawn(this.#dshBin, [
  • 读取本地文件
    src/state-store.mjs:42
    this.#state = normalizeState(JSON.parse(await readFile(this.#path, 'utf8')));
  • 删除本地文件
    src/state-store.mjs:94
    await unlink(this.#path);
  • 写入本地文件
    src/state-store.mjs:104
    await mkdir(dirname(this.#path), { recursive: true, mode: 0o700 });
  • 写入本地文件
    src/state-store.mjs:106
    await writeFile(temporary, snapshot, { encoding: 'utf8', mode: 0o600 });
  • 写入本地文件
    src/state-store.mjs:107
    await rename(temporary, this.#path);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 扫码接入机器人
  • 收发微信消息

通过微信扫码把微信机器人接入 DeepSeek Harness

README

由 DeepSeek 最新模型翻译生成
本项目不维护了,有刚好的插件 dsh-im 了,支持微信、飞书、钉钉、QQ、企微、Slack、telegram、discord、WhatsApp:https://github.com/xmanrui/dsh-im dsh-weixin 中文 · English 通过微信扫码,把腾讯微信机器人接入 DeepSeek Harness。插件运行在 dsh web 的 Host 进程内:设置页只负责显示一次性二维码和脱敏状态,扫码得到的 bot_token 直接写入 Harness 凭据服务,随后由 Host 通过腾讯 iLink Bot API 长轮询收消息并把回答发回微信。 前提条件 - DeepSeek Harness 0.1.0-rc.6,Node.js >=22.19; - 手机微信账号已获得微信机器人功能。若微信里尚未出现相关入口,请先检查「我 → 设置 → 插件」;该功能由腾讯分批开放,插件代码无法绕过账号侧的开放范围; - 运行 Harness 的设备能够访问 *.weixin.qq.com。
展开完整文档(README 剩余 1 节)
本项目不维护了,有刚好的插件 dsh-im 了,支持微信、飞书、钉钉、QQ、企微、Slack、telegram、discord、WhatsApp:https://github.com/xmanrui/dsh-im

dsh-weixin

中文 · English

通过微信扫码,把腾讯微信机器人接入 DeepSeek Harness。插件运行在 dsh web 的 Host 进程内:设置页只负责显示一次性二维码和脱敏状态,扫码得到的 bot_token 直接写入 Harness 凭据服务,随后由 Host 通过腾讯 iLink Bot API 长轮询收消息并把回答发回微信。

前提条件

- DeepSeek Harness 0.1.0-rc.6,Node.js >=22.19;
- 手机微信账号已获得微信机器人功能。若微信里尚未出现相关入口,请先检查「我 → 设置 → 插件」;该功能由腾讯分批开放,插件代码无法绕过账号侧的开放范围;
- 运行 Harness 的设备能够访问 *.weixin.qq.com。

安装与扫码绑定

npx -y github:xmanrui/dsh-weixin install

安装后重启 dsh web,然后:

1. 打开「设置 → 插件 → 微信」;
2. 点击「扫码绑定微信」;
3. 使用手机微信扫描页面上的二维码,并在手机上确认;
4. 如果手机显示配对数字,在 Harness 页面输入该数字;
5. 页面显示“运行正常”后,在微信里向已绑定的机器人发送消息。

扫码成功后必须同时满足以下条件,页面才会显示在线:

1. 腾讯 iLink 返回 bot_token、机器人账号 ID、扫码用户 ID 和消息 API 地址;
2. bot_token 已写入 Harness Host 凭据服务;
3. 非敏感账号配置已原子保存;
4. 微信 notifystart 验证通过并启动 getupdates 长轮询;
5. 插件能访问当前 Harness Host。

可以重复扫码添加多个微信账号。每个账号拥有独立凭据引用、长轮询、同步游标、消息去重记录和 Harness 会话映射;一个账号重连或移除不会影响其他账号。

消息行为

- 只接受扫码确认用户发来的私聊消息,其他用户默认拒绝;
- 支持文字,以及微信已经附带文字识别结果的语音;
- 当前不把图片、文件、视频或无转写语音送入 Harness;
- 每个微信用户映射到持久 Harness 会话,支持连续对话;
- /new 清除当前会话映射,/status 检查连接,/help 显示帮助;
- Harness 回答较长时会拆成多条微信文本,每条都沿用入站消息的 context_token。

安全设计

- 浏览器永远不会收到或提交 bot_token、二维码内部令牌、扫码用户 ID 或凭据引用;
- Host RPC 仅允许 Harness loopback 页面调用;
- bot_token 只保存在 ctx.credentials,非敏感配置位于 $DSH_HOME/integrations/dsh-weixin/config.json;
- 微信消息 API 地址必须是 https://weixin.qq.com 或其子域,且只能使用默认 HTTPS 端口,防止授权令牌被发送到任意重定向主机;
- 配对数字只保存在当前 Host 内存,绑定完成、取消或失败后立即清除;
- 删除账号会停止它自己的长轮询,删除它自己的凭据、配置、同步游标和会话映射。

本地开发与验证

git clone https://github.com/xmanrui/dsh-weixin.git
cd dsh-weixin
npm install
npm run check
node bin/dsh-weixin.mjs install --source .

只验证腾讯扫码端点是否仍兼容,而不打印或保存二维码内容:

npm run verify:protocol

完整人工验收需要在 Harness 设置页完成一次手机扫码,再从微信发送一条测试消息并确认 Harness 回答返回。自动测试覆盖请求头与协议字段、二维码/配对码状态机、凭据回滚、长轮询生命周期、消息上下文、用户授权、RPC 脱敏、多账号删除隔离和客户端输入校验。

协议来源与许可

微信 iLink 请求格式基于腾讯官方 MIT 项目 Tencent/openclaw-weixin 2.4.6 适配;本项目移除了 OpenClaw 运行时依赖,改用 DeepSeek Harness 的 Host RPC、凭据服务和会话 API。具体来源版本见 THIRD_PARTY_NOTICES.md。本项目本身使用 MIT License。

Connect Tencent Weixin bots to DeepSeek Harness through QR-code authorization. The plugin runs inside the dsh web Host process. The browser receives only a one-time QR image and redacted status; the resulting bot_token is written directly to the Harness credential provider.

Install

npx -y github:xmanrui/dsh-weixin install

Restart dsh web, open Settings → Plugins → Weixin, generate a QR code, scan it with Weixin, confirm on the phone, and enter the displayed pairing digits if requested. The account is ready when the page reports a healthy iLink long-poll connection.
微信机器人功能必须已经对手机账号开放。腾讯独立推送该功能;账号不符合条件时,本插件无法为其开启。

当前版本支持直接文本消息,以及已包含微信转写的语音消息。按账号隔离凭据、同步游标、去重和 Harness 会话。完整行为、安全模型和验证命令见中文部分。
预览分享卡片长什么样 ↓xmanrui/dsh-weixin
分享 · DeepSeek Harness Hub
xmanrui/dsh-weixin

扫码把微信机器人接入 Harness 收发消息

回到顶部