Дневник разработки Ассистента Афина. Часть 2. Учимся помнить, воспринимать и действовать
В первой части я рассказал, с чего началась идея Афины и почему мне захотелось создать собственного ИИ-ассистента, который со временем сможет не просто отвечать на вопросы, а действительно помогать в работе и повседневной жизни.
С тех пор проект заметно изменился.
За названием AthenaCore теперь стоит уже не просто идея или набор отдельных модулей. Постепенно складывается архитектура, в которой есть память, обработка задач, инструменты, восприятие рабочего окружения, проверка результатов и механизмы восстановления после сбоев.
Но самое интересное — мы постепенно подходим к моменту, когда нужно будет проверить всё это не только на отдельных тестах, но и в настоящей работе.
Расскажу, что удалось сделать, какие решения оказались важными и почему я не хочу торопиться с первым запуском, пока Афина не сможет выполнять хотя бы базовый рабочий цикл целиком.
Отдельные модули — ещё не настоящий ассистент
В разработке ИИ-систем легко попасть в ловушку: добавлять новые возможности, писать новые классы, подключать модели и постепенно увеличивать количество компонентов. Проект растёт, код становится сложнее, а до момента, когда всем этим действительно можно пользоваться, всё ещё далеко.
Я не хочу, чтобы Афина превратилась в бесконечную коллекцию технических возможностей.
Поэтому сейчас для меня важнее не количество модулей, а то, как они взаимодействуют друг с другом.
Общая схема выглядит примерно так:
Пользователь → понимание задачи → анализ контекста → выбор инструментов → выполнение → проверка результата → сохранение опыта.
При этом языковая модель не должна быть единственным источником истины. Она может анализировать ситуацию, предлагать план и выбирать подходящие действия, но фактическое выполнение поручается инструментам, а результаты по возможности проверяются независимыми средствами.
Например, если Афина проверяет состояние компьютера, недостаточно просто попросить модель описать, что она думает о системе. Нужны реальные данные от соответствующих инструментов, сопоставление результатов и проверка того, что итоговый ответ не противоречит полученным сведениям.
Именно вокруг этого принципа я и продолжаю строить AthenaCore.
Память: что происходит после перезапуска?
Одной из важных задач стало сохранение состояния Афины.
Мне недостаточно, чтобы ассистент помнил несколько последних сообщений, пока открыто текущее окно. Если приложение перезапустилось, компьютер выключился или выполнение задачи прервалось, система не должна автоматически превращаться в совершенно новое состояние.
Поэтому работа с памятью здесь разделена на несколько направлений:
Рабочая память — информация, необходимая для текущей работы.
История диалога — предыдущие обращения и решения.
Долговременная память — сведения, которые должны сохраняться между сеансами.
Состояние задач — информация о выполняемых задачах, действиях и полученных результатах.
Важно не просто записать эти данные на диск. Нужно уметь восстановить их и правильно продолжить работу.
На текущем этапе реализовано сохранение и восстановление контекста, а также восстановление задач, действий и результатов после повторного создания Runtime — компонента, отвечающего за выполнение работы ассистента.
Отдельное внимание пришлось уделить прерванным действиям.
Представим, что Афина начала выполнять операцию, но приложение завершилось до того, как стало известно, чем всё закончилось. После перезапуска система не должна бездумно повторять такую операцию: неизвестно, успела ли она выполниться до сбоя.
Поэтому действия с неизвестным результатом не запускаются автоматически повторно.
На первый взгляд это небольшая деталь, но именно такие решения отличают простое сохранение состояния от более серьёзной системы восстановления.
Проверка сохранности данных
Пользовательские данные Афины теперь хранятся отдельно от исходного кода проекта. Для профиля Афины используется каталог:
%LOCALAPPDATA%\AthenaCore\assistants\athena\
Это позволяет разделить саму систему и её данные. В перспективе такой подход важен и для нескольких ассистентов на общей архитектуре: код и вычислительные механизмы могут быть общими, а память, настройки и особенности конкретного ассистента — отдельными.
Для хранения используется SQLite. Я проверил целостность существующих баз, сравнил сохранённые записи и убедился, что обнаруженные различия в проверенных данных объясняются временем обновления записей.
Поскольку оснований для ручного объединения баз не нашлось, вмешиваться в них не стал.
Это тоже часть разработки: иногда правильное решение — не исправлять то, что не сломано.
488 пройденных тестов — но это ещё не первый запуск
На 14 октября 2026 года полный набор автоматизированных тестов завершился результатом:
488 тестов пройдены за 15,48 секунды.
Отдельно я запустил пять групп проверок, связанных с контекстом, долговременной памятью, SQLite, выполнением задач и восприятием окружения. Результат — 37 пройденных тестов за 4,91 секунды.
Это хороший результат для текущего этапа. Он подтверждает, что уже реализованные механизмы проходят предусмотренные проверки.
Но здесь важно не обманывать ни себя, ни тех, кто следит за проектом.
Прохождение тестов не означает, что Афина уже полностью готова к работе. Тесты проверяют определённые сценарии, а полноценный запуск должен подтвердить взаимодействие всех компонентов с настоящей языковой моделью и реальными пользовательскими задачами.
Именно поэтому я не называю Афину готовым продуктом. Сейчас я строю фундамент, который должен позволить ей работать надёжно, а не только убедительно выглядеть в демонстрации.
Афина начинает воспринимать рабочее окружение
Ещё одно важное направление — восприятие окружающей среды.
Я не хочу, чтобы ассистент существовал исключительно внутри диалогового окна и узнавал о происходящем только из сообщений пользователя.
Компьютер — одна из сред, в которой Афина должна уметь ориентироваться. Ей необходимо получать сведения об активном окне, запущенных приложениях, изменениях состояния рабочего окружения и других значимых событиях.
Для первой версии не обязательно сразу создавать полноценное компьютерное зрение с непрерывным анализом каждого пикселя экрана. Важнее построить работающую цепочку обработки наблюдений.
Сейчас реализована и проверена основная последовательность:
Получение сведений об окнах и приложениях.
Формирование наблюдений, в том числе в фоновом режиме.
Обнаружение изменений.
Передача информации в Runtime и контекст ассистента.
Оценка того, требуется ли реакция.
Передача внутренней инициативы в пользовательский интерфейс.
Сохранение состояния и восстановление контекста.
Здесь есть принципиальная граница: обнаружение события и решение о необходимости реакции сами по себе не дают разрешения на выполнение произвольных действий.
Если Афина заметила изменение, это ещё не означает, что она должна немедленно вмешаться. Сначала нужно определить значимость события, связать его с текущей задачей и проверить, какие действия допустимы.
Пока интеграционная проверка этой цепочки выполнялась с тестовой заменой языковой модели. Поэтому корректнее говорить, что механизм восприятия реализован и проверен в тестовом сценарии, а не что полноценное автономное восприятие уже доказало свою готовность.
Тем не менее это важный шаг от ассистента, который только отвечает на обращения, к системе, способной учитывать изменения в рабочем окружении.
Почему Афина не должна зависеть от одной конкретной личности
По мере развития проекта я пришёл к ещё одному важному архитектурному решению: необходимо отделить общее ядро от конкретного ассистента.
AthenaCore отвечает за вычислительные механизмы: обработку задач, взаимодействие с инструментами, управление выполнением, ресурсы и проверку результатов.
А конкретный ассистент может иметь собственную личность, контекст, модель представления о себе и особенности поведения.
Это позволяет развивать общую архитектуру, не зашивая в неё все особенности Афины.
В перспективе на такой основе можно будет создавать и других ассистентов — с другими именами, назначением и поведением, но с использованием общих проверенных механизмов.
При этом сама архитектура не должна подменять реальное состояние красивыми формулировками. Если определённая возможность ещё не реализована, ассистент должен учитывать это в своём представлении о собственных способностях.
Мне кажется важным, чтобы Афина не просто рассказывала, что она умеет, а опиралась на проверяемые сведения о доступных инструментах, ограничениях и результатах предыдущей работы.
Саморазвитие: не бесконтрольное изменение кода
Одна из долгосрочных целей проекта — дать Афине возможность постепенно расширять собственные способности.
Но я не хочу сводить эту идею к тому, чтобы языковая модель могла переписывать исходный код и самостоятельно внедрять любые изменения.
Более интересен другой подход.
Допустим, Афина получает задачу, для которой ей не хватает определённой способности. Сначала она должна проверить, можно ли решить задачу уже имеющимися средствами. Если нет, возникает необходимость найти недостающую возможность.
Дальше предполагается следующий цикл:
Обнаружение пробела → разработка кандидата навыка → изолированная песочница → тестирование → исправление ошибок → повторные проверки → демонстрация результата → подтверждение пользователя → подключение навыка.
Песочница здесь нужна не для формальности. Новый навык может содержать ошибки, неправильно обрабатывать данные или вести себя не так, как ожидалось. Поэтому он должен проходить проверку отдельно от рабочей системы.
И только после подтверждения, что результат соответствует требованиям, навык можно будет допустить к реальной работе.
Этот механизм ещё предстоит полноценно реализовать и проверить. Сейчас я рассматриваю его как одно из ключевых направлений дальнейшего развития, а не как уже готовую возможность.
В идеале Афина должна не только использовать имеющиеся инструменты, но и постепенно учиться понимать, каких инструментов ей не хватает, предлагать способы решения проблемы и проверять новые возможности.
При этом контроль над внедрением изменений останется у пользователя.
А что насчёт самой Афины?
Параллельно с технической архитектурой развивается и визуальная концепция ассистента.
У Афины уже есть несколько первоначальных направлений образа: классическое, технологичное, холодное и более энергичное. Они не обязательно должны навсегда определять её внешний вид.
Мне интересна идея, при которой со временем Афина сможет формировать и пересматривать собственное визуальное представление, опираясь на свою архитектуру, функции, историю развития и особенности поведения.
Не просто выбирать случайную картинку из готового набора, а участвовать в формировании образа, который будет отражать концепцию конкретного ассистента.
Разумеется, это пока направление будущего развития. Наличие модели собственного устройства или возможность сгенерировать подходящий образ сами по себе ничего не доказывают о наличии субъективного опыта или сознания. Для меня здесь важнее инженерная сторона идеи: сможет ли система описывать свои особенности, сопоставлять их с визуальными вариантами и предлагать обоснованные изменения.
А окончательное решение о применении таких изменений останется за человеком.
Что дальше?
На текущем этапе я не хочу бесконечно расширять фундамент только ради того, чтобы считать его более совершенным.
Следующая задача — довести Афину до состояния, когда её можно будет запустить с настоящей языковой моделью и дать ей первые реальные поручения.
Для этого предстоит:
Провести полный рабочий цикл с реальной моделью.
Проверить, как Афина понимает задачу и выбирает подходящие инструменты.
Убедиться, что действия действительно выполняются, а результаты проверяются.
Проверить сохранение опыта и его использование в последующих задачах.
Подготовить базовые навыки работы с файлами, проектами, кодом, документами и другими повседневными задачами.
Проверить поведение при ограниченных ресурсах компьютера и при занятой видеокарте.
Последний пункт особенно важен. Я хочу, чтобы архитектура не требовала мощного оборудования для каждой операции. В дальнейшем Афина должна будет адаптировать модели, частоту наблюдений и фоновые задачи к доступным ресурсам.
Это не означает, что слабый компьютер сможет одинаково быстро выполнять любые задачи. Ограничения останутся. Но система должна уметь учитывать их и выбирать разумный режим работы, а не пытаться постоянно выполнять всё на максимальной нагрузке.
Вместо заключения
За последнее время Афина стала заметно ближе к тому, чем я изначально хотел её видеть. У неё постепенно появляется не только вычислительная основа, но и механизмы сохранения состояния, восстановления задач, восприятия окружения и проверки результатов.
Но впереди остаётся важный рубеж: объединить эти механизмы в полноценную работу с настоящей языковой моделью.
Я не хочу объявлять первый запуск состоявшимся только потому, что все отдельные компоненты существуют и тесты проходят успешно. Мне важно увидеть, как система справляется с реальной задачей, что происходит при ошибках, насколько корректно она проверяет собственные результаты и может ли использовать накопленный опыт в дальнейшем.
И, пожалуй, главный принцип остаётся прежним: моя цель — не достроить всю Афину заранее, а создать основу, на которой она сможет начать работать, накапливать опыт и постепенно развиваться вместе с пользователем.
Это ещё не история о готовом автономном ассистенте. Это история о том, как я шаг за шагом пытаюсь сделать такую систему реальностью.
Если вам интересен проект, буду рад комментариям, вопросам и обсуждению архитектурных решений. Особенно интересно услышать мнение тех, кто занимается разработкой собственных ИИ-систем.
В следующих частях расскажу о том, как Афина будет получать реальные рабочие навыки, выбирать подходящие модели и переходить от отдельных проверенных механизмов к полноценному помощнику.
Разработка продолжается.
И Афина)






