Orkas Orkas
Главная Блог Агенты
Агенты

Агент, который сам становится лучше: как устроено саморазвитие Orkas

Локальный цикл саморазвития Orkas изнутри: лёгкие сигналы, фоновая рефлексия, исполняемые навыки, метрики навыков и защита от ошибочных выводов.

Большинство ИИ-ассистентов работают по принципу "использовал и забыл". Исправьте привычку сегодня — завтра он повторит ту же ошибку; объясните на прошлой неделе особенности процесса вашей команды — на этой неделе он ведёт себя так, будто слышит о них впервые. Каждая беседа начинается с нуля, и какой бы умной ни была модель, это всё ещё умный человек с амнезией.

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

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

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

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

Полный цикл

реальная работа, снова и снова
      │  локально записывается: вызванные инструменты, наличие ошибок и исправлений
      ▼
   накапливаются сигналы
      │  сигналы извлекаются из разговора на месте и остаются на устройстве
      ▼
  решение о необходимости рефлексии
      │  взвешенная оценка сигналов; запуск только выше порога, сетевые сбои не учитываются
      ▼
   рефлексия в фоне
      │  не каждый ход, а периодически, с выбором подходящих агентов
      ▼
  выделяются два результата
      │  ① повторно используемые "навыки"   ② "понимание" себя
      ▼
  автоматически добавляются в следующий ход
      └──────────► обратно к началу, цикл продолжается

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

Шаг 1: наблюдение за собой почти без затрат

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

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

Признак «исправляли или нет» заслуживает внимания. Это чисто эвристическая локальная оценка по совпадению с несколькими формулировками в сообщении на вашем устройстве: китайскими вроде "不对" / "应该是" / "重新", английскими вроде wrong, actually, instead. Она не претендует на точность: это лишь сигнал, а не вердикт. Редкие ложные срабатывания допустимы, потому что далее этот признак взвешивается вместе с другими; сам по себе он ничего не решает.

Шаг 2: когда самоанализ действительно оправдан

На мой взгляд, именно здесь лучше всего видно мастерство проектирования всего механизма.

Наивный подход — "проводить самоанализ после накопления N случаев". Но это слишком грубо: три сетевых тайм-аута подряд и три исправления пользователя подряд явно не одно и то же и не должны обрабатываться одинаково. Orkas использует взвешенную оценку нескольких сигналов: каждое заслуживающее внимания явление — сигнал с весом; веса сработавших за ход сигналов суммируются, и самоанализ проводится только при превышении порога (по умолчанию 0,7).

Основные сигналы выглядят примерно так:

СигналВесУсловие срабатывания
Исправление пользователя0,9В этом ходе обнаружено исправление от пользователя
Неэффективный навык0,85Навык загружен, но ход всё равно завершился ошибкой
Восстановление после ошибки0,8Возникла ошибка, но в итоге удалось исправить ситуацию
Проявилась известная слабость0,7Задача затронула слабое место, отмеченное в самооценке
Сложность задачи0,5Число вызовов инструментов превысило определённое значение

Например, ход с исправлением пользователя (0,9) и некоторой сложностью (0,5) даёт сумму 1,4, заметно выше 0,7, поэтому запускается самоанализ. Ход, который лишь немного сложен (0,5), не достигает порога и пропускается. Веса тоже отражают суждение: прямое исправление пользователя получает наивысший вес — 0,9, потому что это обратная связь с самым высоким отношением сигнала к шуму. Пользователь прямо сказал, что вы ошиблись, и это, скорее всего, стоит записать.

Одно критически важное исключение

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

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

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

Шаг 3: самоанализ в фоне, а не у вас на глазах

В ловушку легко попасть: как только обнаружено, что "пора подумать", остановиться и заняться этим сразу. Тогда агент будто периодически запинается и уходит "размышлять о жизни", что неудобно для пользователя.

Orkas переносит самоанализ в фон и запускает его с фиксированной периодичностью. Правила планирования примерно такие:

  • Запускать цикл самоанализа через определённые интервалы (скажем, порядка дюжины с лишним часов).
  • Выдерживать минимальную паузу между двумя самоанализами одного агента (несколько часов), чтобы не запускать их слишком часто.
  • Но если самоанализа не было слишком долго (например, больше недели), запустить его принудительно, чтобы не откладывать бесконечно.
  • Ограничить число агентов в одном цикле, чтобы не распылять ресурсы сразу на всех.

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

Шаг 4: как на самом деле проходит самоанализ

Когда время действительно пришло, процесс таков: сначала недавняя активность собирается в "пакет", затем вместе с тщательно написанным промптом передаётся модели для чтения и обобщения.

