ХабрПостыНовостиМегапосты?

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

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

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

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

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

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

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

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

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

Например:

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

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

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

Почему open source

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

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

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

Существуют интересные проекты вроде 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.

Есть:

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

Работа с браузером

Добавил управление браузером через CDP/Playwright:

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

Трекер задач

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@it_police
04.06.2026 22:16 UTC
Первоисточник

Комментарии

@it_police
04.06.2026 17:21 UTC
+1

Статья чуть устарела, полежала весь май в песочнице. Я чуть допилил Ануфрия, но стараюсь, чтобы он оставался таким же простым, в архитектурном плане. Если будут вопросы, рад ответить.

@SurMaster
05.06.2026 06:15 UTC
0

Без боли то оно может и без боли, но:

  1. Агент имеет доступ к терминалу через shell=True. Реализованный черный список команд обходится банальным разделением через ; или &&. Любая prompt-инъекция из интернета или файлов проекта может выполнить rm -rf или выкачать ваши ключи или еще чего натворить. Вывод: запускать строго в изолированном Docker-контейнере.

  2. В коде зачем -то фигурируют ссылки на телеграмм канал t.me/itpolice. Намеренно?

  3. main.py на 700+ строк, копипаст парсинга поисковой выдачи, пустые блоки except и неиспользуемые импорты. Короче - код сырой. Я бы не стал такое запускать на реальном хосте без допиливания надфилем. В целом - интересно, issue оставил вам

05.06.2026 06:35 UTC
+1

О, спасибо, что изучили код) Да, main выглядит печально, но моя основная задача - сделать архитектуру простой и наглядной. В этом файле содержатся базовые инструменты и инструкции для LLM, разнести их не составит большого труда. Но сейчас пробежавшись глазами сразу понятно, как оно работает, буквально за пару минут.

В коде фигурируют ссылки на мой канал, это тоже намеренно сделано, просто привет от автора.

Доступ к терминалу агент имеет полный, насморя на встроенные ограничения, иногда и промпт инъекция может не понадобиться, чтобы LLM под галюном их обошла. Поэтому запускать его лучше в изолированной среде, это верно.

И да, каждый разработчик должен допилить Ануфрия напильником под себя. Я же пытаюсь создать удобную базу, чтобы допилить совего агента было как можно проще.

@gachkovsky
05.06.2026 06:21 UTC
0

Хочу попробовать. Он полностью бесплатный или за токены нужно платить?

05.06.2026 06:22 UTC
0

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

@Hrenoid
10.06.2026 15:41 UTC
0

Прошу прощение за оффтоп. Ну почти. Просто позабавила фраза автора: "заняться старыми пет-проектами и наконец реализовать давнюю идею: написать простую базу для создания AI-агента". У меня недалеко живет пожилая женщина, для которой уже в сознательном возрасте, воспринималась возможность использования обычного, дискового телефона и телевизора, как чудо. Вот это на мой взгляд, "старые проекты". А вы, когда успели свои проекты "состарить"? Искины, толком еще и не перекочевали из фантастики.)) Прошу тапками не кидаться, комментарий исключительно благожелательный. За информацию, спасибо.

12.06.2026 17:33 UTC
0

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