ドキュメントに戻る
データが下に流れ、イベントが上にストリーミングされる4層アーキテクチャ。
概要
システム概要
システム、コアループ、必要な依存関係の簡潔なマップ。
•
15分 で読めます
•PlanToCodeは、実行前にコード変更を計画・検証するデスクトップワークスペースです。ローカルのRustジョブエンジン、React UI、LLM呼び出し用のサーバープロキシを調整します。システムはオフラインファーストアーキテクチャに従い、デスクトップアプリはローカル状態にSQLiteを使用して独立して動作し、サーバーは認証、LLMプロバイダールーティング、課金を処理します。外部LLMプロバイダーがAPIキーで設定されていない場合、計画と分析パイプラインは実行されません。
システムマップ
デスクトップアプリ、Rustコア、ローカルSQLiteストレージ、サーバープロキシのマップ。
Click to expand
実践におけるコアループ
- テキスト、音声文字起こし(useVoiceTranscriptionフック経由)、またはビデオ録画分析からタスクをキャプチャ。
- TextImprovementProcessorを通じてtext_improvementジョブでタスクの説明と目標を洗練。
- ファイル検出ワークフローを実行:RootFolderSelectionProcessorがディレクトリを選択、RegexFileFilterProcessorがパターンを適用、FileRelevanceAssessmentProcessorが内容をスコアリング、ExtendedPathFinderProcessorがコンテキストを拡張。
- ImplementationPlanProcessorを介して実装計画を生成し、XML形式のプランをMonacoビューアにストリーミング。
- オプションで、XMLタグ付きソースプランを使用してImplementationPlanMergeProcessorで複数のプランドラフトをマージ。
- PTYターミナルセッションまたは外部エージェント用のコピーボタンテンプレートを通じて承認されたプランを実行またはエクスポート。
- 監査可能性のためにすべてのジョブ、アーティファクト、ターミナルログをSQLite(background_jobs、terminal_sessionsテーブル)に永続化。
主要コンポーネント
- デスクトップUI(React):desktop/src/内にMonacoプランビュー、ターミナルパネル、プロバイダー(SessionProvider、TextImprovementProvider)。
- Rustコア(Tauri v2):desktop/src-tauri/内でコマンド、ジョブ、永続化を機能ベースのパーミッションで処理。
- ローカルSQLiteスキーマ:並行アクセス用のWALモードを持つdesktop/src-tauri/migrations/consolidated_schema.sql。
- サーバープロキシ(Actix-Web):認証、プロバイダールーティング、ストリーミングレスポンス、Stripe経由の課金用にserver/src/内。
- モバイルiOSクライアント:SwiftUIインターフェース、Auth0 PKCE、WebSocketデバイスリンクを持つmobile/ios/Core/内。
- インフラ自動化:Hetzner(EU)とInterServer(US)専用サーバー用のinfrastructure/ansible/内。
必要な依存関係
- プラン生成、文字起こし、分析用の外部LLMプロバイダー(OpenAI、Anthropic、Google、X.AI、OpenRouter)。
- デスクトップとモバイルセッション用のPKCEフローを持つAuth0ベースの認証。
- サーバー側のユーザーアカウント、課金状態、ジョブキュー用のPostgreSQL 17とRedis 7+(セルフホストデプロイメント)。
- ファイル検出ワークフロー用のgit ls-filesまたはディレクトリトラバーサルによるローカルファイルシステムアクセス。
- 音声入力処理用のWhisper互換文字起こしエンドポイント。
リポジトリ内の動作の場所
- Tauriコマンド:desktop/src-tauri/src/commands/(35以上のコマンドモジュール:job_commands.rs、workflow_commands.rs、terminal_commands.rs、session_commands.rs、auth0_commands.rs)
- ワークフローオーケストレーション:desktop/src-tauri/src/jobs/workflow_orchestrator/(definition_loader.rs、stage_scheduler.rs、event_emitter.rs、payload_builder.rs)
- ジョブプロセッサ:desktop/src-tauri/src/jobs/processors/(implementation_plan_processor.rs、text_improvement_processor.rs、root_folder_selection_processor.rs)
- SQLiteリポジトリ:desktop/src-tauri/src/db_utils/(background_job_repository/、session_repository.rs、terminal_repository.rs)
- サーバールート:server/src/routes.rs(configure_routes、configure_public_auth_routes、configure_webhook_routes)
- LLMプロキシハンドラー:server/src/handlers/proxy_handlers.rsとserver/src/handlers/proxy/(router.rs、providers/)
- プロバイダートランスフォーマー:server/src/handlers/provider_transformers/(openai.rs、google.rs、anthropic.rs、xai.rs)
- iOSワークフロー:MobileSessionManagerとAPIClientを持つmobile/ios/Core/Sources/Workflows/WorkflowManager.swift
- インフラプレイブック:infrastructure/ansible/site-base.yml(強化、PostgreSQL、Redis)とsite-app.yml(デプロイメント)
Continue to the runtime walkthrough
See how the core loop executes in practice with detailed job timelines and artifact flows.