🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

Letter2025/dsh-approval-llm

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
✓ 可直接安装

面向 DeepSeek Harness 的模型审批插件approve-for-me。

自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/8 · 已提供中文文档

DeepSeek Harness 中基于模型的权限审批(approve-for-me):由独立审查模型驱动的审批/请求应答器

综合分
33.5
GitHub 分
33.5
用户评分
—
★ Stars
7
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-approval-llm
npm 包 dsh-approval-llm 已校验归属本仓库,走 npm 安装最省事
信任档位:已验证本站已于 4 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 17 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/22
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/21(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-approval-llm @ 0.1.6
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/21 23:33:44

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-permission-presets@deepseek-ai/dsh-session@deepseek-ai/dsh-skill@deepseek-ai/dsh-timeout@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-approval-llm

release
downloads
stars
license
docs
Awesome DSH Plugin

面向 DeepSeek Harness 的模型审批插件(approve-for-me)。

一个社区插件:为 DeepSeek Harness 增加一个"帮我批准"权限模式。在该模式下,approval/request 的审批请求由独立的评审模型代替人工判定——评审模型给出 ALLOW / DENY / ESCALATE,只有拿不准或模型故障时才转人工。在其他任何权限模式下插件保持沉默,模型审批永远不会抢在人工审批前面。

它对应 Codex 的 approvals_reviewer=auto_review(--approve-for-me),并遵循 AGENTSCOPE-PLAN-058 / 062 / 063 的评审设计(正交的 reviewer 维度、三值决策、路由策略、Prompt 隔离、fail-to-human、熔断)。

警告:AI 评审是一种策略选择,不是安全保证。它可能被工具输出或 agent 自身理由中的提示注入欺骗。建议用于低风险工作流;务必收紧 humanOnlyList、denyList 和熔断参数。

设计对照

| 本插件概念 | Codex | AGENTSCOPE-PLAN-058 |
| --- | --- | --- |
| 专门的权限模式激活评审模型 | approvals_reviewer: auto_review + --approve-for-me | UI 档位 帮我批准 = DEFAULT + ApprovalReviewer=MODEL |
| 该模式之外全部委托 | 人工审批不变 | 请求批准 = DEFAULT + HUMAN |
| 应答 approval/request 瀑布 | approvals_reviewer: auto_review | ApprovalReviewer = MODEL(与权限模式正交) |
| 模型调用前的确定性路由 | "确定性沙箱/网络 allowlist 在 guardian 评审之前执行" | SAFE_ALLOW / DENY / HUMAN_ONLY 路由策略 |
| 评审模型判定 ALLOW / DENY / ESCALATE | Guardian 子代理(Approved / Denied / TimedOut / Abort) | ALLOW / DENY / ESCALATE |
| 评审模型持有隔离的安全策略 | Guardian prompt 与主 agent 隔离 | §4.5 Prompt 隔离 |
| 评审时动态注入工具描述 | — | §4.5 工具描述动态注入 |
| 从会话日志取回工具参数 | 信任分层(评审参数而非只看工具名) | §4.4 参数级风险 |
| 模型故障 → 转人工,不计熔断 | fail-closed guardian | §4.8 fail-to-human 与策略拒绝分离 |
| 连续 DENY 达阈值 → 转人工 | 熔断(连续 3 次) | §4.14 熔断 |
| 显式 provider/model,否则回退会话路由 | — | PLAN-062 每 agent 配置 + 回退 |
| 决策以用户可见消息写入会话 | UI 上的 guardian 徽标 | DENY 事件推送到前端(§4.17.5) |

工作方式

approval/request(瀑布)
│
├─ enabled=false? ────────────────────────────► next()(原样委托)
│
├─ 模式门:会话 preset ≠ modePreset ───────────► next()(人工审批不变)
│    (默认 modePreset = model-approval)
│
├─ RoutingPolicy(确定性,无模型调用)
│    ├─ 命中 denyList ─────────────────────────► 'rejected'
│    ├─ 命中 allowlist ────────────────────────► 'allowed-once'
│    ├─ 命中 humanOnlyList ────────────────────► next()(人工决定)
│    └─ 其余:REVIEW
│
├─ 熔断:连续 DENY ≥ max ──────────────────────► next()(人工接管)
│
├─ 评审模型(隔离的安全策略 prompt)
│    输入:工具名 + 描述(ctx.tools)
│         + reason + 工具参数(来自会话日志 tool/call)
│    判定:ALLOW ──────────────────────────────► 'allowed-once'(计数归零)
│           DENY ──────────────────────────────► 'rejected'(计数 +1)
│           ESCALATE ──────────────────────────► next()
│           超时 / 解析失败 / 模型故障 ─────────► next()(fail-to-human)
│
└─ ALLOW / DENY 还会往会话追加一条用户可见的决策消息,
主链路因此记录"为什么通过/拒绝"。

- ALLOW / DENY / ESCALATE 与 dsh 结果词汇一一对应(allowed-once / rejected / 委托)。ESCALATE 和模型故障永远不会伪造拒绝——它们把请求交给下一个 answerer(人工 UI);没有人工 answerer 的部署按 fail-closed 解析为 unavailable,调用方视为拒绝,与 Codex 的 fail-closed guardian 一致。
- 模式门保证各模式互斥。在 帮我批准 预设下评审模型应答;在 请求批准(及其他预设)下插件全部委托,人工审批行为与装插件前完全一致。两个预设共享 sandbox/approval 旋钮,靠记录的 permission/preset 选择区分。
- 一个部署一个 terminal answerer。dsh 审批链不是多个裁判的优先级列表——只组合一个 answerer。要保留人工兜底,就把人工 UI answerer 放在本插件之后(瀑布的 next() 会到达它)。
- 参数从会话日志读取,而非审批请求本身(审批请求刻意不带参数,避免渲染出第二份可能漂移的副本)。

配置

所有字段都由 Loader schema 校验,省略时取默认值。

| 字段 | 默认值 | 含义 |
| --- | --- | --- |
| enabled | true | 总开关;false 时所有请求原样委托。 |
| modePreset | model-approval | 激活评审模型的权限预设名。设置后,只有当会话的有效预设等于该值时插件才应答;其他会话全部委托给人工通道。设为 '' 则审查所有请求。 |
| provider / model | 未设置 | 显式评审路由。必须成对出现;未设置时复用会话日志中最后一次 request/header 的对话路由,日志中没有则 fail-to-human。 |
| timeoutMs | 60000 | 评审请求端到端超时;超时后转人工(TIMEOUT,不计熔断)。 |
| maxOutputTokens | 256 | 评审输出上限。 |
| systemPrompt | 内置策略 | 评审模型的自定义安全策略。内置策略是"默认放行、关键危害才拒绝"的短规则集,见 src/reviewer.ts。 |
| allowlist | [] | 免模型调用直接放行的工具名(SAFE_ALLOW)。 |
| denyList | [] | 免模型调用直接拒绝的工具名。优先于 allowlist。 |
| humanOnlyList | [] | 必须人工决定的工具名;绝不自动评审。 |
| maxConsecutiveDenials | 3 | 每会话连续 DENY 阈值,达到后评审模型转人工;0 关闭熔断。ALLOW 会重置计数。 |
| maxArgsChars | 4000 | 渲染给评审模型的工具参数 JSON 上限。 |
| includeArgs | true | 是否从会话日志取回工具参数参与评审。 |
| notifyUser | true | 每次模型 ALLOW/DENY 后往会话追加一条用户可见的决策消息(✅ 模型审批通过 / ❌ 模型审批拒绝,含风险与理由),主链路可复查。 |

示例覆盖层(profile 的 cordis.patch.yml):

- id: approval-llm
config:
provider: deepseek-official
model: deepseek-v4-flash
allowlist: [read, read_image, glob, grep]
humanOnlyList: [delete, terminal_send]
denyList: [job_kill]
maxConsecutiveDenials: 3

安装

复制给 AI 的一句话——把这一句话交给任意 AI 编程 agent,让它帮你完成安装:"请阅读 https://github.com/Letter2025/dsh-approval-llm/blob/main/README.md 并遵循其『## 安装』章节,把 dsh-approval-llm bundle 安装进 DeepSeek Harness 的 web profile,然后重启 dsh web 服务,并确认权限选择器里出现带盾牌+星芒图标的 model-approval(帮我批准)预设。"

作为可安装 bundle(推荐)

本包在 package.json 中声明了 dsh.bundle.patch,安装后会激活一个配置层:既插入插件行,也往 permission 权限表添加 model-approval("帮我批准")预设——无需再手动配置预设:

dsh plugin --profile web add dsh-approval-llm   # 从 npm 安装已发布的包

重启 dsh web,然后在权限选择器(输入栏的 Access chip,带盾牌+星芒图标)里选 帮我批准,即可把该会话的审批人切换为模型。预设表是进程级的,修改预设需要重启 dsh。

In-box bundle 的行名从 dsh 安装本身解析;@deepseek-ai/ 导入是 peerDependencies,由宿主 dsh 提供,所以请锁定 dsh 版本(项目处于开发者预览,有破坏性变更)。想从本地检出安装:先 pnpm run build,再在父目录执行 dsh plugin --profile web add ./dsh-approval-llm。

随包技能:引导配置评审模型

本包随附一个 bundled 技能(configure-approval-llm,source bundled),安装插件后技能自动进入目录。让任意 agent「配置审批评审模型」,或直接加载该技能——它遵循 AI 先配置、用户确认 的流程:先探测当前模型与 provider 设置,把 approval-llm 覆盖行写入 ~/.dsh/profiles/web/cordis.patch.yml,再贴出完整配置等你确认后才重启生效。指南覆盖评审模型选型(同 provider 优先、contextWindow ≥ 主模型),以及按部署收紧 allowlist / denyList / humanOnlyList / maxConsecutiveDenials。

源码覆盖层(开发用)

- insert:
- id: approval-llm
name: './src/index.ts'        # 本包入口的路径,或绝对路径
config:
provider: deepseek-official
model: deepseek-v4-flash

用 dsh web --patch ./cordis.patch.yml 运行,或把该行并入 profile 的 cordis.patch.yml。源码覆盖层只插入插件行,不含预设——要么同时安装上面的 bundle 层,要么自己往 permission 行里加 model-approval 预设(patch 会替换整行 config,所以要写全所有预设):

- id: permission
config:
presets:
read-only:
sandbox: read-only
approval: ask
name: 只读
workspace-write:
sandbox: workspace-write
approval: ask
name: 请求批准
model-approval:
sandbox: workspace-write
approval: ask
name: 帮我批准
description: 审批由独立的评审模型决定;拿不准或模型故障时转人工。
danger-full-access:
sandbox: danger-full-access
approval: never
name: 完全放开

构建与测试

插件位于 DeepSeek Harness 检出内部的 custom_plugin/dsh-approval-llm;@deepseek-ai/ 解析到该检出自己的 node_modules(构建产物 lib 声明 + @types),因此请在仓库根目录保持 harness 已构建(pnpm run build)。指向 harness node_modules 的 junction 由检出提供。

pnpm run typecheck   # tsc --noEmit(严格模式)
pnpm run test        # vitest:39 个单元测试,无网络
pnpm run build       # tsc 产出 lib/(ESM,相对导入重写)

路线图

- 客户端徽标与开关:给本包加浏览器半(dsh.client),可以在工具卡片上渲染评审模型的决策徽标(盾牌图标),并提供写回 enabled/modePreset 的设置行(写入热重载的设置命名空间)。宿主 loader 已经从同一行发现 dsh.client 包,安装路径不变。
- 批量评审(PLAN-063):一次评审多个待审批工具,需要 approval 服务先支持批量入口。
- 通配符 / 参数模式路由:确定性策略支持按工具名/参数模式匹配。

安全模型

- 模式门保证人工审批不变:在配置的预设之外插件全部委托,请求批准 的行为与装插件前完全一致。
- Prompt 隔离:评审 prompt 由本插件依据自身配置组装,主 agent 永远看不到安全策略,无法针对评审定制请求。工具描述取自实时注册表(ctx.tools.schemas()),参数取自持久化日志——评审模型评判的是真实调用,而不是 agent 的自述。
- fail-to-human:TIMEOUT、PARSE_ERROR 和 provider 错误产生 ESCALATE(委托),绝不伪造拒绝,且不计入熔断(PLAN-058 §4.8 模型故障与策略拒绝分离)。
- 组合即 fail-closed:没有人工 answerer 的部署解析为 unavailable,调用方按拒绝处理。
- 熔断:单会话连续 DENY 达到 maxConsecutiveDenials 后,该会话后续请求转人工——评审模型持续拒绝时就不再当裁判。
- 敏感数据:评审输入(工具参数、reason)仅用于评审请求和结构化日志,除常规会话日志与控制台输出外不额外落盘。参数敏感时可关闭 includeArgs。

已知限制

- 没有专门的机器可读审计事件。模型决策以 user/message 通知的形式出现在主链路(可持久化、可重放),内置的 approval/asked + approval/decided 审计对记录请求与结果。专门的机器可读审计事件(如携带完整评审上下文的 session/approval-llm-request)仍受 harness 对仓库外事件类型的持久化策略限制;等 harness 开放注册通道后应补充。
- 暂无客户端徽标。决策通知以对话消息呈现;Codex 式锚定在工具卡片上的盾牌图标需要客户端插件(本包暂未提供浏览器半)。见路线图。
- 一次请求一次模型调用。PLAN-063 的批量评审需要 approval 服务先支持批量入口;单请求延迟受 timeoutMs 和评审模型选择约束。
- AI 评审的信任是部署决策。评审模型可能被工具输出提示注入。请配置好 humanOnlyList、denyList 和熔断;不要在高风险无人值守工作流中启用。
- 仅精确名称路由。列表匹配完整工具名,不支持通配符或参数模式匹配。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群