런타임 워크스루
작업 입력에서 계획 출력까지의 전체 런타임 타임라인.
이 워크스루는 초기 캡처부터 파일 탐색, 계획 생성, 터미널 실행까지 단일 작업을 추적합니다. 각 단계는 특정 작업 유형에 매핑되며 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.All artifacts persist in SQLite background_jobs and terminal_sessions tables for history and session recovery.
런타임 타임라인
작업 입력, 워크플로우 단계, 계획 출력을 보여주는 시각적 타임라인.
작업 유형 매핑
- 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 → 병합된 계획
Task input capture
Tasks enter the system through multiple input surfaces: typed text in TaskDescriptionEditor, voice dictation via useVoiceTranscription hook, or video analysis through VideoAnalysisDialog.
Each input type updates SQLite state: task_description in sessions and task_description_history, voice transcription inserts text into the session or terminal input, and video analysis responses are stored in 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 메타데이터를 포함합니다.
Plan review
Plans open in the Monaco-based VirtualizedCodeViewer for review. Users can edit plan text directly, request modifications, or approve for execution.
Plan edits are persisted in background_jobs.response; signoff state is recorded in background_jobs.metadata.userSignoff.
실행 핸드오프
승인된 계획은 복사 버튼 템플릿을 통해 통합 터미널로 복사되거나, Claude Code, Cursor, Codex와 같은 외부 에이전트용으로 내보내집니다.
terminal_commands.rs의 터미널 세션은 PTY 출력을 캡처하고, 에이전트 주의 상태를 감지하고, 모든 실행 활동을 terminal_sessions 테이블에 로깅합니다.
상태 영속
모든 작업 아티팩트는 session_id, task_type, status, prompt, response, 토큰 수, 비용 추적과 함께 background_jobs 테이블에 영속됩니다.
앱 재시작 시 Rust 코어가 SQLite에서 세션 상태를 재수화하고, 오래된 실행 중인 작업을 실패로 표시하고, 터미널 출력 로그를 복원합니다.