dsh-wechat-agent-router:按微信群名把会话路由到不同 Agent 预设

前言

在 DeepSeek Harness(DSH)里接微信,常见做法是装 dsh-wechat-assistant:它负责监听群、收发消息、串行队列等。但创建群会话时,桥接代码会固定把 agentPreset 写成 wechat。若你希望「对接群走 IoT 专用 Agent、总结群走归档 Agent」,而其余群仍用默认微信助手预设,改助手源码或 fork 维护成本都偏高。

下面介绍 dsh-wechat-agent-router(npm 包名 dsh-wechat-agent-router,仓库 let-mi-think/wechat-agent-router)。它只做一件事:按微信群名决定该群会话用哪个 Agent 预设;监听、读消息、@ 判定、归档、分片回复等仍全部交给 dsh-wechat-assistant,本插件一行不改。

这是什么

维护者 let-mi-think。插件运行在 DSH 的 host 平面,提供设置分区「微信路由」,没有 preset 平面——它不会进入 Agent 组合,只在 host 侧干预「这个群的会话用哪个预设」这一值。

功能上依赖已安装的 dsh-wechat-assistant:本插件不监听、不收发消息。未装微信助手时插件仍可加载,但面板群列表为空,没有可路由对象。

核心功能

路由规则

  • 群名 → Agent 预设 id:支持 contains(默认,不区分大小写)与 exact 精确匹配。
  • 规则自上而下,第一条命中者生效。
  • 可选 defaultAgent 作兜底;空串表示不干预,沿用微信助手原本点名的 wechat。

零侵入实现

dsh-wechat-assistant 创建群会话时会调用 apiProxy.sessions.create 并传入 agentPreset: 'wechat'。本插件在 host 平面仅包装 sessions.create:按 sessionId 反查群名、算出目标预设、改写 agentPreset 后放行。

群与会话一一对应:sessionId = 'wechat-group-' + sha256(群名).slice(0,32)(与助手侧算法一致,仓库内有回归测试锁住字面量)。

生效语义

  • DSH 规定 agentPreset.select 仅允许在会话还没跑过 turn 时使用;已有历史的群会话不会被改动(面板显示「已有历史」)。
  • 插件做两件事:① 包装 sessions.create,让新会话从一开始就用对预设;② 启动后及每次保存配置后,扫描现有群会话,对 blank === true 且预设不对 的会话做补正。
  • 改配置对新会话即时生效,无需重启 DSH。

配置界面

安装并重启 dsh web 后,设置 → 微信路由(与「Agent 管理」并列)。可查看每个监听群当前实际预设、路由算出的目标,以及是否一致。

安装与启用

宿主要求:dsh 0.1.0-rc.7(见包内 dsh.engines.dsh);Node ^22.19.0 || ^24.0.0。客户端产物 lib/client.js 随包分发,安装时无需构建。

官方安装命令:

dsh plugin --profile web add dsh-wechat-agent-router

装完重启 dsh web,设置里会出现 微信路由 分区。请先确保已安装并配置好 dsh-wechat-assistant,否则没有群可路由。

配置写在 ~/.dsh/settings.yaml 本插件段(只读微信助手的 groups 以获知群列表,不修改助手段):

wechat-agent-router:
  enabled: true            # 关闭 = 完全不干预
  defaultAgent: ''         # 兜底;空串 = 不干预(沿用 wechat)
  rules:                   # 自上而下,第一条命中者生效
    - match: 对接           # 群名关键字
      mode: contains       # contains(默认)| exact
      agent: iot
    - match: 群聊总结
      mode: exact
      agent: archive-agent

典型用法

  1. 安装 dsh-wechat-assistant 并完成微信群监听配置。
  2. 按上文命令安装本插件,重启 dsh web。
  3. 在 设置 → 微信路由 填写规则,或编辑 settings.yaml 中 wechat-agent-router 段。
  4. 为不同业务准备对应 Agent 预设(提示词、知识库、MCP 等),规则里的 agent 填预设 id。
  5. 对新群或尚未聊过的空白群会话,保存配置后会按规则补正;已在该群有过对话的会话保持原预设。

适用场景与注意

适合:多个微信群需要不同 Agent 能力(专用知识库、不同 MCP、不同系统提示),且希望继续用官方微信助手做传输层。

已知限制(来自 README):

  • 粒度是「群 = 一条会话 = 一个 Agent」,不能在同一群内按消息内容换 Agent。
  • 不支持私信;助手 Python 端只接受群聊目标。
  • 桥接每条消息会把模型强制选成全局 modelProvider/modelName,会覆盖 Agent 预设里的模型;若模型也要随路由变化,需额外处理。
  • 若上游改动 sessionId 算法,路由可能匹配不到群并退化为「不干预」(不报错但不生效)。
  • 包装失败时会在日志与面板顶部给出明确提示,而非静默失败。

插件以当前 DSH 进程权限运行。安装前建议查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境与合规要求。DSH 社区插件目录为独立站点(如 SkillHub 条目页),与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-wechat-agent-router 把「按群选 Agent」收敛成 host 侧的路由与配置,复用 dsh-wechat-assistant 的全部消息链路。需要按群分流预设时,可按官方安装命令接入,并在设置或 YAML 中维护规则。

  • 目录页:https://www.skillhub.cn/plugins/let-mi-think/wechat-agent-router
  • GitHub:https://github.com/let-mi-think/wechat-agent-router
羽毛球分组比赛记分
小程序二维码

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

小夜