Об этом проекте

# Планировщик сброса сессий Claude Code ## Обзор Это инструмент автоматизации на базе GitHub Actions, который управляет сбросом сессий Claude Code по расписанию. Система выполняет автоматический сброс сессий в стратегически выбранные моменты времени, чтобы соответствовать типичным рабочим периодам и гарантировать пользователям наличие свежего 5-часового окна использования, когда это необходимо. ## Ключевые возможности ### Автоматизированное управление сессиями - Выполняет четыре ежедневных сброса сессий, синхронизированных с обычными рабочими периодами. - Использует систему обратного отсчета в 5 часов между событиями запуска и сброса. - Настраиваемое расписание через cron-выражения. ### Мониторинг состояния - Встроенные проверки верификации Q&A (например, «1+1=?») для подтверждения работоспособности Claude Code. - Логирование результатов проверок состояния с временными метками. - Проверка работоспособности системы перед отметкой сбросов как завершенных. ### Поддержка нескольких токенов - Настройка основных и резервных OAuth-токенов для повышения надежности. - Отслеживание активности для каждого токена в логах. - Резервирование на случай отказа одного из токенов. ### Логирование активности - Ежемесячные CSV-файлы логов, сохраняемые в `logs/YYYYMM-session-log.csv`. - Записи включают временную метку, тип события, ID токена и время сброса. - Автоматические коммиты Git сохраняют историю логов. ### Защита от таймаутов - Таймаут уровня задачи: 5 минут. - Таймаут уровня шага: 2 минуты на действие. - Предотвращает потребление ресурсов из-за бесконечных циклов выполнения. ## Расписание по умолчанию (UTC+8) | Время запуска | Время сброса | Период покрытия | |------------|-----------|----------| | 05:23 | 10:00 AM | Утренний рабочий период | | 10:23 | 3:00 PM | Дневной рабочий период | | 17:23 | 10:00 PM | Вечерний рабочий период | | 22:23 | 3:00 AM (следующий день) | Покрытие в ночное время | Каждый запуск происходит за 5 часов до желаемого времени сброса. Система использует минуты «:23», чтобы избежать перегрузки выполнения GitHub Actions. ## Инструкции по настройке 1. **Генерация OAuth-токена**: Запустите `claude setup-token` и скопируйте сгенерированный токен. 2. **Добавление секретов**: Настройте `CLAUDE_CODE_OAUTH_TOKEN_1` и опционально `CLAUDE_CODE_OAUTH_TOKEN_2` в настройках репозитория GitHub. 3. **Включение Actions**: Убедитесь, что репозиторий имеет разрешение `id-token: write` для GitHub Actions. 4. **Активация**: Отправьте файл workflow, чтобы запустить планировщик. ## Настройка Отредактируйте `.github/workflows/auto-checkin.yml`, чтобы изменить cron-расписания. Формула времени: ``` Время запуска + 5 часов = Время сброса сессии ``` Примеры: - Ежедневный сброс в 9:00 AM: используйте cron `23 20 * * *` (4:23 AM UTC запустит сброс в 9:00 AM UTC+8). - Дважды в день в 10:00 AM и 4:00 PM: используйте cron `23 21,3 * * *`. ## Тестирование - **GitHub Actions**: Перейдите на вкладку Actions и запустите workflow вручную. - **Локальное тестирование**: `uv run --python 3.13 python src/log_qa_check.py --token TOKEN_1` ## Структура файлов ``` .github/workflows/auto-checkin.yml # Конфигурация планировщика src/log_qa_check.py # Скрипт проверки Q&A и логирования logs/YYYYMM-session-log.csv # Ежемесячные записи активности ``` ## Устранение неполадок - **Ошибки OAuth**: Перегенерируйте токен с помощью `claude setup-token` и убедитесь, что имена секретов совпадают точно. - **Таймауты workflow**: Убедитесь, что развернута последняя версия с защитой от таймаутов. - **Неверное время**: Проверьте преобразование UTC и помните, что у GitHub Actions могут быть небольшие задержки выполнения. - **Отсутствие логов**: Проверьте статус аутентификации Claude и протестируйте локально перед использованием автоматизации. ## Безопасность - Никогда не храните токены в исходном коде. - Используйте GitHub Secrets для всех конфиденциальных значений. - Периодически меняйте OAuth-токены. - Ограничьте доступ к репозиторию доверенными участниками. Проект включает Architecture Decision Records (ADRs), документирующие решения по оптимизации расписания, конфигурации таймаутов и реализации проверок состояния.