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

微信桥接 doyokol/dsh-wechat-bridge

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

在微信里发消息,让本机 DSH 执行任务并回传结果

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add doyokol/dsh-wechat-bridge
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 21 处,展示前 18 条)
  • 发起网络请求
    native-context.mjs:150
    const req = http.request(base + pathname, { method: payload ? 'POST' : 'GET', headers }, res => {
  • 请求外部主机qt.gtimg.cn
    native-context.mjs:443
    const res = await fetch('https://qt.gtimg.cn/q=' + symbols.join(','), {
  • 发起网络请求
    native-context.mjs:443
    const res = await fetch('https://qt.gtimg.cn/q=' + symbols.join(','), {
  • 发起网络请求
    native-context.mjs:1204
    const req = http.get(base + '/events', res => {
  • 执行外部命令固定命令
    native-context.mjs:1312
    const child = spawn('wscript.exe', [START_VBS], { cwd: ROOT, detached: true, stdio: 'ignore', windowsHide: true });
  • 发起网络请求
    client.js:18
    const res = await fetch(BASE + path, options)
  • 写入剪贴板
    client.js:231
    try { await navigator.clipboard.writeText(value) } catch { throw new Error('浏览器不让写剪贴板,手动选中复制吧') }
  • 发起网络请求
    client.js:293
    const res = await fetch(BASE + '/api/log?lines=200')
  • 发起网络请求
    client.js:316
    const res = await fetch('/wechat-bridge/start', { method: 'POST' })
  • 发起网络请求
    server.mjs:96
    const req = http.request(url, { method, headers: h }, res => {
  • 执行外部命令来自配置/变量
    server.mjs:210
    execFileSync(candidate, ['-version'], { stdio: 'ignore' });
  • 执行外部命令来自配置/变量
    server.mjs:235
    execFileSync(ffmpeg, [
  • 执行外部命令来自配置/变量
    server.mjs:355
    execFileSync(ffmpeg, ['-y', '-loglevel', 'error', '-i', filePath, out], { stdio: 'pipe' });
  • 发起网络请求
    server.mjs:471
    const req = http.get(url, { headers: { authorization: 'Bearer ' + readerToken() } }, res => {
  • 执行外部命令固定命令
    server.mjs:515
    const out = execFileSync('powershell', ['-NoProfile', '-Command', script], { encoding: 'utf8', windowsHide: true });
  • 执行外部命令来自配置/变量
    server.mjs:525
    const child = spawn(exe, ['StartPort=' + port], { cwd: dir, detached: true, stdio: 'ignore', windowsHide: false });
  • 执行外部命令固定命令
    server.mjs:533
    const out = execFileSync('tasklist', ['/FI', 'IMAGENAME eq WeChatAgent.exe', '/NH'], { encoding: 'utf8' });
  • 发起网络请求
    test-send.mjs:30
    const req = http.request(url, { method: body ? 'POST' : 'GET', headers: h }, res => {
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:qt.gtimg.cn

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

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

把个人微信接进 DeepSeek Harness:自建 reader 收消息 + 自编译 hook 发消息,不依赖第三方客户端

README

由 DeepSeek 最新模型翻译生成
DSH × 微信 全权限桥接(自建通道) 把个人微信接进 DeepSeek Harness:在微信里发一句消息 = 给本机 DSH 派一个任务。它能跑命令、读改文件、截图,把结果(含截图、原图)直接发回微信。 不依赖任何第三方微信客户端:收消息用自建 reader.py(离线解密微信本地数据库),发消息用自编译的 version.dll(hook 拦截,监听 30002)。 DSH 侧默认用 standard 预设,工具不做白名单限制。 特性 - 收发都在自己手里:reader 读库收消息,hook 直发文本 / 原图 / 表情,不经过任何云端中转 - 原图不是缩略图:微信本地同一张图存三份(_h 原图 / 中图 / _t 缩略图),优先解 _h,实测能还原 1920×1080、1080×2740 - 像人一样聊天:断句分条发、句末不加句号、自然收尾发表情包、群聊默认潜水(唤醒词/@ 才开口) - 群聊有记忆:按群落 memory/group-<hash>.md,模型自己往里记群友画像 - 设置页面板:DSH 设置 →「微信桥接」,改白名单(可搜名字)、对话节奏、唤醒词、人格卡,点开就能编辑规则文件 - 思考过程单独留档:模型的思考段落到 workspace/thinking.jsonl,只在面板看,不发微信 架构
展开完整文档(README 剩余 1 节)
DSH × 微信 全权限桥接(自建通道)

把个人微信接进 DeepSeek Harness:在微信里发一句消息 = 给本机 DSH 派一个任务。它能跑命令、读改文件、截图,把结果(含截图、原图)直接发回微信。

不依赖任何第三方微信客户端:收消息用自建 reader.py(离线解密微信本地数据库),发消息用自编译的 version.dll(hook 拦截,监听 30002)。

DSH 侧默认用 standard 预设,工具不做白名单限制。

特性

- 收发都在自己手里:reader 读库收消息,hook 直发文本 / 原图 / 表情,不经过任何云端中转
- 原图不是缩略图:微信本地同一张图存三份(_h 原图 / 中图 / _t 缩略图),优先解 _h,实测能还原 1920×1080、1080×2740
- 像人一样聊天:断句分条发、句末不加句号、自然收尾发表情包、群聊默认潜水(唤醒词/@ 才开口)
- 群聊有记忆:按群落 memory/group-<hash>.md,模型自己往里记群友画像
- 设置页面板:DSH 设置 →「微信桥接」,改白名单(可搜名字)、对话节奏、唤醒词、人格卡,点开就能编辑规则文件
- 思考过程单独留档:模型的思考段落到 workspace/thinking.jsonl,只在面板看,不发微信

架构

微信(本机 4.1.10.27 副本) ├─ 发:version.dll(自编译 hook,127.0.0.1:30002) └─ 收:reader.py(离线读库,127.0.0.1:17891) ↕ server.mjs(桥接服务 127.0.0.1:17890:收发 + SSE + 面板 API) ↕ 本地 SSE / HTTP native-context.mjs(DSH 插件宿主半边:消息 → DSH 轮次) ↕ DSH agent(standard 预设;回复/图片经 server.mjs 发回微信)

端口:hook 30002、reader 17891、桥接 17890。健康检查 http://127.0.0.1:17890/health。

前置条件

| 需要 | 说明 |
| 微信 4.1.10.27 | hook 是按这个版本的偏移写的,换版本要重新适配 |
| 自编译的 version.dll | 放在微信副本目录里,随微信进程加载;源码见 vendor/(不随仓库分发) |
| Python 3 + pycryptodome | reader.py 解密微信本地库用 |
| DeepSeek Harness | 桌面版,插件以 profile bundle 形式挂载 |

runtime/(微信副本)、vendor/(hook 源码)、workspace/(运行时数据)、config.json(含密钥)都在 .gitignore 里,仓库只放代码。

安装

1. 克隆到任意目录:

git clone https://github.com/doyokol/dsh-wechat-bridge.git D:/AI/DSH-WeChat-Bridge

2. 生成配置:

cp config.example.json config.json

然后按下面「配置」一节填 dbPath / selfWxid / decryptKey / hookToken / pythonPath。

3. 挂进 DSH(二选一):

A. 作为 profile bundle(推荐,会在插件管理页出现)
dsh plugin --profile desktop add link:D:/AI/DSH-WeChat-Bridge

B. 手工:node_modules 建 junction + profile package.json 的 dsh.profile.bundles 加 dsh-wechat-bridge

4. 启动微信副本:start-wechat.bat(首次扫码登录,之后自动恢复)。
5. 启动收发服务:start-bridge-silent.vbs(无黑框)。
6. 重启 DSH,设置 →「微信桥接」里点「连接微信」自检(hook / reader / 白名单)。

配置(config.json)

从 config.example.json 复制,关键的几项:

| 键 | 说明 |
| dbPath / selfWxid | 微信数据目录(xwechat_files/<你的 wxid>)与自己的 wxid |
| decryptKey | 本地库解密密钥(本机 DPAPI 解出后落盘,别外传) |
| hookToken | hook 鉴权 token,读 runtime/wechat-4.1.10.27/wechatagent-hook.token |
| mediaKey | {code, aes}:微信重启后 kvcomm 派生不出 key 时的兜底,用来解图片 |
| pythonPath | 带 pycryptodome 的 python.exe |
| allow | 允许接管的会话(私聊 wxid_xxx、群 xxx@chatroom);空 = 谁都不理 |
| provider / model | DSH 侧用哪个渠道与模型 |
| mergeSeconds / privateMergeSeconds | 群聊 / 私聊的消息合并窗口(秒):窗口内连发几条算一次输入,只回一次 |
| groupGapSeconds | 群里两次开口的最小间隔 |
| wakeWords / wakeHoldSeconds | 群聊唤醒词(也可用 @)与被叫醒后保持清醒的秒数 |
| turnTimeoutMs | 单轮超时,0 = 不限时 |
| personaFile | 群聊人设文件,只在群会话注入 |
| maxChars | 注入 prompt 的最大字符数 |
| paused | 暂停处理(不删白名单) |

群聊行为

- 群里默认潜水:命中唤醒词或被 @ 才开口,之后 wakeHoldSeconds 内可以接话
- 距上次开口不足 groupGapSeconds,又没被点名 → 直接跳过
- 这轮判断不该接话时,模型只输出 [SKIP],插件把整条丢掉
- 群里只放只读工具 + 微信工具 + 记忆工具,bash/write/edit 之类由 tools.guard() 拒掉
- 群会话沙箱 workspace-write(只能改 workspace/),私聊默认全权限

图片

微信本地每张图有三份:<md5>_h.dat(原图)、<md5>.dat(中图)、<md5>_t.dat(缩略图)。
reader.py 的索引按 _h > 中图 > _t 挑,解出来写 workspace/media/in/<md5>.<ext>,以 [图片] <路径> 的形式进提示词,模型再调 read_image 看。

解密 key 从 kvcomm/key__*.statistic 派生;派生不出来时用 config.mediaKey 兜底。

文件

| 文件 | 作用 |
| server.mjs | 桥接服务:收消息、发消息、SSE、面板 API |
| reader.py | 自建收消息服务(离线解密 + 图片解密 + SSE 推送) |
| native-context.mjs | DSH 插件宿主半边(注册工具、拼提示词、跑轮次、发回复) |
| client.js / panel.html | DSH 设置页面板 / 独立面板页 |
| persona/本鲸.md | 群聊人设示例(可换成自己的) |
| config.example.json | 脱敏配置模板 |
| smoke.mjs / test-send.mjs | 自检脚本 |

已知边界

- 只适配微信 4.1.10.27;微信自动更新会顶掉钩子(仓库外的看门狗脚本负责还原)
- 钩子只监听 127.0.0.1,不对外暴露
- 原图直发更吃 vision token
- 群里连续发太多消息会被微信截断(经验值:单轮 ≤5 条)

免责声明

仅供个人学习与自用。使用前请自行评估账号风险;因使用本工具导致的账号异常、消息丢失等后果由使用者自负。

License

MIT
预览分享卡片长什么样 ↓doyokol/dsh-wechat-bridge
分享 · DeepSeek Harness Hub
doyokol/dsh-wechat-bridge

在微信里发消息,让本机 DSH 执行任务并回传结果

回到顶部