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
羽毛球分组比赛记分
小程序二维码

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

小夜