MODULE 05 · STEP 14 · 可练习
权限、隔离与验收
Pi 不只是一个聊天窗口。它可以读写文件、运行命令,Extension 还可以扩展更多能力。这正是它能完成真实任务的原因,也是你必须认真划定边界的原因。内置工具、Extension 与普通本地进程一样,以启动 Pi 的进程权限运行;Pi 没有内置沙箱或逐次权限弹窗。
文字限制不是安全沙箱
在任务中写“不要访问其他目录”很有必要,因为它说明了工作范围。但这句话不会从操作系统层面取消权限。如果 Pi 以你的用户身份运行,它所调用的命令和 Extension 通常也拥有该用户的权限。
处理不可信的仓库、脚本或数据时,需要容器、虚拟机或专用账户等真正的隔离边界。Project Trust 只决定是否加载项目级配置和资源,不是运行时沙箱。不要对来路不明的项目一路确认。
Project Trust 还有明确例外:AGENTS.override.md、AGENTS.md 和 CLAUDE.md 默认仍会作为上下文文件加载。拒绝信任不是“什么项目文字都不读取”;对陌生仓库应先在隔离环境审查,或用 --no-context-files 关闭这类上下文加载,并继续遵守最小权限原则。
仓库文档、注释和构建输出都可能包含 Prompt Injection。Project Trust 无法可靠识别或阻止这些内容影响 Agent;不可信输入仍要按不可信代码和数据处理。
容器也要看挂载边界:把宿主工作目录以可写方式挂进容器,容器里的写入仍会改动宿主文件;无意挂载 ~/.pi/agent 还会暴露认证与会话。使用宿主 Pi 再把部分工具路由到隔离环境时,其他 Extension 也可能继续在宿主运行。真正隔离前必须看清进程、文件、凭据和网络分别在哪里。
开始前的四问
在让 Pi 运行任何陌生项目之前,先回答:
- 材料来源是否可信,是否可能包含诱导 Agent 执行操作的文字?
- 目录中是否有密钥、客户资料或与任务无关的私人文件?
- 任务是否会运行未知脚本、安装依赖或访问网络?
- 任务是否会覆盖、移动、删除文件,或向外部发送内容?
任一项答不清时,先停止执行。可以在隔离副本中做只读检查,或请有经验的人复核;不要把“我在提示词里写了禁止”当成权限控制。
三层防线
第一层是缩小范围
使用独立练习目录,只放进完成任务需要的材料。不要把密码、API Key、客户数据和与任务无关的私人文件放在同一目录。
第二层是保留恢复点
对代码项目使用 Git,对文档和素材保留备份。高风险操作前先让 Pi 列出目标、数量和影响,再执行。删除时优先使用可恢复的方式。
第三层是独立验收
不使用 Agent 最后一段总结作为唯一证据。根据任务类型检查实际产物:
- 文件整理:核对文件数、原文指纹和内容字段。
- 代码修改:查看变更差异,运行构建和测试,再人工操作关键界面。
- 网站发布:访问正式域名,检查桌面端和手机端,确认部署对应最新提交。
- 对外发送:在最后一步保留人工确认,检查收件人、范围和附件。
出问题时保留现场
如果你发现路径错了、不该修改的文件变了,先停止新操作。不要立刻让 Agent “全部清理干净”,否则可能同时清掉调查线索。先记录发生了什么、哪些文件受影响,再从 Git 或备份恢复。
安全不是某一个开关。它是一套可重复的工作习惯:缩小范围,保留恢复点,观察真实动作,独立验收结果。
无破坏的恢复演练
本练习不删除文件。假设你发现 Agent 可能写错了目录,立即停止继续发送任务,并在普通终端记录:
pwd
date
find . -maxdepth 3 -type f -print
git status --short 2>/dev/null || true把实际执行过的命令、看到的错误和疑似受影响路径写进一份临时事故记录。接下来只查看差异或备份,不直接运行批量清理。若项目使用 Git,可以查看状态和差异;是否恢复、恢复哪些文件,要在目标已经明确后单独决定。
这套顺序的重点是保留证据:停止新操作 → 记录位置与现象 → 查明影响 → 确认恢复目标 → 执行恢复 → 再次验收。它比一句“全部清理干净”更可控。
全书完成检查
- 练习目录与真实工作资料分开,不含密钥和私人文件。
- 你能区分普通终端、Pi 编辑区、项目资源和系统隔离边界。
- 重要任务有输入、输出、会话名称、检查点与恢复路径。
- Skill 或 Extension 的来源可读、加载范围明确,并能停用。
- 任务结果由文件、差异、测试或真实界面验收,不只看 Agent 总结。
- 对外发送、付费、发布和不可恢复操作仍保留人工确认。
如果这些项目还不能稳定做到,先回到对应课程或实操案例,不要急着把工作扩大到陌生仓库、长期无人值守任务或高权限环境。
本章依据
安全与 Project Trust 边界核验于 2026-09-09。