architect/arh/operations/tickets/TICKET-003-session-restore-not-triggered.md

TICKET-003: Восстановление сессий не срабатывает при входе

Дата: 2025-12-11
Приоритет: HIGH
Статус: RESOLVED
Компонент: system/sessions, .claude/hooks


ОПИСАНИЕ ПРОБЛЕМЫ

При запуске Claude Code (claude в терминале) не показываются последние сессии для продолжения работы. Скрипт restore_session.sh существует и работает, но НЕ вызывается.

Симптомы

  1. Пользователь запускает claude
  2. Видит только приглашение к диалогу
  3. НЕ видит:
    - Последние сессии
    - Незавершённые задачи
    - Предложение продолжить

Ожидаемое поведение

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ПОСЛЕДНИЕ СЕССИИ:
--------------------------------------------------
  [1] pirotehnika | Архитектор
      2025-12-11 04:49 | архитектор томографія...
  [2] platform | Архитектор
      2025-12-11 04:44 | режим оператор...
--------------------------------------------------
  'продолжить [проект]' — восстановить контекст
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ДИАГНОСТИКА

Что есть

Компонент Статус Путь
restore_session.sh Есть, работает .claude/scripts/restore_session.sh
session_recovery.py Есть, работает system/scripts/session_recovery.py
Данные сессий Есть ~/.claude/history.jsonl (5330+ записей)
Hook для старта НЕТ

Проверка скрипта

$ python3 $WORKSPACE/system/scripts/session_recovery.py --days 1 --json
# Возвращает корректные данные о сессиях

Что отсутствует

  1. Нет hook'а запускаrestore_session.sh не вызывается при старте Claude
  2. Нет .claude/settings.json в проекте с настройкой hooks
  3. ~/.claude/settings.json содержит только alwaysThinkingEnabled: false

ПРИЧИНА

Claude Code поддерживает hooks, но они НЕ настроены.

Механизм hooks в Claude Code

// .claude/settings.json (в проекте)
{
  "hooks": {
    "PreToolUse": [...],
    "PostToolUse": [...],
    "Notification": [...]
  }
}

Проблема: Нет hook'а для "при старте сессии" в Claude Code API.

Альтернатива: Shell prompt

Можно вызывать скрипт из .bashrc/.zshrc:

# В конце ~/.bashrc
if [ -n "$CLAUDECODE" ]; then
    $WORKSPACE/.claude/scripts/restore_session.sh
fi

РЕШЕНИЕ

Вариант A: Shell prompt hook (РЕКОМЕНДУЕТСЯ)

Суть: Показывать сессии при входе в терминал с Claude Code

Реализация:

# ~/.bashrc или /etc/profile.d/claude-session.sh

claude_show_sessions() {
    if [ -n "$CLAUDECODE" ] && [ -f $WORKSPACE/.claude/scripts/restore_session.sh ]; then
        $WORKSPACE/.claude/scripts/restore_session.sh
    fi
}

# Вызывать при старте
claude_show_sessions

Плюсы:
- Простая реализация
- Работает сразу
- Не зависит от API Claude Code

Минусы:
- Показывается в терминале, не в Claude
- Claude не "видит" эту информацию

Вариант B: Команда сессии в CLAUDE.md

Суть: Добавить команду в CLAUDE.md которую Claude распознаёт

Реализация:
В CLAUDE.md уже есть:

сессии                    — показать последние сессии
продолжить [проект]       — восстановить контекст

Но Claude не выполняет скрипты автоматически.

Плюсы:
- Пользователь может запросить явно

Минусы:
- Не автоматически

Вариант C: Первое сообщение = триггер (ОПТИМАЛЬНЫЙ)

Суть: При первом сообщении сессии Claude проверяет последние сессии

Реализация:
В CLAUDE.md добавить:

## ПРИ СТАРТЕ

Если это первое сообщение сессии:
1. Проверить последние сессии: `python3 system/scripts/session_recovery.py --days 1 --json`
2. Если есть сессии за последние 4 часа → показать предложение продолжить

Плюсы:
- Claude сам показывает контекст
- Интерактивно

Минусы:
- Требует распознавания "первого сообщения"


РЕКОМЕНДАЦИЯ

Внедрить Вариант A + C:

  1. Вариант A — для немедленного показа в терминале
  2. Вариант C — для контекста в Claude

ФАЙЛЫ ДЛЯ ИЗМЕНЕНИЯ

Файл Действие
/etc/profile.d/claude-session.sh СОЗДАТЬ — shell hook
CLAUDE.md ОБНОВИТЬ — добавить поведение при старте
.claude/scripts/restore_session.sh ПРОВЕРИТЬ — убедиться что работает

КРИТЕРИИ ПРИЁМКИ


СВЯЗЬ С ДРУГИМИ ТИКЕТАМИ


Автор: Claude Code
Создан: 2025-12-11
Решён: 2025-12-11


РЕШЕНИЕ (ВЫПОЛНЕНО)

Созданные артефакты

Файл Назначение
system/scripts/smart_restore.py Интеллектуальное восстановление сессий
/etc/profile.d/claude-session.sh Shell hook для показа при входе

Функционал

  1. Автоопределение — находит лучшую сессию для продолжения
  2. Контекст — показывает проект, режим, файлы, незавершённые задачи
  3. Предложения — предлагает действия (продолжить/новая/список)
  4. Список--list показывает 5 последних сессий
  5. JSON--json для интеграции с Claude

Команды

python3 system/scripts/smart_restore.py           # Авто
python3 system/scripts/smart_restore.py --list    # Список
python3 system/scripts/smart_restore.py --json    # JSON

Shell hook

Показывает контекст только при первом входе в login shell с CLAUDECODE=1