SoL-Pi: расширение для Pi с четырьмя механизмами экономии токенов
📂 Исходный код на GitHubАвтономное расширение для Pi с четырьмя механизмами эффективности агентного harness: слитие действий, упаковка наблюдений, reducer, сохраняющий доказательства, и компактация контекста.
SoL-Pi: четыре механизма экономии токенов для агентного harness
SoL-Pi — автономное расширение для coding-агента Pi от NVIDIA Labs. Его главный тезис: тратить меньше, не заставляя агента делать меньше полезной работы. Расширение упаковывает четыре переиспользуемых механизма эффективности, найденных в ходе масштабированных auto-research циклов: оно сокращает повторные ходы модели, повторный проигрыш контекста, чрезмерно большие observation'ы и ненужное чтение длинных логов — сохраняя при этом работу и доказательства, которые агенту нужны для завершения задачи.
SoL-Pi ставится поверх немодифицированного релиза Pi. Каждый механизм включается явно (opt-in) и по умолчанию выключен. Репозиторий — неофициальная дистрибуция Pi, а именно расширение, работающее через его публичные extension API. Лицензия — MIT.
Проблема: harness тратит лишнее
Долгоживущие coding-агенты накапливают повторную работу. Правка файла часто сопровождается предсказуемой командой валидации — и это отдельный ход модели. Крупные результаты инструментов проигрываются задолго после первого использования. Завершённые подзадачи остаются в активном контексте, а frontier-модель может тратить полный запрос на чтение лога, когда для следующего решения важны лишь несколько строк.
Из auto-research работы вырос вопрос: прежде чем масштабировать циклы агента, можно ли сначала сделать сам harness эффективнее? Поиск шёл в рамках constrained efficiency — сокращать token-трафик, объём инференса и ходы агента, не останавливая выполнение досрочно, не пропуская верификацию и не пряча доказательства.
В открытый релиз попали четыре механизма, пережившие этот отбор. Они работают в разных частях harness и композируются через публичные extension API Pi.
Четыре механизма
| Область | Механизм | Что меняется |
|---|---|---|
| Инструменты | Action Fusion | Правка или запись файла может выполнить команду проверки в том же tool call. |
| Наблюдения | ObservationPack | Повторно используемые крупные текстовые результаты превращаются в стабильные handle'ы с точным постраничным recall. |
| Делегирование | Evidence-Preserving Reducer | Длинные диагностические логи превращаются в компактные receipt'ы только если каждая сохранённая цитата совпадает с заархивированным источником. |
| Контекст | Online Context Compact | Завершённые шаги плана становятся кандидатами для нативной компактации Pi — после успешной компактации Pi продолжает задачу в новом turn. |
Все четыре механизма следуют общим правилам:
- Без патчей Pi. SoL-Pi импортирует только публичные API и не вендорит исходники Pi.
- Явный opt-in. Если конфигурация отсутствует, каждый механизм остаётся выключенным.
- Сохранение доказательств. Оригинальные observation'ы остаются доступными локально; при сбое reducer исходный результат не меняется.
- Runtime-выборы Pi. Аутентификация, URL провайдеров, основная модель и поведение shell остаются под контролем Pi.
Установка и конфигурация
Требования: Node.js 22.19+, npm и @earendil-works/pi-coding-agent версии 0.85.1 (тестированная версия).
npm install --global @earendil-works/pi-coding-agent@0.85.1
pi install git:github.com/NVlabs/SoL-Pi
Для установки только в текущий проект:
pi install git:github.com/NVlabs/SoL-Pi --local --approve
SoL-Pi использует единую effective-конфигурацию из файла sol-pi.json. Стандартный дистрибутив Pi ищет его в следующем порядке:
.pi/sol-pi.jsonв текущем проекте — если проект доверенный и файл существует;~/.pi/agent/sol-pi.json— иначе.
Если ни одного файла нет, действуют встроенные дефолты. Проектный конфиг приоритетнее пользовательского; два файла не объединяются. Отдельных environment variables нет — feature flags, маршрут reducer-модели и коэффициент компактации задаются в sol-pi.json. Шаблон со всеми ключами — sol-pi.example.json, полная схема — в docs/configuration.md.
Консервативная конфигурация включает только два локальных механизма, которые не делают дополнительных вызовов модели и не останавливают активный запуск:
{
"version": 1,
"actionFusion": true,
"observationPack": true,
"evidencePreservingReducer": false,
"onlineContextCompact": false,
"cacheWriteReadRatio": 12.5
}
Остальные механизмы стоит включать только после изучения их конфигурации и security-implications.
Хранилище и безопасность
ObservationPack и Evidence-Preserving Reducer складывают session-специфичные архивы в:
<session-directory>/sol-pi/<session-id>/
├── observation-pack/
└── evidence-preserving-reducer/
Архивы остаются локальными и не удаляются автоматически при завершении сессии Pi. Online Context Compact хранит состояние в session log Pi: после успешной компактации запускается новый turn и задача продолжается автоматически; отмена запуска или выход из Pi такого continuation не вызывает.
Evidence-Preserving Reducer может отправлять подходящее содержимое диагностических логов в настроенную reducer-модель через аутентификацию Pi. Перед включением стоит изучить SECURITY.md; логи, которые обязаны остаться локальными, в remote reduction включать не следует.
Документация и разработка
| Документ | Назначение |
|---|---|
| Configuration | Порядок поиска конфига, схема, дефолты, trust-поведение |
| Compatibility | Поддерживаемые Pi API и детали интеграции |
| Security | Локальное хранилище, remote reduction, чувствительное поведение |
| Agent installation | Воспроизводимая установка и проверка all-enabled конфигурации |
Для разработки:
npm ci --ignore-scripts
npm run check
npm audit --audit-level=high
node scripts/check-pi-compat.mjs
npm run check покрывает TypeScript, полный test suite и проверку пакета. Dev-зависимости привязаны к Pi 0.85.1; runtime-пакеты Pi остаются peer dependencies — их установкой и обновлением владеет сам Pi.
Статус проекта
SoL-Pi разрабатывается и поддерживается NVIDIA как автономное расширение для Pi. Принимаются протестированные, совместимые с Pi PR'ы, улучшающие token-эффективность: команда помогает с benchmark'ом вкладов, публикует результаты по регулярному reporting-циклу и указывает авторов принятых PR' как Contributors — детали в CONTRIBUTING.md.
Более подробный разбор технических деталей и design rationale — в блоге SoL-Pi; научная работа — SoL-Pi: Recursively Scaling Auto-Research Loops for Efficient Agent Harness.
Для кого это
SoL-Pi ориентирован на тех, кто уже использует Pi и хочет снизить расход токенов без смены агента и без отказа от проверок. Механизмы затрагивают типовые узкие места длинных coding-сессий: лишние хода на рутинную валидацию, повторную загрузку больших observation'ов, переполнение контекста завершёнными шагами и чтение многотысячных логов целиком. Так как всё выключено по умолчанию, расширение можно поставить заранее и включать механизмы по одному — начиная с локальных Action Fusion и ObservationPack, а remote-механизмы (Evidence-Preserving Reducer и Online Context Compact) подключая после проверки конфигурации и security-implications. Репозиторий принимает совместимые PR'ы по повышению token-эффективности, так что набор механизмов может расти сообществом.
Источник: https://github.com/NVlabs/SoL-Pi