前言¶
在 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
典型用法¶
- 安装
dsh-wechat-assistant并完成微信群监听配置。 - 按上文命令安装本插件,重启
dsh web。 - 在 设置 → 微信路由 填写规则,或编辑
settings.yaml中wechat-agent-router段。 - 为不同业务准备对应 Agent 预设(提示词、知识库、MCP 等),规则里的
agent填预设 id。 - 对新群或尚未聊过的空白群会话,保存配置后会按规则补正;已在该群有过对话的会话保持原预设。
适用场景与注意¶
适合:多个微信群需要不同 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