前言¶
在 DSH 裏做多智能體協作,常見做法是開多個會話、各自粘貼人設,或在外部腳本里串行調用模型。這類做法很難統一「誰該說話」、也很難把事實、共識和工具調用留在同一條可覈對鏈路上。下面介紹維護者 wangshouyong 的工作流類插件 dsh-roundtable(側欄顯示爲「專家團隊」):把多個帶人設、崗位和工具白名單的角色拉進同一羣聊或私聊,模型與調用走宿主 ctx.llm 或原生 session,插件不直連網關、不保存密鑰。
這是什麼¶
dsh-roundtable 是 DeepSeek Harness(DSH)插件,在側欄提供「專家團隊」面板:新建角色、建羣、私聊、@ 點名、查看任務板。倉庫與品牌名爲 dsh-roundtable;npm 包名爲 @dabuliu_wsy/dsh-im,插件 id 與數據目錄仍爲 dsh-im(.dsh-im/、DSH_IM_* 環境變量),以兼容已有數據與配置。
當前版本 0.2.0,要求 Node ≥ 20,許可證 MIT,README 標明項目開發中(數據格式與接口仍可能變化)。GitHub 倉庫:wangshouyong/dsh-roundtable;社區目錄頁:skillhub.cn 插件頁。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
羣聊、私聊與界面¶
三欄 IM:左會話列表,中聊天流(按日期分組,用戶消息靠右),右欄 Tab 切換成員、任務板、候選、執行。支持建羣、邀請、關聯工作區、DM、@ 點名;附件支持圖片 ≤8MB、文件 ≤20MB(可粘貼/拖拽)。私聊單窗右側展示角色資料(人設、職責、模型、可用工具等)。角色編輯可選 DSH 已配置模型、內置能力與宿主來源組/單工具授權、預設或本地上傳頭像。深色模式跟隨 DSH 有效主題(讀宿主投影)。插件 CSS 作用域爲 .dsh-im-root,不污染宿主樣式。
發言權仲裁¶
角色發言需過仲裁,而非多開對話框各自搶話。優先級爲:點名獨佔 > 回覆對象 > 職責命中 > 活躍度補位;wait 只停本輪、不插話。默認串行地板(併發發言關閉)。
上下文、記憶、事實與共識¶
上下文分層:摘要(L1 舊消息壓縮 + L2 不可壓縮事實)、窗口預算按模型 contextWindow 分配(羣級按最小成員窗口統一壓)、角色狀態快照(承諾/待辦/決定/立場)。可尋址記憶層含消息索引投影、claim 弱狀態、memory_search / memory_expand 兩個記憶工具(默認 shadow,需顯式開啓才注入 prompt)。事實與共識經規則 + LLM 雙路抽取,帶哈希冪等與 supersede/retract;共識只注入仍有效條目;任務板歸檔不復活。
工具與原生 session¶
內置五能力:read / search / write / check / memory(無 shell)。宿主第三方工具(瀏覽器、MCP 等)按來源組 + 單工具顯式授權,默認不授予;run_check 僅跑本倉 vitest/tsc,白名單參數、不經 shell、60s 超時。默認開啓原生 session:每個「角色 × 羣」一個 DSH 原生會話,角色可真實調工具;空閒 30 分鐘釋放;授權或工具可見性變化時重建。若宿主缺 ctx.agents 或 tools.register / tools.guard 任一能力,整體回退 ctx.llm。
可觀測與穩定性¶
執行軌跡、兩階段回執(intent/outcome + 規範化 hash + basedOnSeq)、metrics.jsonl、失敗 turn 可導出復現包、黃金回放測試。模型調用 120s 超時;Origin 同源校驗;請求體 2MB 上限;壞 state.json 清洗;加載/保存失敗明確報錯。
安裝與啓用¶
插件以當前 DSH 進程權限運行;安裝前應閱讀源碼與 MIT 許可證,自行評估工具授權與數據落盤範圍。README 註明目前主要在 Windows 上的 DSH Desktop 實測通過,其它平臺未驗證。
方式一:從源碼接入(README 推薦)¶
git clone https://github.com/wangshouyong/dsh-roundtable.git
cd dsh-roundtable
npm install
npm run build
dsh plugin --profile desktop add ./
dsh --profile desktop
重啓後側欄出現「專家團隊」。新建角色時選擇 DSH 設置裏已配好的模型(與輸入框旁選擇器同一份目錄)。
方式二:從 Release 包安裝¶
在 Releases 下載含 dist/、lib/client.js、cordis.patch.yml、dsh-plugin.json 的構建包,解壓後:
dsh plugin --profile desktop add <解壓後的目錄>
方式三:git 地址安裝(需配置 allowBuilds)¶
dsh plugin --profile desktop add git+https://github.com/wangshouyong/dsh-roundtable.git
首次可能報 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED,需將報錯中的 key 原樣寫入 profile 的 pnpm-workspace.yaml(例如 ~/.dsh/profiles/desktop/pnpm-workspace.yaml)後重跑。若不想改 pnpm 配置,用方式一或方式二。
方式四:npm(尚未發佈)¶
dsh plugin --profile desktop add @dabuliu_wsy/dsh-im
README 寫明 尚未發佈到 npm;發佈前可用方式一、二、三。
開發調試(倉庫內):
npm run dev # 開發預覽,內置內存假模型,默認 5173 端口
npm test
npm run gate # typecheck + 測試 + build + 打包內容校驗
配置要點¶
- 模型:全部來自 DSH 已配置的 provider/model;解析不到則報錯需重選。
- 工具授權:角色編輯器按「內置能力 → 宿主來源組 → 單工具」勾選,默認全不授予;契約見倉庫
docs/TOOL-GRANTS.md。 - 數據根:面板標題旁「工作區」下拉可切換/註冊;數據按 DSH 工作區存放在
<工作區>/.dsh-im/。
常用可選環境變量(節選):
| 變量 | 默認 | 作用 |
|---|---|---|
DSH_IM_NATIVE_SESSION |
開 | 設 0 關閉原生 session,退回 ctx.llm |
DSH_IM_NATIVE_TTL_MS |
30 分鐘 | 原生會話空閒釋放時間 |
DSH_IM_TURN_BUDGET_MS |
240000 | 單輪工具循環總時長預算 |
DSH_IM_MAX_TOOL_ROUNDS |
50 | 單輪工具循環硬頂 |
瀏覽器控制台實驗開關(刷新生效):localStorage['dsh-im:retrieval'](off / shadow / on)控制按需檢索是否進 prompt;localStorage['dsh-im:memory'] 控制記憶層句柄是否注入;默認均爲 shadow。
典型用法¶
1、安裝並啓動 DSH Desktop(dsh --profile desktop),在側欄打開「專家團隊」。
2、新建角色:填寫人設與崗位,選擇 DSH 已配置模型,按需勾選工具授權(默認不授予第三方工具)。
3、建羣或發起私聊,在輸入框發送消息或使用 @ 點名;在右欄查看成員、任務板、候選與執行軌跡。
4、切換「工作區」下拉,使不同 DSH 工作區使用各自的 .dsh-im/ 數據目錄。
羣級數據目錄結構(README 摘錄):
.dsh-im/
├ state.json
├ calibration-samples.jsonl
└ groups/<threadId>/
├ events.jsonl
├ facts.json
├ receipts.jsonl
├ metrics.jsonl
└ attachments/
角色只能讀寫自己羣的 groups/<threadId>/;.dsh-im 其餘內容對角色禁讀。羣消息會進入該角色模型上下文;若授權 MCP/瀏覽器等工具,相關內容會交給對應工具,合規性需自行評估。
適用場景與注意¶
適合:需要在同一 DSH 工作區內組織多角色討論、任務板與事實/共識分層、且希望工具調用可審計、可回放的 workflow 場景。
注意:項目開發中,原生 session 依賴宿主能力,升級 DSH 後可能需要跟進插件版本;實驗特性(檢索、記憶注入、token 校準)默認只觀測不寫進行爲;無遙測/崩潰上報,排查依賴本機 metrics.jsonl、receipts.jsonl 與宿主日誌。插件不收集遙測、不直連模型網關。
架構與設計約束見倉庫 docs/DESIGN.md。
結尾¶
dsh-roundtable 把多角色協作從「多窗口複製粘貼」收攏到側欄 IM:發言權仲裁、分層上下文、事實共識與顯式工具授權在同一條鏈路上可覈對。若要安裝或讀完整說明,見 GitHub 倉庫 README 與 SkillHub 目錄頁。