前言¶
在 DeepSeek Harness(DSH)里同时接 QQ 与微信时,常见做法是各用一座 IM 桥:QQ 侧多为 SnowLuma OneBot 桥,微信侧多为 WeChatAgent hook。两条链路各自写日志、各自有控制台,Agent 在一端回答「另一端刚才说了什么」时,往往只能人肉翻两份文件。宿主或网关端口在重启、占用自增后漂移,硬编码探活也容易误报。下面介绍社区插件 dsh-fish-hub(维护者 minrose-314,目录分类为「记忆」):它不替代桥去连 IM,而是把两桥消息增量并入同一追加式事件账本,并提供跨端查询工具与本地总控台。
这是什么¶
dsh-fish-hub 是面向 DSH / Cordis bundle 的 QQ / 微信多端互通中枢插件。定位上更像个人自动化流水线里的「家用电器」:消息收发仍由外部桥完成;插件负责汇聚、观测、配置与闸门。统一账本为 JSONL,可人眼审、可用 grep;总控台默认监听 http://127.0.0.1:3212。仓库采用 MIT 许可证,当前 package 版本为 0.1.0,要求 dsh ≥0.2.0-rc.2、node ≥22;ops 脚本以 PowerShell 为主,文档标注为 Windows-first。
它解决什么问题¶
- QQ 与微信各一套日志、各一个控制台、各一份会话状态,跨端对照成本高。
- 宿主 / 网关端口漂移(重启换端口、占用自增),固定端口探活不可靠。
- 需要临时开关装饰类能力时,不愿动整个 profile 并重启全家。
核心功能¶
统一事件账本¶
插件增量解析 QQ 桥日志 ~/qq-bridge/state/bridge.log 与 WeChatAgent 的 hook.log,写入同一 data/events.jsonl(追加式,带游标断点续读)。字段包括时间、通道(qq / wechat / op)、方向(in / out)、会话、发送者、正文、消息 ID;配置变更、桥重启等操作(op)单独成流,便于回放。
Agent 查询工具¶
| 工具 | 用途 | 风险 |
|---|---|---|
fish_hub_state |
多端体检:两桥 / 宿主 / 微信网关在线情况、会话与工作模式、账本条数等 | 只读 |
fish_hub_events |
跨端消息回读:按通道 / 会话 / 关键词过滤,时间序返回(含本端发出) | 只读 |
五合一本地总控台¶
在 http://127.0.0.1:3212 提供五个页签:账本(过滤瀑布流)、QQ 仿真(唤醒参数、必回复词,保存写桥 config 并备份)、微信(工作模式 / 回复门槛等)、插件装卸(TOGGLEABLE 白名单内装饰类能力可实时开合,其余核心项上锁)、审计(决策日志)。端口无人监听时,桌面启动脚本可降级为独立救援实例。
端口漂移自适应¶
宿主健康检查跟随 qq-bridge config 中的 dsh.baseUrl 实时读取;微信 OneBot 网关探活以 ports.onebot 为基准并向 +1 / +2 邻带扫描。
ops 换代链¶
restart-dsh.ps1 提供带缓冲的重启编排(可用 state/cancel-restart 取消),并处理桥票据与重启接口相关问题;桥单独重启约十几秒断连,不整包惊扰 DSH / QQ 本体。
代码分层(README 架构)¶
index.mjs 分层容错装配
├─ soul/ 人格记忆层(persona-memory,作者标注为个人件)
├─ bridge/ IM 工具层(微信直发 / 通道体检 / 近况回读,白名单目标)
└─ hub/ 账本 + 总控台 + 状态聚合
ops/ 换代 / 重启编排脚本
soul/、bridge/ 含个人向硬编码;二次分发需替换或配置化。微信目标已可通过 data/targets.json 配置。
安装与启用¶
前提:已有 QQ 桥(SnowLuma / OneBot,日志在 ~/qq-bridge/state/)与 WeChatAgent hook。本插件不自行连接 IM。
- 安装插件并重启宿主:
dsh plugin --profile <profile> add github:minrose-314/dsh-fish-hub
本地开发可使用 file: 路径挂载;装完需重启 DSH,总控台随宿主在 :3212 启动。
- 复制并填写会话 id:
cp targets.example.json data/targets.json
-
若使用仓库中的
cordis.patch.yml,需将其中 workspace、agent 等挂载路径从作者本机示例改为你的真实目录(README「本地化配置」第 0 步)。 -
浏览器打开
http://127.0.0.1:3212:账本开屏即录,健康指示可在总控台查看。
可选环境变量(资料原文):
FISH_HUB_WX_ROOT/FISH_BRIDGE_WX_ROOT:微信数据根,默认D:/WeChatAgent/data/workspaceFISH_WX_TARGETS_FILE:targets 文件位置
典型用法¶
- 让 Agent 调用
fish_hub_state做跨端体检,再调用fish_hub_events按会话或关键词拉最近消息,避免手工打开两份日志。 - 在总控台 账本 页用通道 / 会话 / 关键词过滤,与 JSONL 文件内容对照审计。
- 在 QQ 仿真 / 微信 页改桥侧参数并保存(会备份 config);装饰类能力在 插件装卸 页切换,无需改 profile 重启全家。
- 需要有序重启 DSH 与桥时,按仓库
ops/中 PowerShell 脚本说明操作,必要时用state/cancel-restart取消计划中的重启。
适用场景与注意¶
适合谁:已在 DSH 上同时跑 QQ 桥与 WeChatAgent、希望 Agent 与人工都能从单一账本读跨端上下文,并愿意在本机维护桥与 hook 的开发者。
运行边界:
- 服务只绑定
127.0.0.1;data/含聊天明文,audit.log、backups/含操作史与旧 config,均不应提交版本库。 - 插件以当前 dsh 进程权限运行;安装前请阅读源码与 MIT 许可证,并自行评估 IM 自动化与平台条款风险。
- 已知限制:QQ 出站消息在账本中可能只记到「成功 N/M 条」,正文未入库(桥日志形态所限);
soul/bridge工具面偏个人向,无完整配置向导。
外部依赖(不随插件安装):SnowLuma QQ 桥(读 bridge.log,调本地 :3100 console API,需 x-console-token)、WeChatAgent、DSH host ≥0.2.0-rc.2。
结尾¶
dsh-fish-hub 把 QQ / 微信两桥的历史汇入同一 JSONL 账本,用 fish_hub_state / fish_hub_events 支撑跨端查询,并用 :3212 总控台集中观测与闸门操作。社区目录页:https://www.skillhub.cn/plugins/minrose-314/dsh-fish-hub;源码与完整说明:https://github.com/minrose-314/dsh-fish-hub。DSH 生态强调「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。