在微信里发消息,让本机 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 21 处,展示前 18 条)
- 发起网络请求native-context.mjs:150
const req = http.request(base + pathname, { method: payload ? 'POST' : 'GET', headers }, res => { - 请求外部主机qt.gtimg.cnnative-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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
doyokol/dsh-wechat-bridge
在微信里发消息,让本机 DSH 执行任务并回传结果
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 549已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,011已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 1,969已汉化DSH
70.7