dsh-quorum:大型項目啓動前的虛擬內閣多 Agent 評審

前言

在 DSH(DeepSeek Harness)裏用多個 Agent 討論需求時,常見三類問題:辯論過程又長又碎,全量寫入主上下文會擠掉真正要做的任務;多個 Agent 各說各話,缺少可復現的裁決機制;方案在辯論中越辯越大,成本難以收束。把一整段多輪對話直接交給主工作流,上下文污染和過度設計往往同時出現。

dsh-quorum 是維護者 oobitoooo 發佈的工作流類 DSH 插件(目錄頁,GitHub)。它在正式啓動大型項目前拉起「虛擬內閣」:三席(ProductManager / RedTeam / Architect)在各自沙箱裏辯論,主工作流按相關性、可行性、經濟性打分並動態調權,最多 3 輪熔斷,出口只回傳一份 Markdown 摘要,而不是把辯論全文灌回主上下文。

這是什麼

插件當前版本爲 0.4.1(見倉庫 package.json),許可證 MIT,運行時要求 Node ≥ 18。它面向「需求評審」場景:輸入一條需求簡報,輸出結構化評審報告;可選主席把結論收斂成 ≤600 字的執行摘要。與生態裏同主題的 fufengyuan/dsh-council(歷史人物議會形態)不是同一實現,README 明確不建議裝進同一個 profile。

核心機制

編排主流程

主工作流(Orchestrator)按固定步驟運轉:

  1. 爲三席各建獨立 messages 數組(互不可見,system 只寫一次)。
  2. 每輪按權重排序,低權席位靜默,並行生成(各自只讀自己的上下文)。
  3. 評審團(Critic)對席位發言做匿名化(A/B/C),從相關性、可行性、經濟性三維打分,併產出阻斷項。
  4. Hedge 調權:高分加權、經濟性駁回重罰;權重影響下一輪發言順序、靜默名單與 token 配額。
  5. 熔斷:按共識、最優解、無進展、預算、3 輪上限等條件提前結束。
  6. 可選主席(Chairman)僅基於結構化材料寫執行摘要。
  7. 出口經 buildReport() 生成 Markdown;辯論全文可選落盤到 $DSH_HOME/quorum/runs/<runId>.json,不回傳主上下文。

三條不變量(代碼層保證)

不變量 含義
隔離 任兩席不共享 messages 數組或消息對象
單向入站 外部文本只能經 brief() 進入,且爲編排器構造的簡報
出口收窄 報告裏出現連續 90 字原文即報錯(允許 ≤72 字短引用)

評分、調權與熔斷

三維打分(critic.js,0–10):相關性(任務詞彙召回、空洞與水字懲罰、席位職責加分)、可行性(結構密度、具體動作詞;含糊措辭扣分)、經濟性(「從零自研 / 重寫整個 / 手搓」等表述壓到紅線以下;複用、增量、PoC 加分)。

權重更新(weights.js):質量 5 分爲中性點,經濟性駁回或質量過低會乘性懲罰;投影到單純形後權重下限 8%、上限 60%,並即時作用於發言順序、靜默(低於均分 55%)與 token 配額(0.6–1.6 倍)。

評審防偏:匿名互評;未配置獨立 criticModel 時 LLM 評分權重從 0.6 降到 0.4;主席拿不到辯論全文,只能看結構化材料。

熔斷(breaker.js,按順序判定)包括:max-rounds(3 輪硬上限)、consensus、optimal、no-progress、budget(累計 token ≥ 9000)、all-rejected。

暴露的工具

工具 用途
quorum_debate 跑一場評審,返回 Markdown(json: true 可回元數據)
quorum_rules 打印席位職責、評分口徑、權重與熔斷規則
quorum_score 對一段發言做確定性評分(零模型,便於調提示詞對齊口徑)
quorum_status 本會話最近幾次運行的輪次、終止原因、最終權重
quorum_panel 本機控制面板(127.0.0.1),可改人設、開評審、看過程與翻譯

