Настройка, расширение, параметры платформы и справочник API для Pi.

Контейнеризация

Pi по умолчанию работает со всеми разрешениями, но в некоторых случаях вам может потребоваться больше контроля над тем, в какие каталоги Pi может выполняться запись и какие права доступа он имеет.

Есть два общих варианта. Вы можете либо

  1. запустить весь процесс pi в изолированной среде или
  2. запустите pi на хосте и направьте выполнение инструмента в изолированную среду.

Выберите узор

Шаблон Что изолировано Лучшее для Примечания
расширение Gondolin Встроенные инструменты и команды ! Локальная изоляция микро-VM при сохранении аутентификации на хосте См. examples/extensions/gondolin/.
Обычный Docker Весь процесс pi в локальном контейнере Простая локальная изоляция Поставщики API key входят в контейнер.
OpenShell Весь процесс pi в контролируемой политикой sandbox Локальное или удаленное управление sandbox Требуется шлюз OpenShell.

Extensions запускается везде, где выполняется процесс pi. Если вы запустите хост pi с расширением маршрутизации инструментов, другие пользовательские инструменты расширения по-прежнему будут работать на хосте, если они также не делегируют свои операции.

Gondolin

Gondolin — локальная микро-VM Linux. Используйте example extension, если вы хотите, чтобы 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

Расширение монтирует cwd хоста по адресу /workspace на виртуальной машине и переопределяет read, write, edit, bash, grep, find и ls. Команды пользователя ! также перенаправляются в виртуальную машину. Изменения файлов под /workspace записываются на хост.

Требования: Node.js >= 23.6.0 для @earendil-works/gondolin плюс QEMU (требуется установка через менеджер пакетов).

Обычный Docker

Запустите весь процесс pi в Docker, если вам нужна простейшая граница локального контейнера.

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, так что чтение и запись в /workspace внутри Docker напрямую влияет на файлы вашего хоста, как в примере Gondolin.

Используйте именованный том для /root/.pi/agent, если вам нужны локальные настройки и сеансы контейнера. При монтировании хоста ~/.pi/agent контейнеру предоставляются файлы аутентификации и сеанса хоста.

OpenShell

Используйте NVIDIA OpenShell, если вам нужен управляемый политикой sandbox с элементами управления файловой системой, процессами, сетью, учетными данными и выводами. OpenShell может запускать sandboxes через локальный шлюз, поддерживаемый Docker, Podman или средой выполнения виртуальной машины, или через удаленный шлюз Kubernetes.

Каждому sandbox требуется активный шлюз. Зарегистрируйтесь и выберите один, прежде чем создавать sandbox:

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

Запустите pi внутри OpenShell sandbox:

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

В этом шаблоне весь процесс pi выполняется внутри sandbox. Встроенные инструменты, команды ! и инструменты расширения выполняются внутри границы OpenShell.

Если шлюз удален, файлы проекта не монтируются с хоста по привязке, то есть записи в sandbox не отражаются на вашем компьютере. Клонируйте репозиторий внутри sandbox или используйте команды передачи файлов OpenShell:

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

Поставщики OpenShell могут хранить необработанные модели API key за пределами sandbox. Когда маршрутизация вывода настроена, код внутри sandbox может вызывать https://inference.local, и шлюз вводит настроенные учетные данные поставщика в восходящий поток. Настройте Pi для использования соответствующей конечной точки, совместимой с OpenAI или Anthropic, если вы хотите, чтобы трафик модели использовал этот маршрут.