Files
AX-Copilot-Codex/docs/DEVELOPMENT.md
lacvet 6bd8d5bb2c AX Agent IBM 응답 정규화 및 도구 노출 순서 추가 보강
이번 커밋은 후속 과제로 남아 있던 IBM Qwen 응답 포맷 차이와 보조 도구 과노출 문제를 추가 정리했다.

핵심 변경 사항:

- LlmService.ToolUse에서 content/reasoning_content/generated_text/output_text가 배열 또는 블록 형태로 와도 텍스트를 추출하도록 메시지 파서 보강

- content 배열 안의 tool_use/tool_call 블록도 직접 ContentBlock으로 복구해 IBM/Qwen 응답 변형에 더 유연하게 대응

- ToolRegistry 활성 도구 목록 노출 순서를 기본 파일/검색/생성/실행 도구 우선으로 재정렬하고 tool_search, MCP, spawn_agent, task 계열은 뒤로 배치

문서 반영:

- README.md, docs/DEVELOPMENT.md에 2026-04-09 23:02 (KST) 기준 이력 추가

검증 결과:

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\

- 경고 0개, 오류 0개
2026-04-09 23:08:33 +09:00

40 KiB
Raw Blame History

AX Copilot - 媛쒕컻 臾몄꽌

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???④낵瑜??ㅼ궗??濡쒓렇?먯꽌 ?뺤씤?????덇쾶 ?덉뒿?덈떎.