Версия: 1.0
Дата: 2025-11-21
Статус: Интеграция с существующей системой
Система стартового меню интегрирована с существующим механизмом восстановления сессий (.claude/SESSION_RECOVERY.md).
Ключевое решение: Минимальные изменения от стандарта Claude Code.
$WORKSPACE/
├── CLAUDE.md # Точка входа (v8.0.1)
├── start-menu.md # Главное меню (v1.0.1)
│
├── platform/
│ └── start-menu.md # Меню работы с проектами (v1.0.0)
│
└── .claude/
├── SESSION_RECOVERY.md # Система сессий (v1.1)
│ # + секция "ПОДДЕРЖКА НЕСКОЛЬКИХ ТЕРМИНАЛОВ"
└── sessions/
├── current.json # Главный терминал (pts/0)
├── current_pts_1.json # Дополнительный терминал 1
├── current_pts_2.json # Дополнительный терминал 2
└── interruptions.log # Общий лог прерываний
Выполняется: Claude Code автоматически (штатное поведение)
Файл: $WORKSPACE/CLAUDE.md
Команда:
TERMINAL=$(tty | sed 's#/dev/##' | sed 's#/#_#g')
Примеры:
- pts/0 → pts_0
- pts/1 → pts_1
- not a tty → not a tty
Логика (обратная совместимость):
if [ "$TERMINAL" = "pts_0" ] || [ "$TERMINAL" = "not a tty" ]; then
# Главный терминал → current.json
SESSION_FILE="$WORKSPACE/.claude/sessions/current.json"
else
# Дополнительные терминалы → отдельные файлы
SESSION_FILE="$WORKSPACE/.claude/sessions/current_${TERMINAL}.json"
fi
Преимущества:
- ✅ Обратная совместимость - главный терминал использует current.json
- ✅ Параллельная работа - дополнительные терминалы не конфликтуют
- ✅ Простота - автоматическое определение
Проверка:
if [ -f "$SESSION_FILE" ]; then
echo "active"
else
echo "new"
fi
Действия:
Создать новый session файл:
bash
cat > "$SESSION_FILE" <<EOF
{
"session_id": "$(date +%Y%m%d_%H%M%S)",
"terminal": "$TERMINAL",
"started_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"last_activity": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"current_task": "",
"mode": "",
"files_open": [],
"todos": [],
"context": {
"project": null,
"branch": null,
"working_directory": "$WORKSPACE/"
},
"interruption_count": 0
}
EOF
Прочитать start-menu.md:
Read: $WORKSPACE/start-menu.md
Показать заставку:
╔════════════════════════════════════════════════════════════════════════╗
║ ██████╗ ██╗ █████╗ ████████╗███████╗ ██████╗ ██████╗ ███╗ ███╗
║ [ASCII ART]
║ PLATFORM v1 | 2025 ║
╚════════════════════════════════════════════════════════════════════════╝
Показать главное меню:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Platform v1 | Claude Code Workspace
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 Работа с проектами
Ваш выбор [1-3]:
```
Действия:
Прочитать session файл:
bash
SESSION_DATA=$(cat "$SESSION_FILE")
Проверить время простоя:
```bash
LAST_ACTIVITY=$(jq -r '.last_activity' "$SESSION_FILE")
NOW=$(date -u +%Y-%m-%dT%H:%M:%SZ)
LAST_EPOCH=$(date -d "$LAST_ACTIVITY" +%s)
NOW_EPOCH=$(date -d "$NOW" +%s)
IDLE_MIN=$(( (NOW_EPOCH - LAST_EPOCH) / 60 ))
```
Если простой < 5 минут:
- Продолжить работу без меню
- Восстановить контекст из session файла
- Сказать: "Продолжаем работу..."
Если простой 5-30 минут:
- Показать КОРОТКОЕ меню восстановления
- Предложить: продолжить / начать заново
Если простой > 30 минут:
- Показать ПОЛНОЕ меню восстановления
- Увеличить interruption_count
- Залогировать в interruptions.log
- Показать резюме последней работы
.claude/SESSION_RECOVERY.mdИспользуется существующий формат из SESSION_RECOVERY.md:
{
"session_id": "20251121_001316",
"terminal": "pts/0", ← ДОБАВЛЕНО в v1.1
"started_at": "2025-11-21T00:13:16Z",
"last_activity": "2025-11-21T00:45:00Z",
"current_task": "Настройка Drupal Commerce",
"mode": "project:pim-drupal:setup",
"files_open": [
"$WORKSPACE/projects/pim-drupal/docker-compose.yml"
],
"todos": [
{"task": "Установить Commerce Kickstart", "status": "in_progress"}
],
"context": {
"project": "pim-drupal",
"branch": "main",
"last_command": "docker-compose up -d",
"working_directory": "$WORKSPACE/projects/pim-drupal"
},
"interruption_count": 0
}
Изменения от оригинала: Добавлено поле terminal (1 поле)
Терминал 1 (pts/0):
# Файл: .claude/sessions/current.json
{
"terminal": "pts/0",
"context": {
"project": "marketplace",
"working_directory": "$WORKSPACE/projects/marketplace/"
}
}
Терминал 2 (pts/1):
# Файл: .claude/sessions/current_pts_1.json
{
"terminal": "pts/1",
"context": {
"project": "pim-drupal",
"working_directory": "$WORKSPACE/projects/pim-drupal/"
}
}
Результат:
- ✅ Независимые контексты
- ✅ Нет конфликтов
- ✅ Каждый терминал восстанавливает свою сессию
Действие:
Прочитать: $WORKSPACE/platform/start-menu.md
Показать список проектов
При входе в проект:
# Обновить session файл
jq '.context.project = "marketplace" |
.mode = "project:marketplace:code" |
.context.working_directory = "$WORKSPACE/projects/marketplace/" |
.last_activity = "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"' \
"$SESSION_FILE" > "$SESSION_FILE.tmp"
mv "$SESSION_FILE.tmp" "$SESSION_FILE"
Каждые 2-3 действия:
# Обновить last_activity
jq '.last_activity = "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"' \
"$SESSION_FILE" > "$SESSION_FILE.tmp"
mv "$SESSION_FILE.tmp" "$SESSION_FILE"
Для пользователей:
- start-menu.md - Как работать с меню
- platform/start-menu.md - Как работать с проектами
Для разработчиков:
- .claude/SESSION_RECOVERY.md - Полная документация системы сессий
- .claude/STARTUP_SYSTEM.md - Этот файл (интеграция)
Для AI агента:
- CLAUDE.md - Точка входа и основные правила
- .claude/SESSION_RECOVERY.md → секция "ПОДДЕРЖКА НЕСКОЛЬКИХ ТЕРМИНАЛОВ"
jq - для работы с JSON (установлен)tty - для определения терминала (встроенная команда)date - для временных меток (встроенная команда)# 1. Проверить существование директории
ls -la $WORKSPACE/.claude/sessions/
# 2. Проверить текущий терминал
tty | sed 's#/dev/##' | sed 's#/#_#g'
# 3. Найти все активные сессии
ls -1 $WORKSPACE/.claude/sessions/current*.json
# 4. Просмотреть сессию
cat $WORKSPACE/.claude/sessions/current.json | jq .
Создано:
- STARTUP_SYSTEM.md - этот документ
- start-menu.md (v1.0.1) - главное меню
- platform/start-menu.md (v1.0.0) - меню работы с проектами
Обновлено:
- CLAUDE.md (v8.0.0 → v8.0.1)
- SESSION_RECOVERY.md (v1.0 → v1.1) + секция про множественные терминалы
Удалено:
- .claude/session-manager.md - дублировал SESSION_RECOVERY.md
Интеграция:
- Система меню работает с существующей системой сессий
- Минимальные изменения (добавлено 1 поле terminal)
- Обратная совместимость сохранена
Версия: 1.0
Дата: 2025-11-21
Статус: Готово к использованию