Skip to content

Latest commit

 

History

History
156 lines (122 loc) · 11.9 KB

File metadata and controls

156 lines (122 loc) · 11.9 KB

Pi Web

English | 中文文档 | 日本語

Локальный веб-интерфейс для pi coding agent. Pi Web читает локальные файлы сессий pi и предоставляет рабочее пространство в браузере для просмотра сессий, общения с агентом в реальном времени, настройки моделей, управления навыками и предварительного просмотра файлов проекта.

Pi Web показывает одну и ту же сессию pi рядом с CLI: структурированный Markdown, вызовы инструментов и навигация по проекту

Одна и та же сессия pi в CLI и Pi Web: структурированные вызовы инструментов, удобочитаемый Markdown, просмотр сессий и наглядные результаты.

Быстрый старт

Для работы Pi Web требуется Node.js 22.19.0 или новее. Проверьте версию командой node --version.

Запуск без установки:

npx @agegr/pi-web@latest

Или глобальная установка:

npm install -g @agegr/pi-web
pi-web

Затем откройте http://127.0.0.1:30141. После запуска сервера CLI попытается автоматически открыть браузер. По умолчанию Pi Web прослушивает только 127.0.0.1.

Параметры:

pi-web --port 8080              # другой порт
pi-web --hostname 0.0.0.0       # доступ в доверенной сети
pi-web -p 8080 -H 0.0.0.0       # сочетание параметров
pi-web --no-open                # не открывать браузер автоматически

PORT=8080 pi-web                # порт также можно задать переменной окружения
PI_WEB_HOSTNAME=0.0.0.0 pi-web  # явное разрешение сетевого доступа
PI_WEB_ALLOWED_HOSTS=pi-web.internal pi-web  # точное имя прокси или другого хоста
PI_WEB_PASSWORD='длинный-случайный-пароль' pi-web  # Basic Auth (имя пользователя: pi)
PI_WEB_NO_OPEN=1 pi-web         # удобно для фоновой службы

Задайте PI_WEB_PASSWORD, чтобы защитить веб-интерфейс и все конечные точки API с помощью HTTP Basic Auth. Имя пользователя всегда pi. Если переменная не задана или пуста, аутентификация отключена.

Pi Web может вызывать агента с широкими полномочиями. Basic Auth не шифрует пароль при передаче, поэтому не публикуйте обычный HTTP-сервер в интернете. Для удалённого доступа используйте HTTPS через доверенный обратный прокси или надёжное VPN-подключение. API-запросы принимаются для loopback-имён, IP-адресов, выбранного имени хоста и точных имён из PI_WEB_ALLOWED_HOSTS, разделённых запятыми. Задайте эту переменную, если доверенный обратный прокси использует другое внешнее имя хоста.

HTTP-прокси

Для серверных запросов к моделям и API Pi Web использует стандартные переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY.

В macOS и Linux:

HTTP_PROXY=http://127.0.0.1:7890 \
HTTPS_PROXY=http://127.0.0.1:7890 \
NO_PROXY=localhost,127.0.0.1 \
npx @agegr/pi-web@latest

В Windows PowerShell:

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1"
npx @agegr/pi-web@latest

Возможности

  • Продолжайте работу с прежнего места: просматривайте предыдущие разговоры с pi по проектам, не разыскивая их в истории терминала или путях к сессиям.
  • Безопасно пробуйте разные подходы: продолжайте диалог с более раннего сообщения или создавайте отдельный форк сессии.
  • Работайте с разными ветками: переключайте Git worktree в боковой панели, чтобы новые сессии и Explorer следовали за выбранным рабочим деревом.
  • Общайтесь с агентом рядом с проектом: просматривайте файлы слева, а исходный код, документы, изображения, аудио и PDF — справа, пока агент работает.
  • Следите за состоянием сессии: в верхней панели видны использование контекста, стоимость, состояние сжатия и сведения о системном промпте.
  • Реже обращайтесь к терминалу: управляйте моделями, учётными данными для входа и API, тестированием моделей и переключателями навыков в веб-интерфейсе.
  • Используйте удобный язык интерфейса: переключайтесь между поддерживаемыми языками в верхней панели.

