前言¶
在 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 技能,覆盖同一套判据:
- 需要用户反馈时,应给可点界面,不要用文字问「要不要 / 行不行」。
- 2 条以上需要独立结论 → 调用
batch_review;单条问题或计划批准 →ask_user_question。 - 未表态 ≠ 通过:返回里
filled: false的条目必须追问,不能当成已通过。
若不想自动注入,可在 DSH 设置 → 左侧导航「批阅面板」→ 高级设置,取消「注入路由规则到 system prompt」(等价于 injectRoutingRule: false),重启 DSH 后生效。关闭后需在自有的 AGENTS.md 里写明何时调用 batch_review,否则 Agent 不会主动使用该工具。
核心功能¶
batch_review 工具¶
Agent 一次传入全部条目;每条映射为一道题。返回字段包括:
items[]:id、title、type、verdict、note、filledsummary:合计与已填数量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