Files
AX-Copilot-Codex/docs/DEVELOPMENT.md
lacvet 36a9af8210 AX Agent 계획 승인 UI를 테마에 맞게 정리하고 플랜 뷰어 상호작용을 개선
계획 확인 카드와 플랜 뷰어 하단 승인 영역을 AX Agent 테마 리소스 기준으로 다시 정리했다.

승인 카드의 표면/버튼/입력 패널 간격을 통일하고 플랜 뷰어에는 검토 안내 카드, 수정 요청 입력 패널, 테마 호버를 추가했다.

README.md와 docs/DEVELOPMENT.md에 2026-04-10 08:47 (KST) 기준 변경 이력을 반영했다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-10 08:48:36 +09:00

43 KiB
Raw Blame History

AX Copilot - 媛쒕컻 臾몄꽌

계획 승인 UI 테마 정렬

  • 업데이트: 2026-04-10 08:47 (KST)
  • ChatWindow.AgentStatusPresentation의 계획 승인 카드를 AX Agent 테마 리소스 기반으로 다시 정리했습니다. 승인/수정/취소 버튼의 라운드, 간격, 입력 패널 배경을 LauncherBackground, ItemBackground, BorderColor, AccentColor 축으로 통일해 채팅 본문과 더 자연스럽게 이어지도록 조정했습니다.
  • PlanViewerWindow의 승인 단계 UI도 같은 방향으로 손봤습니다. 승인 버튼 영역 앞에 검토 안내 카드를 추가하고, 수정 피드백 입력 패널은 테마 배경/테두리를 사용하며, 액션 버튼 호버는 단순 opacity 대신 ItemHoverBackground 계열로 반응하도록 바꿨습니다.
  • 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 경고 0 / 오류 0

claude-code식 계획/후속 권유 최소화

  • 업데이트: 2026-04-10 00:08 (KST)
  • AgentLoopService에서 과거 plan mode 잔재로 남아 있던 prelude/승인용 실행 계획 블록을 제거했습니다. 기본 Cowork/Code 루프는 이제 별도 “계획만 먼저 생성” 단계 없이 바로 메인 모델+도구 반복으로 들어갑니다. 사용자가 명시적으로 계획을 원할 때만 응답 텍스트 수준에서 계획을 제시하고, 루프 자체는 claude-code처럼 실행 중심으로 유지합니다.
  • AgentLoopTransitions.VerificationFinalReportGate는 review 작업 또는 고영향 변경일 때만 구조화된 재정리를 요구합니다. 일반 수정은 변경 내용과 검증 근거만 충분하면 “remaining risk / next action”을 추가로 다시 쓰게 하지 않습니다.
  • BuildFinalReportQualityPrompt도 같은 기준으로 완화했습니다. 남은 리스크/추가 확인은 실제로 미해결 사항이 남아 있을 때만 적도록 바꾸고, 후속 권유는 기본이 아니라 조건부 정보로 낮췄습니다.
  • ChatWindow.SystemPromptBuilder의 Cowork/Code 프롬프트도 조정했습니다. Cowork는 새 문서 생성 시 document_plan을 기본 선행 단계처럼 밀지 않고 “필요할 때만” 사용하게 했고, Code의 REPORT 단계는 “변경 내용과 검증 요약”을 기본으로 하며 미해결 리스크만 선택적으로 언급하게 바꿨습니다.
  • 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 경고 0 / 오류 0

claude-code식 후속 호환/선택성 보강

  • 업데이트: 2026-04-09 23:02 (KST)

  • LlmService.ToolUse의 메시지 파서를 더 느슨하게 확장했습니다. TryExtractMessageToolBlocks는 이제 content/reasoning_content가 문자열뿐 아니라 배열일 때도 text, output_text, nested content를 모아 텍스트를 만들고, 배열 안의 tool_use/tool_call 블록은 직접 ContentBlock으로 복구합니다.

  • IBM 스트리밍 응답의 results[0]도 같은 기준으로 읽습니다. generated_text, output_text가 배열/블록이어도 텍스트를 추출하고, message 오브젝트가 있을 때는 그 안의 텍스트/도구 호출까지 함께 처리해 Qwen류 응답 포맷 차이에 덜 민감하게 만들었습니다.

  • ToolRegistry에는 노출 순서 정렬을 추가했습니다. 기본 파일/검색/생성/실행 도구를 가장 앞에 두고, document_review·format_convert·tool_search·code_search는 보조 단계, mcp_*·spawn_agent·wait_agents, task_* 계열은 더 뒤에 배치해 claude-code처럼 기본 작업 도구가 먼저 선택되도록 조정했습니다.

  • 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 경고 0 / 오류 0

  • 업데이트: 2026-04-09 22:48 (KST)

  • IBM 배포형 vLLM/Qwen 호환을 위해 LlmService.ToolUseBuildIbmToolBody를 다시 정리했습니다. 이전 assistant tool_callsrole=tool 이력을 OpenAI 형식으로 재전송하던 경로를 제거하고, _tool_use_blocks<tool_call>...</tool_call> transcript로, tool_result는 plain user transcript로 평탄화합니다. 기존의 텍스트 기반 TryExtractToolCallsFromText 폴백과 함께 IBM 쪽의 엄격한 tool history 검사에 대응하는 방향입니다.

  • ChatWindow.SystemPromptBuilder는 Cowork/Code 모두 “도구 호출 필수” 톤을 더 낮췄습니다. Cowork는 document_reviewformat_convert를 기본 후속 단계처럼 밀지 않고, file_read/document_read 중심의 가벼운 검증을 기본으로 삼습니다. Code/Cowork 공통 Sub-Agent Delegationspawn_agent를 병렬성이 실제로 도움이 될 때만 선택하도록 바꿨습니다.

  • AgentLoopService의 unknown/disallowed tool recovery는 tool_search를 항상 먼저 강제하지 않고, alias 자동 매핑 후보나 활성 도구 예시만으로 바로 선택 가능하면 그 도구를 바로 쓰도록 완화했습니다. tool_search는 정말 모호할 때만 쓰는 보조 수단으로 내렸습니다.

  • AgentLoopTransitions.Execution의 문서 검증 근거도 단순화했습니다. 문서 생성 후 기본 완료 근거는 file_read/document_read면 충분하고, document_review는 선택적 품질 점검 도구로만 남깁니다.

  • AgentLoopExplorationPolicy는 Code 쿼리에 정의/참조/구현/호출관계/심볼 의도가 보이면 lsp_code_intel -> targeted file_read -> edit/verify 순서를 더 앞세웁니다. LspTool 결과도 파일 수, 대표 위치, 첫 결과를 같이 요약해 claude-code의 LSP 결과 shaping에 더 가깝게 맞췄습니다.

  • 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 경고 0 / 오류 0

