通知・ログ・統計
無人自動周回を安定して継続するための大前提は、「何か問題が起きた際に即座に検知し、過去の状況を正確に追跡できること」です。コアプログラムは3層の可観測性(オブザーバビリティ)を提供します:詳細ログの永続化、エラー発生現場のスナップショット、能動的なプッシュ通知。
ログシステム
| ログ種別 | 格納場所 |
|---|---|
| インスタンス実行ログ | log/<日付>_<インスタンス名>.txt |
| ランチャーログ | log/<日付>_launcher.txt |
| エラー現場データ | log/error/<インスタンス名>/<タイムスタンプ>/ |
| デバッグサービス | 環境変数 ALAS_DEBUG_SERVER=1 時に起動(ローカル限定) |
ログは日次で追記され、タスクの開始と終了は明確な区切り線で記録されます:
2026-10-20 09:00:12.345 | INFO | [AzurPilot] 调度器: 开始任务
2026-10-20 09:00:12.346 | INFO | ──────────────── 科研 ────────────────
2026-10-20 09:02:41.002 | INFO | [AzurPilot] 调度器: 结束任务エラー発生時の現場記録
例外エラーが発生した際、プログラムは直前数フレームのスクリーンショットと直近の log.txt を専用ディレクトリに自動保存します。また、アカウント情報等の機密領域は自動マスキングされます:
| 設定項目 | デフォルト | 説明 |
|---|---|---|
Error.SaveError | 有効 | エラー現場スナップショットを保存するかどうか |
Error.ScreenshotLength | — | 直前何枚のスクリーンショットを保持するか |
Error.SaveErrorRetentionDays | — | 保持日数(0 の場合は自動削除しない) |
Error.SaveErrorBackUpMethod | — | 期限切れ時の処理(削除 / コピー / 圧縮アーカイブ) |
Error.SaveErrorZipMethod | zip | 圧縮フォーマット(bz2 / gzip / xz / zip) |
Issue 起票時に提出すべきデータ
log/error/<インスタンス名>/<タイムスタンプ>/ 配下の log.txt と画像ファイルを、お使いのエミュレーターの種類・解像度・スクリーンショット方式・操作方式とともに提出してください。config/deploy.yaml や remote-access.json は絶対に添付しないでください。
プッシュ通知
OnePush による外部通知連携
Error.OnePushConfig に設定を記述することで、タスクの実行結果やエラー通知を多様な外部サービス(Telegram、Discord、ServerChan、各種 Webhook 等)へ転送できます。
2系統の通知トリガー:
| 通知ルート | トリガー契機 |
|---|---|
| タスク完了通知 | 各タスクの Scheduler.PushNotification が有効な場合 |
| エラー通知 | 自動復旧不能な重大例外が発生した場合 |
低通知頻度モード(LowPushMode)
Error.LowPushMode を有効化すると、自動復旧可能な軽微なエラー(ゲームの再起動、エミュレーターの再接続など)の通知は抑止され、ログ記録のみにとどめます。人間の手動介入が必須となるエラーのみがプッシュ送信されるため、通知過多を防ぎます。
WebUI リアルタイム通知
外部プッシュを設定していない場合でも、WebUI は Server-Sent Events(SSE)を通じてリアルタイムに通知ストリームを受信します。
LLM によるエラー自動解析
Error.LlmAnalysis を有効にすると、エラー発生時に OpenAI 互換の API を呼び出してログを解析し、考えられる原因と対処法を提示します:
| 設定項目 | 説明 |
|---|---|
LlmApiKey | AI サービスの API キー |
LlmApiBase | OpenAI 互換のエンドポイント URL |
LlmModel | 使用するモデル名 |
解析結果はログファイルに出力されます。AI が設定ファイルを勝手に書き換えたり、ゲームを勝手に操作することはありません。
ログデータの外部送信について
この機能を有効化すると、エラーログの抜粋が設定した外部 AI サービスへ送信されます。ログの外部送信を望まない場合は、LlmAnalysis を無効化してください。
日次サマリーレポート(デイリー日報)
Alas.DailySummary.Enable を有効にすると、指定した時刻(TriggerTime、デフォルト 20:00)にその日の周回タスク、獲得リソース、ドロップ実績を自動集計し、通知チャンネルへ送信します。
統計データの集計
統計画面には SQLite データベースに蓄積された実績が可視化されます:
| 分類 | 集計内容 |
|---|---|
| リソース | 燃料、資金、ダイヤ、キューブ、行動力等の増減グラフ |
| 通常出撃 | 海域ごとのクリア回数、消費燃料、ドロップ艦船一覧 |
| 大世界 | セイレーン作戦のエリア攻略数、行動力収支 |
| 委託 | 完了した委託の種類と報酬総額 |
| 研究 | プロジェクトごとの所要時間と設計図等の産出物 |
| 艦船 | ドロップおよび建造による獲得記録 |
| 倉庫 | 各種強化素材・資材の保有在庫と消費ログ |
統計グラフはリアルタイム描画ではありません
リソースのグラフはタスク実行時の画面認識結果に基づいてプロットされます。長時間タスクを実行していない場合、グラフが水平線のまま進まないのは正常な動作です。
外部監視システムとの統合
- MCP 連携:
get_status、get_resources、get_recent_logsにより AI クライアントから状態を取得可能。詳細は MCP サービス を参照。 - WebSocket 購読:
overview、logs、statisticsトピックをサブスクライブし、自作ダッシュボードを構築可能。詳細は WebSocket API を参照。 - ログ監視:
log/<日付>_<インスタンス名>.txtを直接監視(tail -f等)することで、既存のログ収集基盤(Fluentd / Loki 等)と容易に連携可能。
遠隔トラブルシューティングチェックリスト
問題発生時は以下の順序で情報を整理することで、原因究明を大幅に短縮できます:
- WebUI ダッシュボードに表示されている現在のタスク名と直近100行のログ。
log/error/配下の最新ディレクトリ内のlog.txtおよびスクリーンショット。- エミュレーターの種別、設定解像度、選択中のスクリーンショット方式と操作方式。
- インスタンス設定ファイルのエクスポート(機密情報を削除したもの)。
- コアプログラム、ランチャー、Runtime を直前にアップデートしたかどうか。