ドキュメントに戻る
アーキテクチャ

ランタイムウォークスルー

タスク入力からプラン出力までのエンドツーエンドランタイムタイムライン。

12分 で読めます

このウォークスルーは、初期キャプチャからファイル検出、プラン生成、ターミナル実行までの単一タスクを追跡します。各ステージは特定のジョブタイプにマップされ、SQLiteに保存されるアーティファクトを生成します。

ハイレベルランタイムシーケンス

  • 1.ユーザーがTaskDescriptionEditorコンポーネントを介してデスクトップUIでタスクの説明を入力または音声入力。
  • 2.オプション:text_improvementジョブがTextImprovementProcessorを通じて生の入力を洗練。
  • 3.ユーザーが実装計画パネルのstart_file_finder_workflowコマンドを介してファイル検出ワークフローをトリガー。
  • 4.desktop/src-tauri/src/jobs/workflow_orchestrator/のWorkflowOrchestratorがワークフローレコードを作成しステージ1をスケジュール。
  • 5.ステージ1(root_folder_selection):RootFolderSelectionProcessorがディレクトリツリーをLLMに送信、選択されたルートをIntermediateData.selectedRootsに保存。
  • 6.ステージ2(regex_file_filter):RegexFileFilterProcessorがパターンを生成、git ls-filesを実行、マッチをIntermediateData.locallyFilteredFilesに保存。
  • 7.ステージ3(file_relevance_assessment):FileRelevanceAssessmentProcessorがファイル内容をチャンキング、関連性をスコアリング、IntermediateData.aiFilteredFilesに保存。
  • 8.ステージ4(extended_path_finder):ExtendedPathFinderProcessorがインポートと依存関係でコンテキストを拡張、IntermediateData.verifiedPathsに保存。
  • 9.UIがevent_emitter.rs経由でworkflow-completedイベントを受信、ファイル選択表示を更新。
  • 10.ユーザーがgenerate_implementation_planコマンドを介して選択されたファイルでプラン生成をトリガー。
  • 11.desktop/src-tauri/src/jobs/processors/implementation_plan_processor.rsのImplementationPlanProcessorがjob:stream-progressイベントを介してXMLプラン内容をMonacoビューアにストリーミング。
  • 12.ユーザーがVirtualizedCodeViewerコンポーネントでプランをレビュー、直接編集またはマージをリクエスト可能。
  • 13.承認されたプランがコピーボタンテンプレートを介してターミナルにコピーされるか、外部エージェント用にエクスポート。
  • 14.terminal_commands.rsのターミナルセッションがPTY出力をキャプチャし、エージェント注意状態を検出。
  • 15.すべてのアーティファクトが監査とセッションリカバリのためにSQLiteのbackground_jobsとterminal_sessionsテーブルに永続化。

ランタイムタイムライン

タスク入力、ワークフローステージ、プラン出力を示すビジュアルタイムライン。

ランタイムタイムライン図
Click to expand
タスク実行は6つのステージを流れ、すべてのアーティファクトはSQLiteに永続化されます。

ジョブタイプマッピング

  • text_improvement → TextImprovementProcessor → 洗練されたタスク説明
  • root_folder_selection → RootFolderSelectionProcessor → 選択されたディレクトリ
  • regex_file_filter → RegexFileFilterProcessor → パターンマッチしたファイル
  • file_relevance_assessment → FileRelevanceAssessmentProcessor → スコアリングされたファイル
  • extended_path_finder → ExtendedPathFinderProcessor → 拡張されたコンテキスト
  • implementation_plan → ImplementationPlanProcessor → XML計画ドキュメント
  • implementation_plan_merge → ImplementationPlanMergeProcessor → マージされた計画

タスク入力のキャプチャ

タスクは複数の入力サーフェスからシステムに入ります:TaskDescriptionEditorでの入力テキスト、useVoiceTranscriptionフック経由の音声ディクテーション、またはVideoAnalysisDialog経由のビデオ分析。

各入力タイプはSQLiteに保存されるアーティファクトを生成します - sessionsテーブルのtask_description、background_jobsの文字起こし結果、関連するジョブメタデータのビデオフレーム。

入力の洗練

text_improvementジョブタイプはTextImprovementProcessorを通じて生の入力を洗練し、テキストをXMLでラップしてLLMに送信し、文法、明確さ、構造の改善を行います。

洗練されたテキストはbackground_jobs.responseに保存され、Reactプロバイダー経由でsessions.task_descriptionを更新できます。

ファイル検出ワークフロー

FileFinderWorkflowは4つの連続ステージを実行します:root_folder_selectionがディレクトリを絞り込み、regex_file_filterがパターンを適用し、file_relevance_assessmentがコンテンツをスコアリングし、extended_path_finderが依存関係で拡張します。

各ステージは結果をプロセッサ間で渡されるIntermediateData構造体に保存し、最終的なファイル選択はsessions.included_filesに永続化されます。

計画生成

implementation_planジョブタイプはImplementationPlanProcessorを使用して、ファイルパス、操作タイプ、コード変更を含むplan_step要素を持つXMLフォーマットの計画を生成します。

計画コンテンツはjob:stream-progress Tauriイベント経由でUIにストリーミングされ、シンタックスハイライト付きでVirtualizedCodeViewer Monacoコンポーネントに表示されます。

計画のマージ

implementation_plan_mergeジョブはsource_plans XMLタグとユーザー提供のマージ指示を使用して複数の計画を結合し、競合を解決して変更を統合します。

マージされた計画はソース計画へのトレーサビリティを維持し、最終的なbackground_jobsレコードにmerged_fromメタデータを含みます。

計画のレビュー

計画はレビュー用にMonacoベースのVirtualizedCodeViewerで開きます。ユーザーは計画テキストを直接編集し、修正をリクエストし、実行を承認できます。

すべてのレビューアクションはタイムスタンプとユーザーコンテキスト付きでログに記録され、計画の進化の監査証跡を提供します。

実行ハンドオフ

承認された計画はコピーボタンテンプレート経由で統合ターミナルにコピーされるか、Claude Code、Cursor、Codexなどの外部エージェント用にエクスポートされます。

terminal_commands.rsのターミナルセッションはPTY出力をキャプチャし、エージェント注意状態を検出し、すべての実行アクティビティをterminal_sessionsテーブルにログ記録します。

状態の永続化

すべてのジョブアーティファクトはsession_id、task_type、status、prompt、response、トークン数、コスト追跡を含むbackground_jobsテーブルに永続化されます。

アプリ再起動時、RustコアがSQLiteからセッション状態を復元し、古い実行中ジョブを失敗としてマークし、ターミナル出力ログを復元します。

アーキテクチャを探索

コンポーネントがどのように組み合わさっているかを詳細に理解しましょう。