Показать HN: Pickaxe – библиотека TypeScript для создания агентов ИИ ( github.com/hatchet-dev ) Привет, HN, Гейб и Александр из Hatchet. Сегодня мы выпускаем Pickaxe, библиотеку TypeScript для создания агентов ИИ, которые масштабируемы и устойчивы к отказам.
Вот демо: https://github.com/user-attachments/assets/b28fc406-f501-442…
Pickaxe предоставляет простой набор примитивов для создания агентов, которые могут автоматически проверять свое состояние и приостанавливать или возобновлять обработку (также известное как долговременное выполнение) в ожидании внешних событий (например, человека в цикле). Библиотека основана на общих шаблонах, которые мы видели, помогая пользователям Hatchet запускать миллионы выполнений агентов в день.
В отличие от других инструментов Pickaxe не является фреймворком. Он не имеет никаких мнений или абстракций для реализации памяти агента, подсказок, контекста или прямого вызова LLM. Его единственная цель — сделать агентов ИИ более наблюдаемыми и надежными.
По мере того, как агенты начинают масштабироваться, обычно возникают три большие проблемы: 1. Агенты работают долго по сравнению с другими частями вашего приложения. Чрезвычайно долго работающие процессы сложны, поскольку развертывание новой инфраструктуры или достижение тайм-аутов запросов в бессерверных средах выполнения прерывают их выполнение. 2. Они сохраняют состояние: они обычно хранят внутреннее состояние, которое управляет следующим шагом в пути выполнения. 3. Им требуется доступ к большому количеству свежих данных, которые могут быть либо запрошены во время выполнения агента, либо должны постоянно обновляться из источника данных.
(Эти проблемы более характерны для агентов, которые выполняются удаленно — локально работающие агенты обычно не имеют таких проблем)
Pickaxe разработан для решения этих проблем путем предоставления простого API, который оборачивает инфраструктуру длительного выполнения для агентов. Долговременное выполнение — это способ автоматической контрольной точки состояния процесса, так что в случае сбоя процесса его можно автоматически воспроизвести с контрольной точки, а не начинать заново с самого начала. Эта модель также особенно полезна, когда вашему агенту необходимо дождаться внешнего события или проверки человеком, чтобы продолжить выполнение. Для поддержки этого шаблона Pickaxe использует функцию Hatchet под названием `waitFor`, которая надежно регистрирует прослушиватель для события, что означает, что даже если агент не прослушивает активно событие, оно гарантированно будет обработано Hatchet и сохранено в истории выполнения и возобновления обработки. Эта инфраструктура работает на основе того, что по сути является линейным журналом событий, который хранит всю историю выполнения агента в базе данных Postgres, управляемой Hatchet.
Полная документация здесь: https://pickaxe.hatchet.run/
Мы будем очень признательны за любые отзывы и надеемся, что у вас будет возможность опробовать Pickaxe.
Что мне действительно нравится в этом, так это то, что такой проект помогает людям узнать, кто такой агент.

Спасибо! Наши любимые ресурсы по этой теме (оба были опубликованы на HN несколько раз):
– https://www.anthropic.com/engineering/building-effective-age…
– https://github.com/humanlayer/12-factor-agents
Вот почему мы реализовали практически все соответствующие шаблоны в документации (например, https://pickaxe.hatchet.run/patterns/prompt-chaining ).
Если вам хотелось бы увидеть какой-то пример или шаблон, дайте мне знать, и мы сможем его опубликовать.
О, это действительно круто! Я немного поработал над этим с Restate на прошлой неделе, но это выглядит действительно хорошо собранным 🙂 Попробую!

Спасибо! Хотелось бы узнать больше о том, какой тип агента вы создаете.
Мы часто слышали, что долговременное выполнение сложно уложить в голове, и мы также видели, что все больше наших пользователей (включая опытных инженеров) полагаются на Cursor и Claude Code при сборке. Поэтому один из экспериментов, которые мы проводили, — это обеспечение долговременности кода агента при написании LLM с помощью нашего сервера MCP, чтобы агенты могли следовать лучшим практикам при генерации кода: https://pickaxe.hatchet.run/development/developing-agents#pi…
Наш сервер MCP очень легкий и, по сути, просто говорит LLM прочитать документацию здесь: https://pickaxe.hatchet.run/mcp/mcp-instructions.md (вместе с некоторыми вызовами инструментов для создания каркасов)
Понятия не имею, полезно это или нет, но нам удалось заставить Клода генерировать сложные агенты, написанные с использованием надежных практик выполнения (отсутствие побочных эффектов или недетерминированности между повторными попытками), что мы расценили как хороший знак.
Как давний пользователь Hatchet, я понимаю, почему вы создали эту библиотеку, но она также немного меня разочаровывает. Хотелось бы, чтобы больше инженерного времени было потрачено на то, чтобы сделать основную платформу более стабильной и производительной.

Определенно понимаю разочарование, сложность универсальности Hatchet в том, что быть производительным для каждого варианта использования может быть сложно, особенно при объединении многих функций (параллелизм, ограничение скорости, приоритетная очередь, повторные попытки с отсрочкой и т. д.). Мы должны быть более прозрачными в отношении того, на оптимизации каких комбинаций вариантов использования мы сосредоточены.
Мы потратили много времени на оптимизацию сценария использования однозадачного FIFO, с которым мы обычно сравниваем. Производительность для этого шаблона ограничена вводом-выводом на уровне > 10k/s, что является хорошим знаком (просто нужны более качественные диски). Поэтому чистая рабочая нагрузка длительного выполнения должна работать очень производительно.
Сейчас мы сосредоточены на улучшении многозадачности и параллелизма. Недавно наша настройка бенчмаркинга добавила поддержку этих шаблонов. Подробнее об этом скоро!
Source: news.ycombinator.com