Механизм непрерывного обучения: автоматическое извлечение переиспользуемых паттернов
Чему вы научитесь
- Использовать команду
/learnдля ручного извлечения переиспользуемых паттернов из сессии - Настраивать continuous-learning skill для автоматической оценки при завершении сессии
- Настраивать Stop hook для автоматического запуска извлечения паттернов
- Сохранять извлечённые паттерны как learned skills для использования в будущих сессиях
- Настраивать пороги извлечения, требования к длине сессии и другие параметры
Ваша текущая проблема
При работе с Claude Code вы наверняка сталкивались с такими ситуациями:
- Решили сложную проблему, но в следующий раз приходится разбираться заново
- Освоили приёмы отладки фреймворка, но через время забыли их
- Обнаружили специфические соглашения по коду в проекте, но не можете систематически их зафиксировать
- Нашли обходное решение, но при следующей похожей проблеме не можете его вспомнить
Эти проблемы приводят к тому, что ваш опыт и знания не накапливаются эффективно, и каждый раз приходится начинать с нуля.
Когда использовать этот подход
Сценарии применения механизма непрерывного обучения:
- При решении сложных проблем: отлаживали баг полдня — нужно запомнить ход решения
- При изучении нового фреймворка: обнаружили особенности или лучшие практики фреймворка
- В середине разработки проекта: постепенно выявляете специфические соглашения и паттерны проекта
- После код-ревью: узнали новые методы проверки безопасности или стандарты кодирования
- При оптимизации производительности: нашли эффективные приёмы оптимизации или комбинации инструментов
Ключевая ценность
Механизм непрерывного обучения делает Claude Code умнее с каждым использованием. Он работает как опытный наставник, автоматически записывая полезные паттерны в процессе решения проблем и предлагая их в похожих ситуациях в будущем.
Основная концепция
Механизм непрерывного обучения состоит из трёх ключевых компонентов:
1. Команда /learn → Ручное извлечение: запускайте в любой момент для сохранения ценных паттернов
2. Continuous Learning Skill → Автоматическая оценка: запускается Stop hook, анализирует сессию
3. Learned Skills → База знаний: сохраняет паттерны, автоматически загружает в будущемПринцип работы:
- Ручное извлечение: после решения нетривиальной проблемы вы сами используете
/learnдля извлечения паттернов - Автоматическая оценка: при завершении сессии скрипт Stop hook проверяет длину сессии и предлагает Claude провести оценку
- Накопление знаний: извлечённые паттерны сохраняются как learned skills в директории
~/.claude/skills/learned/ - Повторное использование: Claude Code автоматически загружает эти skills в будущих сессиях
Почему выбран Stop hook:
- Легковесность: запускается только один раз при завершении сессии, не влияет на скорость взаимодействия
- Полный контекст: имеет доступ к полной истории сессии, легче обнаружить ценные паттерны
- Неблокирующий: не запускается при каждом сообщении, не добавляет задержку
🎒 Подготовка
Перед использованием механизма непрерывного обучения убедитесь:
- ✅ Установлен плагин Everything Claude Code
- ✅ Изучена команда
/learnв разделе Обзор основных команд - ✅ Понятна концепция Stop hook из раздела Автоматизация с Hooks
Предварительные требования
Это руководство предполагает, что вы знакомы с базовыми операциями Claude Code и концепцией hooks. Если установка ещё не выполнена, сначала прочитайте Быстрый старт.
Пошаговое руководство: полный процесс непрерывного обучения
Давайте изучим весь процесс на практическом примере. Предположим, вы отлаживали ошибку типов TypeScript и наконец нашли решение.
Шаг 1: Ручное извлечение паттерна с помощью /learn
Зачем Ручное извлечение подходит для только что решённых важных проблем — сохраните сразу, чтобы не забыть.
Действие Введите в Claude Code:
/learnОжидаемый результат Claude проанализирует текущую сессию и спросит, обнаружены ли паттерны для извлечения:
Я проанализировал текущую сессию и обнаружил следующие паттерны для извлечения:
1. Ошибка типов TypeScript: решение через ограничения дженериков
- Описание проблемы: некорректный вывод типа параметра функции
- Решение: добавить явное ограничение дженерика `<T extends ...>`
- Применимость: сложный вывод типов, callback-функции
Извлечь эти паттерны? (yes/no/skip)Контрольная точка ✅
- Распознал ли Claude решённую вами проблему
- Точно ли описан извлечённый паттерн
- Разумны ли сценарии применения
Следующий шаг Если паттерн корректен, ответьте yes. Если нужны изменения — укажите конкретные правки.
Шаг 2: Сохранение как learned skill
Зачем После сохранения в файл skill будущие сессии смогут автоматически загружать эти знания.
Действие При подтверждении извлечения Claude создаст файл skill:
Паттерн будет сохранён в: ~/.claude/skills/learned/typescript-generic-constraints.md
# TypeScript Generic Constraints
**Extracted:** 2026-01-25
**Context:** Решение проблем сложного вывода типов
## Problem
Некорректный вывод типа параметра функции TypeScript приводит к ошибкам типизации.
## Solution
Добавить явное ограничение дженерика `<T extends ...>` для уточнения связей типов.
## Example
```typescript
// Before
function process(data) { ... } // Вывод типа не работает
// After
function process<T extends Record<string, unknown>>(data: T) { ... }When to Use
- Сценарии сложного вывода типов
- Определение типов callback-функций
- Ограничения параметров дженерик-функций
**Ожидаемый результат**
Claude сообщит о сохранении файла:
```markdown
✅ Skill сохранён в: ~/.claude/skills/learned/typescript-generic-constraints.md
При возникновении похожих проблем с типами в будущем Claude автоматически загрузит этот навык.Контрольная точка ✅
- Успешно ли создан файл
- Находится ли путь к файлу в директории
~/.claude/skills/learned/ - Точно ли содержимое skill
Шаг 3: Настройка Continuous Learning Skill
Зачем После настройки автоматической оценки Claude будет автоматически проверять наличие паттернов для извлечения при завершении каждой сессии.
Действие
Создайте файл конфигурации ~/.claude/skills/continuous-learning/config.json:
{
"min_session_length": 10,
"extraction_threshold": "medium",
"auto_approve": false,
"learned_skills_path": "~/.claude/skills/learned/",
"patterns_to_detect": [
"error_resolution",
"user_corrections",
"workarounds",
"debugging_techniques",
"project_specific"
],
"ignore_patterns": [
"simple_typos",
"one_time_fixes",
"external_api_issues"
]
}Описание параметров:
| Поле | Описание | Рекомендуемое значение |
|---|---|---|
min_session_length | Минимальная длина сессии (количество сообщений пользователя) | 10 |
extraction_threshold | Порог извлечения | medium |
auto_approve | Автоматическое сохранение (рекомендуется false) | false |
learned_skills_path | Путь сохранения learned skills | ~/.claude/skills/learned/ |
patterns_to_detect | Типы паттернов для обнаружения | см. выше |
ignore_patterns | Типы паттернов для игнорирования | см. выше |
Ожидаемый результат Файл конфигурации создан в ~/.claude/skills/continuous-learning/config.json.
Контрольная точка ✅
- Корректен ли формат файла конфигурации (валидный JSON)
- Содержит ли
learned_skills_pathсимвол~(будет заменён на реальную домашнюю директорию) - Установлен ли
auto_approveвfalse(рекомендуется)
Шаг 4: Настройка автоматического запуска Stop Hook
Зачем Stop hook автоматически срабатывает при завершении каждой сессии, не требуя ручного запуска /learn.
Действие
Отредактируйте ~/.claude/settings.json, добавив Stop hook:
{
"hooks": {
"Stop": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "~/.claude/skills/continuous-learning/evaluate-session.sh"
}]
}]
}
}Пути к скриптам:
| Платформа | Путь к скрипту |
|---|---|
| macOS/Linux | ~/.claude/skills/continuous-learning/evaluate-session.sh |
| Windows | C:\Users\YourName\.claude\skills\continuous-learning\evaluate-session.cmd |
Ожидаемый результат Stop hook добавлен в ~/.claude/settings.json.
Контрольная точка ✅
- Корректна ли структура hooks (Stop → matcher → hooks)
- Указывает ли command на правильный скрипт
- Установлен ли matcher в
"*"(соответствует всем сессиям)
Шаг 5: Проверка работы Stop Hook
Зачем После проверки корректности конфигурации можно уверенно использовать автоматическое извлечение.
Действие
- Откройте новую сессию Claude Code
- Выполните некоторую работу по разработке (отправьте минимум 10 сообщений)
- Закройте сессию
Ожидаемый результат Вывод лога скрипта Stop hook:
[ContinuousLearning] Session has 12 messages - evaluate for extractable patterns
[ContinuousLearning] Save learned skills to: /Users/yourname/.claude/skills/learned/Контрольная точка ✅
- Показывает ли лог количество сообщений сессии ≥ 10
- Корректен ли путь learned skills в логе
- Отсутствуют ли сообщения об ошибках
Шаг 6: Автоматическая загрузка learned skills в будущих сессиях
Зачем Сохранённые skills автоматически загружаются в похожих ситуациях в будущем, предоставляя контекст.
Действие При возникновении похожей проблемы в будущих сессиях Claude автоматически загрузит соответствующие learned skills.
Ожидаемый результат Claude сообщит о загрузке соответствующих skills:
Я заметил, что этот сценарий похож на ранее решённую проблему вывода типов.
Согласно сохранённому skill (typescript-generic-constraints), рекомендуется использовать явное ограничение дженерика:
```typescript
function process<T extends Record<string, unknown>>(data: T) { ... }
**Контрольная точка ✅**
- Ссылается ли Claude на сохранённый skill
- Точно ли предложенное решение
- Повысилась ли эффективность решения проблемы
## Контрольная точка ✅: Проверка конфигурации
После выполнения всех шагов выполните следующие проверки:
1. **Проверка существования файла конфигурации**:
```bash
ls -la ~/.claude/skills/continuous-learning/config.json- Проверка конфигурации Stop hook:
cat ~/.claude/settings.json | grep -A 10 "Stop"- Проверка директории learned skills:
ls -la ~/.claude/skills/learned/- Ручное тестирование Stop hook:
node ~/.claude/skills/continuous-learning/scripts/hooks/evaluate-session.jsТипичные ошибки
Ошибка 1: Слишком короткая сессия не запускает извлечение
Проблема: Скрипт Stop hook проверяет длину сессии и пропускает, если она меньше min_session_length.
Причина: По умолчанию min_session_length: 10, короткие сессии не запускают оценку.
Решение:
{
"min_session_length": 5 // Понизить порог
}Внимание
Не устанавливайте слишком низкое значение (например, < 5), иначе будет извлекаться много бессмысленных паттернов (например, исправления простых синтаксических ошибок).
Ошибка 2: auto_approve: true приводит к сохранению мусорных паттернов
Проблема: В режиме автоматического сохранения Claude может сохранять низкокачественные паттерны.
Причина: auto_approve: true пропускает этап ручного подтверждения.
Решение:
{
"auto_approve": false // Всегда держать false
}Рекомендация: Всегда подтверждайте извлечённые паттерны вручную для гарантии качества.
Ошибка 3: Несуществующая директория learned skills приводит к ошибке сохранения
Проблема: Stop hook выполняется успешно, но файл skill не создаётся.
Причина: Директория, указанная в learned_skills_path, не существует.
Решение:
# Создать директорию вручную
mkdir -p ~/.claude/skills/learned/
# Или использовать абсолютный путь в конфигурации
{
"learned_skills_path": "/absolute/path/to/learned/"
}Ошибка 4: Неверный путь к скрипту Stop hook (Windows)
Проблема: Stop hook не срабатывает на Windows.
Причина: В файле конфигурации используется путь в стиле Unix (~/.claude/...), но реальный путь Windows отличается.
Решение:
{
"command": "C:\\Users\\YourName\\.claude\\skills\\continuous-learning\\evaluate-session.cmd"
}Рекомендация: Используйте скрипт Node.js (кроссплатформенный) вместо Shell-скрипта.
Ошибка 5: Извлечённые паттерны слишком общие, низкая переиспользуемость
Проблема: Описание извлечённого паттерна слишком общее (например, "исправление ошибки типа"), недостаточно конкретного контекста.
Причина: При извлечении не включена достаточная контекстная информация (сообщение об ошибке, пример кода, сценарий применения).
Решение: При использовании /learn предоставьте более детальный контекст:
/learn Я решил ошибку типов TypeScript: Property 'xxx' does not exist on type 'yyy'. Временно решил с помощью приведения типа as, но лучший способ — использовать ограничения дженериков.Чек-лист:
- [ ] Конкретное описание проблемы (включая сообщение об ошибке)
- [ ] Детальное решение (включая пример кода)
- [ ] Чёткий сценарий применения (когда использовать этот паттерн)
- [ ] Конкретное название (например, "typescript-generic-constraints", а не "type-fix")
Ошибка 6: Слишком много learned skills, сложно управлять
Проблема: Со временем в директории learned/ накапливается много skills, их сложно найти и управлять ими.
Причина: Нет регулярной очистки низкокачественных или устаревших skills.
Решение:
- Регулярный аудит: проверяйте learned skills раз в месяц
# Список всех skills
ls -la ~/.claude/skills/learned/
# Просмотр содержимого skill
cat ~/.claude/skills/learned/pattern-name.md- Пометка низкокачественных skills: добавьте префикс
deprecated-к имени файла
mv ~/.claude/skills/learned/old-pattern.md \
~/.claude/skills/learned/deprecated-old-pattern.md- Категоризация: используйте поддиректории для классификации
mkdir -p ~/.claude/skills/learned/{types,debugging,testing}
mv ~/.claude/skills/learned/*types*.md ~/.claude/skills/learned/types/Рекомендация: Проводите очистку раз в квартал, поддерживая learned skills компактными и эффективными.
Итоги урока
Механизм непрерывного обучения работает через три ключевых компонента:
- Команда
/learn: ручное извлечение переиспользуемых паттернов из сессии - Continuous Learning Skill: настройка параметров автоматической оценки (длина сессии, порог извлечения)
- Stop Hook: автоматический запуск оценки при завершении сессии
Ключевые моменты:
- ✅ Ручное извлечение подходит для только что решённых важных проблем
- ✅ Автоматическая оценка запускается через Stop hook при завершении сессии
- ✅ Извлечённые паттерны сохраняются как learned skills в директории
~/.claude/skills/learned/ - ✅ Параметр
min_session_lengthконтролирует минимальную длину сессии (рекомендуется 10) - ✅ Всегда держите
auto_approve: false, подтверждайте качество извлечения вручную - ✅ Регулярно очищайте низкокачественные или устаревшие learned skills
Лучшие практики:
- После решения нетривиальной проблемы сразу используйте
/learnдля извлечения паттерна - Предоставляйте детальный контекст (описание проблемы, решение, пример кода, сценарий применения)
- Используйте конкретные названия skill (например, "typescript-generic-constraints", а не "type-fix")
- Регулярно проводите аудит и очистку learned skills, поддерживая базу знаний компактной
Анонс следующего урока
В следующем уроке мы изучим Стратегии оптимизации токенов.
Вы узнаете:
- Как оптимизировать использование токенов для максимальной эффективности контекстного окна
- Настройку и использование strategic-compact skill
- Автоматизацию с помощью PreCompact и PostToolUse hooks
- Выбор подходящей модели (opus vs sonnet) для баланса стоимости и качества
Приложение: Справочник по исходному коду
Нажмите для просмотра расположения исходного кода
Дата обновления: 2026-01-25
| Функция | Путь к файлу | Строки |
|---|---|---|
| Определение команды /learn | commands/learn.md | 1-71 |
| Continuous Learning Skill | skills/continuous-learning/SKILL.md | 1-81 |
| Скрипт Stop Hook | scripts/hooks/evaluate-session.js | 1-79 |
| Команда Checkpoint | commands/checkpoint.md | 1-75 |
Ключевые константы:
min_session_length = 10: минимальная длина сессии по умолчанию (количество сообщений пользователя)CLAUDE_TRANSCRIPT_PATH: переменная окружения, путь к записи сессииlearned_skills_path: путь сохранения learned skills, по умолчанию~/.claude/skills/learned/
Ключевые функции:
main(): главная функция evaluate-session.js, читает конфигурацию, проверяет длину сессии, выводит логgetLearnedSkillsDir(): получает путь к директории learned skills (обрабатывает раскрытие~)countInFile(): подсчитывает количество вхождений паттерна в файле
Параметры конфигурации:
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
min_session_length | number | 10 | Минимальная длина сессии (количество сообщений пользователя) |
extraction_threshold | string | "medium" | Порог извлечения |
auto_approve | boolean | false | Автоматическое сохранение (рекомендуется false) |
learned_skills_path | string | "~/.claude/skills/learned/" | Путь сохранения learned skills |
patterns_to_detect | array | см. исходный код | Типы паттернов для обнаружения |
ignore_patterns | array | см. исходный код | Типы паттернов для игнорирования |
Типы паттернов:
error_resolution: паттерны решения ошибокuser_corrections: паттерны пользовательских исправленийworkarounds: обходные решенияdebugging_techniques: техники отладкиproject_specific: специфичные для проекта паттерны
Типы Hook:
- Stop: запускается при завершении сессии (evaluate-session.js)