dsh-fish-hub:QQ / 微信双桥消息汇入同一 JSONL 账本

前言

在 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。

  1. 安装插件并重启宿主:
dsh plugin --profile <profile> add github:minrose-314/dsh-fish-hub

本地开发可使用 file: 路径挂载;装完需重启 DSH,总控台随宿主在 :3212 启动。

  1. 复制并填写会话 id:
cp targets.example.json data/targets.json
  1. 若使用仓库中的 cordis.patch.yml,需将其中 workspace、agent 等挂载路径从作者本机示例改为你的真实目录(README「本地化配置」第 0 步)。

  2. 浏览器打开 http://127.0.0.1:3212:账本开屏即录,健康指示可在总控台查看。

可选环境变量(资料原文):

  • FISH_HUB_WX_ROOT / FISH_BRIDGE_WX_ROOT:微信数据根,默认 D:/WeChatAgent/data/workspace
  • FISH_WX_TARGETS_FILE:targets 文件位置

典型用法

  1. 让 Agent 调用 fish_hub_state 做跨端体检,再调用 fish_hub_events 按会话或关键词拉最近消息,避免手工打开两份日志。
  2. 在总控台 账本 页用通道 / 会话 / 关键词过滤,与 JSONL 文件内容对照审计。
  3. 在 QQ 仿真 / 微信 页改桥侧参数并保存(会备份 config);装饰类能力在 插件装卸 页切换,无需改 profile 重启全家。
  4. 需要有序重启 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 / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye