Pi实战 05:本地模型 · MCP · 安全沙箱篇

发布时间:2026/10/3 6:15:26
Pi实战 05:本地模型 · MCP · 安全沙箱篇
Pi实战 05本地模型 · MCP · 安全沙箱篇来源Pi 官方 Models / Containerization / MCP 文档dalenguyen、patloeber、Fabio Rehm、BenjaminWegener、ruizrica2 等实战以及 Agent Sandbox / pi-less-yolo 等隔离方案。这一篇解决三个硬核问题用本地模型省钱/保隐私、接 MCP 工具但不烧 context、把 Agent 关进沙箱保证安全。一、本地模型零成本、零数据外泄Pi 支持 15 提供商和自定义本地端点通过models.json热重载。这是它相对纯云端 Agent 的最大优势之一。方案 AOllama最省事Ollama 自带一键配置ollama launch pi它会引导你选推荐模型GLM、MiniMax、Kimi 等 cloud 版先通过本地服务器代理到 ollama.com。手动接本地 Ollamadalenguyen 实测~/.pi/agent/models.json{providers:{ollama:{baseUrl:http://localhost:11434/v1,api:openai-completions,apiKey:ollama,models:[{id:qwen3-coder:30b,contextWindow:262144,compat:{supportsDeveloperRole:false,supportsReasoningEffort:false}}]}}}切换模型即时生效——pull 新模型 改model字段即可。dalenguyen 的结论“Replacing cloud APIs with a local Ollama server is a one-afternoon project: no cost, no data exposure, no rate limits.”方案 BLM Studio Gemma 4patloeber 的完整流程LM Studio 是桌面 app处理下载/量化并暴露本地 OpenAI 兼容 API。patloeber 的 7 步装 LM Studiolmstudio.aimacOS/Windows/Linux下载 Gemma 4启动本地 server配置 context size装 Pi把 Pi 连到本地模型同上面的models.json加技能和扩展LM Studio、llama.cpp、Ollama 都暴露 OpenAI 兼容端点Pi 不在乎你用哪个配置通用换着试零成本。方案 C本地 云混合BenjaminWegener 的 M4 Mac 实践用TurboQuant fork在 M4 上用 Metal 跑重推理文档永不离开硬件。用.pi/agent下的agents.md/system.md做自定义微调提示词层面。把后台开发进程和推理分开规避本地推理的上下文切换开销。收益数据主权、隐私无云厂商窥探、低延迟。⚠️本地模型的坑本地模型常比 Claude Code 慢半拍或不够好HN 上很多人因此还没完全迁移。建议混合用本地跑日常硬骨头/model切云端强模型。二、MCP接一堆工具但只烧 ~200 tokens传统 MCP 集成的痛点3–4 个 server 光工具定义就能吃掉 30k tokens。Pi MCP Adapter把这个压到无论接多少 server 都只 ~200 tokens。安装 配置piinstallnpm:pi-mcp-adapter /mcp setup# 交互式配置mcp.json 全局示例~/.pi/agent/mcp.json{mcpServers:{supabase:{transport:streamable-http,url:https://your-project.supabase.co/functions/v1/mcp,lifecycle:eager}}}配置加载位置后者覆盖前者~/.pi/agent/mcp.json ← 全局所有项目生效 .pi/mcp.json ← 项目级覆盖全局自动发现主机已有配置pi-mcp-adapter init --discover-host-configs扫描你主机上已有的 MCP 配置~/.config/mcp/mcp.json等把缺失的兼容导入加到~/.pi/agent/mcp.json。配置优先级后者胜~/.config/mcp/mcp.json ~/.agents/mcp.json ~/.agents/mcp/mcp.json Pi agent dir/mcp.json .mcp.json .pi/mcp.json子代理里直接调 MCP 工具如果用 subagent 扩展agent 定义里可用mcp:server-name语法直接请求某 server 的工具--- name: github-agent mcp: github ---进阶pi-mcporter带鉴权的 server{mcpServers:{linear:{baseUrl:https://api.linear.app/graphql,headers:{Authorization:Bearer ${LINEAR_API_KEY}}},everything:{command:npx -y modelcontextprotocol/server-everything}}}工作流search找server.tool→describe看 schema →call执行复杂参数可用argsJson。三、安全沙箱把 Agent 关进笼子Pi 默认对你整个文件系统有完全访问权。要隔离社区有从轻量到硬核的多层方案。层级 1内置 sandbox 扩展最轻pi-e./sandbox基础的 OS 级限制。层级 2Gondolin 扩展本地微虚拟机隔离内置工具和!命令同时把鉴权留在宿主机。见examples/extensions/gondolin/。层级 3Plain Docker官方推荐简单可靠官方Dockerfile.pi 运行dockerbuild-tpi-sandbox-fDockerfile.pi.dockerrun--rm-it\-eANTHROPIC_API_KEY\-v$PWD:/workspace\-vpi-agent-home:/root/.pi/agent\pi-sandbox-v $PWD:/workspace把当前目录挂进容器容器内/workspace的读写直接落到宿主机文件。/root/.pi/agent用 named volume → 容器内独立配置和会话。⚠️ 若挂宿主机~/.pi/agent会把宿主机 auth/session 文件暴露进容器。验证隔离ajeetraina 强烈建议至少做一次在运行的沙箱里打印 agent 能看到的 key确认它只能看到你给的那把。层级 4Bubblewrapbwrap零默认权限安全优先palaimon 的对比结论Docker 和 bwrap 都依赖 Linux 内核命名空间共享内核 CVE 可逃逸的根本风险。区别在于Docker 完整环境适合agent 需要什么环境。Bubblewrap 零默认权限一个 30 行的bin/pibwrap 脚本比 Dockerfile devcontainer compose 更易审查维护适合agent 能访问什么。层级 5现成的硬核隔离项目 —— cjermain/pi-less-yolo正如其名Slightly less YOLO把 Pi 关进 Docker 沙箱以你自己的用户运行不能提权。agent碰不到项目目录外的文件。只转发必要的环境变量PI_SKIP_VERSION_CHECK、PI_CACHE_RETENTION、PI_PACKAGE_DIR、VISUAL、EDITOR不透传其他宿主变量。auth 文件~/.pi/agent/auth.json优先于环境变量。作者老实交代“This is ‘less YOLO’, not ‘no YOLO’. Container escapes exist. This is a meaningful reduction in risk, not a security guarantee.”这是少作死不是不作死。层级 6网络出口过滤防数据外泄ajeetraina 的 kitPi 默认只放开 npm registry 和 Anthropic 域名其他一律拒绝。要加别的自己开sbx policy allow networkexample.com,cdn.example.comsbx policy log# 看什么被拦了四、实战给敏感项目配一套本地模型 沙箱# 1. 接本地模型零外泄vim~/.pi/agent/models.json# 第一节 Ollama 配置# 2. 项目级 AGENTS.md 写清约束vim./AGENTS.md# 3. 用 Docker 沙箱跑代码不出容器dockerrun--rm-it\-eOLLAMA_API_KEY\-v$PWD:/workspace\-vpi-agent-home:/root/.pi/agent\pi-sandbox这套组合 代码不离开内网本地模型 agent 破坏不了宿主机沙箱 网络只通必要端点。对合规/敏感项目足够稳妥。五、小结本地模型Ollama 一键、LM Studio 图形化、M4TurboQuant 本地推理——省钱省到 0、数据不出门。MCP用pi-mcp-adapter接再多 server 也只 ~200 tokens别用传统方式烧 30k。沙箱从内置sandbox扩展 → Gondolin → Docker → Bubblewrap → pi-less-yolo按你的安全需求挑一层。黄金法则先验证隔离是否真生效打印 agent 能看到的 key别只信文档。参考资料Pi 官方《MCP》https://pi.dev/docs/latest/mcp/ 《Containerization》https://pi.dev/docs/latest/containerization/Pi 官方讨论《Docker sandbox pi-less-yolo for containing the blast radius》原帖https://github.com/earendil-works/pi/discussions/2520cjermain《pi-less-yolo》Docker 沙箱https://github.com/cjermain/pi-less-yolodalenguyen / Pi Documentation本地模型 / MCP 配置https://github.com/dalenguyen/pi-documentationRoman Imankulov《Agent engineering: Pi》https://roman.pt/posts/pi-dev-versionflaviocopes《A deep dive into Pi》https://flaviocopes.com/pi上一篇04 · 多智能体与高级工作流篇 下一篇06 · 日常实战 · 模式 · 选型篇