前言¶
在 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