mcpField
J
joelclaw-system-check

joelclaw-system-check

github.com/joelhooksクラウド・DevOps6538 回インストール1 日前に更新
リポジトリ

joelclaw-system-check について

joelclaw-system-checkは、joelclawインフラの状態を確認するスキルで、環境の運用担当者向けです。読み取り専用の日次チェックとテストを含む詳細レポートを備え、移行に伴う確認項目も区別します。

主な機能

  1. 01再起動後・日次の構成チェック
  2. 02ストレージ、ネットワーク、サービスの確認
  3. 03テストを含む詳細なヘルスレポート
  4. 04出力でのシークレット露出を回避
  5. 05最近のCodexインフラセッションを確認

活用シーン

  1. 01再起動後に重要サービスの状態を確認
  2. 02ストレージやネットワーク変更後の調査
  3. 03日次チェックで警告を集約
  4. 04セッションから継続保存すべき運用情報を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/joelhooks/joelclaw --skill joelclaw-system-check

インストール後、Claude Code で/joelclaw-system-checkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
assets/
small-logo.svg
scripts/
health.sh
postboot.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/MTU192.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 status CLI ラッパー。正規のエンドポイントが正常でも、ローカルの環境変数の不整合が明らかになることがあるためです
  • 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/gatewayRedis + ゲートウェイのセッションキュー接続済み、キューの滞留が少ない接続済み、滞留が増加中利用不可
typesense/otelTypesense のヘルス + OTEL クエリパス正常 + クエリ可能正常、クエリが劣化利用不可
テストsystem-bus でファイルごとに分離した bun test失敗 0 件—失敗あり
tsctsc --noEmitエラーなし—型エラー
リポジトリ同期モノレポの HEAD と origin/main同期済み先行/遅延リポジトリ利用不可
メモリパイプラインjoelclaw inngest memory-healthチェック正常チェック劣化チェック失敗
pi-tools拡張機能の依存関係がインストール済み依存関係 3 個すべて—不足あり
git 設定user.name + メールアドレスの設定設定済み—未設定
アクティブループjoelclaw loop listクエリ可能クエリが劣化利用不可
gogcliGoogle 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 の失敗が表示される場合:

  1. 登録状態とヘルスを確認します: joelclaw inngest status

  2. 想定される場所に関数が存在することを確認します: joelclaw functions | rg -i "manifest-archive|<function-name>"

  3. Inngest の UI/API で古いアプリ登録を確認し、古い SDK URL を削除します。

  4. ネットワークだけでなく、ハンドラーがブロックしている可能性も考慮します: ステップの応答前に、最近のステップコードでファイルシステム/Redis/サブプロセスのブロッキングがないか確認します。

コメント