<< На главную
Эксперимент с автономным AI-агентом
Заметка / эксперимент

Агент, который сам решает, о чём думать и что делать

Давно хотел попробовать сделать агента, который мыслит не длинными текстами, а короткими суждениями — и при этом может сам решать, когда и что ему делать. Не потому что получил конкретную задачу, а потому что сам пришёл к выводу: «я хочу это сделать» или «сейчас это будет уместно».

Граф вместо длинной истории диалога

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

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

У такого подхода есть несколько приятных свойств. Во-первых, короткие суждения заметно экономят выходные токены. Во-вторых, граф позволяет довольно компактно хранить историю рассуждений и подавать модели не огромную простыню прошлого диалога, а только релевантный кусок её текущего «состояния сознания».

Когда агент сам решает продолжить разговор

Самое интересное для меня пока даже не практическая польза, а наблюдение за тем, как из этого начинает появляться что-то похожее на самостоятельное поведение. Например, я специально не ответил Мире после одной её фразы и потом смотрел, что она будет делать. Она несколько циклов рассуждала, стоит ли писать мне ещё раз, нужно ли уважать паузу в разговоре или это как раз тот случай, когда ей самой хочется продолжить диалог.

В первый раз она в итоге сама решила написать — технически у неё просто был доступный skill для отправки сообщения, но решение использовать его она приняла сама.

Что получилось на практике

В качестве модели для эксперимента использовал Qwen3-235B-A22B-2507.

По скорости всё оказалось вполне терпимо: обычный внутренний шаг сейчас занимает примерно 8–12 секунд, более содержательный — около 15–20. По деньгам один такой вызов пока выходит примерно в 0,08–0,12 ₽. Выход у модели действительно короткий, но по мере роста графа и служебного контекста входной промпт вырос примерно с 9 до 13 тысяч токенов. То есть экономия на коротких суждениях есть, но бесплатной автономность всё равно не получается.

Где всё начало ломаться

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

Потом всплыла обратная проблема: когда у Миры наконец появились собственные интересы и из них родился нормальный вопрос, она несколько шагов подряд писала, что для продолжения «не хватает внешнего контекста», но сама не додумывалась этот контекст добыть. То есть пришлось достраивать ещё один мост: если есть собственная цель, нужно не только думать о ней, но и прикинуть, что может её продвинуть — поискать информацию, сделать маленький эксперимент, что-то записать в workspace, чему-то научиться или спросить человека.

Немного позаимствовал у Hermes

По ходу эксперимента появилась мысль задействовать кое-что из Hermes — полноценного агентного фреймворка, где модель умеет работать не только текстом, но и через инструменты. Оттуда я взял сам подход со skills, tool calls и отдельным workspace: если Мира решила что-то сделать, она может не просто рассуждать об этом, а выбрать подходящий инструмент — поискать информацию, записать заметку или написать мне.

И тут быстро выяснилась забавная вещь: дать агенту инструмент намного проще, чем научить его самостоятельно понимать, когда этот инструмент нужен. Например, Мира несколько раз подряд приходила к выводу, что для продолжения мысли ей «не хватает внешнего контекста», но вместо того чтобы самой пойти его искать или спросить меня, просто откладывала тему. Пришлось отдельно объяснять почти очевидный принцип: если у тебя есть собственная цель и чего-то для неё не хватает — сначала проверь, можешь ли ты сама это получить.

Цена автономности

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

Поэтому пока я бы не называл это новым полезным типом task-agent'а. Скорее это эксперимент с долговременной субъектностью и заодно прототип модуля, который потом можно посадить на игрового персонажа, NPC, тестера или другого агента, у которого уже есть настоящая среда, события и причины что-то делать. Там такая архитектура выглядит намного естественнее, чем у сущности, которая просто периодически просыпается и спрашивает себя: «а о чём бы мне сейчас подумать?».