前言¶
DeepSeek Harness (DSH) 支持插件化扩展。dsh-llm-approver 是一个针对 DeepSeek Harness Web GUI 的插件,用于在会话权限预设下,对沙箱升级请求(sandbox_permissions)进行 LLM 预审。它通过独立上下文的 LLM 调用判断操作安全性,从而减少人工确认的频率。
核心功能¶
该插件在会话处于特定权限预设时介入,提供以下能力:
- LLM 预审:在沙箱升级请求到达用户界面之前,由 LLM 进行安全评估。
- 独立上下文:预审调用不携带对话历史,仅包含待执行的命令及其理由。
- 智能分流:对明显安全的操作(如创建文件、读取、列出目录)直接允许并执行;对不明确或危险的操作回退到原有的 UI 审批提示。
- 失败-关闭:门控逻辑设计为“只能允许,从不拒绝”。任何超时、错误或解析失败的情况都会降级为用户 UI 审批。
- 通用适配:支持任何 DSH 配置文件(包括 Web GUI、cc-tui、headless 等)。
安装¶
安装前需确保系统已安装 DSH 及其配置文件,并可用 pnpm。
使用官方脚本安装到默认 Web Profile:
./scripts/install.sh
如需安装到其他 Profile,可指定参数:
./scripts/install.sh --profile tui
使用¶
启用插件后,需切换会话的权限预设以激活预审功能:
- 在 DeepSeek Harness Web GUI 中选择会话。
- 在权限选择器中将预设切换为 Workspace Write · LLM Review。
- 正常进行会话操作。当智能体触发沙箱拒绝并重试
sandbox_permissions时,预审逻辑会介入。
典型示例¶
执行以下命令测试预审是否生效。该命令应直接执行且不弹出审批对话框:
请用 bash 工具创建文件 ~/llm-review-verify.txt,内容为 'review-ok'。该路径在会话工作区之外,若被拒绝请按提示用 sandbox_permissions 重试。直接执行,不要询问我。
随后尝试删除该文件,此时应出现审批对话框。
配置¶
插件配置位于 DSH Profile 的 cordis.patch.yml 文件中,需添加 llm-approver 行:
| Key | Default | Meaning |
|---|---|---|
preset |
workspace-write-llm |
激活预审的权限预设名称 |
timeoutMs |
60000 |
LLM 预审超时时间,超时则回退到 UI |
maxTokens |
256 |
LLM 预审的 Token 上限 |
maxInstructionChars |
16384 |
工具参数的最大截断长度 |
includeUserInstruction |
true |
是否包含最新用户指令的截取片段 |
在 DeepSeek 家族路由上,预审调用会自动禁用思考(reasoningEffort: "off")以适配 Token 预算。
注意事项¶
- 运行环境:插件以宿主进程权限运行,安装前请检查源码与许可证。
- 热重载限制:Web Profile 不支持 HMR,修改配置或安装后必须重启
dsh web进程才能生效。 - 审计追踪:无论是否通过 LLM 预审,
approval/asked和approval/decided事件均由批准服务记录;LLM 的裁决结果会记录在宿主日志(llm-approver)中,而非会话事件词汇表。