CR-NEXUS-054 ゴール駆動・動的オーケストレーション 完了レポート
概要
- 日付: 2026-06-10
- ステータス: Completed
- 仕様書:
docs/spec/CR-NEXUS-054_Dynamic_Goal_Driven_Orchestration.md
目的: 固定7フェーズ直列パイプライン(run_full_project)を、ゴール達成条件を見て次アクションをその場で選ぶ「ゴール駆動・動的フロー」に進化させる。既存の Orchestrator は無改変(コンポジション方式)とし、完全な後方互換を維持する。
実装内容
Phase A: 動的ループ基盤 (Commit: c3012344)
テスト48件追加
core/goal_spec.py:GoalSpec,GoalEvaluator,standard_criteriaを実装し、ゴール定義と評価の基盤を構築。core/dynamic_router.py:ActionRegistryとRuleBasedRouterを実装し、ルールベースのアクション決定を可能にした。core/dynamic_orchestrator.py:DynamicRunLoop,DecisionTrace,GoalResultを実装し、動的な実行ループのコアを完成させた。
Phase B: LLM支援と実測ベース評価 (Commit: 6d4b33c7)
テスト18件追加
core/llm_assisted_router.py:LLMAssistedRouterを実装。LLMの提案に対し三重ガード(無効提案、LLM障害、予算超過)を適用し、異常時は必ずルールベースにフォールバック。リトライ判断は決定的(Deterministic)に処理。core/measured_criteria.py:coverage_criterion,lint_clean_criterionおよびPhaseCachedCheckを実装し、静的解析やカバレッジに基づく実測ベースの達成条件を追加。
Phase C: CLI/UI統合と既存バグ修正
テスト6件追加
main_cli.py:--dynamic,--dynamic-llm-routing,--max-actions,--skip-actionsの各フラグを追加。ui/dynamic_run_tab.py: 統合UIに「Dynamic Run」タブを新設。- バグ修正:
Orchestratorにcontext_agentフィールドが欠落しており、CLIフルパイプラインがTypeErrorで起動不能だった問題を解消。
実現した機能
- 不要フェーズのスキップ: ゴール達成状態に応じた無駄な処理の省略。
- 途中状態からの再開: 中断されたプロジェクトの動的再開。
- アクション単位リトライ: 全体停止なしに個別アクションをリトライ可能。
- 判断理由の記録:
DecisionTraceによる、全判断履歴の理由付き記録。 - LLM支援ルーティング: LLMの提案による最適なアクション選択。
- 実測ベース達成条件: テストカバレッジやLint結果に基づく確実な達成判定。
品質検証
- 新規テスト: 72件(全スイート4,600件超パス)
- 静的解析:
ruffおよびmypyクリーンを維持。
使い方
CLIの場合:
python main_cli.py --project-path /tmp/demo "要件" --dynamic --skip-actions architecture
UIの場合: 統合UIの「Dynamic Run」タブから操作可能。
既知の制約と今後
- 段階的移行: 既存の
run_full_projectから動的フローへの移行を段階的に進める。 - 修復アクションの統合: 今後
DebuggerAgentの修復アクションを動的ループに統合する。 - SaaS化(Phase 2): ゴールテンプレートの提供により、SaaS環境での利用を促進する。
開発体制(LLM分担)
- 設計・コア実装・検証: Claude Fable 5
- 実装ドラフト・完了レポート起案: GLM-5.1
- テスト量産: MiniMax M2.7(Phase A/B、GLMタイムアウト時のフォールバック)/ GLM-5.1(Phase C)