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

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

小夜