joelclaw-system-check について
joelclaw-system-checkは、joelclawインフラの状態を確認するスキルで、環境の運用担当者向けです。読み取り専用の日次チェックとテストを含む詳細レポートを備え、移行に伴う確認項目も区別します。
主な機能
- 01再起動後・日次の構成チェック
- 02ストレージ、ネットワーク、サービスの確認
- 03テストを含む詳細なヘルスレポート
- 04出力でのシークレット露出を回避
- 05最近のCodexインフラセッションを確認
活用シーン
- 01再起動後に重要サービスの状態を確認
- 02ストレージやネットワーク変更後の調査
- 03日次チェックで警告を集約
- 04セッションから継続保存すべき運用情報を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ joelhooks/ joelclaw --skill joelclaw-system-checkインストール後、Claude Code で/joelclaw-system-checkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/small-logo.svgscripts/health.shpostboot.sh詳細
joelclaw システムヘルスチェック
読み取り専用の起動後/日次トポロジースイープを実行するには、scripts/postboot.sh を実行してください。Flagg/Panda の権限分離、NAS マウント、NFS チューニング、カスタム NAS MinIO、Central Postgres、ローカル Convex、Typesense、Inngest、シャドウ Central のヘルスを、シークレットを出力せずにチェックします。日次自動化では、最近の Codex インフラのトランスクリプトも確認し、完了した作業がチャット内に埋もれたままにならないようにします。
移行に関する注意 — 2026-07-09
現在のヘルススクリプトは、依然として Panda 中心になりすぎています。Panda 時代の k8s/PDS/NodePort の領域を joelclaw システム全体であるかのように扱っています。これは、もはや Central への移行方針と一致しません。
ヘルスチェックは、次のレーン別にする必要があります。
- Central レーン:Flagg/Mac Studio のネイティブな launchd サービス、Redis、Typesense、Inngest、system-bus ワーカー、agent-mail、実行キャプチャ、セッション NAS バックアップの記録、再起動後も維持される状態。
- Relay レーン:iMessage/アカウントにひもづいたリレー、レガシーな webhook/callback の領域、明示的な廃止ブロッカーなど、Panda のみに残るもの。
- Satellite レーン:Blaine/その他の Machine の
JOELCLAW_CENTRAL_URL、outbox の滞留、最新のキャプチャ日時、トランスクリプトのバックアップの鮮度。
この書き換えが完了するまでは、Panda/k8s/PDS のチェックが赤くても、Flagg Central が停止している証拠ではなく、移行の TODO として扱ってください。
~/Code/joelhooks/joelclaw-runtime/skills/joelclaw-system-check/scripts/postboot.sh
1〜10 のスコアを含む、以前の完全なシステムヘルスレポートを実行するには、scripts/health.sh を実行してください。テストと TypeScript も含むため、こちらのほうが負荷が高くなります。
~/Code/joelhooks/joelclaw-runtime/skills/joelclaw-system-check/scripts/health.sh
起動後/日次チェック
再起動後、ストレージ/ネットワークの作業後、および日次自動化に使用してください。
デフォルトのコマンド:
POSTBOOT_NAS_BENCHMARK_MIB=1 \
~/Code/joelhooks/joelclaw-runtime/skills/joelclaw-system-check/scripts/postboot.sh
デフォルトの動作:
- すでに指定されている
s3の証明用パスに対する、最小限の NAS 検証書き込みプローブを除き、読み取り専用です。 POSTBOOT_HEAVY=1を指定しない限り、Convex の書き込み/読み取り/削除スモークテストは実行しません。POSTBOOT_RUN_FULL_HEALTH=1を指定しない限り、レガシーの完全版health.shは実行しません。- 生の
.env、MinIO キー、Convex 管理者キー、パスワードを含む Postgres URL は決して出力しません。 100.67.156.41:39000のカスタム NAS MinIO を正規のものとして扱います。29990の ASUSTOR MinIO CE は、警告/参照用の領域としてのみ扱います。- Flagg では、明示的に Central へ切り替えるまでは、
JOELCLAW_CENTRAL_URLと直接の Typesense ヘルパーが引き続き Panda を指すことを想定します。
重要なチェック:
| チェック | Green の意味 |
|---|---|
| 権限分離の環境変数 | Flagg がシャドウ状態の間、キャプチャ/検索の Central 接続先は引き続き Panda を指しています |
| Inngest の直接ヘルス | 正規の Inngest エンドポイントが /health で応答します。Flagg では、INNGEST_URL が未設定の場合、http://panda:8288 にフォールバックします |
| 実行キャプチャのヘルス | Panda の /api/runs/health がローカル Machine 認証で ok=true を返します |
| 設定済み Typesense のヘルス | 設定済みの Typesense エンドポイントが /health で応答します |
| NAS の launchd ラベル | system/com.joelclaw.central.nas-mounts がロード済みで、直近の終了ステータスに失敗がありません |
| NAS ルート 10GbE/MTU | 192.168.1.163 へのルートが en0 と MTU 8192 を使用します |
| NAS マウントの状態 | /Volumes/nas-nvme と /Volumes/three-body が LAN IP のエクスポートからマウントされています |
| NAS 検証書き込みプローブ | サービスのチェックアウトにある verify-nas.sh が成功します |
| NFS のチューニング済みオプション | 稼働中のマウントに rsize=524288,wsize=524288,readahead=128 が表示されます |
| カスタム MinIO の起動/稼働状態 | カスタム NAS MinIO が 39000 で応答します |
| Central Postgres | ソケット、TCP、レディネスの各チェックが成功します |
| ローカル Convex | バックエンドの /version とダッシュボードが応答します |
警告/参照用のチェック:
- カスタム MinIO コンソールの TCP(
39001) - ASUSTOR MinIO CE のレディネス(
29990) - 集約型の
joelclaw statusおよびjoelclaw inngest statusCLI ラッパー。正規のエンドポイントが正常でも、ローカルの環境変数の不整合が明らかになることがあるためです - Convex の LAN および tailnet フォワード
- ローカル Convex LAN フォワーダーの LaunchAgent
- Flagg のシャドウ Central ヘルス
- ゲート付きの高負荷チェック
postboot.sh が失敗した場合は、まず重要な障害を修正してください。必須の経路が正常になる前に、警告/参照用の失敗への対応に取りかからないでください。
最近の Codex トランスクリプトのレビュー
日次自動化では、ヘルススクリプトの実行後に最近の Codex インフラセッションをレビューしてください。
推奨するインデックス検索:
recall と現在の session-search コントラクトを使用してください。プライベートなクエリは、構造化された MCP 引数に保持してください。生の証拠を取得するには、スコープが限定された evidenceDrilldownReceipt が必要です。プロジェクションが欠落していても、生データへのアクセスは許可されません。
インデックス検索結果が古い、または見つからない場合は、トランスクリプト本文を読まずにメタデータを調べてください。生データの内容には引き続き、スコープが限定されたレシートが必要です:
tail -n 80 ~/.codex/session_index.jsonl
find ~/.codex -type f -name "rollout-*.jsonl" -mtime -2
範囲を限定したスニペット、最終回答、コマンド、レシートのみをレビューしてください。トランスクリプト全体やシークレットを出力しないでください。
長期的に有用な事実は、適切な場所に反映してください:
- システムトポロジーと Panda/Flagg の権限 ->
skills/system-architecture/SKILL.md - NAS アクセス、LAN/MTU/NFS の動作 ->
skills/three-body/SKILL.md - カスタム NAS MinIO の動作 ->
skills/minio/SKILL.md - ローカル Convex の公開範囲と日常的な使用形態 ->
skills/local-convex/SKILL.md - 日付付きレシートと決定事項 ->
.brain/resources/*.svx
進行中のサブエージェントのスレッドや最終回答のないセッションは、アーキテクチャの確定情報ではなく手がかりとして扱ってください。
有効な Codex 自動化:
- ID:
daily-joelclaw-postboot-system-check - スケジュール:毎日、現地時間 08:15
- ワークスペース:
/Users/joel/Code/joelhooks/joelclaw-runtime - コマンドの目的:
POSTBOOT_NAS_BENCHMARK_MIB=1 skills/joelclaw-system-check/scripts/postboot.shを実行し、失敗や警告を要約して、最近の Codex インフラのトランスクリプトをレビューし、未記録の長期的に有用な事実を報告し、シークレットの出力を避けます。
完全なヘルスチェック(16 項目)
| チェック | 内容 | 正常(10) | 警告(5-7) | 異常(1-3) |
|---|---|---|---|---|
| k8s クラスター | joelclaw 名前空間内のポッド | 4/4 が実行中、再起動 0 回 | 一部のポッド | ポッドなし |
| pds | :9627 の AT Proto PDS | バージョン + コレクション | ポッドは実行中、ホストへの公開が劣化 | ポッドが実行されていない |
| worker | :3111 の system-bus | 関数 16 個以上 | 応答あり、関数数が少ない | 停止 |
| inngest server | :8288 に到達可能 | 応答あり | — | 停止 |
| agent-mail | :8765 の Flagg ローカル MCP メール | 稼働中 + メールボックスを確認可能 | 件数/検索が劣化 | 利用不可 |
| redis/gateway | Redis + ゲートウェイのセッションキュー | 接続済み、キューの滞留が少ない | 接続済み、滞留が増加中 | 利用不可 |
| typesense/otel | Typesense のヘルス + OTEL クエリパス | 正常 + クエリ可能 | 正常、クエリが劣化 | 利用不可 |
| テスト | system-bus でファイルごとに分離した bun test | 失敗 0 件 | — | 失敗あり |
| tsc | tsc --noEmit | エラーなし | — | 型エラー |
| リポジトリ同期 | モノレポの HEAD と origin/main | 同期済み | 先行/遅延 | リポジトリ利用不可 |
| メモリパイプライン | joelclaw inngest memory-health | チェック正常 | チェック劣化 | チェック失敗 |
| pi-tools | 拡張機能の依存関係がインストール済み | 依存関係 3 個すべて | — | 不足あり |
| git 設定 | user.name + メールアドレスの設定 | 設定済み | — | 未設定 |
| アクティブループ | joelclaw loop list | クエリ可能 | クエリが劣化 | 利用不可 |
| gogcli | Google Workspace 認証 | アカウント認証済み、トークン有効 | トークン保存済み、パスワードなし | 未設定 |
| ディスク | 空き容量 + loop tmp | 使用率 80% 未満 | — | 使用率 80% 超 |
| 古いテスト | __tests__/ + 受け入れテスト | 問題なし | — | 存在 |
エージェントセッションの記録 + NAS バックアップの確認
Flagg、Blaine、Panda 間で Pi/Claude/Codex のトランスクリプトのアクティビティが記録され、バックアップされていることの証明が必要な場合は、agent-session-capture-backup スキルを使用してください。
~/Code/joelhooks/joelclaw から実行する簡易監査/修復コマンド:
bun scripts/agent-session-audit-backup.ts \
--hosts flagg,blaine,panda \
--central-url http://joels-mac-studio.tail7af24.ts.net:3111 \
--backup-root /Volumes/three-body/sessions \
--repair-env \
--sync=true \
--replay-outbox \
--replay-limit 250 \
--replay-max-bytes 10485760
日次の永続ワークフロー:
- function:
system/agent-session.capture-backup.verify - event:
system/agent-session.capture-backup.requested - cron:
TZ=America/Los_Angeles 15 5 * * * - receipts:
/Volumes/three-body/sessions/receipts/*.json
runs_dev Typesense インデックスが新鮮でも、/Volumes/three-body/sessions が古い、または空の場合は、重大なバックアップ障害として扱ってください。Typesense は派生データです。生のトランスクリプトと実行データの Blob が正本です。
実行するタイミング
- セッション開始時 — 作業を始める前にシステムの状態を把握します
- ループ完了後 — 問題が発生していないことを確認します
- インフラ変更後 — k8s、ワーカー、Redis の設定を確認します
- 何かがおかしいと感じたとき — 手早くトリアージします
よくある問題の修正
リポジトリのずれ: cd ~/Code/joelhooks/joelclaw && git fetch origin && git status -sb
pi-tools の不具合: cd ~/.pi/agent/git/github.com/joelhooks/pi-tools && bun add @sinclair/typebox @mariozechner/pi-coding-agent @mariozechner/pi-tui @mariozechner/pi-ai
PDS に接続できない: まず curl -fsS http://localhost:9627/xrpc/_health を実行し、続けて kubectl get deploy,svc,pods,pvc -n joelclaw | rg 'bluesky-pds|NAME' を実行します(または、Pod が停止している場合: kubectl rollout restart deployment/bluesky-pds -n joelclaw)
ワーカーの停止: joelclaw inngest restart-worker --register
失敗するテスト: 影響を受ける動作を調査し、妥当なテストカバレッジを修復します。テストの由来だけを理由に削除してはいけません。
system-bus テストの誤検知: ヘルススクリプトは各 src/**/*.test.ts ファイルをそれぞれ独立した Bun プロセスで実行します。これは、いくつかのレガシーテストがグローバルをモンキーパッチしたり、mock.module を使用したりするためです。統合ヘルスチェックがグリーンでも bun test が失敗する場合、ランタイムコードの不具合と判断する前に、ファイル間のモック漏れを疑ってください。
ループの生成物: タスクの所有者と未回収の作業を調査します。許可された範囲内で、使い捨てであると確認できた生成物のみを削除します。
Inngest のハングした実行を素早くトリアージする
最初のステップの後に実行が停止したように見える場合:
joelclaw run <run-id>
トレースに "Unable to reach SDK URL" を伴う Finalization の失敗が表示される場合:
-
登録状態とヘルスを確認します:
joelclaw inngest status -
想定される場所に関数が存在することを確認します:
joelclaw functions | rg -i "manifest-archive|<function-name>" -
Inngest の UI/API で古いアプリ登録を確認し、古い SDK URL を削除します。
-
ネットワークだけでなく、ハンドラーがブロックしている可能性も考慮します: ステップの応答前に、最近のステップコードでファイルシステム/Redis/サブプロセスのブロッキングがないか確認します。