Video is unavailable for watching
Show in Telegram
Earendil выпустила Pi 1.0 — первую стабильную версию минималистичного и расширяемого харнесса для ИИ-агентов. За последний год Pi превратился из довольно простого терминального coding-agent в платформу, на которой можно собирать собственные агентные системы, при этом разработчики стараются сохранять его изначальную философию: не добавлять функцию в ядро, пока не станет понятно, что она действительно полезна.
Главное изменение в 1.0 — появление Codemode и нативной поддержки MCP. Вместо того чтобы загружать сотни описаний MCP-инструментов прямо в контекст модели, Pi позволяет агенту писать небольшие JavaScript-программы, которые находят нужные инструменты и комбинируют их вызовы внутри песочницы. Через этот же механизм можно обращаться не только к LLM, но и, например, к классификаторам Jev или моделям генерации изображений. Это позволяет строить довольно необычные цепочки: в демонстрации разработчиков виртуальная модель сначала планирует задачу с Claude Opus, затем Jev определяет момент перехода к реализации, после чего работу продолжает GPT-6 Luna.
В Pi 1.0 также вошли виртуальные модели, отложенная загрузка инструментов, прогрев кэша промпта Anthropic, изменение системных инструкций и набора инструментов прямо посреди диалога с сохранением истории, новая тема интерфейса и полноэкранный режим по умолчанию. Например, прогрев кэша может во время долгого выполнения инструментов заранее обновить истекающий prompt cache и тем самым избежать повторной оплаты всего большого контекста.
Но более интересная часть релиза — отдельный экспериментальный проект Pi Durable. Разработчики сознательно не стали превращать обычный Pi в сервер для автономных агентов: Pi 1.0 по-прежнему рассчитан прежде всего на человека, работающего с агентом в терминале. Durable предназначен для другого сценария — агентов, которые могут работать часами или днями, обслуживать несколько разговоров одновременно, управляться с разных клиентов и переживать перезапуски процесса.
В Durable практически любое действие агента представлено как сохраняемая задача. Перед очередным шагом состояние записывается в хранилище, поэтому после падения процесса новый экземпляр харнесса может найти незавершённую работу и продолжить её с последней контрольной точки. Особенно интересно решена проблема повторных побочных эффектов: инструмент явно помечается как безопасный для повторного запуска. Например, поиск по GitHub после сбоя можно выполнить заново, а прерванный деплой автоматически повторяться не будет — модель получит сообщение, что операция была прервана, и сама решит, что делать дальше. Для входящих заданий предусмотрен "requestId", позволяющий не создать одну и ту же задачу дважды при повторной отправке запроса после сбоя.
Таким образом, Pi 1.0 становится стабильным интерактивным харнессом, а Pi Durable — экспериментальным фундаментом для постоянно работающих агентных приложений. Последний пока не стоит воспринимать как готовую production-платформу: API прямо помечен как нестабильный, одно хранилище должен обслуживать только один процесс, а сама долговечность задач не добавляет автоматической изоляции файловой системы, сети или учётных данных. Но архитектурно это заметный шаг от привычного «coding agent в терминале» к агентам как долгоживущим сервисам, состояние которых существует независимо от процесса, интерфейса и конкретной сессии пользователя.
Главное изменение в 1.0 — появление Codemode и нативной поддержки MCP. Вместо того чтобы загружать сотни описаний MCP-инструментов прямо в контекст модели, Pi позволяет агенту писать небольшие JavaScript-программы, которые находят нужные инструменты и комбинируют их вызовы внутри песочницы. Через этот же механизм можно обращаться не только к LLM, но и, например, к классификаторам Jev или моделям генерации изображений. Это позволяет строить довольно необычные цепочки: в демонстрации разработчиков виртуальная модель сначала планирует задачу с Claude Opus, затем Jev определяет момент перехода к реализации, после чего работу продолжает GPT-6 Luna.
В Pi 1.0 также вошли виртуальные модели, отложенная загрузка инструментов, прогрев кэша промпта Anthropic, изменение системных инструкций и набора инструментов прямо посреди диалога с сохранением истории, новая тема интерфейса и полноэкранный режим по умолчанию. Например, прогрев кэша может во время долгого выполнения инструментов заранее обновить истекающий prompt cache и тем самым избежать повторной оплаты всего большого контекста.
Но более интересная часть релиза — отдельный экспериментальный проект Pi Durable. Разработчики сознательно не стали превращать обычный Pi в сервер для автономных агентов: Pi 1.0 по-прежнему рассчитан прежде всего на человека, работающего с агентом в терминале. Durable предназначен для другого сценария — агентов, которые могут работать часами или днями, обслуживать несколько разговоров одновременно, управляться с разных клиентов и переживать перезапуски процесса.
В Durable практически любое действие агента представлено как сохраняемая задача. Перед очередным шагом состояние записывается в хранилище, поэтому после падения процесса новый экземпляр харнесса может найти незавершённую работу и продолжить её с последней контрольной точки. Особенно интересно решена проблема повторных побочных эффектов: инструмент явно помечается как безопасный для повторного запуска. Например, поиск по GitHub после сбоя можно выполнить заново, а прерванный деплой автоматически повторяться не будет — модель получит сообщение, что операция была прервана, и сама решит, что делать дальше. Для входящих заданий предусмотрен "requestId", позволяющий не создать одну и ту же задачу дважды при повторной отправке запроса после сбоя.
Таким образом, Pi 1.0 становится стабильным интерактивным харнессом, а Pi Durable — экспериментальным фундаментом для постоянно работающих агентных приложений. Последний пока не стоит воспринимать как готовую production-платформу: API прямо помечен как нестабильный, одно хранилище должен обслуживать только один процесс, а сама долговечность задач не добавляет автоматической изоляции файловой системы, сети или учётных данных. Но архитектурно это заметный шаг от привычного «coding agent в терминале» к агентам как долгоживущим сервисам, состояние которых существует независимо от процесса, интерфейса и конкретной сессии пользователя.