- BrainTools - https://www.braintools.ru -
Так уж вышло, что майские праздники я провёл дома — залечиваю травму после катания на длинной доске с колёсиками. Развлечений в такой ситуации не очень много, а одно из немногих, которое всегда со мной, — разработка программных проектов.
Этим я занимаюсь на работе, дома, в отпуске — везде. Такой уж человек.
И вот появилась возможность спокойно заняться старыми пет-проектами и наконец реализовать давнюю идею: написать простую базу для создания AI-агента, максимально упростив архитектуру и сделав её удобной для быстрого расширения под собственные задачи.
Если коротко — хочу сделать не “революционный AGI”, а понятный конструктор, на основе которого любой разработчик сможет собрать своего личного ассистента.
Сразу обозначу, у меня есть некоторый опыт [1] разработки коммерческих агентов, и я совершенно не верю в концепцию универсального “сверхагента”, который умеет всё подряд.
По моему убеждению, хороший агент:
узкоспециализирован;
решает большую часть задач обычными алгоритмами;
использует LLM только там, где это действительно оправдано.
применяет модели вариативно.
Например:
дешёвая компактная модель может быстро проверять релевантность данных;
а флагманская модель — принимать сложные решения или выполнять глубокий анализ.
LLM — это не замена инженерии, а только инструмент внутри инженерной системы.
Но при всём этом мне хотелось сделать именно универсальную базу, на которой можно быстро собирать специализированных агентов под свои нужды:
добавлять навыки;
менять память [2];
подключать новые инструменты;
экспериментировать с архитектурой.
Без многослойного оверинжира, гигантских фреймворков и вот этого всего.
Меня давно смущает, что вокруг AI-агентов появилось большое количество переусложнения.
Когда новичок открывает репозиторий очередного “автономного суперагента”, он видит:
десятки абстракций;
сотни файлов;
бесконечные orchestration-слои;
и архитектуру, в которую страшно заходить без боевой подготовки.
Это и меня печалит, а новичков вообще расстраивает.
Существуют интересные проекты вроде OpenClaw, где тоже есть система навыков и расширений. Но и там структура не отвечает озвученным требованиям. Знакомый фронтендер хотел было переработать его под собственные нужды, но в итоге сдался. Сложно.
А мне хочется противоположного подхода: минимального порога входа.
Основная цель проекта “Агент Ануфрий” — не создать “убийцу” существующих решений, а сделать тему AI-агентов более доступной для русскоязычного сообщества.
Чтобы даже разработчик с небольшим опытом смог:
быстро понять, как всё устроено;
изменить поведение [3] агента;
добавить собственные инструменты;
и начать экспериментировать самостоятельно.
И чем больше людей начнёт заниматься агентостроением, тем больше изящных инженерных решений мы увидим.
В итоге архитектура получилась максимально прямолинейной:
одна точка входа с основным циклом агента, системным промптом, и встроенными инструментами;
конфигурационный файл;
и несколько модулей с говорящими названиями.
AgentAnufry/
├── main.py # Gateway + Agent Loop
├── config.py # Конфигурация
├── requirements.txt # Зависимости Python
├── tools/
│ ├── shell.py # Выполнение команд
│ ├── filesystem.py # Работа с файлами
│ ├── browser.py # Управление браузером через CDP
│ ├── memory_tools.py # Инструменты памяти
│ ├── task_tools.py # Инструменты трекера задач
│ ├── result_tools.py # Инструменты работы с результатами
│ └── skills_runner.py # Запуск навыков
├── memory/
│ ├── manager.py # Менеджер долговременной памяти
│ ├── task_tracker.py # Трекер задач
│ ├── task_results.py # Менеджер результатов задач
│ ├── agent_memory.db # SQLite база данных
│ └── README.md # Документация памяти
├── skills/
│ ├── loader.py # Загрузчик навыков
│ ├── README.md # Документация навыков
│ └── mongo-compass/ # Пример навыка
│ ├── SKILL.md # Описание навыка
│ ├── scripts/ # Скрипты навыка
│ └── references/ # Справочные материалы
├── docs/
│ ├── MEMORY_QUICKSTART.md # Документация памяти
│ ├── TASK_TRACKING.md # Документация трекера задач
│ ├── RESULTS_SYSTEM.md # Система сохранения результатов
│ ├── SKILLS_ARCHITECTURE.md # Архитектура навыков
│ └── GOOGLE_SEARCH_FIX.md # Исправления поиска
├── llm/
│ ├── factory.py # Фабрика для создания LLM провайдеров
│ └── provider.py # Базовый класс для LLM провайдеров
└── ...
В базовый функционал вошли:
Агент создаёт директорию agent-workspace/ и может:
создавать файлы;
редактировать их;
удалять;
читать содержимое.
Это уже позволяет автоматизировать какое-то количество рутинных сценариев.
Память реализована на базенке SQLite.
Есть:
хранение важной информации;
ранжирование информации по важности;
очистка мусора;
семантический поиск через embeddings.
Агент, в лучших традициях, может не просто “держать контекст”, а накапливать опыт взаимодействия.
Добавил управление браузером через CDP/Playwright:
открытие страниц;
взаимодействие с сайтами;
извлечение контента;
работу с поисковиками.
Агент умеет самостоятельно искать информацию в интернете и взаимодействовать с веб-интерфейсами.
Сохраняет контекст сложных задач
Фиксирует все попытки выполнения
Запоминает причины неудач
Сохраняет только важную информацию (не засоряет память)
Позволяет продолжить с того места, где остановились
Тоже важная часть проекта. Новые возможности подключаются через модульные навыки, которые можно быстро писать и изменять.
Например, я уже добавил:
работу с MongoDB;
инструмент для более глубокого анализа поисковой выдачи.
Это те же .md файлы, которые легко пищутся и редактируются. Но в некоторых случаях скилы требуют референс и/или скрипты.
Агент работает через OpenAI-совместимый API, поэтому можно использовать обычные и локальные модели. Будет полезно для удешевления работы. На компактных моделях агент вполне справляется с некоторым типом задач.
И кажется, мне удалось добиться главной цели — сделать базу, которую легко модифицировать.
Любой разработчик за короткое время может:
заменить БД;
изменить правила работы с памятью;
переписать встроенные навыки;
добавить новые инструменты;
улучшить обработку skills;
оптимизировать взаимодействие с LLM.
А дальше всё уже зависит только от фантазии.
Можно сделать:
персонального ассистента;
исследовательского агента;
автоматизатор рутины;
web-agent;
DevOps-ассистента;
AI-помощника для работы с документами;
да что угодно.
Чтобы попробовать агента, достаточно:
Клонировать репозиторий проекта. [4]
Установить зависимости.
Создать .env по примеру env.example.
Запустить main.py.
На старте память агента пустая, поэтому с ним лучше немного “познакомиться”:
рассказать о себе;
описать задачи;
обозначить предпочтения.
Он это запомнит и начнёт использовать в дальнейшей работе.
Если агент с трудом решил сложную задачу, похвалите его в конце, тогда он сохранит оптимальный алгоритм действий и ответит что-то в этом духе:
🤖 Агент: Супер, Артём! Я сохранил оптимальный алгоритм выполнения этой задачи в долговременную память. В следующий раз смогу повторить процесс быстрее и без лишних действий.
Мне понравился и процесс разработки Ануфрия, и даже опыт взаимодействия, но я уверен, что где-то мог ошибиться или что-то не учесть. Поэтому буду рад любым замечаниям, идеям и критике.
Ну и, конечно, буду рад форкам и pull request’ам.
Хочется, чтобы тема AI-агентов перестала казаться чем-то сложным и стала обычной инженерной областью, в которую можно войти без страха и сожалений.
Надеюсь, после этой статьи кто-то тоже попробует собрать своего первого агента.
Удачи всем, кто решил заняться агентостроением.
Автор: it_police
Источник [5]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/31285
URLs in this post:
[1] опыт: http://www.braintools.ru/article/6952
[2] память: http://www.braintools.ru/article/4140
[3] поведение: http://www.braintools.ru/article/9372
[4] репозиторий проекта.: https://github.com/Bednyakov/AgentAnufry
[5] Источник: https://habr.com/ru/articles/1043768/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1043768
Нажмите здесь для печати.