claude-code식 선택 탐색 우선순위 정렬

  • 업데이트: 2026-04-09 22:38 (KST)

  • AX에 이미 존재하던 LspTool/LspClientServiceclaude-codeLSPTool 수준에 더 가깝게 확장했습니다. 기존 goto_definition, find_references, symbols 외에 hover, goto_implementation, workspace_symbols, prepare_call_hierarchy, incoming_calls, outgoing_calls를 추가해 정의/참조/문서 심볼/워크스페이스 심볼/호출 계층을 모두 조회할 수 있게 했습니다.

  • LspClientService는 LSP initialize capability도 확장했습니다. 이제 implementation, hover, callHierarchy, workspace/symbol 요청을 직접 보낼 수 있고, LocationLink, hover contents, call hierarchy 결과를 AX용 단순 모델로 파싱합니다.

  • AgentLoopExplorationPolicy, TaskTypePolicy, ChatWindow.SystemPromptBuilder도 같이 조정해 Code 탭의 좁은 요청에서 file_read, grep/glob와 함께 lsp_code_intel이 자연스러운 선택지로 노출되도록 맞췄습니다. claude-code처럼 기본은 텍스트 탐색이되, 정의/참조/호출관계는 LSP를 더 우선적으로 쓰는 흐름입니다.

  • 업데이트: 2026-04-09 21:58 (KST)

  • ModelExecutionProfileCatalog의 기본 프로필을 다시 완화했습니다. balanced, reasoning_first는 이제 초기 도구 호출 강제와 post-tool verification을 기본으로 켜지 않고, 문서 검증 게이트와 diff/final-report 후속 게이트도 기본적으로 줄여 claude-code처럼 더 얇은 반복 구조를 따릅니다.

  • Cowork 문서 생성 완료 경로는 AgentLoopTransitions.Documents에서 한 번 더 정리했습니다. Code 탭이 아닌 경우 terminal document tool 성공 뒤 별도 post-tool verification 턴을 추가하지 않고 바로 완료 가능하도록 바꿔, 문서 생성 후 불필요한 재호출을 줄였습니다.

  • Code 완료 게이트도 AgentLoopTransitions.Verification에서 완화했습니다. 일반 수정은 diff 또는 최근 build/test 같은 가벼운 완료 증거만 있어도 마무리 가능하게 하고, build/test 강제는 고영향 수정일 때 중심으로 남겨 claude-code의 얇은 code loop에 더 가깝게 맞췄습니다.

  • ChatWindow.SystemPromptBuilder의 Cowork/Code 프롬프트도 같은 방향으로 손봤습니다. “모든 응답은 도구 호출 필수” 식의 과한 강제 표현을 줄이고, 필요한 경우에만 즉시 도구를 쓰되 불필요한 도구 호출은 강제하지 않도록 완화했습니다.

  • 업데이트: 2026-04-09 21:48 (KST)

  • Cowork 시스템 프롬프트에서 “불확실하면 먼저 파일을 찾아라” 성향을 더 줄였습니다. 이제 순수 문서 생성 요청은 document_plan -> docx_create/html_create/...를 먼저 타고, glob/grep/document_read/folder_map은 기존 자료 참조가 명시된 경우에만 먼저 쓰도록 유도합니다.

  • Code 시스템 프롬프트와 탐색 우선순위도 claude-code처럼 더 얇게 바꿨습니다. 기본 시작 흐름은 specific file -> file_read, 아니면 grep/glob -> small targeted read, 그 다음 file_edit/file_write이며, build_run/test_loopgit_tool(diff)는 검증이 실제로 필요할 때 붙는 구조로 정리했습니다.

  • TaskTypePolicy의 bugfix/feature/refactor/review 기본 도구 순서도 같은 기준으로 완화해, AX Code가 과하게 git diff/build/test를 절차적으로 앞세우지 않도록 맞췄습니다.

  • 업데이트: 2026-04-09 21:03 (KST)

  • StreamingToolExecutionCoordinatorRetryReset 이벤트를 추가해, 컨텍스트 복구나 일시적 LLM 오류 재시도 전에 부분 스트림 미리보기 상태를 끊도록 했습니다. claude-code가 fallback 시 orphaned partial state를 정리하고 executor를 새로 잡는 흐름과 비슷한 방향으로 AX도 재시도 경계를 더 명확히 가지게 됐습니다.

  • 엔진 레벨 PrefetchableReadOnlyToolsfile_read/document_read 중심으로 다시 줄였습니다. folder_map, glob, grep, multi_read, code_search 같은 구조 탐색/광범위 검색 도구는 prefetch 대상에서 빼서, 탐색 정책과 실행 엔진의 우선순위가 서로 어긋나지 않도록 맞췄습니다.

  • AxAgentExecutionEngine의 Cowork/Code 빈 응답 처리도 보수적으로 조정했습니다. 이제 최종 텍스트가 비어 있을 때는 실행 이벤트에 실제 파일 경로나 유의미한 완료 요약이 있을 때만 합성 메시지를 만들고, 근거가 없으면 로그 확인을 안내하는 쪽으로 바꿨습니다.

  • 업데이트: 2026-04-09 20:46 (KST)

  • Code 핵심 루프에서 claude-code와 가장 크게 달랐던 “수정 직후 과한 검증 개입”을 줄였습니다. TryApplyPostToolVerificationTransitionAsync는 이제 Code 탭에서 고영향 수정일 때만 별도 검증 LLM 턴을 실행하고, 일반 수정은 메인 루프의 diff/build/test 근거 흐름에 맡기도록 바꿨습니다.

  • ApplyCodeQualityFollowUpTransition도 모든 코드 수정 뒤에 추가 검증 프롬프트를 넣지 않고, 고영향 수정만 즉시 후속 검증을 유도하도록 완화했습니다. 이로써 file_edit -> file_read -> grep -> file_read 식의 과도한 재접근이 줄어들도록 정리했습니다.

  • TryApplyCodeCompletionGateTransition은 diff/build/test 근거가 이미 있는 일반 수정에 대해 CodeQualityGate를 중복 발동하지 않도록 조정했고, FinalReportGate는 코드 검증 공백이 남아 있을 때는 먼저 열리지 않게 순서를 정리했습니다.

  • 업데이트: 2026-04-09 20:29 (KST)

  • AgentLoopExplorationPolicy에 현재 반복 기준의 도구 필터링을 추가해, Localized/TopicBased 요청에서는 glob, grep, file_read, document_read, multi_read를 먼저 노출하고 folder_map은 기본적으로 뒤로 미루거나 제외하도록 조정했습니다.

  • folder_map은 사용자가 폴더 구조/파일 목록/기존 자료 참조를 명시했거나, 선택 탐색이 몇 차례 실패한 뒤에만 다시 허용합니다. Cowork의 문서형 요청과 Code의 코드 수정 요청이 모두 같은 기준을 따르도록 맞췄습니다.

  • TaskTypePolicyfeature, bugfix, refactor, review, docs, general 가이드를 다시 정리해 AX가 claude-code처럼 glob/grep -> targeted read를 먼저 타게 만들었습니다. 기존처럼 feature/docs에서 folder_map을 선행 단계처럼 유도하던 문구를 제거했습니다.

  • AgentLoopService의 no-tool 재시도 프롬프트와 탐색 교정 메시지, 실패 복구 우선순위도 glob/grep -> targeted read -> folder_map(필요 시만) 순서로 재정렬했습니다. 이로써 folder_map 성공 직후 멈춘 것처럼 보이던 일부 흐름과, 계획만 세우고 첫 도구 선택을 망설이던 Code 루프를 함께 보정했습니다.

  • ChatWindow.SystemPromptBuilder의 Cowork/Code 시스템 프롬프트는 모든 응답에 도구 호출 강제, 첫 항목은 반드시 도구, 애매하면 folder_map부터 같은 문구를 제거하고, 실제 claude-code처럼 좁은 범위 탐색과 마지막 턴의 텍스트 응답을 허용하는 방향으로 완화했습니다.

  • code_개발, code_리뷰, code_리팩터링, cowork_문서작성, cowork_보고서 프리셋도 같은 기준으로 갱신해 프롬프트 층과 런타임 정책 층이 서로 충돌하지 않도록 정렬했습니다.

  • ChatWindow.FileMentionSuggestions를 추가해 Cowork/Code 입력창에서 파일명 후보 칩을 즉시 제안합니다. 사용자가 파일명 일부, 경로 조각, 확장자를 입력하면 작업 폴더 인덱스를 바탕으로 관련 파일을 추천하고 클릭 또는 Tab으로 삽입할 수 있습니다.

  • AgentLoopExplorationRecovery를 추가해 folder_map의 빈 결과를 자동 복구합니다. 0 files, 0 dirs 응답 뒤에 실제 파일 후보가 보이면 folder_map_empty_recovery 전이를 기록하고, LLM에는 glob -> file_read/document_read로 전환하라는 시스템 메시지를 추가합니다.

  • 마지막 도구 결과 이후 다음 LLM 호출까지의 대기 시간도 llm_wait_after_tool_result 전이로 기록하도록 해, 멈춤 체감이 LLM 대기인지 루프 정체인지 워크플로우 로그만으로 더 빨리 판별할 수 있게 했습니다.

  • DocumentPlannerTool, SkillService 예시 가이드도 같은 선택 탐색 순서로 갱신해 내부 문서 계획 지시와 스킬 샘플이 런타임 정책과 어긋나지 않도록 맞췄습니다.

  • AgentLoopPathStagnation을 추가해 Code 탭의 동일 경로 재접근 루프를 차단합니다. 기존 가드는 “같은 도구+같은 파라미터” 반복만 강하게 막았지만, 실제 루프는 file_read -> grep -> file_read처럼 도구를 바꿔 같은 파일을 계속 두드리는 패턴을 허용했습니다. 이제 동일 경로 읽기 접근이 4회 이상 이어지면 읽기를 중단시키고 grep/glob으로 호출부 탐색 -> git_tool(diff) -> build_run/test_loop 순서로 전환하라는 복구 메시지를 주입합니다.

