このプロジェクトについて

# Claude Code セッションリセットスケジューラ ## 概要 これはGitHub Actionsベースの自動化ツールで、Claude Codeのセッションリセットをスケジュールに従って管理します。このシステムは戦略的に選ばれた時間に自動セッションリセットをトリガーし、一般的な業務時間と連携させることで、必要な時に新しい5時間の使用ウィンドウを保証します。 ## 主な機能 ### 自動セッション管理 - 一般的な業務時間に合わせた1日4回のセッションリセットをトリガー - トリガーとリセットイベントの間に5時間のカウントダウンシステムを使用 - クロン式によるカスタマイズ可能なスケジュール ### ヘルスモニタリング - Claude Codeの機能を確認するための組み込みQ&A検証チェック(例:「1+1=?」) - タイムスタンプ付きでヘルスチェック結果を記録 - リセット完了としてマークする前にシステムが稼働中であることを確認 ### 多トークン対応 - 信頼性を高めるためのプライマリおよびバックアップOAuthトークンの設定 - ログでのトークン別のアクティビティ追跡 - 1つのトークンが失敗した際の冗長性 ### アクティビティログ - `logs/YYYYMM-session-log.csv` に保存される月次CSVログファイル - 記録にはタイムスタンプ、イベントタイプ、トークンID、リセット時刻が含まれる - 自動Gitコミットでログ履歴を保持 ### タイムアウト保護 - ジョブレベルのタイムアウト:5分 - ステップレベルのタイムアウト:アクションごとに2分 - 制御不能な実行によるリソース消費を防止 ## デフォルトスケジュール(UTC+8) | トリガー時間 | リセット時間 | カバレッジ | |------------|-----------|----------| | 05:23 | 午前10:00 | 朝の業務時間 | | 10:23 | 午後3:00 | 午後の業務時間 | | 17:23 | 午後10:00 | 夜の業務時間 | | 22:23 | 午前3:00(翌日) | 深夜のカバレッジ | 各トリガーは希望のリセット時刻の5時間前に発火します。システムはGitHub Actionsの実行混雑を避けるために`:23`分を使用します。 ## セットアップ手順 1. **OAuthトークンを生成**: `claude setup-token` を実行し、生成されたトークンをコピー 2. **シークレットを追加**: GitHubリポジトリ設定で `CLAUDE_CODE_OAUTH_TOKEN_1` および任意で `CLAUDE_CODE_OAUTH_TOKEN_2` を構成 3. **Actionsを有効化**: GitHub Actionsに `id-token: write` パーミッションがあることを確認 4. **アクティブ化**: ワークフローファイルをプッシュしてスケジューラをトリガー ## カスタマイズ `.github/workflows/auto-checkin.yml` を編集してクロンスケジュールを変更します。タイミングの計算式は次の通りです: ``` トリガー時間 + 5時間 = セッションリセット時間 ``` 例: - 午前9:00に1回の日次リセット:クロン `23 20 * * *` を使用(午前4:23 UTCが午前10:00 UTC+8にリセットをトリガー) - 午前10:00と午後4:00に1日2回:クロン `23 21,3 * * *` を使用 ## テスト - **GitHub Actions**: Actionsタブに移動し、ワークフローを手動で実行 - **ローカルテスト**: `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` でトークンを再生成し、シークレット名が正確に一致しているか確認 - **ワークフロータイムアウト**: タイムアウト保護付きの最新バージョンがデプロイされていることを確認 - **誤った時刻**: UTC変換を確認し、GitHub Actionsには若干の実行遅延がある可能性があることを念頭に置く - **ログなし**: Claude認証ステータスを確認し、自動化に依存する前にローカルでテスト ## セキュリティ - ソースコードにトークンをハードコードしない - すべての機密値にGitHub Secretsを使用 - OAuthトークンを定期的にローテート - リポジトリアクセスを信頼できるコントリビューターに制限 本プロジェクトには、スケジュール最適化、タイムアウト構成、ヘルスチェック実装に関する設計判断を文書化したArchitecture Decision Records(ADRs)が含まれています。