Привет! Я не AI-инженер, у меня нет ML образования. Я проджект-менеджер со старым бекграундом в качестве веб-разработчика и с опытом более 10 лет в управлении командами разработки ПО. И с приходом полноценных AI-агентов я стал по выходным заниматься экспериментами на своих пет-проектах.
Один из таких проектов - мобильное приложение для запоминания карточек/слов: я учу японский язык и не нашёл ни одного сервиса, в котором добавлять новые слова в словарь было бы не мучительно, поэтому решил сделать своё, для себя. Что ж, для этого у меня не было GPU-кластера и команды, но был MacBook, свободное воскресенье и конкретная проблема, которую я хотел решить.
Ниже я опишу свои наблюдения с точки простого PM'a, и вытекающую идею и концепт.
wikiLLM
Не так давно я наткнулся на описанную идею Andrej Karpathy о wikiLLM - держать знания в структурированной wiki, которую агент читает, пополняет за счет сырых данных и использует в ответах. Логика простая и красивая: дай агенту хорошо организованную базу знаний, и он будет работать точнее. Я попробовал. По крайне мере так, как я это понял. И в начале было отлично. Я распотрошил свою главную .md инструкцию, и структурировал все основные моменты по папкам в wiki/. Но самое интересное наблюдение пришло потом...
Как проджект-менеджер, я привык подмечать "лишнее" и "недостающее". И тут не исключение. Wiki я собрал, но она не росла и агент не становился "лучше". Почему? Очевидно же! Потому что я не отдавал агенту сырых данных, кроме стартового периода, следовательно, его знания не росли. Они могли немного прибавляться в моменте за счет веб-поиска, но на том все.
Как же так получилось?
Это не история о том, что wikiLLM плохой подход - Andrej Karpathy уж точно умнее меня =) Просто мои требования от агента не полностью подходили под этот метод (по крайней мере насколько я понял этот метод). У меня нет потока сырых данных, которые можно было бы разбить на статьи в классическом понимании. Мои сырые данные - это гипотезы, концепты, запросы и баги. Мне нужен был не библиотекарь, а разработчик, который закрывает мои продуктовые задачи. Я пишу ему: «сделай кнопку...» или «здесь баг...» - и он должен решить это, опираясь на контекст нашего конкретного проекта. И было бы прекрасно, если в будущем он не будет делать похожие баги в аналогичных или специфических кейсах.
При WikiLLM-подходе я начал вручную добавлять в базу всё, что считал важным. Правила - в wiki. Выученные уроки - в lessons-learned.md. Критические вещи - дублировал ещё раз прямо в CLAUDE.md, «чтобы точно знал». Через три месяца: CLAUDE.md на 7,000 токенов, и агент, который всё равно повторял ошибки, которые мы уже разбирали.
Проблема была не в контенте. Проблема была в том, кто должен его создавать.
Но это не история о том, что wikiLLM плохой подход. Это история о том, что я применял его не по назначению - и только поняв это, смог начать двигаться в нужную для себя сторону.
Тот самый момент
Я работаю с разработчиками уже много лет. Когда в команду приходит junior, я не выдаю ему 200-страничный документ «всё, что нужно знать». Он учится на задачах - и, я считаю, что ключевой момент обучения почти всегда один и тот же: неожиданность.
Он пишет код, натыкается на поведение, которого не ожидал. Баг. Edge case. Недокументированное ограничение API. Именно в этот момент формируется настоящее знание - не из документации, а из живого опыта. К концу года у него в голове десятки таких кейсов, и уже именно они делают его ценным специалистом.
Это и оказалось ответом на мой вопрос: а что если агент сам создаёт себе сырой контекст в моменты неожиданностей?
Не я заношу знания. Агент замечает расхождение между ожидаемым и реальным - и сам фиксирует это как черновую запись. Позже, если ситуация повторится, он понимает: это паттерн, а не случайность - и оформляет его в правило.
Именно так растёт junior в senior. Не через изучение документации, а через накопленный опыт реальных задач. Ну что, ответ есть! Осталось только смоделировать этот процесс.
Концепция SEK
Так появилась концепция, которую для себя я обозначил как Self-Evolving Knowledge (SEK).
Здесь помог мой PM-бэкграунд. Я привык думать категориями «кто за что отвечает» и «как выстроить процесс так, чтобы он работал без ручного управления». Фреймворк junior→senior - это не метафора. Я попробовал буквально смоделировать онбординг нового члена команды.
Когда я начал использовать WikiLLM-подход в сценарии «агент-разработчик», а не «агент-библиотекарь», то столкнулся с некоторыми проблемами.
main_instruction.md разбухает. Чтобы агент гарантированно следовал правилу, его дублируют прямо в инструкцию. Через полгода там оседает копия половины wiki - «на всякий случай». 7,000 токенов при старте каждой сессии, независимо от задачи - проще простого.
Знания дублируются. В lessons-learned.md записан «выученный урок». В wiki/rules/ - «правило». Это одна и та же истина в двух местах. Агент путается, какое из них актуальнее.
Токенный налог растёт линейно. Каждая новая страница, добавленная в «обязательный» список, увеличивает стоимость старта. Через год агент тратит 30-40% контекстного окна ещё до первого сообщения.
Триггеры загрузки написаны прозой. «Перед фронтенд-задачами читай вот такую инструкцию» - это инструкция, которую агент должен сам интерпретировать. Нет машинно-читаемого слоя. Нет гарантий.
Но главная проблема глубже всех этих четырёх: я по-прежнему был единственным источником знаний. Агент ничего не добавлял сам. Он только потреблял то, что я успел занести вручную.
SEK меняет именно это.
Архитектура
SEK организует знания в четыре уровня контекста по принципу «грузи только то, что нужно прямо сейчас».

