JINLOOPEST. 2026
浏览文档
PI DOCUMENTATION更新于

容器化

默认情况下,Pi 以所有权限运行,但在某些情况下,您可能希望对 Pi 可以写入的目录及其拥有的访问权限进行更多控制。

通常有两种选择。您可以

  1. 将整个 pi 进程运行在隔离环境中,或者
  2. 在主机上运行 pi 并将工具执行路由到隔离环境中。

选择一种模式

模式隔离的内容最适合备注
Gondolin 扩展内置工具和 ! 命令本地微虚拟机隔离,同时在主机上保留身份验证参见 examples/extensions/gondolin/.
普通 Docker整个 pi 进程在本地容器中简单的本地隔离提供商 API 密钥会进入容器。
OpenShell整个 pi 进程在策略控制的沙箱中本地或远程托管沙箱需要 OpenShell 网关

扩展运行在 pi 进程运行的位置。如果您在主机上运行 pi 并使用工具路由扩展,其他自定义扩展工具仍然在主机上运行,除非它们也委托其操作。

Gondolin

Gondolin 是一个本地 Linux 微虚拟机。 当您希望 示例扩展 在主机上运行,但所有内置工具都路由到虚拟机中时,请使用 pi

设置:

cp -R packages/coding-agent/examples/extensions/gondolin ~/.pi/agent/extensions/gondolin
cd ~/.pi/agent/extensions/gondolin
npm install --ignore-scripts

从您想要挂载的项目中运行:

cd /path/to/project
pi -e ~/.pi/agent/extensions/gondolin

该扩展将主机当前工作目录挂载到虚拟机中的 /workspace,并覆盖 read, write, edit, bash, grep, findls。 用户 ! 命令也会被路由到虚拟机中。 在 /workspace 下的文件更改会写回到主机。

要求:Node.js >= 23.6.0 用于 @earendil-works/gondolin,以及 QEMU(需要通过您的包管理器安装)。

普通 Docker

当您想要最简单的本地容器边界时,可以在 Docker 中运行整个 pi 进程。

Dockerfile.pi:

FROM node:24-bookworm-slim
 
RUN apt-get update \
  && apt-get install -y --no-install-recommends bash ca-certificates git ripgrep \
  && rm -rf /var/lib/apt/lists/*
RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent
 
WORKDIR /workspace
ENTRYPOINT ["pi"]

构建并运行:

docker build -t pi-sandbox -f Dockerfile.pi .
 
docker run --rm -it \
  -e ANTHROPIC_API_KEY \
  -v "$PWD:/workspace" \
  -v pi-agent-home:/root/.pi/agent \
  pi-sandbox

-v "$PWD:/workspace" 将您的当前目录挂载到容器中的 /workspace,这样在 Docker 内部的 /workspace 中的读写操作会直接影响您的主机文件,就像 Gondolin 示例中一样。

如果您想要容器本地的设置和会话,请为 /root/.pi/agent 使用命名卷。挂载您的主机 ~/.pi/agent 会将主机身份验证和会话文件暴露给容器。

OpenShell

当您想要一个具有文件系统、进程、网络、凭证和推理控制的策略控制沙箱时,请使用 NVIDIA OpenShell。 OpenShell 可以通过由 Docker、Podman 或虚拟机运行时支持的本地网关,或通过远程 Kubernetes 网关来运行沙箱。

每个沙箱都需要一个活跃的网关。 在创建沙箱之前,请注册并选择一个:

openshell gateway add <gateway-url> --name <name>
openshell gateway select <name>

启动 pi 在 OpenShell 沙箱内:

openshell sandbox create --name pi-sandbox --from pi -- pi

在这种模式下,整个 pi 进程在沙箱内运行。 内置工具、 ! 命令和扩展工具在 OpenShell 边界内执行。

如果网关是远程的,项目文件不会从主机绑定挂载,这意味着沙箱中的写入不会反映到您的机器上。 在沙箱内克隆仓库或使用 OpenShell 文件传输命令:

openshell sandbox upload pi-sandbox ./repo /workspace
openshell sandbox download pi-sandbox /workspace/repo ./repo-out

OpenShell 提供商可以将原始模型 API 密钥保留在沙箱之外。 配置推理路由后,沙箱内的代码可以调用 https://inference.local,网关会在上游注入配置的提供商凭据。 如果您希望模型流量使用此路由,请将 Pi 配置为使用相应的 OpenAI 兼容或 Anthropic 兼容端点。

本文档内容同步自 PI 官方 GitHub 仓库。

查看源文件