JavaRush /Курсы /Claude code /Session lifecycle: контейнер задачи

Session lifecycle: контейнер задачи

Claude code
5 уровень , 4 лекция
Открыта

1. Бесконечный чат проигрывает сессии

Самая частая ошибка — «один разговор на все случаи жизни». Утром чините пустой экран после неверного пароля в Commerce OS, днём — пагинацию заказов, вечером README, под конец тесты. Выглядит продуктивно, а вы убиваете контекст и diff.

Сессия работает, когда у неё есть границы — ответы на пять вопросов: что делаем, где, что решили, что неясно, какой следующий шаг. Есть ответы — Claude спокоен. Нет — половина переписки про один баг, четверть про другой, остальное про «нет, я имел в виду не это».

Рабочая сессия Бесконечный чат
Привязана к одной задаче или одному рабочему потоку Смешивает несколько задач
Имеет понятный goal и scope Живёт по принципу «разберёмся по ходу»
Её легко продолжить завтра Завтра вы сами с трудом поймёте, что тут происходит
Из неё можно сделать короткую сводку Из неё получается археологическая раскопка
Claude получает устойчивые сигналы Claude начинает тянуть в ответ всё подряд

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

Сессии хватает ясного центра тяжести: «чиним пустой экран после неверного пароля в src/auth/*, public API не меняем, миграции не трогаем, критерии в TASK_SPEC.md».

2. Шапка сессии за минуту

Типичный старт: «посмотри, тут что-то не так с логином». Так вы с первого сообщения теряете половину пользы. Claude не телепат: рамку не задали — достроит сам, старательно и не туда.

Дайте сессии короткую «шапку»: имя, цель, границы, запреты, ближайший шаг. Это ритуал, не команда.

Сессия: commerce-os-auth-invalid-password
Цель: исправить пустой экран после неверного пароля.
Область изменений: src/auth/*, AuthFlowTest.
Не-цели: не менять public API, не трогать миграции и зависимости.
Открытые вопросы: влияет ли SSO callback на этот сценарий?
Следующий шаг: воспроизвести баг и подтвердить точку падения.

Просто — и в этом сила. Имя, границы, запреты и шаг зафиксированы, сессия больше не безымянная.

Для Commerce OS старт можно связать с task spec:

Работаем по TASK_SPEC.md для bugfix в авторизации.
Нужно исправить пустой экран после неверного пароля.
Сначала исследуем без широкого рефакторинга.
Ограничение: не менять public API и не трогать миграции.
После анализа покажи affected files, гипотезы и минимальный план исправления.

Никакого романа — только каркас, который переживёт сжатие истории, паузу и возвращение через часы. Ценность не в кнопке переименования, а в том, что рамка проговорена сразу.

3. Когда открывать новый контейнер

Команды и кнопки в интерфейсах разные, а решение всегда одно: этот контейнер задачи ещё жив или уже нет.

Состояние Признак Что делать
Тот же task, форма жива goal и scope всё ещё легко пересказать Продолжать текущую сессию
Тот же task, но истории слишком много Полезное ядро есть, но шум уже мешает Сжать разговор и повторить опорные детали
Task сменился или цель уже трудно пересказать Scope смешался, разговор расползся Открывать новый контейнер задачи

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

flowchart TD
    A[Новая сессия] --> B[Зафиксировать goal и scope]
    B --> C[Работа по задаче]
    C --> D{Это всё ещё один task container?}
    D -- Да --> E[Продолжать]
    D -- Да, но истории много --> F[Сжать разговор и повторить ключевые ограничения]
    D -- Нет --> G[Открыть новый контейнер]
    E --> H[Закрыть сессию на понятной промежуточной точке]
    F --> H
    G --> H

Сессия живёт ровно столько, сколько помогает одной задаче. Начала мешать — её ценность кончилась.

4. Короткая внешняя заметка спасает повторный старт

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

- SessionService не корень проблемы.
- Правим только src/auth/*.
- Public API не трогаем.
- Следующий шаг: проверить рендер ошибки в LoginController.

Это не отчётность, а страховка: после паузы не копать ту же ложную ветку.

5. Сохраняйте сводку, а не весь роман

Дошли до хорошей точки — сохраните её наружу. Держите границу: история сессии хранит ход мысли, Git — изменения кода.

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

Задача: bugfix пустого экрана после неверного пароля.
Подтверждено: проблема в LoginController, не в SessionService.
Границы: public API не меняем, миграции и зависимости не трогаем.
Следующий шаг: внести минимальную правку и прогнать связанные тесты.

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

6. Практический ритуал для Commerce OS

На том же баге ритуал такой:

  1. Поднимите рамку задачи. Возьмите из TASK_SPEC.md goal, scope, constraints и критерии приёмки. Не начинайте с расплывчатого «почини логин».
  2. Соберите минимальный контекстный набор. В окно — только нужное задаче: LoginController.java, SessionService.java, AuthFlowTest, короткий stack trace и reproduction steps. Не тащите весь репозиторий.
  3. Следите за бюджетом по ходу работы. Диалог разросся — посмотрите /context. Окно занято задачей или его съели старые гипотезы, длинные логи и побочные темы?
  4. Отделите нехватку данных от загрязнённой сессии. Не хватает файла или сигнала — добавьте точечно. Дело в старом шуме и конфликтующих направлениях — применяйте действие восстановления: сжимайте, чистите или пересобирайте сессию как новый контейнер.
  5. Примите решение по жизненному циклу. Тот же task — продолжайте или коротко сожмите. Задача сменилась или разговор потерял форму — открывайте новый контейнер со сводкой: цель, границы, подтверждённое evidence, следующий шаг.

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

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

1
Задача
Claude code, 5 уровень, 4 лекция
Недоступна
Session header через Claude CLI
Session header через Claude CLI
1
Задача
Claude code, 5 уровень, 4 лекция
Недоступна
Именование текущей session через механизм Claude Code
Именование текущей session через механизм Claude Code
1
Опрос
Контекст и сессии в Claude Code, 5 уровень, 4 лекция
Недоступен
Контекст и сессии в Claude Code
Контекст и сессии в Claude Code
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