第10讲 · 权限预设与审批策略

《DeepSeek Harness 从上手到精通》系列 · 第三阶 配置组装篇

🎯 目标:为不同场景配置合理的安全策略 难度 ★☆☆ ⏱ 约 20 分钟 前置:第 8/9 讲 配置基础

系列基于 deepseek-ai/deepseek-harness0.1.0-rc.5,MIT)。工具再强,也要"关在笼子里"。本讲讲清 dsh 的权限预设(permission-presets)审批策略——让模型在该放开时放开、该拦住时拦住。preview 阶段字段名可能微调,思路通用。


一、审批从哪来:能力事件的把关

回忆第 6 讲的三级事件:文件读写、工具调用背后都有能力事件fs/*tools/*)。dsh 在工具真正执行前,会先走一道把关流水线:guard 检查 → 是否触发 ApprovalRequest → 你点同意/拒绝 → 执行 → 结果回填(第 5、12 讲细讲)。本讲聚焦"什么会触发审批"以及"如何用预设统一管理"。

二、permission-presets:按会话动态解析

permission-presets(权限预设)是一组"命名的安全档位"。不同会话可以套用不同预设,dsh 在运行时把它动态解析成具体的审批规则。好处是你不用每次都手动点,只要选对预设,整段会话的把关策略就定好了。

权限分层与审批盾牌
图 1 预设像一层层防护环:越往外越严格,越往内越开放,按场景挑选。
# 通过补丁选用某个预设(键名以你版本为准) permission: preset: readonly # 本会话套用"只读"档位

三、审批粒度:哪些操作触发、如何设白名单

审批的粒度可以很细:

  • 按操作类型:读文件通常不审,写文件 / 跑命令 / 联网通常要审;
  • 按工具名:可以只对某个高风险工具(如 bash)触发审批;
  • 白名单:把"确定安全"的路径或命令加进白名单,命中即放行、不再弹窗。
# 示意:只在写操作时弹审批,且放行 /tmp 下的写 approval: mode: prompt trigger: write: true read: false allowPaths: - /tmp

四、三套常用预设模板

日常基本是这三档来回切:

预设策略何时用
全审批 deny-all每个敏感操作都弹窗演示、首次信任建立
只审写 write-only读放开、写/命令要审日常干活
只读 readonly禁止一切写/命令,仅分析代码阅读、资料分析

默认拒绝是底线。 当策略无法判定某操作时,dsh 倾向于拦下来等你确认(fail-closed,第 19 讲细讲),宁可多问一句,不要偷偷执行。

五、动手练习:为两种场景各写一套预设

本讲产出:为下面两种场景各写一套权限预设(YAML),并存成两个文件。

# preset-analyze.yml —— 场景A:代码分析(只读) permission: preset: readonly # preset-edit.yml —— 场景B:自动改代码(只审写) permission: preset: write-only allowPaths: - ./src # 只在 src 下自动放行写 # 使用时 dsh web --patch preset-edit.yml

分别用两套预设开两个会话:一个让模型"只读分析"某仓库(它无法修改任何文件),一个让它"改代码"但每次写都弹你确认。体会档位切换带来的安全感差异。

六、常见坑

  • 预设名拼错变默认档:dsh 不认识的预设名会回退到默认策略,先用 --dump-config 确认键名;
  • 白名单路径写错导致仍弹窗:路径要对模型实际操作的绝对/相对路径,注意工作目录;
  • "只读"下模型仍想写:属预期,它会报错或改口用"建议"而非"动作",这就是预设在起作用;
  • Headless 无人值守卡住:非交互模式没有人工可点,记得用"只审写"或白名单,否则写操作会一直等待;
  • 把审批当障碍:它是"看着 agent 干活"的仪表盘,信任建立后再逐步放开。

七、官方文档对应章节

  • docs/ 中 approval、permission-presets、security 相关章节;
  • 衔接第 2 讲审批弹窗、第 5/12 讲把关流水线、第 19 讲 fail-closed 安全模型;
  • 完整安全清单见第 19 讲与官方 security 文档。

本讲内容基于 DeepSeek Harness 官方文档与项目源码整理,仅供学习参考,具体命令与配置请以官方最新版本为准。系列文章配合源码仓库食用效果更佳:https://github.com/deepseek-ai/deepseek-harness

咨询 DeepSeek Harness 相关问题,请加微信:A0qingfengyuan_01

个人观点,仅供参考,如有不对之处,请多包涵,欢迎指出。本文由 AI 协助完成!