claude-code식 transcript 표시 구조 정리

  • 업데이트: 2026-04-09 13:05 (KST)
  • AgentTranscriptDisplayCatalog를 row presentation 중심으로 재구성해 thinking / waiting / compact / tool activity / permission / tool result / status를 개별 transcript row 의미로 다룰 수 있게 정리했습니다.
  • ChatWindow.AgentEventRendering은 process feed 계열 이벤트를 같은 GroupKey 단위로 병합해, 긴 Cowork/Code 실행 중 append 수를 줄이면서도 주요 활동 흐름이 기본 transcript에 남도록 조정했습니다.
  • PermissionRequestPresentationCatalog, ToolResultPresentationCatalog를 다시 정리해 권한 요청과 도구 결과를 행위/상태 기준으로 구분하고, transcript 렌더와 popup이 같은 메타를 공유하도록 맞췄습니다.
  • ChatWindow.FooterPresentation은 execution event가 생긴 뒤에는 프리셋 안내 카드를 자동으로 숨기도록 바꿔 결과/진행 화면을 덮지 않게 했고, Cowork/Code 입력 워터마크와 footer 기본 문구도 정상 한국어 기준으로 다시 정리했습니다.
  • render_messages 성능 로그에는 processFeedAppends, processFeedMerges, rowKindCounts를 함께 남겨 %APPDATA%\AxCopilot\perf 기준으로 transcript grouping 효과를 수치로 비교할 수 있게 했습니다.

1. ?꾨줈?앺듃 媛쒖슂

AX Copilot?€ Windows???앹궛???곗쿂 + AI ?먯씠?꾪듃 ?곗뒪?ы넲 ?깆엯?덈떎.

  • ?곗쿂: Alfred/Raycast ?ㅽ??쇱쓽 ?쇱? 寃€?? 紐낅졊 ?ㅽ뻾, ?꾩젽
  • ?먯씠?꾪듃: LLM 湲곕컲 ?€?뷀삎 肄붾뱶/臾몄꽌 ?묒뾽 ?먮룞??(?꾧뎄 ?몄텧 猷⑦봽)
  • **??諛?*: ?쒖뒪??由ъ냼?? ?대┰蹂대뱶, ?ㅽ겕由곗꺑 ??鍮좊Ⅸ ?묎렐

2. 湲곗닠 ?ㅽ깮

