- StreamingToolExecutionCoordinator에서 조기 실행 대상을 file_read/document_read 중심으로 축소하고 folder_map 등 구조 탐색 도구를 prefetch 대상에서 제거함 - 스트리밍 재시도 전에 RetryReset 이벤트를 추가해 중간 응답 미리보기 누적을 끊고 AgentLoopService가 재시도 경계를 명확히 표시하도록 조정함 - AxAgentExecutionEngine의 Cowork/Code 빈 응답 합성을 보수적으로 바꿔 실행 근거가 있을 때만 완료 요약을 만들고 근거가 없으면 로그 확인 안내를 반환하도록 정리함 - Code 루프의 post-tool verification과 completion gate도 직전 수정에서 함께 정리해 일반 수정의 과검증을 줄였음 - README.md, docs/DEVELOPMENT.md에 2026-04-09 21:03 (KST) 기준 변경 이력과 검증 결과를 반영함 검증 결과: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 경고 0 / 오류 0
34 KiB
AX Copilot - 媛쒕컻 臾몄꽌
claude-code식 선택 탐색 우선순위 정렬
-
업데이트: 2026-04-09 21:03 (KST)
-
StreamingToolExecutionCoordinator에RetryReset이벤트를 추가해, 컨텍스트 복구나 일시적 LLM 오류 재시도 전에 부분 스트림 미리보기 상태를 끊도록 했습니다.claude-code가 fallback 시 orphaned partial state를 정리하고 executor를 새로 잡는 흐름과 비슷한 방향으로 AX도 재시도 경계를 더 명확히 가지게 됐습니다. -
엔진 레벨
PrefetchableReadOnlyTools는file_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의 코드 수정 요청이 모두 같은 기준을 따르도록 맞췄습니다. -
TaskTypePolicy의feature,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???곕룄濡?諛붽엥?듬땲??
- Cowork/Code ?쒖뒪???꾨\?꾪듃?먯꽌
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.csTranscriptRowKind,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???④낵瑜??ㅼ궗??濡쒓렇?먯꽌 ?뺤씤?????덇쾶 ?덉뒿?덈떎.
- performance log detail??