Так уж вышло, что майские праздники я провёл дома — залечиваю травму после катания на длинной доске с колёсиками. Развлечений в такой ситуации не очень много, а одно из немногих, которое всегда со мной, — разработка программных проектов.
Этим я занимаюсь на работе, дома, в отпуске — везде. Такой уж человек.
И вот появилась возможность спокойно заняться старыми пет-проектами и наконец реализовать давнюю идею: написать простую базу для создания AI-агента, максимально упростив архитектуру и сделав её удобной для быстрого расширения под собственные задачи.
Если коротко — хочу сделать не “революционный AGI”, а понятный конструктор, на основе которого любой разработчик сможет собрать своего личного ассистента.
Зачем нужен ещё один AI-агент?
Сразу обозначу, у меня есть некоторый опыт разработки коммерческих агентов, и я совершенно не верю в концепцию универсального “сверхагента”, который умеет всё подряд.
По моему убеждению, хороший агент:
- узкоспециализирован;
- решает большую часть задач обычными алгоритмами;
- использует LLM только там, где это действительно оправдано.
- применяет модели вариативно.
Например:
- дешёвая компактная модель может быстро проверять релевантность данных;
- а флагманская модель — принимать сложные решения или выполнять глубокий анализ.
LLM — это не замена инженерии, а только инструмент внутри инженерной системы.
Но при всём этом мне хотелось сделать именно универсальную базу, на которой можно быстро собирать специализированных агентов под свои нужды:
- добавлять навыки;
- менять память;
- подключать новые инструменты;
- экспериментировать с архитектурой.
Без многослойного оверинжира, гигантских фреймворков и вот этого всего.
Почему open source
Меня давно смущает, что вокруг AI-агентов появилось большое количество переусложнения.
Когда новичок открывает репозиторий очередного “автономного суперагента”, он видит:
- десятки абстракций;
- сотни файлов;
- бесконечные orchestration-слои;
- и архитектуру, в которую страшно заходить без боевой подготовки.
Это и меня печалит, а новичков вообще расстраивает.
Существуют интересные проекты вроде OpenClaw, где тоже есть система навыков и расширений. Но и там структура не отвечает озвученным требованиям. Знакомый фронтендер хотел было переработать его под собственные нужды, но в итоге сдался. Сложно.
А мне хочется противоположного подхода: минимального порога входа.
Основная цель проекта "Агент Ануфрий" — не создать “убийцу” существующих решений, а сделать тему AI-агентов более доступной для русскоязычного сообщества.
Чтобы даже разработчик с небольшим опытом смог:
- быстро понять, как всё устроено;
- изменить поведение агента;
- добавить собственные инструменты;
- и начать экспериментировать самостоятельно.
И чем больше людей начнёт заниматься агентостроением, тем больше изящных инженерных решений мы увидим.
К какой архитектуре я пришёл
В итоге архитектура получилась максимально прямолинейной:
- одна точка входа с основным циклом агента, системным промптом, и встроенными инструментами;
- конфигурационный файл;
- и несколько модулей с говорящими названиями.
Что умеет агент уже сейчас
В базовый функционал вошли:
Работа с файловой системой
Агент создаёт директорию agent-workspace/ и может:
- создавать файлы;
- редактировать их;
- удалять;
- читать содержимое.
Это уже позволяет автоматизировать какое-то количество рутинных сценариев.
Долговременная память
Память реализована на базенке SQLite.
Есть:
- хранение важной информации;
- ранжирование информации по важности;
- очистка мусора;
- семантический поиск через embeddings.
Агент, в лучших традициях, может не просто “держать контекст”, а накапливать опыт взаимодействия.
Работа с браузером
Добавил управление браузером через CDP/Playwright:
- открытие страниц;
- взаимодействие с сайтами;
- извлечение контента;
- работу с поисковиками.
Агент умеет самостоятельно искать информацию в интернете и взаимодействовать с веб-интерфейсами.
Трекер задач
- Сохраняет контекст сложных задач
- Фиксирует все попытки выполнения
- Запоминает причины неудач
- Сохраняет только важную информацию (не засоряет память)
- Позволяет продолжить с того места, где остановились
Система навыков (skills)
Тоже важная часть проекта. Новые возможности подключаются через модульные навыки, которые можно быстро писать и изменять.
Например, я уже добавил:
- работу с MongoDB;
- инструмент для более глубокого анализа поисковой выдачи.
Это те же .md файлы, которые легко пищутся и редактируются. Но в некоторых случаях скилы требуют референс и/или скрипты.
Поддержка локальных LLM
Агент работает через OpenAI-совместимый API, поэтому можно использовать обычные и локальные модели. Будет полезно для удешевления работы. На компактных моделях агент вполне справляется с некоторым типом задач.
И кажется, мне удалось добиться главной цели — сделать базу, которую легко модифицировать.
Любой разработчик за короткое время может:
- заменить БД;
- изменить правила работы с памятью;
- переписать встроенные навыки;
- добавить новые инструменты;
- улучшить обработку skills;
- оптимизировать взаимодействие с LLM.
А дальше всё уже зависит только от фантазии.
Можно сделать:
- персонального ассистента;
- исследовательского агента;
- автоматизатор рутины;
- web-agent;
- DevOps-ассистента;
- AI-помощника для работы с документами;
- да что угодно.
Как запустить
Чтобы попробовать агента, достаточно:
- Клонировать репозиторий проекта.
- Установить зависимости.
- Создать .env по примеру env.example.
- Запустить main.py.
На старте память агента пустая, поэтому с ним лучше немного “познакомиться”:
- рассказать о себе;
- описать задачи;
- обозначить предпочтения.
Он это запомнит и начнёт использовать в дальнейшей работе.
Небольшой лайфхак
Если агент с трудом решил сложную задачу, похвалите его в конце, тогда он сохранит оптимальный алгоритм действий и ответит что-то в этом духе:
🤖 Агент: Супер, Артём! Я сохранил оптимальный алгоритм выполнения этой задачи в долговременную память. В следующий раз смогу повторить процесс быстрее и без лишних действий.
Вместо вывода
Мне понравился и процесс разработки Ануфрия, и даже опыт взаимодействия, но я уверен, что где-то мог ошибиться или что-то не учесть. Поэтому буду рад любым замечаниям, идеям и критике.
Ну и, конечно, буду рад форкам и pull request’ам.
Хочется, чтобы тема AI-агентов перестала казаться чем-то сложным и стала обычной инженерной областью, в которую можно войти без страха и сожалений.
Надеюсь, после этой статьи кто-то тоже попробует собрать своего первого агента.
Удачи всем, кто решил заняться агентостроением.