AI-агент своими руками: память, браузер, задачи и навыки — без боли

от автора

Привет, Хабр!

Так уж вышло, что майские праздники я провёл дома — залечиваю травму после катания на длинной доске с колёсиками. Развлечений в такой ситуации не очень много, а одно из немногих, которое всегда со мной, — разработка программных проектов.

Этим я занимаюсь на работе, дома, в отпуске — везде. Такой уж человек.

И вот появилась возможность спокойно заняться старыми пет-проектами и наконец реализовать давнюю идею: написать простую базу для создания AI-агента, максимально упростив архитектуру и сделав её удобной для быстрого расширения под собственные задачи.

Если коротко — хочу сделать не “революционный AGI”, а понятный конструктор, на основе которого любой разработчик сможет собрать своего личного ассистента.

Зачем нужен ещё один AI-агент?

Сразу обозначу, у меня есть некоторый опыт разработки коммерческих агентов, и я совершенно не верю в концепцию универсального “сверхагента”, который умеет всё подряд.

По моему убеждению, хороший агент:

  • узкоспециализирован;

  • решает большую часть задач обычными алгоритмами;

  • использует LLM только там, где это действительно оправдано.

  • применяет модели вариативно.

Например:

  • дешёвая компактная модель может быстро проверять релевантность данных;

  • а флагманская модель — принимать сложные решения или выполнять глубокий анализ.

LLM — это не замена инженерии, а только инструмент внутри инженерной системы.

Но при всём этом мне хотелось сделать именно универсальную базу, на которой можно быстро собирать специализированных агентов под свои нужды:

  • добавлять навыки;

  • менять память;

  • подключать новые инструменты;

  • экспериментировать с архитектурой.

Без многослойного оверинжира, гигантских фреймворков и вот этого всего.

Почему open source

Меня давно смущает, что вокруг AI-агентов появилось большое количество переусложнения.

Когда новичок открывает репозиторий очередного “автономного суперагента”, он видит:

  • десятки абстракций;

  • сотни файлов;

  • бесконечные orchestration-слои;

  • и архитектуру, в которую страшно заходить без боевой подготовки.

Это и меня печалит, а новичков вообще расстраивает.

Существуют интересные проекты вроде OpenClaw, где тоже есть система навыков и расширений. Но и там структура не отвечает озвученным требованиям. Знакомый фронтендер хотел было переработать его под собственные нужды, но в итоге сдался. Сложно.

А мне хочется противоположного подхода: минимального порога входа.

Основная цель проекта «Агент Ануфрий» — не создать “убийцу” существующих решений, а сделать тему AI-агентов более доступной для русскоязычного сообщества.

Чтобы даже разработчик с небольшим опытом смог:

  • быстро понять, как всё устроено;

  • изменить поведение агента;

  • добавить собственные инструменты;

  • и начать экспериментировать самостоятельно.

И чем больше людей начнёт заниматься агентостроением, тем больше изящных инженерных решений мы увидим.

К какой архитектуре я пришёл

В итоге архитектура получилась максимально прямолинейной:

  • одна точка входа с основным циклом агента, системным промптом, и встроенными инструментами;

  • конфигурационный файл;

  • и несколько модулей с говорящими названиями.

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:

  • открытие страниц;

  • взаимодействие с сайтами;

  • извлечение контента;

  • работу с поисковиками.

Агент умеет самостоятельно искать информацию в интернете и взаимодействовать с веб-интерфейсами.

Трекер задач

  • Сохраняет контекст сложных задач

  • Фиксирует все попытки выполнения

  • Запоминает причины неудач

  • Сохраняет только важную информацию (не засоряет память)

  • Позволяет продолжить с того места, где остановились

Система навыков (skills)

Тоже важная часть проекта. Новые возможности подключаются через модульные навыки, которые можно быстро писать и изменять.

Например, я уже добавил:

  • работу с MongoDB;

  • инструмент для более глубокого анализа поисковой выдачи.

Это те же .md файлы, которые легко пищутся и редактируются. Но в некоторых случаях скилы требуют референс и/или скрипты.

Поддержка локальных LLM

Агент работает через OpenAI-совместимый API, поэтому можно использовать обычные и локальные модели. Будет полезно для удешевления работы. На компактных моделях агент вполне справляется с некоторым типом задач.

И кажется, мне удалось добиться главной цели — сделать базу, которую легко модифицировать.

Любой разработчик за короткое время может:

  • заменить БД;

  • изменить правила работы с памятью;

  • переписать встроенные навыки;

  • добавить новые инструменты;

  • улучшить обработку skills;

  • оптимизировать взаимодействие с LLM.

А дальше всё уже зависит только от фантазии.

Можно сделать:

  • персонального ассистента;

  • исследовательского агента;

  • автоматизатор рутины;

  • web-agent;

  • DevOps-ассистента;

  • AI-помощника для работы с документами;

  • да что угодно.

Как запустить

Чтобы попробовать агента, достаточно:

  1. Клонировать репозиторий проекта.

  2. Установить зависимости.

  3. Создать .env по примеру env.example.

  4. Запустить main.py.

На старте память агента пустая, поэтому с ним лучше немного “познакомиться”:

  • рассказать о себе;

  • описать задачи;

  • обозначить предпочтения.

Он это запомнит и начнёт использовать в дальнейшей работе.

Небольшой лайфхак

Если агент с трудом решил сложную задачу, похвалите его в конце, тогда он сохранит оптимальный алгоритм действий и ответит что-то в этом духе:

🤖 Агент: Супер, Артём! Я сохранил оптимальный алгоритм выполнения этой задачи в долговременную память. В следующий раз смогу повторить процесс быстрее и без лишних действий.

Вместо вывода

Мне понравился и процесс разработки Ануфрия, и даже опыт взаимодействия, но я уверен, что где-то мог ошибиться или что-то не учесть. Поэтому буду рад любым замечаниям, идеям и критике.

Ну и, конечно, буду рад форкам и pull request’ам.

Хочется, чтобы тема AI-агентов перестала казаться чем-то сложным и стала обычной инженерной областью, в которую можно войти без страха и сожалений.

Надеюсь, после этой статьи кто-то тоже попробует собрать своего первого агента.

Удачи всем, кто решил заняться агентостроением.

ссылка на оригинал статьи https://habr.com/ru/articles/1043768/