Три кита инструкций для агента: правила, скиллы, память
В прошлом посте я писал, как агент перестал галлюцинировать на 35 каналах после переноса правил по уровням. Несколько человек спросили, как именно эти уровни выглядят. Сейчас расскажу.
У Claude Code есть три типа файлов с инструкциями. Каждый - со своей ролью и своим режимом обновления. Если их перепутать, получится та самая свалка, в которой тонут хорошие правила.
▫️ CLAUDE.md - статический контракт. Сюда идут факты и правила, которые меняются редко. Профиль пользователя, стек проекта, правила работы с git, перечень MCP-серверов, конвенции именования. Этот файл грузится в контекст агента всегда. Поэтому в нём должно быть только то, что переживёт неделю - не то, что меняется в течение дня.
▫️ SKILL.md - триггерный модуль. Это файл с описанием конкретного процесса (собрать дайджест, сделать дашборд, выкатить витрину). У каждого скилла во фронтматтере лежит description - однострочное описание, по которому агент решает, нужен ли скилл сейчас. Само тело скилла грузится только тогда, когда description совпал с задачей. Это позволяет хранить десятки сценариев без раздувания контекста. А ещё у антропика есть скил по написанию скиллов =)
▫️ MEMORY.md - индекс авто-памяти. Здесь не сами знания, а ссылки на них. Сами факты лежат в отдельных файлах (один файл - один факт). Индекс грузится всегда, тела отдельных файлов - лениво.
Три кита, четыре простых правила, которые держат всю систему:
1️⃣ Одна правда - в одном месте. Если правило живёт и в зонтичном CLAUDE.md, и в скилле, и в памяти - это не страховка, это будущий дрейф. Через месяц одно из мест уйдёт вперёд, остальные начнут расходиться
2️⃣ Скилл - это глагол, CLAUDE.md - существительное. «Как собрать дайджест» - скилл. «Лимит TG caption - 1024 символа» - CLAUDE.md. Если новый блок звучит как «делай так-то», это скорее скилл
3️⃣ Релевантность ≥ 2 стримов = вверх. Правило идёт в зонт только когда нужно двум и более стримам. Иначе остаётся в стриме. Иначе - в скилле. Если положили выше, чем нужно, контекст забивается шумом
4️⃣ Description - это интерфейс скилла. Расплывчатое описание = скилл не сработает там, где должен. «Скилл про публикацию» - не сработает. «Применяй когда пользователь говорит "опубликуй пост" или сразу при работе с .md в папке posts» - сработает
Но:
▪️ Это всё дисциплина. Никто не запретит вам положить правило неправильно - агент будет работать, просто хуже
▪️ Память отдельная история - она живёт за пределами вашего репо, вы её даже в git не закоммитите. Управляется через правила в CLAUDE.md и периодический ручной аудит
🚀 Позже расскажу про каскадную структуру для рабочего стрима (как Jira-эпики и таски ложатся в дерево скиллов) и про антипаттерны, которые я разработал сам имперически при работе как на рабочих так и на собственных проектах. После этого - готовлю практический гайд с шаблонами.
Post #205
347
- 🔥 4
- 👍 1