Pi Agent: 安全与项目信任

最后更新:2026-08-31

Agent 能帮你执行命令,也能帮你闯祸——安全机制就是那个"刹车"。


1. 安全模型概览

Pi Agent 的安全基于三层模型:

TEXT 📖 仅展示
安全三层模型
├── 第一层:项目信任(Project Trust)—— 是否允许 Agent 访问项目
├── 第二层:工具权限(Tool Permission)—— 哪些工具可以使用
└── 第三层:执行沙箱(Execution Sandbox)—— 工具执行的安全边界

2. 项目信任

(1) 信任级别

级别 说明 允许的操作
untrusted 不信任 只能对话,不能访问文件或执行命令
readonly 只读信任 读取项目文件,不能修改或执行
trusted 完全信任 读写文件、执行命令
restricted 受限信任 自定义白名单操作

(2) 设置信任级别

BASH
# CLI 设置
pi-agent trust set ./my-project --level trusted

# 查看信任状态
pi-agent trust list

(3) 首次交互提示

首次在项目目录使用 Pi Agent 时:

TEXT 📖 仅展示
🔒 检测到新项目:/home/alice/my-project
   是否信任此项目? [y/N]
   
   trusted    - 完全访问(读写文件、执行命令)
   readonly   - 只读访问(只能读取文件)
   untrusted  - 不允许访问
   
   选择信任级别: 

(4) Python API

PYTHON
from pi_agent import Agent, TrustLevel

agent = Agent(
    name="safe_agent",
    project_path="./my-project",
    trust_level=TrustLevel.READONLY
)

3. 工具权限

(1) 危险等级

等级 工具示例 默认状态
安全 calculator, search 默认启用
中等 file_reader 需要确认
危险 file_write, shell 需要明确授权

(2) 权限配置

YAML
# .pi-agent.yaml
permissions:
  tools:
    safe: auto        # 安全工具自动允许
    medium: confirm   # 中等工具需确认
    dangerous: deny   # 危险工具默认拒绝
  
  # 或精细控制
  allow:
    - calculator
    - search
    - file_reader
  deny:
    - shell
    - file_write
  
  # 交互确认
  confirm_dangerous: true
  confirm_file_write: true
  confirm_shell: true

(3) 运行时确认

TEXT 📖 仅展示
you> 删除所有临时文件
⚠️ Agent 想要执行: rm -rf /tmp/project_*
   允许? [y/N/a(always)] 

4. 执行沙箱

(1) 沙箱模式

PYTHON
from pi_agent import Agent

agent = Agent(
    name="sandboxed",
    sandbox=True,               # 启用沙箱
    sandbox_dir="/tmp/pi_sandbox",  # 沙箱目录
    allowed_commands=["python", "pytest"],  # 允许的命令白名单
    max_execution_time=30       # 最大执行时间(秒)
)

(2) 文件系统隔离

沙箱模式下,Agent 的文件操作被限制在沙箱目录内:

PYTHON
agent = Agent(
    sandbox=True,
    sandbox_dir="./workspace/sandbox",
    allowed_paths=["./data/", "./output/"]  # 额外允许的路径
)

(3) 网络限制

PYTHON
agent = Agent(
    sandbox=True,
    network_access=False,         # 禁止网络访问
    allowed_domains=["api.github.com"]  # 白名单域名
)

5. 最佳安全实践

(1) API 密钥保护

BASH
# 使用环境变量,不要写进配置文件
export PI_DEEPSEEK_API_KEY="sk-xxxxxxxx"

# .gitignore 中排除
echo ".pi-agent.local.yaml" >> .gitignore

(2) 最小权限原则

PYTHON
# 只给 Agent 必要的权限
agent = Agent(
    tools=["file_reader"],  # 只读,不给写权限
    trust_level=TrustLevel.READONLY
)

(3) 审计日志

PYTHON
agent = Agent(
    audit_log=True,
    audit_file="./audit.log"
)

# 审计日志记录所有工具调用
# [2026-08-28 10:30:00] TOOL_CALL: file_reader(path="main.py")
# [2026-08-28 10:30:05] TOOL_CALL: shell(cmd="python main.py")

▶ 示例 1:安全代码审查 Agent(难度⭐⭐)

PYTHON
from pi_agent import Agent, TrustLevel

agent = Agent(
    name="secure_reviewer",
    trust_level=TrustLevel.READONLY,
    tools=["file_reader"],
    sandbox=True,
    audit_log=True,
    system_prompt="你是安全审查专家,只审查代码,不做任何修改"
)

result = agent.run("审查 src/auth.py 的安全性")

❓ 常见问题

Q 信任了项目后可以撤销吗?
A 可以。pi-agent trust set ./project --level untrusted 或删除 ~/.pi-agent/trust/ 下对应的文件。
Q shell 工具太危险,能完全禁用吗?
A 可以。在配置中 deny: [shell] 或不将 shell 加入工具列表。这是推荐做法。
Q 沙箱对性能有影响吗?
A 文件系统隔离几乎没有性能损失。网络限制可能影响需要联网的工具。

📖 小节


📝 作业

  1. 基础题(难度⭐):为你的项目设置 readonly 信任级别,体验受限模式下的 Agent 行为。
  2. 进阶题(难度⭐⭐):配置一个沙箱 Agent,只允许读取特定目录和执行 Python 命令。
  3. 挑战题(难度⭐⭐⭐):编写一个安全策略文件,定义完整的权限矩阵,并通过审计日志验证策略生效。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