L0 - Bootstrap (всегда в контексте)
Это моя главная инструкция - он же CLAUDE/AGENTS/GEMINI и прочие подобные .md. Но радикально сжатая.
Цель - уместить в максимально малое количество токенов всё необходимое для старта:
Кто я и каким языком отвечаю
Какие категории знаний у меня есть
По каким триггерам что загружать
Ничего лишнего. Никаких развёрнутых объяснений, примеров, «не делай X, потому что...». Только скелет.
Что исчезает из main_instruction.md:
всякое «What NOT to Do»,
развёрнутые описания каждой wiki-страницы, inline-правила - всё это выносится в wiki/rules/ и грузится по триггеру.
L1 - Routing & Index (по необходимости)
wiki/_routing.md - полная таблица маршрутизации в YAML-формате. Агент читает её, если задача не покрыта ядром из main_instruction.md.
triggers: - id: frontend keywords: [react, frontend, ui, component, tsx, jsx] load: - wiki/design/design-system.md - id: llm-cost keywords: [pricing, calc_cost, тариф, стоимость] load: - wiki/references/llm-pricing.md
YAML здесь - самый дешёвый и точный формат для машинного разбора «keywords → files», который при этом остаётся читаемым для человека.
wiki/_index.md - оглавление: путь файла + одна строка описания. Около 200-300 токенов. Резервный уровень, если routing не дал результата.
Большие файлы (design-system, edge-cases) не исчезают - они перестают грузиться «на всякий случай». Качество ответов по этим темам не падает: файл загружается только когда нужен.
L2 - Validated knowledge (по триггеру)
Вся экспертиза проекта: wiki/rules/, wiki/references/, wiki/architecture/, wiki/workflows/. Грузится только когда задача явно касается темы.
Каждое правило получает уникальный ID-тег ([XXX-001], [YYY-ASYNC]). Перед добавлением нового правила агент делает grep - не пишет то же самое дважды.
L3 - Ephemeral state (где рождаются новые знания)
А вот тут самое важное - механизм "самообучения".
memory/inbox.md - это не архив уроков. Это конвейер.
Неожиданность (баг, workaround, скрытое поведение API) ↓ REGISTER → memory/inbox.md (3 строки на запись) ↓ PROMOTE → wiki/rules/ или wiki/references/ ↓ Удаление из inbox
Агент пишет в inbox сам - без моего участия. Существуют четыре триггера для записи: неожиданное поведение системы, найденный workaround, недокументированное поведение API, явная поправка с моей стороны. Ровно те же ситуации, в которых junior-разработчик делает пометку «запомнить».
Жёсткий лимит - я выбрал 20 записей. Старше N дней без подтверждения - удаляются автоматически. Inbox не разрастается, он всегда остаётся ephemeral.
draft → validated → core
Каждое знание проходит три стадии зрелости.

