DeepSeek Harness 自动审批:dsh-auto-mode 补上权限模式的中间层

前言

用 DeepSeek Harness(DSH)跑 Coding Agent 时,权限模式往往是个两难选择:只开「可写入工作区」,Agent 装依赖、跑测试、改文件时频繁弹窗,开发节奏被打断;切换到 Full access(完全权限),审批又彻底消失,一旦 Agent 误删文件或访问敏感路径,后果很难挽回。

社区维护者 NanmiCoder 推出的 dsh-auto-mode(npm 包名 @nanmicoder/dsh-auto-mode)试图补上这块空白:在官方 workspace-write 沙箱之上新增 Auto / 自动审批 模式——日常项目操作尽量自动放行,沙箱覆盖不了的语义风险交给分类器审查,真正危险的动作在执行前直接拒绝。该插件在 SkillHub 插件库分类为 admin-security,GitHub 约 123 stars,采用 MIT 许可证,已针对 DeepSeek Harness 0.1.0-rc.6 测试。

需要说明的是:SkillHub(https://www.skillhub.cn/plugins)是面向中国用户的 DSH 插件社区目录,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」理念,权限策略同样可以通过社区插件扩展。

这是什么

dsh-auto-mode 的定位可以用一句话概括:Safe automatic permissions for DeepSeek Harness——为 Harness 提供「沙箱优先、语义审查、最小越权」的自动权限策略。

不自行实现操作系统级沙箱,而是让 Auto 模式常驻 DSH 官方的 workspace-write 文件沙箱,并在此基础上补充三类能力:

  1. 对沙箱内可预期的日常操作(构建、测试、常规依赖安装等)自动放行;
  2. 对沙箱边界之外的语义风险(敏感读取、网络外传、删除 Session 前已有文件等)调用当前 Session 的 DSH 模型做分类;
  3. 对根目录、Home、DSH_HOME、凭据路径等关键目标无条件拒绝。

中文 Web UI 中,该模式显示为 「自动审批」;英文界面保留 Auto 产品名。

核心功能与亮点

四种权限模式对照

安装插件后,权限菜单在「可写入工作区」与「完全权限」之间多出一档 Auto:

模式 文件沙箱 审批 Auto 策略
Read Only read-only ask 不启用
Workspace Write workspace-write ask 不启用
自动审批(Auto) workspace-write ask 启用
Full access danger-full-access never 不启用

Auto 的普通读写仍限制在 Workspace Write 边界内;只有明确的一次性越权请求,才可能被自动批准。

四类决策:放行、分类、问一次、拒绝

插件对待执行的每个工具调用,大致落入以下策略(详见仓库 DESIGN.md):

决策 典型效果
自动放行 沙箱内的 Bash/PowerShell、常规 npm/pnpm/yarn/bun/pip/Cargo 安装、本地 Git commit、构建、测试、类型检查、已审计的 DSH 协作工具
后台分类 Session 前已有数据删除、npx/bunx 等临时下载执行、远程 Git/数据库/服务变更、敏感读取、网络传输、外部系统写入
询问一次 效果或授权确实不明确,或分类器连续失败三次后转人工;越权时复用官方那一次精确审批,避免双弹窗
直接拒绝 根目录、Home、DSH_HOME、系统破坏、权限绕过、凭据外传、隐藏动态删除,以及风险操作前两次连续分类器故障

分类器不是授权来源:它只能识别直接用户 Session 消息中的授权。仓库 README、工具输出、Assistant 回复、Skill、插件或子 Agent 的文本不能替用户授权。

Shell 与删除的细粒度策略

Auto 不再维护不断膨胀的命令白名单。字面量未知命令、管道、重定向等默认进入官方 workspace-write 沙箱,工作区外写入由操作系统拒绝。只有可执行文件名被变量或 glob 隐藏时,才会后台拒绝并要求 Agent 改写成可见命令。

删除规则比普通写入更严:当前 Session 新建且身份未变的单个文件可自动清理;删除 Session 前已存在的文件,需用户在对话中精确点名该目标;多目标、glob、管道删除一律拒绝;根目录与凭据关键路径无条件拒绝。

当任务确实需要写到工作区外,Agent 可通过官方 sandbox_permissions: danger-full-accessjustification 重试,Reviewer 最多返回一次 allowed-once,不改变 Session 常驻权限。

子 Agent 与多 Agent 协作

官方进程内 Subagent、Workflow agent()、Ralph spawn worker、AgentTeams 成员通过 parentSession 链继承 Auto 与 workspace 边界,但每次文件/Shell 调用仍单独检查。子 Agent 使用 approval: never,不能自行申请 danger-full-access,需向父 Agent 报告阻塞。Codex、ACP、dsh-sdk 等进程外 Provider 的内部工具权限不在本插件注册表边界内。

安装与启用

使用前请确保已安装 DeepSeek Harness

通过 npm 安装(推荐)

SkillHub 目录页与 GitHub README 给出的安装命令一致:

dsh plugin --profile web add @nanmicoder/dsh-auto-mode

若你实际使用的是其他 Profile,将 web 替换为对应名称即可。

从源码构建

git clone https://github.com/NanmiCoder/dsh-auto-mode.git
cd dsh-auto-mode
pnpm install
pnpm build
dsh plugin --profile web add .

修改源码后需重新 pnpm build;本地安装会保持与当前 checkout 的链接关系。

验证配置并启动

dsh --profile web --dump-config
dsh web

刷新 Web UI,在「可写入工作区」与「完全权限」之间选择 自动审批,阅读并确认风险提示后即可使用。

典型用法示例

日常开发:Auto 模式下的自动流转

在 Auto 模式下,Agent 执行以下操作时通常无需反复点批准:

  • 在项目目录内运行 pnpm installnpm testcargo build 等;
  • 使用官方字符串替换编辑器修改源码;
  • 对当前 Session 内新建的临时文件做清理。

以下临时 runner 仍会进入审查(因其会下载并执行未纳入项目依赖的包):

  • npxbunxpnpm dlxyarn dlxnpm exec

可选:为分类器固定模型路由

默认情况下,Auto 使用当前 Session 的 DSH Provider 与模型,无需额外 API Key。若希望在受信任的 Profile 中固定专用分类路由,可在插件配置中写入:

- id: auto-permission-mode
  config:
    classifierProvider: deepseek-official
    classifierModel: deepseek-v4-flash
    classifierTimeoutMs: 30000
    classifierMaxOutputTokens: 1024

完整决策顺序、威胁模型与 Windows 路径处理见仓库 DESIGN.md

适用场景与注意事项

适合谁用:

  • 日常用 DSH Web UI 做项目开发,希望减少「装依赖 / 跑测试 / 改代码」时的审批打断;
  • 需要比 Full access 更安全、又比纯 Workspace Write 更顺畅的权限中间层;
  • 关注 admin-security 类插件、愿意阅读源码后再安装的团队。

务必知晓的边界:

  1. 插件以当前 dsh 进程权限运行。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全要求。
  2. 文件沙箱不限制读取、网络与外部服务;Windows ACL 后端存在文档化的 partial enforcement 边界。Auto 是语义层补充,不是万能防火墙。
  3. 插件无法拦截加载前执行的包生命周期脚本、绕过 ctx.tools 的 Node 直接调用、被攻破的 Harness Runtime,或在 Harness 外部启动的命令。
  4. Full access 仍是用户明确选择的无沙箱、免审批模式,本插件不能把它变安全;设计目标是让绝大多数任务留在沙箱内,仅在业务必要时借出一次最小权限。
  5. 已测试版本为 DSH 0.1.0-rc.6;升级 Harness 主版本后建议重新验证插件行为。

结尾

如果你正在 DSH 上长期跑 Coding Agent,又在「频繁点批准」和「完全放权」之间反复横跳,dsh-auto-mode 值得试一次:它把 Auto 模式嵌回官方沙箱,用分类器兜住沙箱外的语义风险,用硬规则守住系统与凭据底线。

  • 插件目录页:https://www.skillhub.cn/plugins/NanmiCoder/dsh-auto-mode
  • GitHub 仓库:https://github.com/NanmiCoder/dsh-auto-mode
  • npm 包:https://www.npmjs.com/package/@nanmicoder/dsh-auto-mode
羽毛球分组比赛记分
小程序二维码

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

小夜