控制面板通過 quorum_panel(action="start"|"status"|"stop") 啓停,默認地址 http://127.0.0.1:7845/。寫操作需頁面內嵌 token(x-quorum-token);僅監聽本機迴環地址。

安裝與啓用

配置優先級爲:工具參數 > apply(ctx, config) > 環境變量 > 默認值。

README 給出的 DSH 安裝示例(link 安裝,源目錄不宜移動):

dsh plugin --profile desktop add "C:\Users\17359\Documents\deepseek-harness\plugins\dsh-quorum"

安裝後需重啓客戶端,由宿主在啓動時掛載插件。不同機器請把路徑換成你本機插件目錄的實際位置。

不安裝 DSH 也可直接運行(純 ESM、零額外構建依賴):

node bin/quorum.mjs "爲插件設計多 Agent 辯論評審,兩週內交付" --scenario=converge-r2

倉庫 npm test 串聯 smoke、edge、http、panel、adversarial 等多套測試,用於驗證隔離、調權、熔斷、出口與面板等行爲。

配置要點

典型 YAML 片段(字段以 README 爲準):

dsh-quorum:
  provider: http            # auto | mock | http | harness
  baseUrl: https://api.deepseek.com/v1
  model: deepseek-chat
  apiKeyEnv: DSH_QUORUM_API_KEY
  maxRounds: 3
  earlyStop: true
  anonymize: true
  criticModel: ''
  chairman: auto
  weights: { eta: 0.9, min: 0.08, max: 0.6 }
  thresholds: { consensusQuality: 6.8, consensusSpread: 1.6, economyReject: 3.0 }
  budget: { perAgentTokens: 700, totalTokens: 9000 }
  returnTranscript: false

provider 爲 auto 時:有 baseUrl 與 key 走 http;否則有 ctx.llm 走 harness;否則使用 mock 確定性劇本(如 converge-r2、never、overbudget),便於離線驗證整條編排。API key 只從環境變量讀取,不應寫進配置文件明文。

典型用法

在 DSH 會話中調用 quorum_debate,傳入需求描述即可觸發一輪虛擬內閣評審,主上下文只收到 Markdown 摘要。調參或排查時可用 quorum_rules 對照席位與熔斷規則,用 quorum_score 對單段發言做離線打分對齊。

需要可視化調人設或回看逐輪過程時,先 quorum_panel(action="start"),在瀏覽器打開本機面板;人設保存到 $DSH_HOME/quorum/personas.json,下一場辯論按新人設執行。席位內容可改,結構(id、數量歸一化,最多 6 席)由插件約束,避免權重與沙箱因缺字段分支失控。

獨立 CLI 演示可加 --scenario= 選擇 mock 劇本,例如 README 中的 converge-r2,在不配模型時也能走通編排鏈路。

適用場景與注意

適合在動手做大型功能、插件或重構之前,用固定席位(提案、紅隊攻擊、架構評估)做一次有評分、有熔斷、有經濟性紅線的需求評審,並把結論以短摘要形式回到主任務上下文。

安裝與運行前建議自行閱讀倉庫源碼與 MIT 許可證。插件以當前 DSH 進程權限運行;配置 HTTP 提供方時通過 apiKeyEnv 注入密鑰,避免把密鑰寫入版本庫。控制面板雖只綁定 127.0.0.1,仍會在本機暴露寫接口,不宜在不可信環境中長期開啓。

DSH 社區插件目錄(如 skillhub.cn)由社區維護,與 DeepSeek / 幻方無官方從屬關係;星標與版本以 GitHub 倉庫實時信息爲準。

結尾

dsh-quorum 把多 Agent 辯論收成「沙箱隔離 + 三維打分 + 動態權重 + 多條件熔斷 + Markdown-only 出口」的一條工作流,減輕主上下文污染,併爲「誰該多說話、何時該停」提供可測試的機械規則。進一步瞭解與安裝說明見 SkillHub 目錄頁 與 GitHub 倉庫。

羽毛球分组比赛记分
小程序二维码

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

小夜