Уровень |
Где живёт |
Кто записал |
Доверие |
|---|---|---|---|
|
|
Агент после факта |
Гипотеза, требует проверки |
|
|
Подтверждено повтором или пользователем |
Рабочее правило |
|
main_instruction.md (Critical Rules) |
Явное решение пользователя |
Нарушение = регрессия |
Promote draft → validated агент делает автономно. Если та же тема встречается повторно, или 3+ записи на одну тему - кандидат на promote. Перед записью идет grep по существующим rules. После - одна строка в ответе: ? Promoted: [TAG] → wiki/rules/Y.md.
Promote validated → core требует явного «да» от меня. Агент может предложить: «Правило [TAG] встречается в 5+ задачах за месяц. Промоутить в Critical Rules?» - но main_instruction.md не редактируется автономно. Это асимметричная защита: низкий порог входа (пишет охотно), высокий порог для core (только с разрешения).
main_instruction.md - конституция. Агент её не переписывает.
Защита от ошибок. Если правило промоутировано менее 7 дней назад и впервые применяется - агент сигнализирует: ? Using recently promoted: [TAG]. Если поведение не совпадает - /revoke [TAG]. Команда /revoke удаляет запись из wiki/ и логирует отзыв. Ничего не пропадает бесследно.
Junior → Senior
Вот как примерно мог бы выглядеть рост агента на одном и том же проекте:
Стадия |
wiki/rules |
memory/inbox |
Поведение |
|---|---|---|---|
Junior(старт) |
5-10 core-rules |
пусто |
Чаще спрашивает, лезет в web-docs, редко ссылается на внутренние правила |
Middle |
20-40 validated rules |
5-10 свежих наблюдений |
Уверенно ссылается на rules, узнаёт паттерны, реже web-search |
Senior |
60+ rules + кросс-ссылки |
inbox почти пустой |
«Это [TAG]-кейс, см. rule X», предлагает архитектурные решения |

Переход не нужно стимулировать. Он происходит сам - по мере того как агент работает с проектом и ведёт цикл REGISTER → PROMOTE. Модель та же. Меняется только корпус знаний.
Как PM я видел этот паттерн десятки раз с людьми. Разница между junior и senior - не в интеллекте и не в инструментах. В накопленном, структурированном опыте реальных задач. SEK переносит эту же механику на агента.
Вы не апгрейдите железо. Вы нанимаете специалиста и даёте ему время вырасти.
Что меняется?
SEK - это не переписывание с нуля.
Не меняется: структура папок (wiki/, memory/), логика категорий (rules, references, services), содержание существующих файлов, git history, все runtime.
Меняется: что загружается в контекст агента, в каком порядке, и - главное - кто создаёт новые знания. Не только вы. Агент тоже.
Итоги
SEK - это не новая модель, не файнтюн и не дорогой инструмент. Это другой взгляд на то, кто создаёт знания для агента и как они накапливаются.
Агент может не быть умнее - он должен знать больше о вашем конкретном проекте. Это знание рождается не из документации, а из живого опыта: сюрприз → черновик → правило. Ровно так, как растёт любой специалист.
Модель остаётся той же. Меняется только то, насколько богат её рабочий справочник.
Что дальше?
Я продолжу копать и исследовать организацию контекста. Даже несмотря на то, что Anthropic недавно выпустили в релиз собственную "память" для агента =)
Что хотел бы зафиксировать в статьях:
Сравнение с wikiLLM Карпати - честный разбор по 10 осям: где подходы совпадают, где расходятся и тп
Что нового в SEK (в теории) - не считаю, что это какая-то революция, все подходы в том или ином виде уже существовали
Lint Protocol - как агент проверяет качество знаний перед promote и не плодит мусор в wiki (я надеюсь, что не плодит)
Aleksei Panin - Senior Project Manager → Начинающий AI практик.
Комментарии (10)

kedzoo
30.05.2026 21:46Звучит как хермес на файликах вместо векторной БД

DeadMoose Автор
30.05.2026 21:46честно говоря, физически до Гермеса не добрался, но наслышан о его авто-написании скиллов. Скорее всего идея-то та же самая )) но как я понял (а точнее не очень понял), то у хермеса нет подтверждения того, что прилетает - хотя и видел упоминание о том, что он как-то замечает паттерн и уже на основе этого пишет скилл. Но могу и ошибаться.

