dsh-approval-preflight:先交计算图、逐节点批准的 DSH 审批预检

前言

在 DeepSeek Harness(DSH)里做 vibe coding 时,工具调用往往要等人点审批。请求堆在对话里、模型同步等着,一轮任务很容易卡死。常见补救是「按权限类别一次性放行」,但那样批准的是整类能力而不是某一件具体的事,授权面会悄悄变大,事后也很难对照「批了什么」和「实际跑了什么」。

下面介绍社区插件 dsh-approval-preflight(GitHub:Making-acid/dsh-approval-preflight,维护者 Making-acid,分类 admin-security,当前 package 版本 2.0.0,MIT)。它把流程改成:模型先提交带语义节点的计算图,你在侧栏按节点批准;一次批准只覆盖该节点的一次成功执行,未申报的操作仍走原生审批卡,节点内留有审计痕迹。

这是什么

dsh-approval-preflight 是 DSH 的 Host + Web 客户端插件:在 Cordis 侧注册模型工具、拦截审批、挂审计;在浏览器侧注入计算图与节点面板。权限只能由用户授予——模型没有工具能代替你批准节点,面板走带登录凭据的宿主通道。

社区目录页:SkillHub · making-acid/dsh-approval-preflight。目录简介仍提到「按粗粒度权限类别批量授权」;插件 README 明确 v1 该做法已废弃,v2 以计算图节点为授权单位。本文以 GitHub README 与 package.json 为准。

核心功能

计算图与批准语义

  1. 模型用 preflight_graph 提交计算图(goal + nodes),每个节点写清这件事的本质(动作、来源、目标等),并标出会碰外部世界的范围;
  2. 你在右侧面板按依赖顺序逐节点点「批准」——批准的是「这件事」,不是某一条具体命令;
  3. 批准后模型调用 preflight_node_start{id} 开始执行;执行期间,节点 impacts 覆盖的工具调用自动放行,超出范围的退回原生审批卡;
  4. preflight_node_end{id, success} 结束节点:成功则消耗该次批准,失败则保留批准可重试;
  5. 需要追加工作时用 preflight_graph_append,不会作废旧批准;preflight_status 可查看待批准、执行中、已完成等状态。

与 v1「点一次 = 本会话同类全免审」相比,v2 越界不会静默放行,失败重试不必重新点头,并有节点级审计。

影响类型与放行范围

插件把工具归类为三类影响(其余不参与自动放行):

影响类型 覆盖的工具
fs-write write / edit
exec pwsh / bash
network web_fetch / web_search

terminal_* 与 MCP 工具不自动放行:前者难以定义「一次调用」边界,后者无法统一归类。插件也不接管原生审批卡——临时在原生卡上点批准只生效一次,不产生节点批准。

面板与审计

面板顶部展示目标与计数;计算图概览用圆点表示节点状态,待批准项带徽标。节点卡展示影响类型、标题、语义字段、依赖与说明。待批准可操作「批准 / 拒绝」,已批准可「撤销批准」,执行中不可操作。有历史的节点可展开「查看实际执行」,逐条记录工具、摘要与成败(不保存完整参数/输出)。

配置

在 DSH 插件配置中可调整(字段名以 README 为准):

- id: approval-preflight
  config:
    approvalTimeoutSeconds: 90   # 节点未覆盖的审批等待多久后让路;0 = 关闭让路
    nodeIdleSeconds: 600         # 节点执行超时自动关闭(不消耗批准)
    maxNodes: 80                 # 计算图节点上限
    wakeOnGrant: true            # 用户批准后主动唤醒模型

状态与断点续跑

无独立数据库:图来自 preflight_graph / preflight_graph_append 参数,批准来自用户消息标记 [[preflight:approve:<版本>:<节点>]],执行区间来自 preflight_node_start / preflight_node_end,审计来自区间内的 tool/call 与 tool/result。重启后按事件顺序回放;回放异常(缺 start、版本不匹配、未知节点)fail-closed,相关批准按未批准处理。

安装与启用

DSH 生态里插件通常通过 Harness 安装;SkillHub 目录为该插件提供「发送给 DeepSeek Harness 安装」的指引,插件标识为 Making-acid/dsh-approval-preflight。安装前请在 GitHub 仓库 阅读 README、docs/grant-model.md 与源码,确认授权模型与信任边界是否符合你的环境。

package.json 中 dsh.client 会在 Web 平台立即注入对话与布局相关 UI 模块;Host 入口为 index.js,并通过 cordis.patch.yml 参与 bundle。目录站 SkillHub 与 DeepSeek / 幻方无官方从属关系,它是社区插件索引,不是官方应用商店。

典型用法(模型侧工作流)

经过上面的安装与配置后,模型侧应按 README 约定顺序使用工具。节点常用字段包括:id、title、effect、action、source、target、details、note、dependsOn、impacts、escalate、permission。

  1. 调用 preflight_graph,提交目标与节点列表;
  2. 等待用户在面板批准目标节点;
  3. 调用 preflight_node_start{id},在 impacts 范围内执行写文件、命令或联网等操作;
  4. 未覆盖的调用会弹原生卡;若开启 approvalTimeoutSeconds,等待超时后调用快速失败,模型可切换其他节点继续工作;
  5. 调用 preflight_node_end{id, success} 收尾;中途新增步骤用 preflight_graph_append。

维护者在仓库中提供离线验证命令(需在克隆后的插件目录执行,此处仅作能力说明):

npm test
# 或分别运行:
node scripts/selftest.mjs
node scripts/contract-test.mjs
node scripts/client-test.mjs

README 写明真机链路已验证:计算图登记、面板渲染、节点批准、执行放行、审计与日志重建。

适用场景与注意

适合谁:需要在 DSH 里长时间跑多步任务、又不想被逐条命令审批拖死,同时又希望「批的是一件事、不是整类权限」的团队或个人;分类 admin-security,适合把审批当成管理面能力来用的场景。

务必知晓:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与 MIT 许可证,理解它拦截与放行哪些工具调用。
  • 语义不可验证:插件无法证明 shell 命令是否真的做了节点描述的事;信任边界靠你的批准 + 节点级审计事后核对。
  • 同一时刻只允许一个执行中节点,不能并行跑两个节点,换干净的审计归属。
  • 已知限制还包括:不记录完整工具参数/输出;原生卡临时批准与节点批准是两套机制。

结尾

dsh-approval-preflight 把 DSH 审批从「整类放权」收束到「计算图节点 + 一次成功执行」,未申报操作仍走原生卡,超时让路避免整轮挂死,并保留节点审计。若要安装或查看元数据,可打开 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye