メインコンテンツまでスキップ

ガイド:ダッシュボード監視

2つのダッシュボードコマンド

コマンドインターフェースURL技術
oma dashboardターミナル(TUI)N/Achokidarファイルウォッチャー、picocolorsレンダリング
oma dashboard:webブラウザhttp://localhost:9847HTTPサーバー、WebSocket、chokidar

両ダッシュボードとも同じデータソースを監視:.serena/memories/ディレクトリ。

ターミナルダッシュボード

oma dashboard

ターミナル内にボックス描画UIをレンダリング。メモリファイル変更で自動更新。Ctrl+Cで終了。

ステータスシンボル: (緑)= running、(シアン)= completed、(赤)= failed、(黄)= blocked、(暗)= pending

Webダッシュボード

oma dashboard:web
# カスタムポート
DASHBOARD_PORT=8080 oma dashboard:web
# カスタムメモリディレクトリ
MEMORIES_DIR=/path/to/.serena/memories oma dashboard:web

ダークテーマUI、接続ステータスバッジ、自動再接続、アニメーションステータスドット。


推奨3ターミナルレイアウト

ターミナル1: メインエージェントセッション(Gemini CLI、Claude Codeなどで/orchestrate実行)

ターミナル2: oma dashboardでパッシブモニタリング

ターミナル3: エージェントステータス確認、検証実行、統計表示などのアドホックコマンド


.serena/memories/のデータソース

ファイルパターン作成元内容
orchestrator-session.md/orchestrate Step 2セッションID、開始時刻、ステータス
session-{workflow}.md/work/ultraworkセッションメタデータ、フェーズ進捗
task-board.mdオーケストレーションワークフローエージェント割り当て、ステータス、タスク
progress-{agent}.mdスポーンされた各エージェントターン番号、作業中の内容、中間結果
result-{agent}.md完了した各エージェント最終ステータス、変更ファイル、成果物
experiment-ledger.mdQuality Scoreシステムベースラインスコア、デルタ、Keep/Discard判定

ダッシュボードの読み取り方法

  1. セッション検出orchestrator-session.mdを最初にチェック、なければ最新のsession-*.md
  2. タスクボードパース — Markdownテーブルとして読み取り
  3. エージェント発見 — タスクボードがなければファイル名パターンからエージェントをスキャン
  4. ターンカウントprogress-{agent}.mdからturn: Nを抽出
  5. アクティビティフィード — 最新更新の5ファイルから最終有意行を抽出

トラブルシューティング

エージェントが「running」だがターン進捗なし

原因:長時間操作中、クラッシュしたがPIDファイル残存、ユーザー入力待ち。 対処:ログ確認、oma agent:statusでプロセス生存確認、再スポーン。

エージェントが「crashed」

原因:CLIプロセス異常終了(メモリ不足、APIクォータ超過)、ワークスペース削除、CLIの未インストール/未認証。 対処:ログ確認、oma doctoroma auth:status、再スポーン。

「エージェント未検出」

原因:ワークフローがスポーンステップに未到達、.serena/memories/が空、監視ディレクトリが不正。 対処:メモリディレクトリ確認、ワークフローフェーズ確認、MEMORIES_DIR指定。

Webダッシュボードが「Disconnected」

原因:プロセス終了、ネットワーク問題、ポート使用中。 対処:プロセス確認、別ポート試行、自動再接続を待つ(指数バックオフ1s〜10s)。


マージ前モニタリングチェックリスト

  • すべてのエージェントが「completed」
  • 「failed」エージェントなし
  • QAエージェントのレビュー完了
  • CRITICAL/HIGHの指摘なし
  • セッションステータスがCOMPLETED
  • アクティビティフィードに最終レポート

技術詳細

ターミナルダッシュボード

  • chokidar(awaitWriteFinish:200ms安定化、50msポーリング)
  • picocolorsでANSIカラー、Unicodeボックス描画文字
  • MEMORIES_DIR環境変数またはCLI引数でメモリディレクトリ指定
  • SIGINT/SIGTERMでグレースフルシャットダウン

Webダッシュボード

  • Node.js createServerでHTMLを/に、JSONステートを/api/stateに提供
  • wsライブラリでWebSocket。接続時にフルステートを即時送信、以降は差分プッシュ
  • 100msデバウンスで高速ファイル書き込みのフラッディングを防止
  • 自動再接続:指数バックオフ(初期1s、1.5倍、最大10s)
  • デフォルトポート9847、DASHBOARD_PORTで変更可能