zakarov
30.05.2026 21:46Попытки создавать самообновляемые вики/доки/скиллы по проектам начались еще до эры GPT 3.5. Но через N месяцев независимо от "мозгов" моделей всегда оказывается, что эту самообновляемую вики проще выкинуть, чем рефакторить, и она скорее вредна для агентов, чем полезна. Даже если был обвес из метрик и множества авто-CI-этапов.
Правила = артефакт архитектуры и процессов, влияющий на всю дальнейшую траекторию разработки. На мой взгляд, это не то, что имеет смысл доверять агентам, даже если это какие-то "вторичные" инструкции.
Вот как это организовано у меня (то есть в командах, куда я внедрил разработку на агентах):
Для каждого проекта (сервиса) есть плагины со скиллами. Проектные плагины, доменные, процессные. В одном плагине может быть от одного до несколько десятков скиллов про работу с отдельными независимыми компонентами проекта, внешними API, тулами и т.д.
Плагины в отдельных репо. Перед запуском сессий обертка над агентами проверяет их актуальность и обновляет.
Скиллы аккуратно разбиты на references под тот самый "progressive disclosure".
Потенциальные изменения в "правила" может составлять человек с агентом или без (как угодно). Агент может помогать человеку собирать наблюдения, предлагать изменения.
Ревью и обновление скиллов с "правилами" идет всегда через людей-владельцев процесса. Агент не может сам обновлять main плагинов (откуда их забирают агенты), максимум - создать PR в репо плагинов со скиллами.
Число правил на проекте зависит не от количества строк кода, а от качества архитектуры и количества внешних зависимостей. Качественная архитектура и хорошо написанные доки (доки пишут и ревьювят агенты и люди как код) уменьшают число необходимых правил.
Наиболее жирные правила у меня в командах, работающих над древними legacy, где очень плохая неочевидная архитектура и приходится компенсировать правилами.
Для сравнения:
проект с чистой архитектурой на 440к строк кода = 8кб плагин со всеми проектными правилами и доп.индексами по докам (считая только md, не считая отдельный процессный командный плагин и скиллы по внешним API внутри самого проекта)
legacy на 290к строк кода = 610кб md в скиллах (там альтернативная версия доков по проекту, т.к. старые выкидывать пока не решились)

DeadMoose Автор
30.05.2026 21:46Подписываюсь почти под всеми тезисами и приемами! =)
Возможно, поставь я какой угодно похожий плагин, который вы описали, то вряд ли захотел бы экспериментировать с этим. Но мой интерес как раз в том, чтобы машина за меня делала как можно больше и заодно попробовать промоделировать процесс роста "спеца" в условиях спец. контекста =) - не скажу, что уверен в том, что через N месяцев не поменяю направление, но, тем не менее, поэкспериментировать хочется ))

Ra2007
30.05.2026 21:46Узнал себя в CLAUDE.md на 7000 токенов. Прошли через это. Сломало то что решение описывалось и дублировалось, а не паттерн из которого агент сам вывел правило. Перешли на скиллы: каждый отвечает за один процесс, короткий, конкретный. Агент не держит весь контекст одновременно. Идея с авто-обновлением памяти через outcomes интересная, мы что-то похожее делаем через post-session hooks, но без формализации.

DeadMoose Автор
30.05.2026 21:46Аминь =) Надеюсь, у вас все получится! Пока что только присматриваюсь к хукам)

ogregor
30.05.2026 21:46Я сейчас думаю что нужны развитые мета скиллы базирующиеся на мелких нейросетках которые роутят по деревьям классификатора нужных областей, групп, скиллов.

DeadMoose Автор
30.05.2026 21:46поддерживаю! В целом, в том же Клод Код ведь достаточно давно использует механизм автоматического делегирования явно "рутинных" запросов в более дешевые модели - это хороший механизм оптимизации траты токенов. Да и собственноручно сделать /agents для Клода тоже сильно способствует экономии и пониманию кому и что отдавать =)
Тут в тему будет "армия" маловесящих локальных моделей и модель посильнее в роли оркестратор =)
onyxmaster
То что вы описываете называется progressive disclosure. Без автоматической оценки "было-стало" именно ваша версия не выглядит заведомо лучше других.
DeadMoose Автор
Приветствую! Что ж, буду знать как это называется в кругах =) Да и в целом прекрасно знаю, что революции тут нет - однако, просто поделился наблюдениями. Думаю, никто не будет против ;)