??ぉ 媛?
?꾨젅?꾩썙?? .NET 8 (net8.0-windows10.0.17763.0)
UI WPF + Windows Forms (?섏씠釉뚮━??
?몄뼱 C# 12
?⑦꽩 MVVM, ?대깽??湲곕컲, ?깃????쒕퉬??
?뚯뒪?? xUnit 2.9 + FluentAssertions 6.12
鍮뚮뱶 dotnet CLI, PublishSingleFile

二쇱슂 NuGet ?⑦궎吏€

?⑦궎吏€ ?⑸룄
DocumentFormat.OpenXml 3.2.0 DOCX/XLSX/PPTX ?앹꽦
Markdig 0.37.0 Markdown ??HTML ?뚮뜑留?
Microsoft.Data.Sqlite 8.0 SQLite (?€???€?μ냼)
Microsoft.Web.WebView2 HTML 誘몃━蹂닿린, 媛€?대뱶 酉곗뼱
QRCoder 1.6.0 QR 肄붾뱶 ?앹꽦
System.Security.Cryptography.ProtectedData DPAPI ?뷀샇??
UglyToad.PdfPig PDF ?쎄린

3. ?붾(??援ъ“

src/
?쒋??€ AxCopilot/              # 硫붿씤 WPF ??(v0.7.3)
??  ?쒋??€ Assets/             # ?꾩씠肄? ?꾨━??JSON, ?뷀샇?붾맂 媛€?대뱶, 留덉뒪肄뷀듃
??  ?쒋??€ Core/               # FuzzyEngine, CommandResolver, InputListener, PluginHost
??  ?쒋??€ Handlers/           # 136媛?鍮뚰듃??紐낅졊 ?몃뱾????  ?쒋??€ Models/             # AppSettings, ChatModels, McpSettings
??  ?쒋??€ Security/           # AntiTamper (?붾쾭嫄??붿뺨?뚯씪???먯?)
??  ?쒋??€ Services/           # 60媛??쒕퉬????  ??  ?붴??€ Agent/          # ?먯씠?꾪듃 猷⑦봽 + 114媛??꾧뎄
??  ?쒋??€ Themes/             # 9媛??뚮쭏 (Dark, Light, OLED, Nord, Monokai ??
??  ?쒋??€ ViewModels/         # LauncherViewModel, SettingsViewModel, StatisticsViewModel
??  ?붴??€ Views/              # 30媛?XAML ?덈룄???쒋??€ AxCopilot.SDK/          # ?뚮윭洹몄씤 SDK (IActionHandler ?명꽣?섏씠??
?쒋??€ AxCopilot.Installer/    # Windows Forms ?ㅼ튂 ?꾨줈洹몃옩 (.NET Framework 4.8)
?쒋??€ AxCopilot.Tests/        # xUnit ?⑥쐞/?듯빀 ?뚯뒪???붴??€ AxKeyEncryptor/         # API ??DPAPI ?뷀샇???좏떥由ы떚

4. ???쒖옉 ?먮쫫 (App.xaml.cs)

OnStartup()
  ?쒋? AntiTamper ?붾쾭嫄?媛먯? (Release 鍮뚮뱶)
  ?쒋? ?⑥씪 ?몄뒪?댁뒪 裕ㅽ뀓???뺤씤
  ?쒋? SettingsService 珥덇린??+ ?ㅼ젙 濡쒕뱶
  ?쒋? ChatStorageService 蹂닿? ?뺤콉 ?ㅽ뻾 (留뚮즺 ?€???뺣━)
  ?쒋? L10n ?몄뼱 珥덇린??  ?쒋? ?쒕퉬??珥덇린??  ??  ?쒋? AgentMemoryService
  ??  ?쒋? ChatSessionStateService
  ??  ?쒋? AppStateService
  ??  ?쒋? IndexService (諛깃렇?쇱슫???뚯씪 ?몃뜳??
  ??  ?쒋? FuzzyEngine + CommandResolver
  ??  ?쒋? ContextManager
  ??  ?쒋? SessionTrackingService
  ??  ?쒋? WorktimeReminderService
  ??  ?붴? ClipboardHistoryService
  ?쒋? 鍮뚰듃???몃뱾???깅줉 (136媛?
  ?쒋? SchedulerService + PluginHost 珥덇린??  ?쒋? InputListener ?쒖옉 (湲€濡쒕쾶 ?ロ궎)
  ?붴? ?곗쿂/?ㅼ젙/?몃젅???덈룄???앹꽦

5. ?듭떖 ?꾪궎?띿쿂

5.1 ?곗쿂 (Launcher)

**寃€???뚯씠?꾨씪??*: ?ъ슜???낅젰 ??CommandResolver (?묐몢??留ㅼ묶) ??FuzzyEngine (?쇱? 寃€?? ??寃곌낵 ?뺣젹 ??UI ?뚮뜑留?

  • FuzzyEngine: ?뚯씪 ?몃뜳??湲곕컲 ?쇱? 留ㅼ묶, ?먯닔 ?쒖쐞
  • CommandResolver: ?몃뱾???쇱슦??(?묐몢??@, !, #, ~, >, $ ??
  • IndexService: 諛깃렇?쇱슫???뚯씪 ?몃뜳??(.git, node_modules ???쒖쇅)

?꾩젽: ?깅뒫 紐⑤땲?? ?щえ?꾨줈, 硫붾え, ?좎뵪, 罹섎┛?? 諛고꽣由?

5.2 ?먯씠?꾪듃 (Agent Loop)

?ъ슜??硫붿떆吏€
  ??LlmService.StreamAsync() (LLM API ?몄텧)
  ???묐떟 ?ㅽ듃由щ컢 ?섏떊
  ???꾧뎄 ?몄텧 媛먯? ??
      ??ToolRegistry?먯꽌 ?꾧뎄 議고쉶
      ??沅뚰븳 ?뺤씤 (AskPermissionCallback)
      ???꾧뎄 ?ㅽ뻾
      ??寃곌낵瑜?而⑦뀓?ㅽ듃??異붽?
      ??LLM ?ы샇異?(諛섎났)
  ??理쒖쥌 ?띿뒪???묐떟 諛섑솚

**?듭떖 ?대옒??*:

  • AgentLoopService ??猷⑦봽 ?붿쭊 (諛섎났, ?쇱떆?뺤?/?ш컻, ?대깽??諛쒗뻾)
  • AxAgentExecutionEngine ???꾧뎄 ?ㅽ뻾 議곗쑉
  • AgentLoopParallelExecution ??蹂묐젹 ?꾧뎄 ?ㅽ뻾
  • AgentLoopTransitions / .Execution ???곹깭 ?꾩씠 濡쒖쭅
  • ToolRegistry ???꾧뎄 ?깅줉/議고쉶
  • ContextCondenser ??而⑦뀓?ㅽ듃 ?뺤텞 (?좏겙 愿€由?

?꾧뎄 移댄뀒怨좊━ (114媛?:

移댄뀒怨좊━ ?덉떆
?뚯씪 I/O FileReadTool, FileEditTool, FileManageTool, FileWriteTool
寃€?? GlobTool, GrepTool, CodeSearchTool, FileSearchTool
臾몄꽌 DocumentReaderTool, ExcelSkill, DocxSkill, PptxSkill, CsvSkill, HtmlSkill
肄붾뱶 BuildRunTool, SnippetRunnerTool, CodeReviewTool, TestLoopTool, LspTool
?곗씠?? JsonTool, XmlTool, SqlTool, DataPivotTool, RegexTool
?쒖뒪?? ProcessTool, EnvTool, ZipTool, ClipboardTool
怨꾪쉷/異붿쟻 TodoWriteTool, TaskTrackerTool, CheckpointTool, PlaybookTool
?ъ슜?? UserAskTool, SuggestActionsTool, NotifyTool
MCP McpTool, McpListResourcesTool, McpReadResourceTool

5.3 LLM ?쒕퉬??

**吏€??怨듦툒??*:

?쒕퉬?? ?ㅻ챸
claude / sigmoid Anthropic Claude (Sigmoid API 寃쎌쑀)
gemini Google Gemini API
vllm OpenAI ?명솚 vLLM (IBM CP4D 吏€???ы븿)
ollama 濡쒖뺄 Ollama 紐⑤뜽

**紐⑤뜽 ?쇱슦??: ModelRouterService瑜??듯븳 ?ㅻ쾭?쇱씠???ㅽ깮 ???€??以?紐⑤뜽/?쒕퉬?ㅻ? ?숈쟻?쇰줈 ?꾪솚 媛€?? **?좏겙 愿€由?: TokenEstimator濡?而⑦뀓?ㅽ듃 湲몄씠 異붿젙, ?ㅻ쾭?뚮줈????ContextCondenser媛€ ?먮룞 ?뺤텞

5.4 ?€???€?μ냼

  • ChatStorageService: SQLite 湲곕컲 ?€???곸냽??- ChatSessionStateService: 硫붾え由????몄뀡 ?곹깭 愿€由?- ChatConversation: 硫붿떆吏€ 紐⑸줉 + ?ㅽ뻾 ?대깽???€?꾨씪??

6. UI 怨꾩링

二쇱슂 ?덈룄??

?덈룄?? ??븷
LauncherWindow 硫붿씤 ?곗쿂 (寃€?? ?꾩젽, 寃곌낵 紐⑸줉)
ChatWindow AI ?먯씠?꾪듃 ?€??(梨꾪똿/Cowork/肄붾뱶 ??
DockBarWindow ??諛?(?쒖뒪??由ъ냼?? 鍮좊Ⅸ ?묎렐)
SettingsWindow ?ㅼ젙 愿€由?
AgentSettingsWindow ?먯씠?꾪듃 ?꾩슜 ?ㅼ젙
AgentStatsDashboardWindow ?먯씠?꾪듃 ?듦퀎 ?€?쒕낫??
SkillEditorWindow ?ㅽ궗 ?몄쭛湲?
SkillGalleryWindow ?ㅽ궗 媛ㅻ윭由?
TrayMenuWindow ?쒖뒪???몃젅??硫붾돱
PreviewWindow 臾몄꽌 誘몃━蹂닿린 (WebView2)

ChatWindow 遺꾪븷 援ъ“

ChatWindow.xaml.cs??partial class濡?湲곕뒫蹂?遺꾪븷:

?뚯씪 ??븷
ChatWindow.xaml.cs 硫붿씤 ?ㅼ??ㅽ듃?덉씠?? ?ㅽ듃由щ컢, ?낅젰 泥섎━
ChatWindow.AgentEventProcessor.cs ?먯씠?꾪듃 ?대깽???섏떊/?쇱슦??
ChatWindow.AgentEventRendering.cs ?먯씠?꾪듃 ?대깽??諛곕꼫/移대뱶 ?뚮뜑留?
ChatWindow.ComposerQueuePresentation.cs ?묒꽦湲???UI
ChatWindow.ContextUsagePresentation.cs 而⑦뀓?ㅽ듃 ?ъ슜??留??앹뾽
ChatWindow.ConversationFilterPresentation.cs ?€???꾪꽣留?
ChatWindow.ConversationListPresentation.cs ?ъ씠?쒕컮 ?€??紐⑸줉
ChatWindow.ConversationManagementPresentation.cs ?€???앹꽦/??젣/愿€由?
ChatWindow.FileBrowserPresentation.cs ?뚯씪 釉뚮씪?곗? UI
ChatWindow.FooterPresentation.cs ?섎떒 諛?(?대뜑, 沅뚰븳)
ChatWindow.GitBranchPresentation.cs Git 釉뚮옖移??쒖떆/?꾪솚
ChatWindow.LiveProgressPresentation.cs ?ㅼ떆媛?吏꾪뻾 ?곹깭
ChatWindow.MessageBubblePresentation.cs 硫붿떆吏€ 踰꾨툝 ?뚮뜑留?
ChatWindow.MessageInteractions.cs 硫붿떆吏€ 蹂듭궗/?몄쭛/?ъ쟾??
ChatWindow.PermissionPresentation.cs 沅뚰븳 ?앹뾽/諛곕꼫 UI
ChatWindow.PlanApprovalPresentation.cs 怨꾪쉷 ?뱀씤 移대뱶
ChatWindow.PopupPresentation.cs 怨듯넻 ?앹뾽 援ъ꽦
ChatWindow.PreviewPresentation.cs ?뚯씪 誘몃━蹂닿린 ??
ChatWindow.SelectionPopupPresentation.cs ?뚰겕?몃━ ?좏깮 ?앹뾽
ChatWindow.SidebarInteractionPresentation.cs ?ъ씠?쒕컮 ?곹샇?묒슜
ChatWindow.StatusPresentation.cs ?곹깭 諛곗?/?ㅽ듃由?
ChatWindow.SurfaceVisualPresentation.cs ?쒓컖 ?④낵 (湲€濡쒖슦, ?꾩뒪 ??
ChatWindow.TaskSummary.cs ?묒뾽 ?붿빟 移대뱶
ChatWindow.TimelinePresentation.cs ?€?꾨씪???뺣젹, 罹먯떆, ?대깽???꾪꽣留?
ChatWindow.TopicPresetPresentation.cs 二쇱젣 ?꾨━??UI
ChatWindow.TranscriptHost.cs ?몃옖?ㅽ겕由쏀듃 ?몄뒪??而⑦뀒?대꼫
ChatWindow.TranscriptPolicy.cs ?몃옖?ㅽ겕由쏀듃 ?쒖떆 ?뺤콉
ChatWindow.TranscriptRenderExecution.cs ?몃옖?ㅽ겕由쏀듃 ?뚮뜑 ?ㅽ뻾
ChatWindow.TranscriptRenderPlanner.cs ?몃옖?ㅽ겕由쏀듃 ?뚮뜑 怨꾪쉷
ChatWindow.TranscriptRendering.cs ?몃옖?ㅽ겕由쏀듃 ?뚮뜑留?
ChatWindow.TranscriptVirtualization.cs ?몃옖?ㅽ겕由쏀듃 媛€?곹솕 (?€洹쒕え ?€??
ChatWindow.UserAskPresentation.cs ?ъ슜??吏덈Ц ?몃씪??移대뱶
ChatWindow.VisualInteractionHelpers.cs ?쒓컖 ?곹샇?묒슜 ?ы띁

?뚮쭏 ?쒖뒪??

9媛??뚮쭏 XAML 由ъ냼???뺤뀛?덈━: Dark, Light, OLED, Nord, Monokai, Catppuccin, Sepia, Alfred, AlfredLight

?고????뚮쭏 ?꾪솚: SettingsService.Settings.Launcher.Theme 蹂€寃???由ъ냼???뺤뀛?덈━ 援먯껜


7. ?ㅼ젙 援ъ“ (AppSettings)

理쒖긽???ㅼ젙

?띿꽦 湲곕낯媛? ?ㅻ챸
AiEnabled true AI 湲곕뒫 ?쒖꽦??
OperationMode "internal" ?댁쁺 紐⑤뱶 (internal/external)
Hotkey "Alt+Space" ?곗쿂 ?⑥텞??
CleanupPeriodDays 30 ?€??蹂닿? 湲곌컙 (??
InternalModeEnabled true ?щ궡 紐⑤뱶 ?щ?

LauncherSettings (以묒꺽)

洹몃9 二쇱슂 ?띿꽦
?쒖떆 Theme, Opacity, Position, Width, MaxResults
湲€濡쒖슦 EnableRainbowGlow, EnableSelectionGlow, ShowLauncherBorder
?꾩젽 ShowWidgetPerf, ShowWidgetPomo, ShowWidgetNote, ShowWidgetWeather, ShowWidgetCalendar, ShowWidgetBattery
??諛? DockBarItems, DockBarAutoShow, DockBarOpacity, DockBarRainbowGlow
湲곕뒫 EnableFavorites, EnableRecent, EnableActionMode, EnableClipboardAutoCategory

LlmSettings (以묒꺽)

?먯씠?꾪듃??LLM ?곌껐 ?ㅼ젙: ?쒕퉬???좏깮, 紐⑤뜽, API ??(DPAPI ?뷀샇??, ?붾뱶?ъ씤?? ?⑤룄, 理쒕? ?좏겙 ??

?띿꽦 湲곕낯媛? ?ㅻ챸
UseAutomaticProfileTemperature true ?깅줉 紐⑤뜽 ?꾨줈?뚯씪???먮룞 temperature ?뺤콉
EnableDetailedLog false ?뚰겕?뚮줈???곸꽭 濡쒓렇 (LLM ?붿껌/?묐떟, ?꾧뎄 ?대젰)
DetailedLogRetentionDays 3 ?곸꽭 濡쒓렇 蹂닿? 湲곌컙 (??
EnableRawLlmLog false LLM ?붿껌/?묐떟 ?먮Ц 湲곕줉 (?붾쾭源낆슜)

RegisteredModel ?ㅽ뻾 ?꾨줈?뚯씪

紐⑤뜽蹂?ExecutionProfile濡??꾧뎄 ?몄텧 媛뺣룄, ?ъ떆?? 硫붾え由??뺤텞 二쇱엯?됱쓣 議곗젅:

?꾨줈?뚯씪 ?ㅻ챸
balanced 湲곕낯 洹좏삎 紐⑤뱶
tool_call_strict ?꾧뎄 ?몄텧 媛뺤젣/?꾧꺽 紐⑤뱶
reasoning_first 異붾줎 ?곗꽑 紐⑤뱶
fast_readonly 鍮좊Ⅸ ?쎄린 ?꾩슜 紐⑤뱶
document_heavy 臾몄꽌 泥섎━ 吏묒쨷 紐⑤뱶

8. ?뚮윭洹몄씤 ?쒖뒪??

SDK (AxCopilot.SDK)

public interface IActionHandler
{
    string? Prefix { get; }        // ?묐몢??(null?대㈃ ?쇱? 寃€?됰쭔)
    PluginMetadata Metadata { get; }
    Task<IEnumerable<LauncherItem>
## claude-code식 transcript 표시 구조 정리

- 업데이트: 2026-04-09 13:05 (KST)
- AgentTranscriptDisplayCatalog를 row presentation 중심으로 재구성해 	hinking / waiting / compact / tool activity / permission / tool result / status를 개별 transcript row 의미로 다룰  있게 정리했습니다.
- ChatWindow.AgentEventRendering은 process feed 계열 이벤트를 같은 GroupKey 단위로 병합해,  Cowork/Code 실행  append 수를 줄이면서도 주요 활동 흐름이 기본 transcript에 남도록 조정했습니다.
- PermissionRequestPresentationCatalog, ToolResultPresentationCatalog를 다시 정리해 권한 요청과 도구 결과를 행위/상태 기준으로 구분하고, transcript 렌더와 popup이 같은 메타를 공유하도록 맞췄습니다.
- ChatWindow.FooterPresentation은 execution event가 생긴 뒤에는 프리셋 안내 카드를 자동으로 숨기도록 바꿔 결과/진행 화면을 덮지 않게 했고, Cowork/Code 입력 워터마크와 footer 기본 문구도 정상 한국어 기준으로 다시 정리했습니다.
- 
ender_messages 성능 로그에는 processFeedAppends, processFeedMerges, 
owKindCounts를 함께 남겨 %APPDATA%\\AxCopilot\\perf 기준으로 transcript grouping 효과를 수치로 비교할  있게 했습니다.

## 9. 鍮뚮뱶 ??ㅽ뻾

### 媛쒕컻 鍮뚮뱶

```bash
dotnet build src/AxCopilot/AxCopilot.csproj

由대━??鍮뚮뱶 (?⑥씪 ?뚯씪)

dotnet publish src/AxCopilot/AxCopilot.csproj -c Release -r win-x64 --self-contained

由대━??鍮뚮뱶 ?듭뀡:

  • PublishSingleFile: ?⑥씪 ?ㅽ뻾 ?뚯씪
  • EnableCompressionInSingleFile: ?뺤텞 ?곸슜
  • PublishReadyToRun: AOT ?꾨━而댄뙆??- DebugType=none: ?붾쾭洹??щ낵 ?쒓굅
  • TrimMode=partial: IL ?몃━諛?

?뚯뒪??

dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj

10. 踰꾩쟾 愿€由?

  • AxCopilot.csproj??<Version> ?쒓렇 ?섎굹留?蹂€寃쏀븯硫????꾩껜??諛섏쁺
  • ?ㅼ젙 ?ㅽ궎留?踰꾩쟾?€ SettingsService.cs ??CurrentSettingsVersion?먯꽌 蹂꾨룄 愿€由?- 留덉씠洹몃젅?댁뀡: SettingsService媛€ ?댁쟾 踰꾩쟾 ?ㅼ젙 ?뚯씪???먮룞 ?낃렇?덉씠??

11. 蹂댁븞

??ぉ 援ы쁽
API ???€?? DPAPI ?뷀샇??(System.Security.Cryptography.ProtectedData)
??愿€由??꾧뎄 AxKeyEncryptor (蹂꾨룄 ?좏떥由ы떚)
?덊떚 ?ы띁 ?붾쾭嫄??붿뺨?뚯씪??媛먯? (Release 鍮뚮뱶, Security/AntiTamper.cs)
Unsafe 肄붾뱶 AllowUnsafeBlocks=true (ScreenCaptureHandler ?ъ씤???곗궛??

12. ?깅뒫 理쒖쟻???댁뿭

?좏쑕 CPU 理쒖쟻??(2026-04-09)

?€?? 蹂€寃??? 蹂€寃???
PerformanceMonitorService ?대쭅 2珥? 5珥?
?꾩젽 ?€?대㉧ 1珥? 3珥?
?덉씤蹂댁슦 湲€濡쒖슦 ?€?대㉧ 150ms 300ms
ServerStatusService ?? 15珥? 60珥?

?ㅽ듃由щ컢 ?뚮뜑留?理쒖쟻??(2026-04-09)

  • TypingTimer: 50ms ??80ms, string.Concat ??char[] 踰꾪띁 ?ъ궗??- CursorTimer: ?꾩껜 臾몄옄???ъ깮????留덉?留?臾몄옄留?援먯껜
  • StringBuilder.ToString(): 30ms 理쒖냼 媛꾧꺽 ?곕줈?€留?- RenderMessages: ?ㅽ듃由щ컢 以?遺덊븘?뷀븳 ?꾩껜 ?щ젋?붾쭅 諛⑹? (議곌린 諛섑솚)
  • **?€?꾨씪???대깽??*: ?묓엺 紐⑤뱶?먯꽌 ?곗냽 ?숈씪 ToolCall 蹂묓빀

?고????덉젙???섏젙 (2026-04-09)

?뚯씪 ?섏젙 ?댁슜
CsvSkill.cs JSON 諛곗뿴 泥??붿냼 ValueKind 寃€利?異붽?
HtmlSkill.cs gradient Split(',') 寃곌낵 Length >= 2 媛€??異붽?
ChatWindow.xaml.cs ParseGenericAction 鍮?諛곗뿴 媛€?? ShowDropActionMenu null 媛€?? GetAgentLoop .FirstOrDefault() ?꾪솚
ChatWindow.GitBranchPresentation.cs async void ?몃뱾??try/catch 蹂댄샇
ChatWindow.xaml.cs (BtnGitBranch_Click) async void ?몃뱾??try/catch 蹂댄샇

UI ?ㅻ젅??遺€??理쒖쟻??2李?(2026-04-09)

?€?? 蹂€寃??? 蹂€寃??? ?④낵
?ㅽ겕濡??좊땲硫붿씠?? 留ㅻ쾲 ??16ms ?€?대㉧ ?앹꽦 ?ъ궗??32ms ?€?대㉧ 1媛? GC ?뺣젰 + ?€?대㉧ ?꾩쟻 ?댁냼
?ъ씠?쒕컮 ?좊땲硫붿씠?? 留ㅻ쾲 ??10ms ?€?대㉧ ?앹꽦 ?ъ궗??32ms ?€?대㉧ 1媛? ?숈씪
Git 釉뚮옖移?UI Dispatcher.Invoke (釉붾줈?? Dispatcher.InvokeAsync (?쇰툝濡쒗궧) UI ?ㅻ젅??李⑤떒 ?댁냼
?좏겙 ?ъ슜???? 留?250ms PathGeometry ?ъ깮?? 1% 誘몃쭔 蹂€?????뚮뜑留??앸왂 遺덊븘?뷀븳 ?덉씠?꾩썐 ?곗궛 ?쒓굅
?€??寃€???€?대㉧ 140ms 300ms 珥덈떦 7????3??
?먯씠?꾪듃 ?대깽???€?대㉧ 140ms (?ㅽ듃由щ컢: 300/420) 200ms (?ㅽ듃由щ컢: 350/500) ?대깽??泥섎━ 鍮덈룄 ?꾪솕
諛섏쓳???덉씠?꾩썐 ?€?대㉧ 120ms 250ms 由ъ궗?댁쫰 ?붾컮?댁뒪 媛뺥솕
?€??紐⑸줉 LINQ Where횞2 + Count횞3 = 由ъ뒪??5???쒗쉶 Where 1??蹂묓빀 + ?⑥씪 猷⑦봽 移댁슫?? ?좊떦/?쒗쉶 ?€??媛먯냼

援ъ“??硫붾え由??덉젙???섏젙 (2026-04-09)

臾몄젣 ?꾩튂 ?섏젙
Events 而щ젆??臾댄븳 ?깆옣 AgentLoopService.cs 500媛?珥덇낵 ???ㅻ옒???대깽???먮룞 ?쒓굅
?뚯씪 釉뚮씪?곗? ?€?대㉧ 醫€鍮? ChatWindow.FileBrowserPresentation.cs 留ㅻ쾲 ???€?대㉧ ?앹꽦 ???ъ궗???⑦꽩
?섎━癒쇳듃 罹먯떆 誘몄젙由? ChatWindow.TranscriptVirtualization.cs 蹂댁쑀 ?쒕룄 240??20, 1.5諛?珥덇낵 ???뺣━
WorkflowAnalyzer UI 釉붾줈?? WorkflowAnalyzerWindow.xaml.cs Dispatcher.Invoke ??InvokeAsync

援ъ“??由ы뙥?좊쭅 P1 (2026-04-09)

?€?? ?뚯씪 蹂€寃?
?명겕由щ찘???뚮뜑 hiddenCount ?덉젙?? ChatWindow.TranscriptRenderPlanner.cs ?ㅽ듃由щ컢 以?hiddenCount 媛먯냼 李⑤떒 ??prefix ??遺덉씪移섎줈 ?명븳 ?꾩껜 ?щ퉴???대갚 諛⑹?
鍮꾧????뚮뜑 李⑤떒 ChatWindow.TranscriptRendering.cs 理쒖냼???④? ?곹깭?먯꽌 RenderMessages 利됱떆 諛섑솚 ??遺덊븘?뷀븳 UI ?ш뎄異??쒓굅
ConversationList ?대깽???꾩엫 ChatWindow.ConversationListPresentation.cs ??ぉ??5媛??뚮떎 ?몃뱾????ConversationPanel???⑥씪 ?꾩엫 ?몃뱾??(Tag 湲곕컲 遺꾧린). ???꾪솚 ??250媛??몃뱾???꾩쟻 ?댁냼
TopicPreset ?대깽???꾩엫 ChatWindow.TopicPresetPresentation.cs 移대뱶??3媛??뚮떎 ?몃뱾????TopicButtonPanel???⑥씪 ?꾩엫 ?몃뱾?? ???꾪솚 ??45媛??몃뱾???꾩쟻 ?댁냼
怨듯넻 VisualTree ?ы띁 ChatWindow.VisualInteractionHelpers.cs FindAncestorWithTag<T>, FindAncestor<T> ?좏떥 異붽?

援ъ“??由ы뙥?좊쭅 P2 (2026-04-09)

?€?? ?뚯씪 蹂€寃?
_agentLiveContainer ?명겕由щ찘???덉슜 TranscriptRenderPlanner.cs, TranscriptRenderExecution.cs ?쇱씠釉?而⑦뀒?대꼫瑜?expectedChildCount???ы븿, ?명겕由щ찘?????꾩떆 遺꾨━/?ъ궫????hasExternalChildren 李⑤떒 ?댁냼
?ㅽ듃由щ컢 append-only ?뚮뜑 TranscriptRenderExecution.cs, TranscriptRendering.cs prefix 鍮꾧탳 ?고쉶?섎뒗 TryApplyStreamingAppendRender 異붽? ??stable ??遺€遺꾩쭛??愿€怨꾨쭔 ?뺤씤, ????ぉ留?異붽?
Permission ?대깽???꾩엫 ChatWindow.PermissionPresentation.cs ?됰떦 4媛??뚮떎 ??PermissionItems???⑥씪 ?꾩엫 ?몃뱾??+ PermissionItemTag
Preview ???대깽???꾩엫 ChatWindow.PreviewPresentation.cs ??떦 7媛??뚮떎 ??PreviewTabPanel???⑥씪 ?꾩엫 ?몃뱾??+ PreviewTabTag
GitBranch ?대깽???꾩엫 ChatWindow.GitBranchPresentation.cs, SelectionPopupPresentation.cs CreateFlatPopupRow/CreatePopupMenuRow ?됱쓽 ?뚮떎 ??GitBranchItems???⑥씪 ?꾩엫 + PopupRowTag

援ъ“??由ы뙥?좊쭅 P3 (2026-04-09)

?€?? ?뚯씪 蹂€寃?
FileBrowser 紐낆떆???댁젣 ChatWindow.FileBrowserPresentation.cs TreeViewItem ?뚮떎?믩챸紐?硫붿꽌??FileTreeItem_Expanded/DoubleClick/RightClick) ?꾪솚. BuildFileTree() ??DetachFileTreeHandlers() ?ш? ?몄텧濡?Clear ???몃뱾???댁젣. ?몃━ ?ш뎄異뺣떦 300媛??몃뱾???꾩쟻 ?댁냼

claude-code식 transcript 표시 구조 정리

  • 업데이트: 2026-04-09 13:05 (KST)
  • AgentTranscriptDisplayCatalog를 row presentation 중심으로 재구성해 hinking / waiting / compact / tool activity / permission / tool result / status를 개별 transcript row 의미로 다룰 수 있게 정리했습니다.
  • ChatWindow.AgentEventRendering은 process feed 계열 이벤트를 같은 GroupKey 단위로 병합해, 긴 Cowork/Code 실행 중 append 수를 줄이면서도 주요 활동 흐름이 기본 transcript에 남도록 조정했습니다.
  • PermissionRequestPresentationCatalog, ToolResultPresentationCatalog를 다시 정리해 권한 요청과 도구 결과를 행위/상태 기준으로 구분하고, transcript 렌더와 popup이 같은 메타를 공유하도록 맞췄습니다.
  • ChatWindow.FooterPresentation은 execution event가 생긴 뒤에는 프리셋 안내 카드를 자동으로 숨기도록 바꿔 결과/진행 화면을 덮지 않게 했고, Cowork/Code 입력 워터마크와 footer 기본 문구도 정상 한국어 기준으로 다시 정리했습니다.

ender_messages 성능 로그에는 processFeedAppends, processFeedMerges, owKindCounts를 함께 남겨 %APPDATA%\AxCopilot\perf 기준으로 transcript grouping 효과를 수치로 비교할 수 있게 했습니다.

13. ?붾젆?좊━蹂?媛€?대뱶

?붾젆?좊━ ?섏젙 ??二쇱쓽?ы빆
Core/ FuzzyEngine ?먯닔 怨듭떇 蹂€寃???寃€???덉쭏??吏곸젒 ?곹뼢
Handlers/ ???몃뱾??異붽? ??App.xaml.cs???깅줉 ?꾩슂
Services/Agent/ ???꾧뎄 異붽? ??ToolRegistry???깅줉 + ?ㅽ궗 ?뚯씪(.skill.md) ?묒꽦
Themes/ 由ъ냼????蹂€寃???紐⑤뱺 ?뚮쭏???숈씪?섍쾶 ?곸슜 ?꾩슂
Models/AppSettings.cs ?띿꽦 異붽? ??SettingsService 留덉씠洹몃젅?댁뀡 怨좊젮
Views/ChatWindow.* partial class 遺꾪븷 ??愿€??湲곕뒫?€ ?대떦 ?뚯씪?먯꽌 ?섏젙

14. 愿€??臾몄꽌

臾몄꽌 ?댁슜
docs/AGENT_ROADMAP.md ?먯씠?꾪듃 湲곕뒫 濡쒕뱶留?
docs/LAUNCHER_ROADMAP.md ?곗쿂 湲곕뒫 濡쒕뱶留?
docs/CLAW_CODE_PARITY_PLAN.md Claude Code 湲곕뒫 ?€??怨꾪쉷
docs/TOOL_PARITY_REPORT.md ?꾧뎄 ?명솚??由ы룷??
docs/AX_AGENT_UI_CHECKLIST.md ?먯씠?꾪듃 UI 泥댄겕由ъ뒪??
docs/UI_UX_CHECKLIST.md UI/UX 泥댄겕由ъ뒪??

?좏깮???먯깋 援ъ“ 媛쒖꽑 (2026-04-09 10:36 KST)

  • claude-code??Glob/Grep/FileRead ?꾨\?꾪듃?€ toolOrchestration.ts ?먮쫫???ㅼ떆 ?€議고븳 寃곌낵, AX??folder_map???덈Т ?쎄쾶 癒쇱? ?몄텧?섎룄濡??좊룄?섎뒗 洹쒖튃 ?뚮Ц??吏덈Ц怨?臾닿????꾩껜 ?뚰겕?ㅽ럹?댁뒪瑜??묐뒗 寃쏀뼢???덉뿀?듬땲??
  • src/AxCopilot/Views/ChatWindow.xaml.cs
    • Cowork/Code ?쒖뒪???꾨\?꾪듃?먯꽌 folder_map????긽 泥??④퀎濡??붽뎄?섎뜕 臾멸뎄瑜??꾪솕?덉뒿?덈떎.
    • 醫곸? 踰붿쐞??吏덈Ц?€ glob/grep + targeted file_read瑜??곗꽑?섍퀬, ?€?μ냼 ?꾩껜 援ъ“媛€ ?뺣쭚 ?꾩슂???뚮쭔 folder_map???곕룄濡?諛붽엥?듬땲??
  • src/AxCopilot/Services/Agent/FolderMapTool.cs
    • 湲곕낯 ?먯깋 depth瑜?`3 -

claude-code식 transcript 표시 구조 정리

  • 업데이트: 2026-04-09 13:05 (KST)
  • AgentTranscriptDisplayCatalog를 row presentation 중심으로 재구성해 hinking / waiting / compact / tool activity / permission / tool result / status를 개별 transcript row 의미로 다룰 수 있게 정리했습니다.
  • ChatWindow.AgentEventRendering은 process feed 계열 이벤트를 같은 GroupKey 단위로 병합해, 긴 Cowork/Code 실행 중 append 수를 줄이면서도 주요 활동 흐름이 기본 transcript에 남도록 조정했습니다.
  • PermissionRequestPresentationCatalog, ToolResultPresentationCatalog를 다시 정리해 권한 요청과 도구 결과를 행위/상태 기준으로 구분하고, transcript 렌더와 popup이 같은 메타를 공유하도록 맞췄습니다.
  • ChatWindow.FooterPresentation은 execution event가 생긴 뒤에는 프리셋 안내 카드를 자동으로 숨기도록 바꿔 결과/진행 화면을 덮지 않게 했고, Cowork/Code 입력 워터마크와 footer 기본 문구도 정상 한국어 기준으로 다시 정리했습니다.

ender_messages 성능 로그에는 processFeedAppends, processFeedMerges, owKindCounts를 함께 남겨 %APPDATA%\AxCopilot\perf 기준으로 transcript grouping 효과를 수치로 비교할 수 있게 했습니다.

transcript row 怨꾩빟 諛?activity grouping ?뺣━ (2026-04-09 11:12 KST)

  • claude-code??Messages.tsx, MessageRow.tsx, GroupedToolUseContent.tsx, UserToolResultMessage, PermissionRequest瑜??ㅼ떆 ?€議고빐 AX transcript瑜?row ?€??以묒떖?쇰줈 ?뺣━?덉뒿?덈떎.
  • src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs
    • TranscriptRowKind, AgentTranscriptRowPresentation??異붽??덉뒿?덈떎.
    • thinking / waiting / compact / tool activity / permission / tool result / status瑜??섎굹??移댄깉濡쒓렇?먯꽌 ?뺢퇋?뷀븯?꾨줉 諛붽엥?듬땲??
    • process feed row??GroupKey, CanGroup, Emphasize 硫뷀?瑜??④퍡 怨꾩궛???뚮뜑?ш? 怨좊퉰???대깽?몃? ???곸? ?됱쑝濡?臾띠쓣 ???덇쾶 ?덉뒿?덈떎.
  • src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs
    • process feed ?뚮뜑媛€ row presentation??吏곸젒 諛쏆븘 ?쒕ぉ/?ㅻ챸/媛뺤“ ?щ?瑜?援ъ꽦?섎룄濡?諛붽엥?듬땲??
    • 媛숈? 醫낅쪟??read/search/step ?대깽?몃뒗 留덉?留?grouped row瑜?援먯껜?섎뒗 諛⑹떇?쇰줈 merge?섏뿬 append ?섎? 以꾩??듬땲??
    • permission/result card??row 硫뷀??€ presentation catalog瑜???吏곸젒?곸쑝濡??ъ슜?섎룄濡??곌껐?덉뒿?덈떎.
  • src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs
    • ?깃났/?ㅽ뙣/嫄곕?/痍⑥냼/?뱀씤 ?꾩슂/遺€遺??꾨즺瑜?clean??硫뷀? 援ъ“濡??ㅼ떆 ?뺣━?덉뒿?덈떎.
  • src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs
    • bash / powershell / command / web / mcp / skill / ask / file edit / file write / git / document / filesystem???됱쐞蹂?沅뚰븳 移대뱶 硫뷀?濡??ъ젙?섑뻽?듬땲??
  • src/AxCopilot/Views/ChatWindow.TranscriptHost.cs
    • transcript 珥덇린????grouped process feed ?곹깭?€ 移댁슫?곕룄 ?④퍡 由ъ뀑?섎룄濡?蹂닿컯?덉뒿?덈떎.
  • src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs
    • performance log detail??processFeedAppends, processFeedMerges瑜?異붽???grouped activity row???④낵瑜??ㅼ궗??濡쒓렇?먯꽌 ?뺤씤?????덇쾶 ?덉뒿?덈떎.