第 4 章 工作区、文件与权限
本章你会学会
- 理解工作区为什么是“安全边界”;
- 知道 Agent 能读什么、写什么;
- 分清
workspace-write和danger-full-access; - 避免删除、覆盖、密钥泄漏这类真实事故;
- 用
AGENTS.md给项目立规矩。
4.1 Workspace 到底是什么
Workspace 是一个文件夹。
Agent 的“当前目录”通常就是它。你让它读 notes/a.md,它会在工作区里找 notes/a.md。
工作区有三个作用:
- 范围:Agent 默认只在这里工作;
- 上下文:这里的文件、目录结构、
AGENTS.md会影响它的判断; - 权限:很多安全策略以工作区为边界。
所以,工作区不是“随便选一个文件夹”,而是你给 Agent 划定的工作范围。[1]
建议
- 一个项目一个工作区;
- 不要让工作区包含整个用户目录;
- 重要项目先
git init,有版本可回滚; - 测试任务用
dsh-test这类临时目录。
4.2 Agent 能读什么、写什么
Agent 通过工具操作文件,常见的是:
| 工具 | 作用 | 风险 |
|---|---|---|
| 读文件 | 查看内容 | 低;但可能读到敏感信息 |
| 列目录/搜索 | 找文件 | 低 |
| 写文件 | 新建或覆盖 | 高;可能覆盖原文件 |
| 编辑文件 | 局部替换 | 中;可能改错位置 |
| 执行命令 | 运行任意程序 | 很高;可能删除/重置/上传 |
注意:“读”也可能有风险。如果工作区里有 .env、密钥、客户资料,Agent 读到后会进入上下文,甚至出现在回复里。
最小权限原则
- 只给它完成当前任务需要的目录;
- 不要把整个家目录、整个代码仓库根目录随便给它;
- 处理敏感数据时,先脱敏或复制到隔离目录。
4.3 两种常见权限模式
DSH 中常见的文件策略:
workspace-write
- 可以读写工作区内的文件;
- 工作区外通常只读或需要审批;
- 适合绝大多数日常任务。
danger-full-access
- 可以访问更大范围;
- 能执行更高风险的操作;
- 适合你明确知道自己在做什么的场景,例如安装插件、系统级调试。
不要因为“省事”就长期开 full access。 权限越大,一次误操作的后果越大。
审批提示
当 Agent 要执行敏感操作时,界面可能会问:
允许这次操作吗?
你有三个选择:
- 允许一次:只放行这一次;
- 拒绝:不让它做;
- 停止任务:直接中断。
看到“删除”“覆盖”“reset”“push”“上传”“安装”这些词,先读清楚再点。
4.4 破坏性操作:先备份,再确认
Agent 可能做的危险动作包括:
- 删除文件/目录;
- 覆盖已有文件;
git reset --hard;git push --force;- 修改系统配置;
- 安装/卸载软件;
- 上传文件到外部服务。
三条规则
- 重要文件先备份;
- 能用 git 就用 git,提交后再让它改;
- 让它先说明影响范围,再批准。
可以这样说:
在执行删除/覆盖之前,先列出会被影响的文件,并告诉我怎么回滚。
没有我的确认,不要执行。
git 是你的后悔药
如果项目在 git 里:
git add -A
git commit -m "before agent changes"
Agent 改坏了,你可以:[2]
git diff
git restore .
不要在没有版本控制的情况下,让 Agent 大范围改重要文件。
4.5 密钥、密码、截图
这是最容易出事的地方。
不要做
- 不要把 API Key、密码、Token 贴进对话;
- 不要把
.env内容复制给 Agent; - 不要让它把含密钥的文件上传/发送;
- 不要截含密钥的屏幕给它看。
应该做
- 密钥放环境变量或密钥管理工具;
- 需要配置时,让 Agent 改“变量名”,不要改“值”;
- 给它看脱敏后的样例;
- 发现它读到了密钥,立即停止,轮换密钥。
Agent 的上下文可能被记录、被回放、被展示。贴进去的秘密,就当作已经泄露。
4.6 AGENTS.md:给项目立规矩
AGENTS.md 是放在工作区里的“项目规则”。Agent 会读它,并尽量遵守。
一个简单的例子:
# 项目约定
- 所有回复用中文。
- 不要修改 `dist/` 和 `node_modules/`。
- 修改代码前先读相关文件。
- 提交前运行 `pnpm test`。
- 删除文件前必须先问我。
- 不要读取 `.env`。
它适合放:
- 代码风格;
- 目录规则;
- 禁止事项;
- 测试命令;
- 交付格式;
- 团队约定。
注意:AGENTS.md 是“指令”,不是“强制沙箱”。它降低误操作概率,但不能替代权限控制。
4.7 工作区卫生
- 一个任务一个目录;
- 输入、输出、临时文件分开;
- 处理完删除临时文件;
- 不要把测试数据和个人资料混在一起;
- 大文件先确认是否需要读。
马上试试
- 建一个
dsh-test工作区; - 在里面放一个
AGENTS.md,写三条规则; - 让 Agent 读一遍,并复述它会遵守什么;
- 故意让它改一个文件,观察审批提示;
- 拒绝一次,看看它是否能停下来。
常见坑
- 工作区选太大:误操作范围变大。
- 长期开 full access:风险累积。
- 不备份就让它删/改:没有回滚。
- 把 Key 贴进对话:直接泄露。
- 以为
AGENTS.md是沙箱:它只是指令。
小结
- 工作区是范围、上下文和权限边界。
- 读也有风险;密钥不要进对话。
workspace-write是日常默认;danger-full-access要克制。- 破坏性操作先备份、先确认。
AGENTS.md用来立规矩,但不能替代权限控制。
参考
链接均为公开来源;产品行为可能随版本变化。