Примечания

  • Каталог данных: по умолчанию Pi Web читает ~/.pi/agent/sessions. Чтобы указать другой каталог агента pi, задайте PI_CODING_AGENT_DIR.
  • Файлы сессий: файлы хранятся по пути ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl.
  • Среда выполнения: запускайте Pi Web в той же ОС или контейнере, что и pi, чтобы рабочие каталоги из сессий были доступны.
  • Настройка моделей: панель Models читает и записывает models.json в каталоге агента pi. Список моделей и модель по умолчанию берутся из конфигурации pi.
  • Доступ к файлам: просмотр файлов ограничен выбранным каталогом проекта и рабочими каталогами, которые встречаются в сессиях.
  • Git worktree: условия отображения переключателя, создание новых рабочих деревьев и их удаление описаны в документе Worktrees in Pi Web.
  • Форк и ветка внутри сессии: Fork создаёт новый файл .jsonl, а «Edit from here» — другую ветку внутри того же файла сессии.
  • Интернационализация: использование переводов и добавление языков или текстов интерфейса описаны в документе Internationalization.

Разработка

npm install
npm run dev

Локальный сервер разработки доступен по адресу http://127.0.0.1:30141.

Основные проверки:

node_modules/.bin/tsc --noEmit
npm run lint

Не запускайте next build / npm run build во время локальной разработки. Эта команда записывает данные в .next/ и может помешать работе сервера разработки; выполняйте сборку только при подготовке релиза.

Структура проекта

app/
  api/
    agent/          # создание и управление AgentSession, события SSE
    auth/           # управление OAuth и ключами API
    cwd/browse/     # просмотр каталогов на сервере
    cwd/validate/   # проверка пользовательского рабочего каталога
    default-cwd/    # рабочий каталог pi по умолчанию
    files/          # список, чтение, просмотр и отслеживание файлов
    home/           # домашний каталог текущего пользователя
    models/         # доступные модели, модель по умолчанию, уровни рассуждения
    models-config/  # чтение и запись models.json, проверка моделей
    sessions/       # чтение, переименование, удаление, контекст и экспорт сессий в HTML
    skills/         # список, поиск, установка, включение и отключение навыков
components/
  AppShell.tsx        # основной макет, состояние URL, верхние панели, вкладки файлов
  SessionSidebar.tsx  # выбор проекта, дерево сессий, Explorer
  DirectoryPicker.tsx # просмотр и изменение рабочего каталога
  ChatWindow.tsx      # сообщения, SSE, перетаскивание изображений, мини-карта
  ChatInput.tsx       # модели, инструменты, рассуждение, сжатие и слеш-команды
  MessageView.tsx     # сообщения, рассуждения, вызовы инструментов и результаты
  ModelsConfig.tsx    # настройка моделей и аутентификации
  SkillsConfig.tsx    # управление навыками
  FileExplorer.tsx    # дерево файлов
  FileViewer.tsx      # просмотр кода, diff, изображений, аудио, PDF и DOCX
lib/
  directory-browser.ts # нормализация каталогов и безопасный просмотр
  http-dispatcher.ts  # настройка HTTP(S)-прокси для серверных запросов
  rpc-manager.ts      # жизненный цикл AgentSessionWrapper и глобальный реестр
  session-reader.ts   # разбор файлов сессий .jsonl и контекста веток
  normalize.ts        # нормализация имён полей toolCall
  file-access.ts      # границы безопасного чтения файлов
  file-paths.ts       # кодирование путей и работа с относительными путями
  markdown.ts         # настройка плагинов Markdown, Mermaid и KaTeX
  pi-types.ts         # типы, связанные с pi
hooks/
  useAgentSession.ts  # загрузка сессии, команды и автомат состояний SSE
  useAudio.ts         # звук завершения
  useDragDrop.ts      # перетаскивание изображений
  useTheme.ts         # переключение темы
bin/
  pi-web.js           # точка входа npm CLI
instrumentation.ts    # инициализация HTTP-диспетчера сервера