dsh-approval-consult: Consult execution AI and review AI separately during tool approval waiting.

前言

在 DeepSeek Harness(DSH)里跑 Agent 时,不少工具调用会先停在「等你审批」这一步。若你同时启用了实验性的 Auto 审查(@deepseek-ai/dsh-experimental-auto-review),审查 AI 可能在卡片里给出拒绝或风险提示,但执行任务的 AI 并不会自动知道你的疑问,也不会知道审查侧提醒了什么。常见做法是:先拒绝,再把理由复制回对话——慢,且容易丢上下文。

下面介绍的 dsh-approval-consult(审批咨询台)把「问清楚再点允许/拒绝」接到审批卡片旁边:两条独立问答通道、常用问题可编辑、有用的记录会留在会话里。维护者为社区目录中的 0tests,分类为工作流;当前 npm 版本为 v1.1.3,许可证 MIT。

这是什么

dsh-approval-consult 是一个本地 DSH Web 插件:宿主侧为 Cordis 插件,浏览器端通过 dsh.client 模块注入 UI。按 README 说明,无构建步骤、无第三方运行时依赖;Node 引擎要求 >=20.0.0。

它解决的核心问题是:在同一次待审批期间,你可以分别向「执行 AI」和「自动审查 AI」提问,流式看回答,再在同一面板里做「允许一次 / 拒绝」——与官方审批卡片是同一动作,而不是另起一套审批流程。

核心功能

双通道与降级

  • 桌面端为右侧抽屉,手机端为底部弹层;审批卡片出现时在右上角(手机略偏下)有「⚠ 审批有疑问?」胶囊。
  • Tab 分为「执行 AI」「审查 AI」「双问」。未安装或未启用官方自动审查插件时,宿主检测后自动降级:只保留执行 AI 通道,不显示审查相关入口(reviewerMode 可设为 auto / on / off 强制行为)。
  • 执行 AI 的问答完成后会通过 agent.inject() 以「审批咨询记录」写入会话,下一轮 Agent 可见;官方 Chat 默认隐藏普通 context 行,回看可依赖面板线程或对话流末尾的「审批咨询记录」入口。
  • 审查 AI 的回答默认不进主对话;仅在审批仍未结束时可点「转达给执行 AI」注入。审批结束后面板只读,不能再转达。

审查上下文两种来源

  • 官方审查已捕获:面板展示当次审查的 risk / decision / reason 等,追问时使用官方审查请求的原始前缀(REVIEW_POLICY + 四段材料 + 结论),不塞进主对话。
  • 未捕获到官方审查(例如 sandbox 提权等非 auto-review 审批):可点「让审查 AI 重新评估」,按官方 REVIEW_POLICY 与会话日志重建的四段材料给出 advisory 参考意见——README 明确说明这不是官方审批结论。

常用问题与数据目录

  • 预设问题以 chips 一键发送;面板内可编辑(新增、删除、排序、恢复默认),保存后写入用户数据目录的 presets.json。
  • 默认目录为 ~/.dsh-approval-consult;DSH 以 --profile 启动时落在该 profile 的 data/approval-consult;可用配置项 dataDir 或环境变量 DSH_APPROVAL_CONSULT_DATA 覆盖。

与审批倒计时插件的可选集成

若安装了 dsh-approval-timeout,面板可显示自动拒绝倒计时;默认策略 timeoutAutoPause: on-send 表示只有真正开始提问时才暂停倒计时(也可配置 on-open / off)。未装该插件时宿主不探测、界面不出现任何倒计时相关文案。

设计约束(旁路、不接管)

README 强调:监听 llm/stream 时透传 chunk,仅记录请求;在 approval/request 上登记 pending 后仍返回官方 next() 结果;不改 req.signal、不替换官方审批卡片。双通道问答带哨兵与重入保护,避免被本插件自己的监听器递归捕获;并复用与主对话/审查请求一致的前缀以利于 provider prompt cache 命中。

安装与启用

当前版本 v1.1.3 已发布到 npm(包名 dsh-approval-consult)与 GitHub Release。任选一种方式安装后,在 DSH Web「插件」里启用,并重启一次 dsh web 更稳妥。

方式 A:npm

npm install dsh-approval-consult

也可让 Agent 通过 plugin_manager 的 install_bundle 安装该 npm 包名(需相应审批权限)。

方式 B:Release tarball

在 DSH Web →「插件」→「添加插件」→「安装第三方插件」中填写 tarball 绝对路径,或直接使用 Release 链接:

https://github.com/0tests/dsh-approval-consult/releases/download/v1.1.3/dsh-approval-consult-1.1.3.tgz

安装后点「立即启用」。

方式 C:本地目录

在「安装第三方插件」中填写插件目录的绝对路径(开发或 link 安装)。本地开发可在 profile 的 cordis.patch.yml 中对 id: approval-consult 设置 devWatch: true 等;修改 package.json / cordis.patch.yml 后建议重启 DSH。

DSH Desktop 使用同一套 Web 应用,需装进桌面端使用的 desktop profile;细节见仓库内 docs/DESKTOP.md。

典型用法

  1. 触发需要审批的工具调用(例如 Auto 审查拒绝一次中风险操作,或 sandbox 临时提权)。
  2. 审批卡片出现后,点「⚠ 审批有疑问?」打开面板;查看上下文卡片中的风险等级、审查结论、工具参数与执行 AI 上一步说明。
  3. 选择「执行 AI」「审查 AI」或「双问」,点预设问题或自由输入;阅读流式回答及 token / 缓存命中提示。
  4. 需要时把审查侧回答「转达给执行 AI」(仅审批等待期间);执行侧记录会自动注入会话。
  5. 在面板底部选择「拒绝」或「允许一次」。审批结束后 banner 提示已结束,问答仍可只读浏览。

配置要点

在 profile 的 cordis.patch.yml 中覆盖本插件 config(或修改 bundle 内 cordis.patch.yml 后重启)。常用项包括:

键 默认 说明
maxQuestionChars 2000 单条提问长度上限
maxConcurrentJobs 3 同一审批下并发回答数上限
timeoutAutoPause on-send 与 dsh-approval-timeout 的自动暂停策略
reviewerMode auto 审查 AI 能力开关
dataDir 自动 用户数据目录
devTools false 生产环境务必保持关闭

完整表格与 presets、executorMaxTokens 等字段见 GitHub README。

适用场景与注意

适合谁:经常在 DSH Web 里人工审批工具调用、且已或计划配合 Auto 审查插件的开发者;希望在点「允许一次」之前用自然语言问清风险与参数含义,并保留咨询记录供后续 step 使用。

权限与安全:插件与当前 DSH 进程同权运行;安装前应阅读源码与 MIT 许可证,确认 devWatch / devTools 等开发向配置在生产 profile 中保持关闭。社区插件目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」的扩展方式。

结尾

dsh-approval-consult 把「审批卡片旁的咨询台」做成一等公民:双通道、不污染主对话的默认策略、会话内可回放记录,以及与官方审批动作对齐的底部按钮。需要详情、配置与 Release 时,以仓库为准。

  • 目录页:https://www.skillhub.cn/plugins/0tests/dsh-approval-consult
  • GitHub:https://github.com/0tests/dsh-approval-consult
羽毛球分组比赛记分
小程序二维码

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

Xiaoye