dsh-batch-review:DSH 多條批閱,一次提交結構化結論

前言

在 DeepSeek Harness(DSH)裏,Agent 需要用戶確認、選擇或批准時,常見做法是逐條用文字提問,或在對話裏反覆發「要不要 / 行不行」。條目一多,用戶要在聊天流裏翻頁作答,Agent 也要多次解析零散回覆,工作流容易被打斷。

dsh-batch-review 是社區維護者 palx666 提供的客戶端插件:Agent 調用 batch_review 工具,把多條待決事項一次交給 Web UI;用戶在輸入框上方的批閱面板(或原生提問卡片)逐條表態後一次提交,結論以結構化 JSON 和 report_text 回到 Agent。面板由 DSH 自帶 web server 的 /api/batch-review/* 提供,無需另開應用或佔用額外端口。

這是什麼

插件倉庫:palx666/dsh-batch-review。目錄頁:skillhub.cn 插件頁。分類爲客戶端插件;當前 package 版本爲 1.0.0,許可證 MIT。

定位:給 DSH 用的「多條批閱」工具——一次交互收齊反饋。凡需要用戶給出確認、選擇、批准、駁回、評分或評論,插件會通過注入的路由規則引導 Agent 走可點界面,而不是純文字追問。

硬規則與路由

插件在 system prompt 註冊 dsh-batch-review:routing 段(每次請求生效),並內置 batch-review-table 技能,覆蓋同一套判據:

  1. 需要用戶反饋時,應給可點界面,不要用文字問「要不要 / 行不行」。
  2. 2 條以上需要獨立結論 → 調用 batch_review;單條問題或計劃批准 → ask_user_question。
  3. 未表態 ≠ 通過:返回裏 filled: false 的條目必須追問,不能當成已通過。

若不想自動注入,可在 DSH 設置 → 左側導航「批閱面板」→ 高級設置,取消「注入路由規則到 system prompt」(等價於 injectRoutingRule: false),重啓 DSH 後生效。關閉後需在自有的 AGENTS.md 裏寫明何時調用 batch_review,否則 Agent 不會主動使用該工具。

核心功能

batch_review 工具

Agent 一次傳入全部條目;每條映射爲一道題。返回字段包括:

  • items[]:id、title、type、verdict、note、filled
  • summary:合計與已填數量
  • report_text:可直接貼進回覆的文本報告
  • 可選 persist 寫入 UTF-8 JSON 後的 persisted 絕對路徑
  • 用戶取消或超時時:cancelled: true,items 爲空,不會靜默通過

條目類型共五種:confirm(通過 / 不通過 / 待定)、bool、choice、text、scale。設 multiSelect: true 可多選,verdict 用頓號拼接選項,並附帶 selected[]。

面板與原生卡片

batch_review 建立在 DSH 原生提問卡片之上:

規模 界面
低於 panelThreshold(默認 2,即默認僅 1 條) 原生卡片,與 ask_user_question 同組件,翻頁作答
達到閾值且面板在線 輸入框上方一屏面板,全部條目列出,逐條結論 + 備註,一次提交
達到閾值但面板不在線 降級爲原生卡片,不會卡住等待

面板在客戶端掛載期間輪詢 GET /api/batch-review/state;用戶不在會話頁、客戶端未加載或 DSH 沒有 webServer 時自動降級。返回裏的 surface 標明本次是 panel 還是 cards。兩種界面返回同一份契約。

將 panelThreshold 設爲 1 時,單條也走面板,不再使用原生卡片。

大數量與 HTML / Excel 回退

條數較多時,技能提供 HTML 批閱頁與 build_review.py / collect_server.py 流程;50 條及以上時面板會提示可考慮 Excel 表(build_review.py --format xlsx,需 openpyxl,否則降級 csv)。面板內可按 group 對連續條目分組,組頭提供「全通過 / 全待定」批量按鈕。

設置項(設置 → 批閱面板)

設置 默認 作用
Panel threshold 2(1–100) 多少條起走面板
Item cap 100(1–500) 單次批閱上限,超出直接駁回
Timeout (ms) 15 分鐘 等待用戶的最長時間

高級設置含 virtualThreshold、maxBodyBytes、allowExternalPersist、injectRoutingRule 等,一般無需改動。

安裝與啓用

環境要求(README 寫明):DeepSeek Harness >=0.2.1-rc.3 <=0.2.1-rc.5(當前僅在 rc.3–rc.5 驗證)、Node.js >=20。零運行時依賴,純 ESM,無構建步驟。

# 直接從倉庫裝
dsh plugin --profile <profile> add github:palx666/dsh-batch-review

# 或釘住某個 tag(推薦,可復現)
dsh plugin --profile <profile> add https://github.com/palx666/dsh-batch-review/archive/refs/tags/v1.0.0.tar.gz

重啓 DSH(dsh web 或桌面端)後加載。驗證方式:Agent 工具列表中應出現 batch_review。

典型用法

下面是一次工具調用的 JSON 形狀(摘自 README):

{
  "title": "驗收:文件複製 / 下載按鈕",
  "persist": "review/acceptance.json",
  "items": [
    { "id": 1, "type": "confirm", "op": "重啓 DSH、刷新頁面", "expect": "界面正常,不白屏" },
    { "id": 2, "type": "choice", "label": "接入方式", "options": [{ "v": "A", "t": "直連 18080" }, { "v": "B", "t": "走 DSH subagent" }] },
    { "id": 3, "type": "bool", "label": "網關計劃任務常駐", "boolDesc": "接受" },
    { "id": 4, "type": "scale", "label": "整體評分", "min": 1, "max": 5 },
    { "id": 5, "type": "text", "label": "有沒有看着不對的地方" }
  ]
}

persist 爲相對路徑時落在宿主進程 cwd 下,不是工作區根目錄;寫到 cwd 外需在設置中開啓 allowExternalPersist。

返回示例(截斷)中,未填條目 filled: false,report_text 會單列「未填:…(沒填不代表通過,需要單獨追問)」。調用方需注意:items 非空且 id 唯一;同一批不要調用兩次 batch_review;cancelled: true 時需重新發起。

適用場景與注意

適合:驗收清單、多選項決策、需要逐條備註的人機協同流程;希望 Agent 自動在「多條獨立結論」場景走 batch_review 而非聊天裏連環提問的團隊。

安裝前:插件以當前 DSH 進程權限運行,安裝前應閱讀倉庫源碼與 MIT 許可證,確認符合你的安全策略。社區目錄 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係,DSH 生態理念是「一切皆插件」。

已知限制(README 摘要):

  • 面板依賴客戶端半區與 webServer;經反代或隧道訪問且 Host 非迴環允許範圍時,面板不出現,會退回原生卡片。
  • 原生卡片路徑僅認 root Agent;子代理可能得到 DELEGATED_CALLER,面板在線時子代理仍可通過面板提問。
  • 默認不持久化批閱結果,除非傳入 persist。
  • 超過條目上限會被工具拒絕,需拆批。

界面語言支持中英文,默認跟隨 GUI;技能提供中文 SKILL.md 與英文 SKILL.en.md。

結尾

dsh-batch-review 把「多條待用戶表態」收斂成一次 batch_review 調用和一份結構化回報,並在 DSH Web UI 內提供面板或卡片,減少對話流裏的往返。若要安裝或查看變更,請以 GitHub 倉庫爲準:

  • 目錄頁:https://www.skillhub.cn/plugins/palx666/dsh-batch-review
  • 源碼與文檔:https://github.com/palx666/dsh-batch-review
羽毛球分组比赛记分
小程序二维码

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

小夜