У пакета есть бюджет: взять не больше нескольких недавних бесед, добавить несколько классов системных событий, расположить их хронологически и ограничить общий объём числом токенов (скажем, десятью с лишним тысячами). Всю историю туда не сгружают: она не поместится, а отношение сигнала к шуму будет низким.

Особой тщательности требует промпт. Он требует от модели не "описаний", а исполнимых предписаний. Разница кажется небольшой, но имеет огромное значение. Сравните:

✗ "Ответы агента иногда слишком многословны; следует быть внимательнее."

✓ "При ответах на вопросы семейного офиса никогда не используй больше 5 пунктов списка."

✗ "Похоже, пользователь предпочитает краткие ответы."

✓ "В контексте семейного офиса всегда сначала давай главный вывод, затем обоснование."

Промпт явно направляет модель к конструкциям "никогда / всегда / если — то" с конкретными условиями срабатывания. Причина практическая: заметка "помни о краткости" не подсказывает агенту конкретного действия при следующем чтении, а "никогда не превышай 5 пунктов" можно исполнить напрямую. Чтобы самоулучшение было полезным, итогом должна быть действенная инструкция, а не верная банальность.

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

Два вида результата

Результат самоанализа попадает в два места.

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

---
name: "Weekly Report Export"
description: "Compile this week's data into the standard weekly-report format"
createdAt: "2025-01-01T00:00:00Z"
updatedAt: "2025-01-08T00:00:00Z"
patchCount: 2
lastUsedAt: "2025-01-09T10:00:00Z"
---

## Steps
1. ...
2. ...

Хранение навыков в файлах — практичный выбор: человек может напрямую читать и редактировать их, они не заперты в непрозрачной базе данных.

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

Навыки не только записываются

Если лишь создавать навыки, со временем накопится свалка. Поэтому у навыков есть полный жизненный цикл.

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

Есть и предел количества. Общее число навыков ограничено (скажем, 200); когда лимит достигнут, добавление нового вытесняет старый по принципу LRU (давнее всего не использовавшийся), освобождая место. У вытеснения есть приоритет: сначала удаляются навыки, ни разу не использованные после создания. Навык, который никогда не читали, скорее всего, изначально был неудачно сформулирован, и ему лучше уступить место.

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

Как понять, действительно ли навык полезен

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

Механизм таков: в начале каждого хода доступные навыки появляются в индексе системного промпта — это один "показ"; если агент действительно прочитал навык в этом ходе, это один "вызов". Их соотношение даёт первую метрику:

  • Частота вызовов = вызовы / показы. Если навык день за днём никому не нужен, частота вызовов низкая: он либо бесполезен, либо описан так, что непонятно, когда его применять.
  • Доля ручных правок после применения = доля случаев, когда навык был вызван, но затем пользователь вручную изменил результат. Высокое значение означает, что результат навыка не вполне соответствует предпочтениям пользователя.
  • Доля неэффективных применений = доля случаев, когда навык был вызван, но ход завершился невременной ошибкой. Высокое значение указывает на возможную проблему в самом навыке.

Здесь снова проявляется то самое исключение: при расчёте неэффективности временные ошибки не учитываются, как и ходы, которые пользователь остановил вручную. Нельзя ставить плохую оценку совершенно хорошему навыку из-за одного сетевого сбоя.

С этими несколькими числами навыки перестают быть "тем, что копится в чёрном ящике", и становятся "тем, что можно оценивать и улучшать". Решение, какой навык исправить или удалить, больше не принимается наугад.

Замыкание цикла

Если соединить всё описанное, полный цикл выглядит так:

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

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

Несколько компромиссов, о которых стоит сказать

Если оглянуться назад, несколько решений в этом механизме оказываются ключевыми.

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

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

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

Обучению нужны тормоза. Лимиты количества, вытеснение по LRU, ограничения длины — без них "непрерывное обучение" рано или поздно становится "непрерывным разрастанием". Забывать, отбрасывать и сокращать так же важно, как запоминать.

В заключение

Саморазвитие Orkas по сути добавляет агенту медленный цикл: быстрый — это немедленный ответ в каждой беседе; медленный — периодический взгляд назад и преобразование опыта в то, что пригодится в следующий раз. Сложность не в том, чтобы "заставить модель запомнить", а в инженерных решениях, которые легко упустить: как определить, какой опыт стоит записать, как не сбиться из-за случайной ошибки, как сделать усвоенное действительно исполнимым и как сократить его до того, как оно разрастётся.

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

Чтобы увидеть специализированных агентов, на которых опирается этот медленный цикл, посмотрите команду агентов Orkas.