Skip to content

Механизм непрерывного обучения: автоматическое извлечение переиспользуемых паттернов

Чему вы научитесь

  • Использовать команду /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:

  • Легковесность: запускается только один раз при завершении сессии, не влияет на скорость взаимодействия
  • Полный контекст: имеет доступ к полной истории сессии, легче обнаружить ценные паттерны
  • Неблокирующий: не запускается при каждом сообщении, не добавляет задержку

🎒 Подготовка

Перед использованием механизма непрерывного обучения убедитесь:

Предварительные требования

Это руководство предполагает, что вы знакомы с базовыми операциями Claude Code и концепцией hooks. Если установка ещё не выполнена, сначала прочитайте Быстрый старт.

Пошаговое руководство: полный процесс непрерывного обучения

Давайте изучим весь процесс на практическом примере. Предположим, вы отлаживали ошибку типов TypeScript и наконец нашли решение.

Шаг 1: Ручное извлечение паттерна с помощью /learn

Зачем Ручное извлечение подходит для только что решённых важных проблем — сохраните сразу, чтобы не забыть.

Действие Введите в Claude Code:

/learn

Ожидаемый результат Claude проанализирует текущую сессию и спросит, обнаружены ли паттерны для извлечения:

markdown
Я проанализировал текущую сессию и обнаружил следующие паттерны для извлечения:

1. Ошибка типов TypeScript: решение через ограничения дженериков
   - Описание проблемы: некорректный вывод типа параметра функции
   - Решение: добавить явное ограничение дженерика `<T extends ...>`
   - Применимость: сложный вывод типов, callback-функции

Извлечь эти паттерны? (yes/no/skip)

Контрольная точка ✅

  • Распознал ли Claude решённую вами проблему
  • Точно ли описан извлечённый паттерн
  • Разумны ли сценарии применения

Следующий шаг Если паттерн корректен, ответьте yes. Если нужны изменения — укажите конкретные правки.


Шаг 2: Сохранение как learned skill

Зачем После сохранения в файл skill будущие сессии смогут автоматически загружать эти знания.

Действие При подтверждении извлечения Claude создаст файл skill:

markdown
Паттерн будет сохранён в: ~/.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:

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:

json
{
  "hooks": {
    "Stop": [{
      "matcher": "*",
      "hooks": [{
        "type": "command",
        "command": "~/.claude/skills/continuous-learning/evaluate-session.sh"
      }]
    }]
  }
}

Пути к скриптам:

ПлатформаПуть к скрипту
macOS/Linux~/.claude/skills/continuous-learning/evaluate-session.sh
WindowsC:\Users\YourName\.claude\skills\continuous-learning\evaluate-session.cmd

Ожидаемый результат Stop hook добавлен в ~/.claude/settings.json.

Контрольная точка ✅

  • Корректна ли структура hooks (Stop → matcher → hooks)
  • Указывает ли command на правильный скрипт
  • Установлен ли matcher в "*" (соответствует всем сессиям)

Шаг 5: Проверка работы Stop Hook

Зачем После проверки корректности конфигурации можно уверенно использовать автоматическое извлечение.

Действие

  1. Откройте новую сессию Claude Code
  2. Выполните некоторую работу по разработке (отправьте минимум 10 сообщений)
  3. Закройте сессию

Ожидаемый результат Вывод лога скрипта 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:

markdown
Я заметил, что этот сценарий похож на ранее решённую проблему вывода типов.

Согласно сохранённому 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
  1. Проверка конфигурации Stop hook:
bash
cat ~/.claude/settings.json | grep -A 10 "Stop"
  1. Проверка директории learned skills:
bash
ls -la ~/.claude/skills/learned/
  1. Ручное тестирование Stop hook:
bash
node ~/.claude/skills/continuous-learning/scripts/hooks/evaluate-session.js

Типичные ошибки

Ошибка 1: Слишком короткая сессия не запускает извлечение

Проблема: Скрипт Stop hook проверяет длину сессии и пропускает, если она меньше min_session_length.

Причина: По умолчанию min_session_length: 10, короткие сессии не запускают оценку.

Решение:

json
{
  "min_session_length": 5  // Понизить порог
}

Внимание

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


Ошибка 2: auto_approve: true приводит к сохранению мусорных паттернов

Проблема: В режиме автоматического сохранения Claude может сохранять низкокачественные паттерны.

Причина: auto_approve: true пропускает этап ручного подтверждения.

Решение:

json
{
  "auto_approve": false  // Всегда держать false
}

Рекомендация: Всегда подтверждайте извлечённые паттерны вручную для гарантии качества.


Ошибка 3: Несуществующая директория learned skills приводит к ошибке сохранения

Проблема: Stop hook выполняется успешно, но файл skill не создаётся.

Причина: Директория, указанная в learned_skills_path, не существует.

Решение:

bash
# Создать директорию вручную
mkdir -p ~/.claude/skills/learned/

# Или использовать абсолютный путь в конфигурации
{
  "learned_skills_path": "/absolute/path/to/learned/"
}

Ошибка 4: Неверный путь к скрипту Stop hook (Windows)

Проблема: Stop hook не срабатывает на Windows.

Причина: В файле конфигурации используется путь в стиле Unix (~/.claude/...), но реальный путь Windows отличается.

Решение:

json
{
  "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.

Решение:

  1. Регулярный аудит: проверяйте learned skills раз в месяц
bash
# Список всех skills
ls -la ~/.claude/skills/learned/

# Просмотр содержимого skill
cat ~/.claude/skills/learned/pattern-name.md
  1. Пометка низкокачественных skills: добавьте префикс deprecated- к имени файла
bash
mv ~/.claude/skills/learned/old-pattern.md \
   ~/.claude/skills/learned/deprecated-old-pattern.md
  1. Категоризация: используйте поддиректории для классификации
bash
mkdir -p ~/.claude/skills/learned/{types,debugging,testing}
mv ~/.claude/skills/learned/*types*.md ~/.claude/skills/learned/types/

Рекомендация: Проводите очистку раз в квартал, поддерживая learned skills компактными и эффективными.


Итоги урока

Механизм непрерывного обучения работает через три ключевых компонента:

  1. Команда /learn: ручное извлечение переиспользуемых паттернов из сессии
  2. Continuous Learning Skill: настройка параметров автоматической оценки (длина сессии, порог извлечения)
  3. 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

ФункцияПуть к файлуСтроки
Определение команды /learncommands/learn.md1-71
Continuous Learning Skillskills/continuous-learning/SKILL.md1-81
Скрипт Stop Hookscripts/hooks/evaluate-session.js1-79
Команда Checkpointcommands/checkpoint.md1-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_lengthnumber10Минимальная длина сессии (количество сообщений пользователя)
extraction_thresholdstring"medium"Порог извлечения
auto_approvebooleanfalseАвтоматическое сохранение (рекомендуется false)
learned_skills_pathstring"~/.claude/skills/learned/"Путь сохранения learned skills
patterns_to_detectarrayсм. исходный кодТипы паттернов для обнаружения
ignore_patternsarrayсм. исходный кодТипы паттернов для игнорирования

Типы паттернов:

  • error_resolution: паттерны решения ошибок
  • user_corrections: паттерны пользовательских исправлений
  • workarounds: обходные решения
  • debugging_techniques: техники отладки
  • project_specific: специфичные для проекта паттерны

Типы Hook:

  • Stop: запускается при завершении сессии (evaluate-session.js)