Repository navigation
src_core_orchestrator
globalpocket edited this page Apr 11, 2026
·
3 revisions
Orchestrator は Brownie システムの司令塔であり、以下の責務を担います:
- ライフサイクル管理: メインプロセスの起動、ポーリングループの実行、およびクリーンアップ(シャットダウン)の制御。
- GitHub 連携: メンションや Issue の監視を行い、新規タスクの検知および承認/却下(HITL)のハンドリングを行う。
-
ワークフローの統合: LangGraph を用いた状態定義とチェックポイント(
AsyncSqliteSaver)の管理。 -
インフラのオーケストレーション:
WorkerPool(Huey) へのタスク投入、MCPServerManagerのライフサイクル制御。
初期化引数:
-
config_path(str): 設定ファイル (config.yaml) への絶対パス。
公開メソッド:
-
start() -> None(async)-
振る舞い:
- LangGraph の
AsyncSqliteSaverを初期化し、.brwn/checkpoints.dbに接続。 -
src.core.graph.builder.compile_workflowを呼び出してワークフローをコンパイル。 - 設定された
polling_interval_secごとに_poll_mentionsを実行する無限ループを開始。
- LangGraph の
- 例外発生: 設定ファイル読み込みエラー、ネットワークエラー時にログを記録。
-
振る舞い:
-
shutdown() -> None(async)-
振る舞い:
-
is_runningフラグをFalseに設定。 -
mcp_manager.stop_all()を呼び出し、稼働中の MCP サーバーを確実に停止。
-
-
振る舞い:
-
_poll_mentions() -> None(async) (内部メソッドだが核心的)-
振る舞い:
-
gh_clientを通じて未処理のメンションを取得。 - 本文に
/approveまたは/rejectが含まれる場合、_resume_workflowを呼び出す。 - それ以外は
_queue_taskを呼び出して新規または再開タスクを投入。
-
-
振る舞い:
-
_execute_task(task_id, repo_name, issue_number) -> None(async)-
振る舞い:
- 重要: Huey ワーカーから呼び出される実行実体。
- 特定の
thread_id(task_id) の状態をチェックポインタから復元。 -
workflow_app.astreamを実行し、LangGraph のノード遷移を開始。 - 実行結果(完了または承認待ち)に基づいて GitHub にコメントを投稿。
-
例外発生: 実行中のエラーをキャッチし、状態を
Failedに更新。
-
振る舞い:
-
標準ライブラリ:
asyncio,logging,yaml,time -
外部依存:
langgraph.checkpoint.sqlite.aio.AsyncSqliteSaversrc.core.workers.pool.WorkerPoolsrc.gh_platform.client.GitHubClientWrappersrc.workspace.sandbox.SandboxManagersrc.mcp_server.manager.MCPServerManager