런타임 워크스루
작업 입력에서 계획 출력까지의 전체 런타임 타임라인.
이 워크스루는 초기 캡처부터 파일 탐색, 계획 생성, 터미널 실행까지 단일 작업을 추적합니다. 각 단계는 특정 작업 유형에 매핑되며 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 테이블에 영속됩니다.
런타임 타임라인
작업 입력, 워크플로우 단계, 계획 출력을 보여주는 시각적 타임라인.
작업 유형 매핑
- 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에서 세션 상태를 재수화하고, 오래된 실행 중인 작업을 실패로 표시하고, 터미널 출력 로그를 복원합니다.