Files
AX-Copilot-Codex/docs/DEVELOPMENT.md
lacvet 07fd2267cb 에이전트 큐 우선순위 소비와 tool_result preview 재사용 안정화
목적:
- claude-code 대비 남아 있던 에이전틱 루프/큐/컨텍스트 격차를 줄이기 위한 1차 배치를 반영한다.
- 낮은 우선순위 알림이 같은 턴에 섞여 들어오던 흐름과 tool_result preview가 MsgId에만 묶여 재사용되던 한계를 개선한다.

핵심 수정:
- AgentCommandQueue를 snapshot/peek/dequeue/dequeueAllMatching/dequeuePriorityBatch를 지원하는 우선순위 큐로 재구성했다.
- AgentLoopService가 전체 큐를 한 번에 비우지 않고 같은 우선순위 배치만 소비하도록 조정했다.
- AgentToolResultBudget가 QueryPreviewContent를 tool_use_id 단위로 재사용하도록 확장해 재구성된 tool_result 메시지에서도 동일 preview를 유지한다.
- AgentCommandQueueTests, AgentToolResultBudgetTests를 확장해 priority batch dequeue, predicate matching, tool_use_id preview reuse를 회귀 검증한다.
- README와 DEVELOPMENT 문서에 2026-04-15 07:00 (KST) 기준 이력과 다음 통합 고도화 계획을 반영했다.

검증:
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_queue_preview\ -p:IntermediateOutputPath=obj\verify_queue_preview\
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter AgentCommandQueueTests^|AgentToolResultBudgetTests -p:OutputPath=bin\verify_queue_preview_tests\ -p:IntermediateOutputPath=obj\verify_queue_preview_tests"
2026-04-15 07:01:45 +09:00

962 lines
93 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
업데이트: 2026-04-14 19:50 (KST)
업데이트: 2026-04-14 21:25 (KST)
- 문서 생성 고도화 2차를 반영했습니다. `src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs`를 추가해 HTML/DOCX/XLSX 산출물에 대해 로컬 품질 점수와 보완 포인트를 계산하고, `HtmlSkill`, `DocxSkill`, `ExcelSkill`이 같은 리뷰 모델을 공유하도록 맞췄습니다.
- `src/AxCopilot/Services/Agent/DocxSkill.cs``template_path`, `cover_subtitle`, `cover_meta`, `toc`를 지원하도록 확장했습니다. DOCX 템플릿 복제 후 본문을 재구성하고, 커버 페이지와 TOC 필드를 삽입한 뒤 structured review 결과를 함께 반환합니다.
- `src/AxCopilot/Services/Agent/ExcelSkill.cs`는 executive summary sheet에 detail sheet 링크를 자동 생성하고, KPI/highlights/actions 구조를 workbook quality review와 연결하도록 보강했습니다.
- `src/AxCopilot/Services/Agent/HtmlSkill.cs`는 로컬 품질 리뷰를 결과 요약에 포함하도록 바꿨고, 문서형 번들 스킬로 `executive-brief`, `kpi-workbook`, `board-report-html`을 추가했습니다.
- 테스트: `ArtifactQualityReviewServiceTests`, `DocxSkillTemplateFeaturesTests`, `ExcelSkillExecutiveSummaryLinkTests` 추가
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_phase2\\ -p:IntermediateOutputPath=obj\\verify_doc_phase2\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|DocxSkillTemplateFeaturesTests|ExcelSkillExecutiveSummaryLinkTests|DocumentAssemblerSemanticTests|DocumentPlannerBusinessDocumentTests|HtmlSkillConsultingSectionsTests|ExcelSkillSummarySheetTests" -p:OutputPath=bin\\verify_doc_phase2_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_phase2_tests\\` 통과 9
업데이트: 2026-04-14 22:52 (KST)
- 문서 포맷 고도화와 PPTX 확장 포인트를 함께 반영했습니다. `src/AxCopilot/Services/Agent/ExcelSkill.cs``conditional_formats`를 지원해 색상 스케일과 데이터 바 조건부서식을 OpenXML로 직접 생성하고, workbook quality review에도 조건부서식 개수를 반영합니다.
- `src/AxCopilot/Services/Agent/DocxSkill.cs``style_map`을 지원하도록 확장했습니다. 템플릿에 정의된 제목/헤딩/본문 스타일을 실제 문단의 `ParagraphStyleId`로 연결해 사내 템플릿 기반 문서 품질을 높였습니다.
- `src/AxCopilot/Services/Agent/HtmlSkill.cs``print_header`, `print_footer`를 받아 인쇄용 헤더/푸터 프레임을 렌더링하고, `src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs`는 HTML/DOCX/XLSX 품질 리뷰 문자열과 판정 로직을 공통 형식으로 정리했습니다.
- PPTX는 `src/AxCopilot/Services/Agent/PptxTemplatePackRegistry.cs`를 새로 추가해 `strategy`, `board`, `pmo`, `finance`, `sales`, `operating_model` 템플릿 팩을 정의했습니다. `src/AxCopilot/Services/Agent/PptxSkill.cs``template_pack` 파라미터와 objective/audience 기반 pack suggestion을 받아 이후 목적형 deck 고도화를 이어가기 쉬운 구조가 됐습니다.
- 테스트: `ArtifactQualityReviewServiceTests`, `ExcelSkillDataValidationTests`, `ExcelSkillConditionalFormattingTests`, `DocxSkillStyleMapTests`, `HtmlSkillPrintFrameTests`, `PptxSkillTemplatePackTests`
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_next_doc_ppt\\ -p:IntermediateOutputPath=obj\\verify_next_doc_ppt\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|ExcelSkillDataValidationTests|ExcelSkillConditionalFormattingTests|ExcelSkillExecutiveSummaryLinkTests|ExcelSkillSummarySheetTests|DocxSkillTemplateFeaturesTests|DocxSkillStyleMapTests|HtmlSkillConsultingSectionsTests|HtmlSkillPrintFrameTests|DocumentAssemblerDocxFeaturesTests|PptxSkillConsultingDeckTests|PptxSkillAutoRepairTests|PptxSkillTemplatePackTests" -p:OutputPath=bin\\verify_next_doc_ppt_tests\\ -p:IntermediateOutputPath=obj\\verify_next_doc_ppt_tests\\` 통과 15
업데이트: 2026-04-14 19:50 (KST)
- Agent loop/queue/context 품질을 보강했습니다. `src/AxCopilot/Services/Agent/AgentCommandQueue.cs`로 실행 중 추가 입력을 우선순위와 interrupt 여부까지 포함해 관리하고, `AgentLoopService`는 이를 안전하게 반영합니다.
- `AgentToolResultBudget`, `AgentQueryContextBuilder`, `ChatModels`는 tool result preview를 메시지에 캐시해 긴 세션과 재질문에서도 같은 축약 결과를 재사용하도록 정리했습니다.
- 코드 탭의 내장 언어 지원을 `src/AxCopilot/Services/CodeLanguageCatalog.cs`로 통합했고, 설정의 코드 탭에 지원 언어(LSP)와 코드 탭 기본 지원 언어를 명시적으로 표시합니다.
- `PptxSkill``executive_summary`, `recommendation`, `roadmap`, `comparison`, `kpi_dashboard` 레이아웃을 추가했고, `DocumentPlannerTool`은 발표 자료 계획을 `Executive Summary -> Situation & Imperative -> Key Findings -> Options & Recommendation -> Implementation Roadmap -> Impact & Ask` 구조로 생성합니다. `pptx-creator.skill.md`도 AX native `pptx_create` 중심으로 재작성했습니다.
- 테스트: `CodeLanguageCatalogTests`, `AgentCommandQueueTests`, `AgentToolResultBudgetTests`, `DocumentPlannerPresentationTests`, `PptxSkillConsultingDeckTests` 추가 및 기존 `WorkspaceContextGeneratorTests.cs(76)` nullable 경고 수정
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_impl\\ -p:IntermediateOutputPath=obj\\verify_impl\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "CodeLanguageCatalogTests|AgentCommandQueueTests|AgentToolResultBudgetTests|DocumentPlannerPresentationTests|PptxSkillConsultingDeckTests" -p:OutputPath=bin\\verify_impl_tests\\ -p:IntermediateOutputPath=obj\\verify_impl_tests\\` 통과 15
---
# AX Copilot - 媛쒕컻 臾몄꽌
> 理쒖쥌 ?낅뜲?댄듃: 2026-04-14 19:13 (KST) 쨌 踰꾩쟾 0.7.3
## ?낅뜲?댄듃 濡쒓렇
- ?낅뜲?댄듃: 2026-04-14 19:13 (KST)
- `claude-code` 湲곗? Phase 4瑜??댁뼱??諛섏쁺?덉뒿?덈떎. `src/AxCopilot/Services/Agent/McpSkillCatalog.cs`瑜?異붽???MCP ?쒕쾭 硫뷀??곗씠?곕? `mcp` source scope??synthetic skill濡?蹂€?섑븯怨? `ToolRegistry.RegisterMcpToolsAsync()` ?댄썑 snapshot??媛깆떊?섎룄濡??곌껐?덉뒿?덈떎.
- `src/AxCopilot/Services/Agent/SkillService.cs`??source policy瑜?`managed/user/additional/project/plugin/mcp/legacy` ?⑥쐞濡??먮떒?섎룄濡??뺤옣?덇퀬, source ?곗꽑?쒖쐞 湲곕컲 dedupe?€ inline shell trust boundary瑜??④퍡 ?곸슜?⑸땲?? plugin-only mode媛€ 耳쒖졇 ?덉쑝硫?managed/plugin/bundled留??좎??섍퀬 ?섎㉧吏€ source???④퉩?덈떎.
- ?щ옒??紐낅졊 ?⑹꽦?€ `src/AxCopilot/Views/SlashCommandCatalog.cs`?€ `src/AxCopilot/Views/ChatWindow.xaml.cs`?먯꽌 ?ш뎄?깊뻽?듬땲?? builtin command?€ skill??怨듯넻 priority濡??⑹꽦??異⑸룎 ??????ぉ留??몄텧?섍퀬, builtin `/review` 媛숈? ?덉빟 紐낅졊??project skill蹂대떎 ?덉젙?곸쑝濡??곗꽑?⑸땲??
- ?ㅼ젙/UI??`src/AxCopilot/Views/SettingsWindow.xaml`, `src/AxCopilot/Views/AgentSettingsWindow.xaml`, `src/AxCopilot/Views/AgentSettingsWindow.xaml.cs`, `src/AxCopilot/Views/SkillGalleryWindow.xaml.cs`???곌껐?덉뒿?덈떎. MCP ?ㅽ궗 source ?좉?, plugin-only mode, source蹂?inline shell ?덉슜 踰붿쐞, MCP 移댄뀒怨좊━/諛곗?, synthetic skill???뚯씪 ?≪뀡 李⑤떒???④퍡 諛섏쁺?덉뒿?덈떎.
- ?뚯뒪?몃뒗 `src/AxCopilot.Tests/Services/SkillServiceRuntimePolicyTests.cs`, `src/AxCopilot.Tests/Services/McpSkillCatalogTests.cs`, `src/AxCopilot.Tests/Views/SlashCommandCatalogTests.cs`??異붽??덉뒿?덈떎.
- 寃€利? `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_phase4\\ -p:IntermediateOutputPath=obj\\verify_phase4\\` 寃쎄퀬 0 / ?ㅻ쪟 0
- 寃€利? `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "SkillServiceRuntimePolicyTests|SlashCommandCatalogTests|McpSkillCatalogTests" -p:OutputPath=bin\\verify_phase4_tests\\ -p:IntermediateOutputPath=obj\\verify_phase4_tests\\` ?듦낵 17
- 李멸퀬: ?뚯뒪??鍮뚮뱶 以?湲곗〈 ?뚯씪 `src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs(76)`??nullable 寃쎄퀬 1嫄댁? ?좎??⑸땲??
- ?낅뜲?댄듃: 2026-04-14 17:46 (KST)
- ?꾧뎄 ?대쫫 ?뺥빀??臾몄젣瑜?以꾩씠湲??꾪빐 `src/AxCopilot/Services/Agent/AgentToolCatalog.cs`瑜?異붽??덉뒿?덈떎. canonical id, legacy alias, ???몄텧, ?ㅼ젙 移댄뀒怨좊━, 蹂묐젹 read-only 遺꾨쪟瑜??쒓납?먯꽌 愿€由ы븯?꾨줉 ?뺣━?덉뒿?덈떎.
- `ToolRegistry`, `AgentLoopService`, `AgentLoopParallelExecution`, `IAgentTool`, `AgentHookRunner`, `SkillService`媛€ 紐⑤몢 媛숈? 移댄깉濡쒓렇瑜??ъ슜?섎룄濡??곌껐?덉뒿?덈떎. ?댁뿉 ?곕씪 `git/lsp/zip/project_rule/snippet_run` 媛숈? ?덉쟾 ?대쫫???고??꾩뿉???먮룞 ?뺢퇋?붾맗?덈떎.
- ?대??ㅼ젙 ?곕룞???④퍡 諛섏쁺?덉뒿?덈떎. `AgentSettingsWindow`?€ `SettingsWindow`???꾧뎄 移대뱶, ???몄쭛湲? 鍮꾪솢???꾧뎄 ?€?? ?꾧뎄 沅뚰븳 ?€?μ씠 canonical ?대쫫 湲곗??쇰줈 ?숈옉?섎ʼn 湲곗〈 ?€?κ컪?€ alias ?명솚?쇰줈 ?≪닔?⑸땲??
- ?ㅽ궗 愿€???ㅻ챸?€ ?꾩옱 援ъ“??留욊쾶 ?꾪솕?덉뒿?덈떎. 湲곕낯 ?ㅽ궗 ?대뜑?€ 異붽? ?대뜑瑜??④퍡 濡쒕뱶?섎뒗 ?먮쫫, 吏곸젒 ?몄텧 ?ㅽ궗怨??고????뺤콉 ?곌껐 ?ㅽ궗??媛숈씠 蹂댁뿬二쇰뒗 諛⑺뼢?쇰줈 ?ㅼ젙/?ы봽 臾멸뎄瑜?蹂댁젙?덉뒿?덈떎.
- 寃€利? `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_toolcat\\ -p:IntermediateOutputPath=obj\\verify_toolcat\\` 寃쎄퀬 0 / ?ㅻ쪟 0
- 寃€利? `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter AgentToolCatalogTests -p:OutputPath=bin\\verify_toolcat_tests\\ -p:IntermediateOutputPath=obj\\verify_toolcat_tests\\` ?듦낵 8
- 李멸퀬: ?뚯뒪??鍮뚮뱶 以?湲곗〈 ?뚯씪 `src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs`??nullable 寃쎄퀬 1嫄댁씠 ?④퍡 ?쒖떆?섏뿀?쇰굹, ?대쾲 蹂€寃쎌뿉????寃쎄퀬瑜?異붽??섏????딆븯?듬땲??
---
## 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 |
**??퀎 ?꾧뎄 ?꾪꽣留?* (`ToolRegistry.ToolTabOverrides`):
`IAgentTool.TabCategory` ?먮뒗 `ToolTabOverrides` ?뺤뀛?덈━濡??꾧뎄瑜???퀎濡?遺꾨쪟?⑸땲??
`GetActiveToolsForTab(activeTab)` 硫붿꽌?쒓? ?꾩옱 ??뿉 留욌뒗 ?꾧뎄留?LLM???꾩넚?섏뿬 ?좏겙???덉빟?⑸땲??
| ??| ?쒖꽦 ?꾧뎄 踰붿쐞 | ?ㅻ챸 |
|------|--------------|------|
| **Chat** | 0媛?| ?쒖닔 ?€?? ?꾧뎄 ?놁씠 LLM留??묐떟 |
| **Cowork** | ~50媛?| ?뚯씪/寃€??+ 臾몄꽌?앹꽦(xlsx, docx, pptx...) + ?곗씠???좏떥 |
| **Code** | ~50媛?| ?뚯씪/寃€??+ 媛쒕컻(git, build, lsp...) + ?쒖뒪???뚰겕?몃━ + ?좏떥 |
- Chat ???좏겙 ?덉빟: ~14,400?좏겙 ??0 (?꾧뎄 ?뺤쓽 ?꾩쟾 ?쒓굅)
- Cowork/Code: 援먯감 ?쒖쇅濡?媛?~3,600?좏겙 異붽? ?덉빟
### 5.3 LLM ?쒕퉬??
**吏€??怨듦툒??*:
| ?쒕퉬??| ?ㅻ챸 |
|--------|------|
| `claude` / `sigmoid` | Anthropic Claude (Sigmoid API 寃쎌쑀) |
| `gemini` | Google Gemini API |
| `vllm` | OpenAI ?명솚 vLLM (IBM CP4D 吏€???ы븿) |
| `ollama` | 濡쒖뺄 Ollama 紐⑤뜽 |
**紐⑤뜽 ?쇱슦??*: `ModelRouterService`瑜??듯븳 ?ㅻ쾭?쇱씠???ㅽ깮 ???€??以?紐⑤뜽/?쒕퉬?ㅻ? ?숈쟻?쇰줈 ?꾪솚 媛€??
**?좏겙 愿€由?*: `TokenEstimator`濡?而⑦뀓?ㅽ듃 湲몄씠 異붿젙, ?ㅻ쾭?뚮줈????`ContextCondenser`媛€ ?먮룞 ?뺤텞
- `EstimateBaseOverhead(systemPromptLength, toolCount)`: ?쒖뒪???꾨\?꾪듃 + ?꾧뎄 ?뺤쓽 ?ㅻ쾭?ㅻ뱶 異붿젙
- `_tool_use_blocks` 硫붿떆吏€ 0.6x, `tool_result` 硫붿떆吏€ 0.7x ?좎씤 ?곸슜
- 而⑦뀓?ㅽ듃 ?ъ슜???쒖떆???쒖뒪???꾨\?꾪듃 + ?꾧뎄 ?ㅻ쾭?ㅻ뱶 ?ы븿
### 5.4 ?€???€?μ냼
- `ChatStorageService`: SQLite 湲곕컲 ?€???곸냽??- `ChatSessionStateService`: 硫붾え由????몄뀡 ?곹깭 愿€由?- `ChatConversation`: 硫붿떆吏€ 紐⑸줉 + ?ㅽ뻾 ?대깽???€?꾨씪??+ `Archived` ?꾩뭅?대툕 ?뚮옒洹?
---
## 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` | ?먯씠?꾪듃 ?대깽??諛곕꼫/移대뱶 ?뚮뜑留?(SessionStart/UserPromptSubmit ?④?) |
| `ChatWindow.AgentStatusPresentation.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.SystemPromptBuilder.cs` | ?쒖뒪???꾨\?꾪듃 ?숈쟻 議곕┰ (???꾨━??而⑦뀓?ㅽ듃 二쇱엯) |
| `ChatWindow.OverlaySettingsPresentation.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)
```csharp
public interface IActionHandler
{
string? Prefix { get; } // ?묐몢??(null?대㈃ ?쇱? 寃€?됰쭔)
PluginMetadata Metadata { get; }
Task<IEnumerable<LauncherItem>> GetItemsAsync(string query, CancellationToken ct);
Task ExecuteAsync(LauncherItem item, CancellationToken ct);
}
```
### 媛쒕컻 諛⑸쾿
1. `AxCopilot.SDK` 李몄“?섏뿬 `IActionHandler` 援ы쁽
2. 鍮뚮뱶??`.dll`??`settings.json`??`Plugins` 諛곗뿴??寃쎈줈 ?깅줉
3. `PluginHost`媛€ ???쒖옉 ???숈쟻 濡쒕뱶
---
## 9. 鍮뚮뱶 諛??ㅽ뻾
### 媛쒕컻 鍮뚮뱶
```bash
dotnet build src/AxCopilot/AxCopilot.csproj
```
### 鍮좊Ⅸ 鍮뚮뱶 (?뷀샇???ㅼ튂?꾨줈洹몃옩 ?앸왂)
```bash
./build-quick.sh
```
硫붿씤 ?깅쭔 self-contained ?⑥씪 ?뚯씪濡?鍮뚮뱶?⑸땲?? AxKeyEncryptor/Installer/?쒕룆?붾? 嫄대꼫?곗뼱 鍮좊Ⅸ 媛쒕컻 諛섎났???곹빀?⑸땲??
### 由대━??鍮뚮뱶 (?⑥씪 ?뚯씪)
```bash
dotnet publish src/AxCopilot/AxCopilot.csproj -c Release -r win-x64 --self-contained
```
由대━??鍮뚮뱶 ?듭뀡:
- `PublishSingleFile`: ?⑥씪 ?ㅽ뻾 ?뚯씪
- `EnableCompressionInSingleFile`: ?뺤텞 ?곸슜
- `PublishReadyToRun`: AOT ?꾨━而댄뙆??- `DebugType=none`: ?붾쾭洹??щ낵 ?쒓굅
- `TrimMode=partial`: IL ?몃━諛?
### ?뚯뒪??
```bash
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媛??몃뱾???꾩쟻 ?댁냼 |
> ?꾩껜 怨꾪쉷 ?꾨즺. `docs/STRUCTURAL_REFACTORING_PLAN.md` 李몄“.
### ?곗쿂 쨌 ?먯씠?꾪듃 由ъ냼???덉젙???섏젙 (2026-04-09)
| ?€??| ?뚯씪 | 蹂€寃?|
|------|------|------|
| LauncherWindow ?대깽???꾩닔 | `LauncherWindow.xaml.cs` | `vm.CloseRequested`, `vm.PropertyChanged`, `app.IndexService.IndexRebuilt` ?몃뱾?щ? ?꾨뱶 ?€????`OnClosed`?먯꽌 `-=` ?댁젣. ViewModel蹂대떎 Window媛€ 癒쇱? ?ロ옄 ??GC ?꾩닔 諛⑹? |
| ChatWindow ?€?대㉧ ?뺣━ | `ChatWindow.xaml.cs` | `Closed` ?몃뱾?ъ뿉 ?꾨씫??8媛??€?대㉧ 紐낆떆??`Stop()` 異붽? + `StopAgentEventProcessor()` ?몄텧 |
| Events ?ㅻ젅???덉쟾 | `AgentLoopService.cs` | Dispatcher ?놁쓣 ??`Events` ?묎렐??`lock(Events)` 異붽? ???숈떆 EmitEvent ?몄텧 ??IndexOutOfRange ?щ옒??諛⑹? |
| NotifyTool ?€?대㉧ ?꾩쟻 | `NotifyTool.cs` | ?뚮┝??`new DispatcherTimer` ??`DoubleAnimation.Completed` 肄쒕갚?쇰줈 ?€泥? 100媛??뚮┝ ??100媛??€?대㉧ ?숈떆 議댁옱 ?댁냼 |
| LauncherWindow ?좎뒪???€?대㉧ | `LauncherWindow.xaml.cs` | `ShowToast()` 留??몄텧 `new DispatcherTimer` ???ъ궗???⑦꽩 + 紐낅챸 硫붿꽌??`ToastTimer_Tick`) |
| LauncherWindow ?€?대㉧ ?뺣━ | `LauncherWindow.xaml.cs` | `OnClosed`??`_toastTimer?.Stop()`, `_indexStatusTimer?.Stop()` 異붽? |
### Hot path 쨌 由ъ냼??異붽? 理쒖쟻??(2026-04-09)
| ?€??| ?뚯씪 | 蹂€寃?|
|------|------|------|
| GetRuntimeActiveTools 罹먯떆 | `AgentLoopService.cs` | 諛섎났??1~4???몄텧 ??`cachedActiveTools` 濡쒖뺄 蹂€?섎줈 1??罹먯떆. foreach ??`activeToolNames` 怨꾩궛??猷⑦봽 諛뽰쑝濡??몄씠?ㅽ듃 |
| SubAgentTool 痍⑥냼 ?꾪뙆 | `SubAgentTool.cs` | `CancellationTokenSource.CreateLinkedTokenSource(ct)` ?곕룞. Task.Run + loop.RunAsync???좏겙 ?꾨떖. 遺€紐?以묒? ???먯떇 利됱떆 痍⑥냼 |
| ?꾩씠肄??좊땲硫붿씠???ш? ?쒖뼱 | `LauncherWindow.xaml.cs` | `sb.Completed`?먯꽌 利됱떆 ?ш? ??`_iconAnimationDelayTimer` 8珥??쒕젅?? ?좊떦 鍮덈룄 75% 媛먯냼. ?대┃ ???쒕젅??痍⑥냼 ??利됱떆 ?꾪솚 |
| JsonSerializerOptions 怨듭쑀 | `AgentLoopService.cs` | `s_jsonOpts` ?뺤쟻 ?꾨뱶 異붽?, 4媛?`JsonSerializer.Serialize` ?몄텧???곸슜. L4096 `System.Text.Json.` ?묐몢???뺢퇋??|
### Claude Desktop ?ㅽ???UI 媛쒖꽑 (2026-04-09)
| ??ぉ | ?뚯씪 | ?섏젙 ?댁슜 |
|------|------|----------|
| 誘몃━蹂닿린 Split Button | `ChatWindow.xaml` | 湲곗〈 `BtnPreviewToggle` (Ellipse ??+ "?꾨━酉?) ??`[??誘몃━蹂닿린 | ??` Split Button?쇰줈 援먯껜. 醫뚯륫 ?좉?, ?곗륫 ?곕툕濡??쒕∼?ㅼ슫 |
| 誘몃━蹂닿린 ?쒕∼?ㅼ슫 | `ChatWindow.PreviewPresentation.cs` | `ShowPreviewTabDropdown()` ???대┛ ??紐⑸줉 ?앹뾽, ?뚯씪 ?뺤옣?먮퀎 ?꾩씠肄? ?쒖꽦 ???섏씠?쇱씠??|
| PreviewDot ??PreviewIcon | `ChatWindow.PreviewPresentation.cs` | `PreviewDot.Fill` 4怨???`PreviewIcon.Foreground` (AccentColor/SecondaryText) ?꾪솚 |
| ?곕툕濡??숆린??| `ChatWindow.PreviewPresentation.cs` | `UpdatePreviewChevronState()` ??`_previewTabs.Count` 湲곕컲 IsHitTestVisible/Opacity ?쒖뼱 |
| 怨꾪쉷 踰꾪듉 ?대룞 | `ChatWindow.xaml` | MoodIconPanel ?숈쟻 二쇱엯 ??StatusBar XAML ?좎뼵 ?붿냼 `BtnPlanViewer`濡??대룞 |
| ShowPlanButton 由ы뙥?좊쭅 | `ChatWindow.PlanApprovalPresentation.cs` | ?숈쟻 Add/Remove ??`Visibility` ?좉? ?⑥닚??+ ?덇굅???뺣━ ?좎? |
### UX 媛쒖꽑 諛???퀎 ?꾧뎄 ?꾪꽣留?(2026-04-09)
| ??ぉ | ?뚯씪 | ?섏젙 ?댁슜 |
|------|------|----------|
| ??퀎 ?꾧뎄 ?꾪꽣留?| `IAgentTool.cs`, `ToolRegistry.cs`, `AgentLoopService.cs` | `TabCategory` ?띿꽦 + `ToolTabOverrides` ?뺤뀛?덈━濡?Chat/Cowork/Code ??퀎 ?꾧뎄 遺꾨쪟. Chat=0媛? Cowork=臾몄꽌/?곗씠?? Code=媛쒕컻/?쒖뒪??|
| FolderMapTool 湲곕낯媛?蹂€寃?| `FolderMapTool.cs` | `include_files` 湲곕낯媛?`false` ??`true`. Description???ъ슜 ?쒗븳 媛€?대뱶 異붽? |
| ?먯씠?꾪듃 ?대깽???④? | `AgentEventRendering.cs`, `TimelinePresentation.cs` | `SessionStart`/`UserPromptSubmit` ?대? ?대깽???€?꾨씪??鍮꾪몴??|
| ?ъ슜??硫붿떆吏€ ?뚮뜑留?| `ChatWindow.xaml.cs` | ?꾩넚 ??`InvalidateTimelineCache()` + `preserveViewport:false`濡?利됱떆 ?쒖떆 蹂댁옣 |
| ?꾩뭅?대툕 湲곕뒫 | `ChatModels.cs`, `ConversationManagementPresentation.cs`, `ConversationFilterPresentation.cs`, `ConversationListPresentation.cs` | `Archived` ?띿꽦, 而⑦뀓?ㅽ듃 硫붾돱 ?꾩뭅?대툕 ?좉?, ?ъ씠?쒕컮 ?꾪꽣 踰꾪듉 |
| 而ㅼ뒪?€ ?щ┝ ?ㅽ겕濡ㅻ컮 | `ChatWindow.xaml` | 6px ?щ┝ ScrollBar + Thumb ?쇱슫?? ScrollViewer 留덉슦???ㅻ쾭 fade in/out ?좊땲硫붿씠??|
| ?ㅽ듃由щ컢 硫뷀듃由??덉씠釉?| `ChatWindow.xaml`, `StatusPresentation.cs` | ?낅젰 諛뺤뒪 ?꾩뿉 `StreamMetricsLabel` (寃쎄낵?쒓컙 쨌 ???좏겙 ?? ?ㅼ떆媛??쒖떆 |
| ?꾨━??移대뱶 ?대┃ ?덉젙??| `ChatWindow.xaml`, `ChatWindow.xaml.cs` | WrapPanel `Background="Transparent"` + Dispatcher ?곗꽑?쒖쐞 `Loaded`濡??곹뼢 |
| 而⑦뀓?ㅽ듃 ?좏겙 ?뺥솗??| `TokenEstimator.cs`, `ContextUsagePresentation.cs`, `ILlmService.cs` | ?쒖뒪???꾨\?꾪듃 + ?꾧뎄 ?ㅻ쾭?ㅻ뱶 異붿젙, `_tool_use_blocks`/`tool_result` ?좎씤 |
| UI ?꾨━吏?諛⑹? | `ChatWindow.xaml.cs` | `SaveLastConversations()`/`PersistConversationSnapshot()` ???뚮뜑留???`Task.Run()` 鍮꾨룞湲??ㅽ뻾 |
| 鍮좊Ⅸ 鍮뚮뱶 ?ㅽ겕由쏀듃 | `build-quick.sh` | ?뷀샇???쒕룆???ㅼ튂?꾨줈洹몃옩 嫄대꼫?곕뒗 媛쒕컻??鍮뚮뱶 ?ㅽ겕由쏀듃 |
### ?먯씠?꾪듃 猷⑦봽 臾몄꽌 ?앹꽦 ?먮쫫 ?섏젙 (2026-04-09)
| ?뚯씪 | ?섏젙 ?댁슜 |
|------|----------|
| `AgentLoopTransitions.Documents.cs` | `TryHandleTerminalDocumentCompletionTransitionAsync`?먯꽌 `document_plan` ?놁씠 諛붾줈 臾몄꽌 ?꾧뎄 ?몄텧 ??議곌린 醫낅즺 諛⑹? ??LLM??異붽? 諛섎났?쇰줈 ?댁슜??蹂닿컯?????덈룄濡??덉슜 |
| `HtmlSkill.cs` | `MarkdownToHtml`?먯꽌 LLM???쎌엯??`<br>` ?쒓렇媛€ ?댁뒪耳€?댄봽?섎뒗 踰꾧렇 ?섏젙 ???댁뒪耳€?댄봽 ???뚮젅?댁뒪?€?붾줈 蹂댁〈 ??蹂듭썝 |
### Cowork 臾몄꽌 誘몄깮??쨌 ?ㅽ겕濡?쨌 ?꾩넚 ??10珥?硫덉땄 ?섏젙 (2026-04-09)
#### 臾몄꽌 ?앹꽦 ?먯깋 ?뺤콉 ?섏젙
| ?뚯씪 | ?섏젙 ?댁슜 |
|------|----------|
| `AgentLoopExplorationPolicy.cs` | `ExplorationScope.DirectCreation` ?좉퇋 ?ㅼ퐫??異붽?. `HasDocumentCreationIntent()`濡?"?묒꽦?댁쨾/留뚮뱾?댁쨾/?⑥쨾" ???앹꽦 ?숈궗 + 臾몄꽌/蹂닿퀬???€???ㅼ썙??媛먯? |
| `AgentLoopExplorationPolicy.cs` | `DirectCreation` ?ㅼ퐫?꾩뿉??glob/grep/folder_map ?먯깋 李⑤떒 ??`document_plan ??docx_create/html_create` 諛붾줈 ?대룞 |
| `AgentLoopExplorationPolicy.cs` | `FilterExplorationToolsForCurrentIteration`?먯꽌 臾몄꽌 ?앹꽦 ?꾧뎄瑜?理쒖슦???쒖쐞濡?諛곗튂 |
| `AgentLoopExplorationPolicy.cs` | `ShouldInjectExplorationCorrection`?먯꽌 DirectCreation ???먯깋 ?꾧뎄 1???몄텧留뚯쑝濡?利됱떆 援먯젙 二쇱엯 |
| `TaskTypePolicy.cs` | docs 媛€?대뜕?ㅻ? ?앹꽦 vs ?쎄린濡?遺꾧린 ???앹꽦 ??"諛섎뱶???ㅼ젣 ?뚯씪??留뚮뱾?대씪" 紐낆떆 |
| `AgentLoopService.cs` | DirectCreation ?ㅼ퐫???대깽??硫붿떆吏€: "臾몄꽌 ?앹꽦 紐⑤뱶 쨌 諛붾줈 臾몄꽌瑜?留뚮뱶??以? |
#### ?ㅽ겕濡?踰꾧렇 ?섏젙
| ?뚯씪 | ?섏젙 ?댁슜 |
|------|----------|
| `ChatWindow.xaml.cs` | 硫붿떆吏€ ?꾩넚/?щ옒??而ㅻ㎤??而댄뙥????`RenderMessages(preserveViewport: true)` + `ForceScrollToEnd()` 議고빀 ??`RenderMessages(preserveViewport: false)`濡?蹂€寃? viewport 蹂듭썝怨?ForceScrollToEnd 寃쏀빀 ?쒓굅 |
**?먯씤**: `preserveViewport: true`???뚮뜑留????댁쟾 ?ㅽ겕濡??꾩튂瑜?蹂듭썝?섎뒗 肄붾뱶瑜?`DispatcherPriority.Background`濡??덉빟. `ForceScrollToEnd()`??媛숈? ?곗꽑?쒖쐞濡??섎떒 ?ㅽ겕濡ㅼ쓣 ?덉빟?섏뿬 ??肄붾뱶媛€ 寃쏀빀, ?ㅽ겕濡ㅼ씠 ?섎떒?쇰줈 ??媛€??臾몄젣 諛쒖깮.
#### ?꾩넚 ??10珥?硫덉땄 ?섏젙 (Critical Performance Fix)
| ?뚯씪 | ?섏젙 ?댁슜 |
|------|----------|
| `ChatWindow.AgentStatusPresentation.cs` | `BuildFeedbackContext()` ??`_storage.LoadAllMeta()` (紐⑤뱺 .axchat ?뚯씪 蹂듯샇?? + `_storage.Load()` x20?뚮? 留??꾩넚留덈떎 ?숆린 ?ㅽ뻾 ??1遺?罹먯떆 + ?꾩옱 ?€???쇰뱶諛깅쭔 利됱떆 諛섏쁺 + ?꾩껜 媛깆떊?€ 諛깃렇?쇱슫??|
| `ChatWindow.xaml.cs` | `Dispatcher.Invoke()` (?숆린 釉붾줈?? ??`Dispatcher.InvokeAsync()` (鍮꾨룞湲?. background task?먯꽌 UI ?ㅻ젅??釉붾줈???쒓굅 |
| `ChatWindow.xaml.cs` | `PrepareExecutionForConversation()` (?쒖뒪???꾨\?꾪듃 鍮뚮뱶: ?꾨줈?앺듃 洹쒖튃/硫붾え由??쇰뱶諛??붿뒪??I/O) ??`await Task.Run()`?쇰줈 諛깃렇?쇱슫???ㅽ뻾. UI ?ㅻ젅??利됱떆 ?대갑 |
**?먯씤 遺꾩꽍**: `BuildFeedbackContext()`媛€ `LoadAllMeta()` (紐⑤뱺 `.axchat` ?뚯씪 蹂듯샇?붋룻뙆?? + `Load()` x20 (20媛??€???꾩껜 濡쒕뱶쨌蹂듯샇?? 瑜?UI ?ㅻ젅?쒖뿉???숆린 ?ㅽ뻾. ?€??30媛??댁긽?대㈃ 5~10珥?釉붾줈??諛쒖깮.
### ?ㅽ듃由щ컢 以?UI 踰꾨쾮???€??媛쒖꽑 (2026-04-09)
Claude Desktop(React)?€ ?꾧뎄 ?몄텧???섏떗 嫄댁씠?대룄 留ㅻ걚?ъ슫 諛섎㈃, WPF ?깆? ?ы븯寃?踰꾨쾮?대뒗 臾몄젣???먯씤 遺꾩꽍 諛??섏젙.
**洹쇰낯 ?먯씤**: React virtual DOM?€ 蹂€寃쎈맂 遺€遺꾨쭔 diff/patch?섏?留? WPF??留??뚮뜑留덈떎 ?꾩껜 ?쒓컖???몃━瑜??뚭눼 ???ъ깮??
| ?먯씤 | ?뚯씪 | ?섏젙 |
|------|------|------|
| `ItemsSource = null/?ъ뿰寃? ???꾩껜 ?쒓컖???몃━ ?뚭눼 + VirtualizingStackPanel 而⑦뀒?대꼫 ?ъ깮??| `TranscriptRenderExecution.cs` | ?ㅽ듃由щ컢 以묒뿉??ItemsSource 遺꾨━/?ъ뿰寃?嫄대꼫?€ ??ObservableCollection 吏곸젒 蹂€寃쎌쑝濡??덉씠?꾩썐 ?⑥뒪 理쒖냼??|
| ?쇱씠釉?吏꾪뻾 移대뱶 留ㅻ쾲 ?ъ깮?????ㅻ뜑/援щ텇???ㅽ뀦 ?꾩껜瑜?0遺€???ㅼ떆 ?앹꽦 + ?좊땲硫붿씠???ъ쟻??| `AgentEventRendering.cs` | `_liveProgressCard` 罹먯떆 + `UpdateLiveProgressStepsInPlace()` ??移대뱶 1???앹꽦 ?????ㅽ뀦留?異붽?, 湲곗〈 ?ㅽ뀦?€ ?곗튂 ????|
| ?뚮뜑 ?€?대㉧ 媛꾧꺽 1.5~2.2珥???WPF ?꾩껜 ?щ퉴?쒖뿉 鍮꾪빐 ?덈Т 怨듦꺽??| `ChatWindow.xaml.cs` | lightweight: 2.2s??s, normal: 1.5s??s ???뚮뜑 媛?異⑸텇???ъ쑀 ?뺣낫 |
| 留??뚮뜑留덈떎 3媛??좊땲硫붿씠??Opacity + ScaleX + ScaleY) ?ъ쟻??| `AgentEventRendering.cs` | ?쇱씠釉?移대뱶 in-place ?낅뜲?댄듃濡?湲곗〈 ?좊땲硫붿씠??蹂댁〈, ???ㅽ뀦?먮쭔 ?좊땲硫붿씠???곸슜 |
**鍮꾧탳**:
| ??ぉ | ?섏젙 ??(WPF) | ?섏젙 ??| Claude Desktop (React) |
|------|-------------|---------|----------------------|
| ?낅뜲?댄듃 ?꾨왂 | ?꾩껜 ?몃━ ?뚭눼?믪옱?앹꽦 | 4?④퀎: StreamingAppend ??Incremental ??**DiffRender** ??FullRender | Virtual DOM diff |
| ?뚮뜑 媛꾧꺽 | 1.5~2.2珥?| 3~4珥?| ~16ms (requestAnimationFrame) |
| ?붿냼 ?ъ궗??| Clear?믪옱?앹꽦 | 罹먯떆?믪옱?ъ슜 + ??湲곕컲 diff | Recycled/Memoized |
| ?좊땲硫붿씠??| 留ㅻ쾲 ?ъ쟻??(3媛??붿냼) | 1???곸슜 ??蹂댁〈 | CSS transform (GPU) |
---
### 12-3. Virtual DOM Diff ?뚮뜑 (`TryApplyDiffRender`)
React??reconciliation怨??숈씪???먮━瑜?WPF???곸슜????湲곕컲 diff ?뚮뜑?낅땲??
**?뚮뜑 泥댁씤 (?곗꽑?쒖쐞 ??:**
```
StreamingAppend ??Incremental(prefix-match) ??DiffRender(key-based) ??FullRender
```
| ?④퀎 | 議곌굔 | ?숈옉 |
|------|------|------|
| StreamingAppend | ?ㅽ듃由щ컢 以?+ 湲곗〈 stable ?ㅺ? 遺€遺꾩쭛??| ???ㅻ쭔 append |
| Incremental | prefix媛€ ?꾩쟾 ?쇱튂 | 瑗щ━ 遺€遺꾨쭔 異붽? |
| **DiffRender** | hiddenCount ?숈씪 + ??吏묓빀 蹂€???덉쓬 | old?먮쭔 ?덈뒗 ????젣(?ㅲ넂?? + new?먮쭔 ?덈뒗 ??異붽? |
| FullRender | ??3媛?紐⑤몢 ?ㅽ뙣 | ?꾩껜 Clear?믪옱?앹꽦 |
**?듭떖 ?뚭퀬由ъ쬁:**
1. `oldKeys` ??index ?뺤뀛?덈━ / `newKeys` ??HashSet 援ъ텞
2. ?쇱씠釉?而⑦뀒?대꼫 ?꾩떆 遺꾨━
3. `oldKeys` ?ㅼ뿉?쒕????쒗쉶?섎ʼn `newKeySet`???녿뒗 ??ぉ ?쒓굅 (?몃뜳???덉젙??
4. `renderPlan.VisibleTimeline`?먯꽌 `oldKeyIndex`???녿뒗 ??ぉ留?`Render()`
5. ?쇱씠釉?而⑦뀒?대꼫 ?ъ궫??
**?뚯씪:** `ChatWindow.TranscriptRenderExecution.cs`, `ChatWindow.TranscriptRendering.cs` (泥댁씤 ?쎌엯)
---
### 12-4. LSP 肄붾뱶 ?명뀛由ъ쟾???꾧뎄 ?뺤옣
`lsp_code_intel` ?꾧뎄瑜?6媛??≪뀡?먯꽌 9媛쒕줈 ?뺤옣?섏뿬 援ъ“??肄붾뱶 ?먯깋???€??媛뺥솕?덉뒿?덈떎.
| ?≪뀡 | ?⑸룄 | ?좉퇋 |
|------|------|------|
| `goto_definition` | ?щ낵 ?뺤쓽 ?꾩튂 | |
| `find_references` | ?щ낵 ?ъ슜 ?꾩튂 | |
| `hover` | ?€??臾몄꽌 ?뺣낫 | ??|
| `goto_implementation` | ?명꽣?섏씠??異붿긽 援ы쁽 ?꾩튂 | ??|
| `symbols` | ?뚯씪 ???щ낵 紐⑸줉 | |
| `workspace_symbols` | ?뚰겕?ㅽ럹?댁뒪 ?꾩껜 ?щ낵 寃€??| ??|
| `prepare_call_hierarchy` | ?몄텧 怨꾩링 湲곗? ?щ낵 | ??|
| `incoming_calls` | ?곸쐞 ?몄텧??| ??|
| `outgoing_calls` | ?섏쐞 ?몄텧 ?€??| ??|
**二쇱슂 蹂€寃?**
- `line`/`character` ?낅젰: 1-based 湲곕? ???대??먯꽌 0-based ?먮룞 蹂€??(`NormalizePosition`)
- `query` ?뚮씪誘명꽣 異붽? (workspace_symbols??
- 寃곌낵???뚯씪 ?? ?€???꾩튂, 泥?寃곌낵 ?붿빟 ?ы븿
- LSP ?꾨줈?좎퐳: `textDocument/implementation`, `textDocument/hover`, `workspace/symbol`, `textDocument/prepareCallHierarchy`, `callHierarchy/incomingCalls`, `callHierarchy/outgoingCalls`
**?뚯씪:** `LspTool.cs`, `LspClientService.cs`
---
### 12-5. IBM/Qwen ?꾧뎄 ?대젰 ?됲깂??
IBM watsonx + Qwen 諛고룷?뺤뿉??`tool_calls`/`role=tool` ?대젰 寃€?ш? ?꾧꺽??臾몄젣瑜??닿껐?⑸땲??
**蹂€寃???**
```
assistant { tool_calls: [...] } ?? tool { tool_call_id, content }
```
**蹂€寃???(?됲깂 transcript):**
```
assistant: "?띿뒪??n<tool_call>\n{name,arguments}\n</tool_call>"
user: "[Tool Result: tool_name] (id=xxx)\ncontent"
```
**?듭떖 硫붿꽌??**
- `BuildIbmAssistantTranscript()` ??tool_use 釉붾줉 ??`<tool_call>` ?쒓렇 吏곷젹??- `BuildIbmToolResultTranscript()` ??tool_result ??`[Tool Result]` ?ㅻ뜑 + ?댁슜
- `TryExtractTextContent()` ??string/array/nested ?뺥깭 紐⑤몢 ?띿뒪??異붿텧
- `TryParseContentArrayToolBlock()` ??content 諛곗뿴 ??tool_use/tool_call 釉붾줉 ?뚯떛
**?뚯씪:** `LlmService.ToolUse.cs`
---
### 12-6. ?꾧뎄 ?몄텧 ?쒖꽌 ?뺣젹 諛??꾨\?꾪듃 ?꾪솕
**?꾧뎄 ?쒖꽌 (`ToolRegistry.OrderToolsForExposure`):**
| 踰꾪궥 | ?꾧뎄 |
|------|------|
| 0 (理쒖슦?? | file_read, file_edit, glob, grep, lsp_code_intel, build_run, document_plan, ?앹꽦 ?꾧뎄 ??|
| 1 | document_review, format_convert, tool_search, code_search |
| 2 | mcp_*, spawn_agent, wait_agents |
| 3 | task_* |
**?꾨\?꾪듃 ?꾪솕 (SystemPromptBuilder):**
- "Tools First, Always" ??"Tools First When Needed"
- `tool_search`: ?꾨낫?먯꽌 諛붾줈 ?좏깮 媛€?ν븯硫?吏곸젒 ?몄텧, 紐⑦샇???뚮쭔 ?ъ슜
- `spawn_agent`: 蹂묐젹 議곗궗媛€ ?ㅼ젣濡??꾩??????뚮쭔 ?ъ슜
- `document_review`: ??臾몄꽌/紐낆떆???붿껌 ?쒖뿉留?沅뚯옣
- Code ?먯깋: ?뺤쓽/李몄“/援ы쁽/?몄텧愿€怨???`lsp_code_intel` ?곗꽑
**?뚯씪:** `ToolRegistry.cs`, `ChatWindow.SystemPromptBuilder.cs`, `AgentLoopService.cs`, `TaskTypePolicy.cs`, `AgentLoopExplorationPolicy.cs`
---
## 13. ?붾젆?좊━蹂?媛€?대뱶
| ?붾젆?좊━ | ?섏젙 ??二쇱쓽?ы빆 |
|---------|----------------|
| `Core/` | `FuzzyEngine` ?먯닔 怨듭떇 蹂€寃???寃€???덉쭏??吏곸젒 ?곹뼢 |
| `Handlers/` | ???몃뱾??異붽? ??`App.xaml.cs`???깅줉 ?꾩슂 |
| `Services/Agent/` | ???꾧뎄 異붽? ??`ToolRegistry`???깅줉 + ?ㅽ궗 ?뚯씪(`.skill.md`) ?묒꽦 + `ToolTabOverrides`????移댄뀒怨좊━ 吏€??|
| `Themes/` | 由ъ냼????蹂€寃???紐⑤뱺 ?뚮쭏???숈씪?섍쾶 ?곸슜 ?꾩슂 |
| `Models/AppSettings.cs` | ?띿꽦 異붽? ??`SettingsService` 留덉씠洹몃젅?댁뀡 怨좊젮 |
| `Views/ChatWindow.*` | partial class 遺꾪븷 ??愿€??湲곕뒫?€ ?대떦 ?뚯씪?먯꽌 ?섏젙 |
---
### 12-7. PPT 怨좏뭹吏??쒗뵆由??쒖뒪??
`template` ?뚮씪誘명꽣濡?8媛?怨좏뭹吏??묒떇???됱긽/?덉씠?꾩썐???ъ슜?????덉뒿?덈떎.
**?꾩옱 援ы쁽 (諛⑸쾿 1 ???댁옣 硫뷀??곗씠??:**
- 媛??쒗뵆由우쓽 ?뚮쭏 ?됱긽??`FullThemes` ?뺤뀛?덈━???섎뱶肄붾뵫 (0KB 異붽?)
- ?먮낯 .pptx ?놁씠???숈씪 ?됱긽+?덉씠?꾩썐?쇰줈 PPT ?앹꽦 媛€??- ?먮낯 .pptx媛€ `Assets/ppt/` ?먮뒗 `%APPDATA%/AXCopilot/templates/ppt/`???덉쑝硫?留덉뒪??蹂듭젣(怨좏뭹吏? ?먮룞 ?낃렇?덉씠??
| ?쒗뵆由??대쫫 | ?먮낯 ?뚯씪 | ?됱긽 ?뱀쭠 |
|------------|----------|----------|
| `basic100` | BASIC100 湲곗? ?쒗뵆由?V1.pptx (67MB) | 紐⑤뜕 釉붾( (#2572EF) |
| `core100` | CORE100 湲곗??쒗뵆由?V1.pptx (141MB) | ??釉붾( (#266DF1) |
| `frame_blue` | ?꾨젅?꾨뵒?먯씤 釉붾( (19MB) | ?꾨젅??釉붾( (#126BF6) + 移대뱶 |
| `mr_ppt_01` | 誘몄뒪???쇳뵾??01 (18MB) | ?ㅽ겕 ?ㅼ씠鍮?+ 釉붾( (#0049F0) |
| `mr_ppt_02` | 誘몄뒪???쇳뵾??02 (24MB) | 釉붾( + 洹몃젅??移대뱶 (#2269F7) |
| `mr_ppt_03` | 誘몄뒪???쇳뵾??03 (5.5MB) | ?ㅼ씠鍮?+ 怨⑤뱶 (#F4BB05) |
| `mr_ppt_04` | 誘몄뒪???쇳뵾??04 (8.8MB) | ???몃뵒怨?+ ?ㅼ뭅?대툝猷?(#0583F2) |
| `mr_ppt_05` | 誘몄뒪???쇳뵾??05 (16MB) | 紐⑤뜕 釉붾옓 + 釉붾( (#007AF9) |
**?ν썑 援ы쁽 ?듭뀡:**
#### 諛⑸쾿 2 ???먮룞 ?ㅼ슫濡쒕뱶 (沅뚯옣)
```
泥??ъ슜 ???щ궡 NAS/?쒕쾭?먯꽌 ?쒗뵆由??먮룞 ?ㅼ슫濡쒕뱶 ??%APPDATA%/AXCopilot/templates/ppt/ 罹먯떆
援ы쁽 ?ъ씤??
- AppSettings??TemplateServerUrl ?ㅼ젙 異붽? (?? https://nas.internal/ax-templates/)
- ResolveTemplatePath?먯꽌 ?뚯씪 誘몃컻寃????ㅼ슫濡쒕뱶 ?몃━嫄?- ?ㅼ슫濡쒕뱶 吏꾪뻾瑜?UI (ChatWindow ?먮뒗 ?ㅼ젙 ?붾㈃)
- ?ㅽ봽?쇱씤 ?대갚: ?댁옣 硫뷀??곗씠??諛⑸쾿 1)濡??먮룞 ?꾪솚
- 踰꾩쟾 愿€由? ?쒕쾭??manifest.json ??濡쒖뺄 罹먯떆 踰꾩쟾怨?鍮꾧탳
?덉긽 ?묒뾽?? 以?(?ㅼ슫濡쒕뱶 ?쒕퉬??+ UI + ?ㅼ젙)
?뚯씪: PptxSkill.cs, AppSettings.cs, SettingsService.cs
```
#### 諛⑸쾿 3 ??鍮뚮뱶???ы븿
```
csproj??Content濡??깅줉?섏뿬 諛고룷 ?⑦궎吏€???ы븿
援ы쁽:
1. AxCopilot.csproj???꾨옒 異붽?:
<Content Include="Assets\ppt\*.pptx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
2. ?ㅼ튂?뚯씪 ?⑸웾 ?곹뼢: +~200MB (?뺤텞 ??
- ?꾩옱 ?ㅼ튂?뚯씪 ~107MB ??~307MB ?덉긽
3. ?좏깮???ы븿 (?⑸웾 ?덉땐):
- 寃쎈웾 ?쒗뵆由용쭔 ?ы븿 (mr_ppt_03: 5.5MB, mr_ppt_04: 8.8MB ??
- ?€???쒗뵆由?(core100: 141MB)?€ 諛⑸쾿 2濡??ㅼ슫濡쒕뱶
<Content Include="Assets\ppt\誘몄뒪??" Condition="Exists('Assets\ppt\')">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
二쇱쓽: build.bat??payload.zip ?뺤텞 ?④퀎?먯꽌 ?먮룞 ?ы븿??```
---
## 14. 吏€?ν삎 ?먯씠?꾪듃 怨좊룄??(oh-my-openagent 李몄“)
> ?곸꽭 怨꾪쉷: `docs/AGENT_ROADMAP.md` 8??李몄“
### 利됱떆 媛쒕컻 (P1~P5)
| ?쒖쐞 | 湲곕뒫 | ?듭떖 ?뚯씪 | ?ㅻ챸 |
|------|------|----------|------|
| P1 | **IntentGate** (?섎룄 遺꾨쪟湲? | `IntentGateService.cs`(?좉퇋) | ?ъ슜???낅젰 ???묒뾽 ?좏삎 ?먮룞 遺꾨쪟 ??理쒖쟻 ?ㅽ뻾 ?꾨줈?뚯씪(temperature/tool 沅뚰븳/諛섎났 ?곹븳) ?먮룞 ?곸슜. 湲곗〈 `ClassifyTaskType` + `IntentDetector` ?듯빀 ?뺤옣 |
| P2 | **移댄뀒怨좊━ ?쒕툕?먯씠?꾪듃 ?꾨줈?뚯씪** | `SubAgentProfile.cs`(?좉퇋), `SubAgentTool.cs` | ?⑥씪 紐⑤뜽 + ?ㅻⅨ system prompt/tool 沅뚰븳/temperature 議고빀?쇰줈 媛€??硫€?곗뿉?댁쟾?? researcher/coder/writer/reviewer/planner 5媛??꾨줈?뚯씪 |
| P3 | **?꾩쟻 ?숈뒿** | `SessionLearningCollector.cs`(?좉퇋) | ?몄뀡 ??諛쒓껄?ы빆(鍮뚮뱶 ?먮윭, ?뚯씪 援ъ“, ?⑦꽩)???먮룞 ?섏쭛?섏뿬 ?꾩냽 諛섎났??而⑦뀓?ㅽ듃濡?二쇱엯. 諛섎났 ?ㅼ닔 諛⑹? |
| P4 | **?뚰겕?ㅽ럹?댁뒪 而⑦뀓?ㅽ듃 ?먮룞 ?앹꽦** | `WorkspaceContextGenerator.cs`(?좉퇋) | ?묒뾽 ?대뜑 援ъ“/湲곗닠?ㅽ깮??`.ax-context.md`濡??먮룞 ?앹꽦. ?쒕툕?먯씠?꾪듃 而⑦뀓?ㅽ듃 ?⑥쑉??|
| P5 | **蹂묐젹 ?쒕툕?먯씠?꾪듃 ?뺤옣** | `SpawnAgentsTool.cs`(?좉퇋) | ?щ윭 ?쒕툕?먯씠?꾪듃瑜???踰덉뿉 ?앹꽦/?ㅽ뻾. IntentGate ?곕룞?쇰줈 蹂듯빀 ?붿껌 ?먮룞 遺꾪빐 |
### 異뷀썑 媛쒕컻 (P6~P7)
| ?쒖쐞 | 湲곕뒫 | ?좏뻾 議곌굔 | ?ㅻ챸 |
|------|------|----------|------|
| P6 | **?대갚 泥댁씤** | P1 + P2 | ?ㅽ뻾 ?ㅽ뙣 ???ㅻⅨ ?꾨줈?뚯씪/?꾨왂?쇰줈 ?먮룞 ?ъ떆??(理쒕? 2?? |
| P7 | **紐⑤뜽 ?깃꺽 留ㅼ묶** | P1 + 硫€?곕え??| ?묒뾽 ?좏삎蹂?理쒖쟻 紐⑤뜽 ?먮룞 ?좏깮 (RegisteredModel.strengths 留ㅼ묶) |
### 援ы쁽 ?섏〈 愿€怨?
```
P1 (IntentGate) ?€?€?€?€?€?р??€??P2 (移댄뀒怨좊━ ?꾨줈?뚯씪) ?€?€??P5 (蹂묐젹 ?뺤옣)
?쒋??€??P3 (?꾩쟻 ?숈뒿) [?낅┰]
?붴??€??P4 (?뚰겕?ㅽ럹?댁뒪 而⑦뀓?ㅽ듃) [?낅┰]
P1 + P2 ?꾨즺 ???€?€??P6 (?대갚 泥댁씤)
P1 + 硫€?곕え?????€?€??P7 (紐⑤뜽 ?깃꺽 留ㅼ묶)
```
---
## 15. 蹂듭썝 泥댄겕?ъ씤??
UI ?붿옄???€洹쒕え 由ы뙥?좊쭅 ???꾪뿕 ?묒뾽 ??湲곕줉???덉쟾 蹂듭썝 吏€?먯엯?덈떎.
| ?좎쭨 | 而ㅻ컠 ?댁떆 | ?ㅻ챸 | 蹂듭썝 紐낅졊 |
|------|-----------|------|-----------|
| 2026-04-13 | `4d1d160` | UI ?붿옄??媛쒖꽑 吏곸쟾 ???뚮쭏 援먯젙, IBM 吏꾨떒 濡쒓퉭, 酉곗뼱 紐낆묶 蹂€寃??꾨즺 (704 tests pass) | `git checkout 4d1d160 -- src/AxCopilot/` |
> **?꾩껜 濡ㅻ갚**: `git revert <而ㅻ컠>` ?먮뒗 `git reset --hard 4d1d160` (二쇱쓽: ?댄썑 ?묒뾽 紐⑤몢 ?뚯떎)
> **遺€遺?蹂듭썝**: `git checkout 4d1d160 -- <?뚯씪寃쎈줈>` 濡??뱀젙 ?뚯씪留??섎룎由ш린
---
## 16. 愿€??臾몄꽌
| 臾몄꽌 | ?댁슜 |
|------|------|
| `docs/AGENT_ROADMAP.md` | ?먯씠?꾪듃 湲곕뒫 濡쒕뱶留?(吏€?ν삎 怨좊룄??P1~P7 ?곸꽭 ?ы븿) |
| `docs/LAUNCHER_ROADMAP.md` | ?곗쿂 湲곕뒫 濡쒕뱶留?|
| `docs/OPENCODE_PARITY_PLAN.md` | OpenCode 湲곕뒫 ?€??怨꾪쉷 |
| `docs/TOOL_PARITY_REPORT.md` | ?꾧뎄 ?명솚??由ы룷??|
| `docs/AX_AGENT_UI_CHECKLIST.md` | ?먯씠?꾪듃 UI 泥댄겕由ъ뒪??|
| `docs/UI_UX_CHECKLIST.md` | UI/UX 泥댄겕由ъ뒪??|
> ?낅뜲?댄듃: 2026-04-14 18:08 (KST)
> - ?ㅽ궗 ?쒖뒪??Phase 2 1~6踰덉쓣 諛섏쁺?덉뒿?덈떎. `SkillService`???꾨줈?앺듃 `.claude/skills` ?ш? 濡쒕뱶, namespaced `SKILL.md`, 踰덈뱾 ?ㅽ궗 二쇱엯, `$ARGUMENTS`/named args/?ㅽ궗 ?대뜑 蹂€??移섑솚, inline shell block ?ㅽ뻾源뚯? 吏€?먰븯?꾨줉 ?뺤옣?덉뒿?덈떎.
> - `ChatWindow` ?고???寃쎈줈???④퍡 ?뺣━?덉뒿?덈떎. ?щ옒???몄텧?€ `BuildSlashInvocationAsync`瑜??듯빐 而댄뙆?쇰맂 ?ㅽ궗 ?꾨\?꾪듃瑜??ъ슜?섍퀬, ?쇰컲 ?€?붾뒗 `when_to_use`/`paths`/`user-invocable` 硫뷀??곗씠?곕? 諛뷀깢?쇰줈 ?좏깮???먮룞 ?ㅽ궗 媛€?대뱶瑜?蹂댁“ ?쒖뒪???꾨\?꾪듃濡?遺숈엯?덈떎.
> - ?ㅼ젙/UI ?곌껐?????ㅽ궗 紐⑤뜽 湲곗??쇰줈 留욎톬?듬땲?? Agent ?ㅼ젙, ?쇰컲 ?ㅼ젙, ?ㅻ쾭?덉씠, ?ㅽ궗 愿€由ъ옄 ?꾧뎄??踰덈뱾/?꾨줈?앺듃/?ъ슜???ㅽ궗 遺꾨쪟?€ ?꾨줈?앺듃 `.claude/skills` 寃쎈줈瑜?諛섏쁺???ㅻ챸怨?由ъ뒪?몃? 援ъ꽦?⑸땲??
> - ?꾧뎄 ?몄텧 ?④퀎??`AgentLoopService.GetRuntimeActiveTools()`?먯꽌 blanket deny 沅뚰븳??癒쇱? ?곸슜?섎룄濡?蹂닿컯?덉뒿?덈떎. ?⑦꽩 湲곕컲 洹쒖튃?€ call-time 寃€?щ? ?좎??섍퀬, ?⑥닚 deny ?꾧뎄??紐⑤뜽 ?몄텧 ???꾪꽣留곸쑝濡??뺣━?덉뒿?덈떎.
> - 寃€利? `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_phase2\\ -p:IntermediateOutputPath=obj\\verify_phase2\\` 寃쎄퀬 0 / ?ㅻ쪟 0
> - 寃€利? `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AgentToolCatalogTests|SkillServiceRuntimePolicyTests" -p:OutputPath=bin\\verify_phase2_tests\\ -p:IntermediateOutputPath=obj\\verify_phase2_tests\\` ?듦낵 16
> - 李멸퀬: ?뚯뒪???꾨줈?앺듃??湲곗〈 nullable 寃쎄퀬 `src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs(76)` 1嫄댁? ?좎??⑸땲??
> ?낅뜲?댄듃: 2026-04-14 18:22 (KST)
> - ?ㅽ궗 ?뚯뒪 ?뺤옣 Phase 3??諛섏쁺?덉뒿?덈떎. `SkillService`???곸쐞 ?붾젆?곕━源뚯? ?ы븿???꾨줈?앺듃 `.claude/skills` ?먯깋, ?뚮윭洹몄씤 ?ㅽ궗 ?대뜑 ?먯깋, 異붽? 怨듭슜 ?대뜑 紐⑸줉, `.claude/commands` markdown command瑜?legacy skill濡?蹂€?섑븯??寃쎈줈瑜??④퍡 吏€?먰빀?덈떎.
> - ?뚯씪???ㅽ궗?€ body瑜?利됱떆 硫붾え由ъ뿉 ?щ━吏€ ?딄퀬 ?꾩슂 ?쒖젏?먮쭔 ?쎈뒗 lazy prompt body 罹먯떆瑜?異붽??덉뒿?덈떎. `SkillManagerTool`, `SkillEditorWindow`, `SkillGalleryWindow`????寃쎈줈瑜??듯빐 ?ㅼ젣 蹂몃Ц???쒖떆?⑸땲??
> - ?몄옄 紐⑤뜽???뺤옣?덉뒿?덈떎. `arguments`?€ `argument-hint`瑜??④퍡 ?댁꽍??named placeholder 移섑솚??媛뺥솕?덇퀬, ?몄옄媛€ 遺€議깊븯硫?usage 媛€?대뱶瑜??꾨\?꾪듃 ?욎뿉 遺숈뿬 ?ㅽ뻾 ?덉쭏??蹂댁셿?⑸땲??
> - ?꾧뎄 deny ?꾪꽣??`AgentToolCatalog` 怨듯넻 硫붿꽌?쒕줈 ?대룞???고??꾧낵 ?ㅼ젙 UI媛€ 媛숈? blanket deny 洹쒖튃??怨듭쑀?섎룄濡??뺣━?덉뒿?덈떎.
> - ?ㅼ젙 ?€?μ뿉??`additionalSkillFolders`瑜?異붽??덇퀬, ?쇰컲 ?ㅼ젙/AX Agent ?ㅼ젙 UI??以??⑥쐞 ?낅젰 ?꾨뱶瑜??l뼱 ?щ윭 怨듭슜 ?ㅽ궗 ?대뜑瑜??곌껐?????덇쾶 ?덉뒿?덈떎.
> - 寃€利? `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_phase3\\ -p:IntermediateOutputPath=obj\\verify_phase3\\` 寃쎄퀬 0 / ?ㅻ쪟 0
> - 寃€利? `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AgentToolCatalogTests|SkillServiceRuntimePolicyTests" -p:OutputPath=bin\\verify_phase3_tests\\ -p:IntermediateOutputPath=obj\\verify_phase3_tests\\` ?듦낵 18
> - 李멸퀬: ?뚯뒪???꾨줈?앺듃??湲곗〈 nullable 寃쎄퀬 `src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs(76)` 1嫄댁? ?좎??⑸땲??
> ?낅뜲?댄듃: 2026-04-14 18:33 (KST)
> - ?ㅽ궗 ?뺤콉 ?쒖뼱瑜?異붽??덉뒿?덈떎. `LlmSettings`??`enableProjectSkillDiscovery`, `enablePluginSkillDiscovery`, `enableLegacyCommandSkills`, `enableSkillInlineShell`, `skillInlineShellTimeoutSeconds`, `skillInlineShellMaxOutputChars`瑜?異붽??섍퀬 ?쇰컲 ?ㅼ젙/AX Agent ?ㅼ젙 UI???곌껐?덉뒿?덈떎.
> - ?ㅽ궗 濡쒕뱶 ?쒓렇?덉쿂???댁젣 ?뚯뒪 ?붾젆?곕━ 紐⑸줉肉??꾨땲???ㅼ젣 ?ㅽ궗 ?뚯씪 ?섏? 理쒓렐 ?섏젙 ?쒓컖???④퍡 諛섏쁺?⑸땲?? 媛숈? ?대뜑 援ъ꽦?대씪???뚯씪 ?댁슜??諛붾€뚮㈃ ?ㅼ쓬 濡쒕뱶 ?붿껌?먯꽌 ?ы깘?됰맗?덈떎.
> - inline shell ?ㅽ뻾湲곕뒗 ?ㅼ젙 湲곕컲 鍮꾪솢?깊솕, timeout, 異쒕젰 湲몄씠 ?쒗븳???곸슜?섎룄濡?蹂닿컯?덉뒿?덈떎. 鍮꾪솢???곹깭???쒓컙 珥덇낵???꾨\?꾪듃 ?덉뿉???앸퀎 媛€?ν븳 ?덈궡 臾몄옄?대줈 諛섑솚?⑸땲??
> - `SkillEditorWindow`?€ `SkillGalleryWindow`??lazy prompt body 寃쎈줈瑜??ъ슜?섎룄濡?留욎톬怨? ?ㅼ젙 蹂€寃???`ReloadFromCurrentSettings()`瑜??듯빐 ?꾩옱 ?ㅽ궗 ?뚯뒪瑜??ㅼ떆 ?쎈룄濡??뺣━?덉뒿?덈떎.
> - 寃€利? `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_phase4b\\ -p:IntermediateOutputPath=obj\\verify_phase4b\\` 寃쎄퀬 0 / ?ㅻ쪟 0
> - 寃€利? `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AgentToolCatalogTests|SkillServiceRuntimePolicyTests" -p:OutputPath=bin\\verify_phase4b_tests\\ -p:IntermediateOutputPath=obj\\verify_phase4b_tests\\` ?듦낵 18
> - 李멸퀬: ?뚯뒪???꾨줈?앺듃??湲곗〈 nullable 寃쎄퀬 `src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs(76)` 1嫄댁? ?좎??⑸땲??
- ?낅뜲?댄듃: 2026-04-14 18:37 (KST)
- claude-code 濡쒖뺄 ?ㅻ깄?룹쓣 ?ㅼ떆 ?뺤씤?덉?留? ?꾩옱 ?ㅻ깄?룹뿉??PPT/臾몄꽌 ?꾩슜 踰덈뱾 ?ㅽ궗???쒕졆?섏? ?딆븯?듬땲?? ?€??AX媛€ 湲곕낯 ?ы븿?섍퀬 ?덈뒗 臾몄꽌??managed skill ?명듃瑜?以묒떖?쇰줈 諛고룷 ?먯궛 ?덉쭏???ㅻ벉?덉뒿?덈떎.
- pptx-creator, docx-creator, report-writer, prd-generator, meeting-minutes, weekly-report, markdown-to-doc??when_to_use?€ argument-hint 硫뷀?瑜?異붽???proactive skill ?좏깮怨??щ옒???몄텧 媛€?대뱶瑜?蹂닿컯?덉뒿?덈떎.
- ?쇰컲 ?ㅼ젙怨?AX Agent ?ㅼ젙???ㅽ궗 紐⑸줉?€ managed ?ㅼ퐫?꾨? 蹂꾨룄 湲곕낯 ?쒓났 ?ㅽ궗 洹몃9?쇰줈 遺꾨━?덇퀬, ?ㅽ궗 媛ㅻ윭由щ룄 湲곕낯 ?쒓났 / ?꾨줈?앺듃 / ?뚮윭洹몄씤 / ?ъ슜??/ 怨좉툒 ?꾪꽣?€ 諛곗?瑜??ъ슜?섎룄濡??뺣━?덉뒿?덈떎.
- ??蹂€寃쎌쑝濡?臾몄꽌쨌?꾨젅?좏뀒?댁뀡 ?ㅽ궗?€ 鍮뚮뱶 異쒕젰 skills ?대뜑瑜??듯빐 湲곕낯 諛고룷?섎㈃?쒕룄, UI?먯꽌 ?ъ슜???ㅽ궗怨?援щ텇???곹깭濡??뺤씤?????덉뒿?덈떎.
- 寃€利? dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_docskills\\ -p:IntermediateOutputPath=obj\\verify_docskills\\ 寃쎄퀬 0 / ?ㅻ쪟 0
- ?낅뜲?댄듃: 2026-04-14 18:45 (KST)
- AX Agent ?대? ?ㅼ젙???ㅽ궗 ???덈궡 釉붾줉??而ㅼ뒪?€ ?쇰꺼??異붽??덉뒿?덈떎. ?댁젣 .claude/skills/.../SKILL.md ?꾨줈?앺듃 ?명솚 寃쎈줈媛€ ?ㅽ궗 ??泥??붾㈃?먯꽌 諛붾줈 蹂댁뿬, ?뚰겕?ㅽ럹?댁뒪??媛숈? 援ъ“媛€ ?덉쑝硫?AX媛€ ?④퍡 ?쎈뒗?ㅻ뒗 ?먯쓣 UI?먯꽌???뺤씤?????덉뒿?덈떎.
- 寃€利? dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_skilllabel\\ -p:IntermediateOutputPath=obj\\verify_skilllabel\\ 寃쎄퀬 0 / ?ㅻ쪟 0
- ?낅뜲?댄듃: 2026-04-14 19:02 (KST)
- 肄붿썙??肄붾뱶???묒뾽 ?대뜑 ?좏깮 ??UI媛€ 2~3珥?硫덉텛???먮쫫???먭??? ?대뜑 蹂€寃?吏곹썑 ?ㅽ뻾?섎뜕 ?ㅽ궗 ?뚯뒪 ?ы깘?됱쓣 UI ?ㅻ젅??諛뽰쑝濡?遺꾨━?덉뒿?덈떎. ?댁젣 ?묒뾽 ?대뜑 蹂€寃? ???꾪솚, ?€??蹂듭썝 ???꾩슂???ㅽ궗 ?щ줈?쒕뒗 諛깃렇?쇱슫?쒖뿉???섑뻾?섍퀬, 議곌굔遺€ ?ㅽ궗 ?쒖꽦?붾쭔 UI???ㅼ떆 諛섏쁺?⑸땲??
- 泥⑤? ?뚯씪 異붽?/?쒓굅泥섎읆 ?묒뾽 ?대뜑媛€ 諛붾€뚯? ?딅뒗 寃쎈줈??湲곗〈 ?ㅽ궗 吏묓빀留?湲곗??쇰줈 議곌굔遺€ ?ㅽ궗??媛깆떊?섎룄濡?遺꾨━??遺덊븘?뷀븳 ?ы깘?됰룄 以꾩??듬땲??
- 寃€利? dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_folderpick\\ -p:IntermediateOutputPath=obj\\verify_folderpick\\ 寃쎄퀬 0 / ?ㅻ쪟 0
- ?낅뜲?댄듃: 2026-04-14 19:16 (KST)
- 遺꾩꽍??濡쒓렇 ?€??諛⑹떇??濡ㅻ쭅 ?뺥깭濡??뺣━?덉뒿?덈떎. app, perf, audit, workflow 濡쒓렇???좎쭨蹂??뚯씪???좎??섎릺 媛??뚯씪??理쒕? 1MB瑜??섏? ?딅룄濡??ㅻ옒???댁슜遺€??諛€?대궡硫???濡쒓렇瑜??댁뼱 遺숈엯?덈떎.
- 怨듯넻 ?좏떥 RollingTextLogStore瑜?異붽??섍퀬 LogService, AgentPerformanceLogService, AuditLogService, WorkflowLogService???④퍡 ?곸슜?덉뒿?덈떎.
- 怨듯넻 濡쒓렇/?깅뒫 濡쒓렇/媛먯궗 濡쒓렇??14?쇨퉴吏€留??좎??섍퀬, ?뚰겕?뚮줈???곸꽭 濡쒓렇??湲곗〈 ?ㅼ젙媛믪쓣 ?곕Ⅴ??理쒕? 14?쇱쓣 ?섏? ?딅룄濡?App ?쒖옉 ???곹븳???곸슜?덉뒿?덈떎.
- RollingTextLogStoreTests 3嫄댁쓣 異붽????뚯씪 ?ш린 ?곹븳 ?좎?, ?ㅻ옒???뚯씪 ??젣, ?좎쭨 ?붾젆?곕━ ??젣 ?숈옉??寃€利앺뻽?듬땲??
- 寃€利? dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_logroll\\ -p:IntermediateOutputPath=obj\\verify_logroll\\ 寃쎄퀬 0 / ?ㅻ쪟 0
- 寃€利? dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter RollingTextLogStoreTests -p:OutputPath=bin\\verify_logroll_tests\\ -p:IntermediateOutputPath=obj\\verify_logroll_tests\\ ?듦낵 3
- 李멸퀬: ?뚯뒪???꾨줈?앺듃??湲곗〈 nullable 寃쎄퀬 src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs(76) 1嫄댁? ?좎??⑸땲??
업데이트: 2026-04-14 21:00 (KST)
- Word/Excel/HTML 문서 생성 고도화 1차를 반영했습니다. `DocumentPlannerTool`은 제안서/보고서/분석 문서를 `Executive Summary`, `Business Case`, `Decision Ask`, `Appendix`까지 포함한 업무형 아웃라인으로 확장합니다.
- `DocumentAssemblerTool`은 DOCX 조립 시 HTML/Markdown 구조를 더 보존하도록 손봤습니다. 표, 목록, 콜아웃, 소제목을 평문으로만 밀어버리지 않고 Word 블록으로 다시 조립합니다.
- `ExcelSkill`에 `summary_sheet`를 추가해 KPI/핵심 인사이트/후속 과제를 담은 요약 시트를 상세 데이터 시트 앞에 함께 생성할 수 있게 했습니다.
- `HtmlSkill`은 `comparison`, `roadmap`, `matrix` 구조화 섹션을 지원하고, 함수 스키마의 `body` 필수 조건을 완화해 `sections` 중심 호출도 자연스럽게 받도록 정리했습니다.
- `docx-creator.skill.md`, `csv-to-xlsx.skill.md`, `markdown-to-doc.skill.md`, `report-writer.skill.md`는 Python 우회 경로보다 AX 네이티브 문서 도구를 우선 사용하도록 재작성했습니다.
- 테스트: `DocumentAssemblerSemanticTests`, `ExcelSkillSummarySheetTests`, `HtmlSkillConsultingSectionsTests`, `DocumentPlannerBusinessDocumentTests` 추가
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_phase1\\ -p:IntermediateOutputPath=obj\\verify_doc_phase1\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "DocumentAssemblerSemanticTests|ExcelSkillSummarySheetTests|HtmlSkillConsultingSectionsTests|DocumentPlannerBusinessDocumentTests|DocumentPlannerPresentationTests" -p:OutputPath=bin\\verify_doc_phase1_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_phase1_tests\\` 통과 5
업데이트: 2026-04-14 21:50 (KST)
- PPT 생성 고도화 3차를 반영했습니다. `DeckPlanningService`를 추가해 deck brief 정규화, consulting storyline 보강, 누락된 `Executive Summary`/`Recommendation`/`Roadmap`/`Appendix` 자동 삽입, 레이아웃 alias 정규화를 내부 파이프라인으로 처리합니다.
- `DeckQualityReviewService`를 추가해 deck-level 품질 점수와 경고를 계산합니다. 템플릿 사용 여부, 레이아웃 다양성, executive summary/recommendation 유무, 텍스트 과밀, 근거 슬라이드 부족, placeholder 잔존을 함께 점검합니다.
- `PptxSkill`은 `audience`, `objective`, `decision_ask`, `storyline` 파라미터를 추가했고, `issue_tree`, `before_after`, `decision_matrix`, `risk_heatmap`, `benefit_waterfall`, `operating_model`, `appendix_evidence` 같은 상위 deck 레이아웃을 네이티브 슬라이드 타입으로 자동 정규화해 렌더링 전에 보정합니다.
- 결과 메시지도 고도화했습니다. `pptx_create` 실행 후 파일 경로만 반환하던 흐름에서, 이제 planning summary와 deck quality summary를 함께 반환해 모델과 사용자가 결과물 완성도를 바로 확인할 수 있습니다.
- `pptx-creator.skill.md`를 deck planning 중심으로 재작성했고, `strategy-deck`, `board-update`, `pmo-steering`, `sales-review-deck`, `operating-model-deck` 번들 스킬을 추가해 목적형 deck 생성 진입점을 늘렸습니다.
- 테스트로 `DeckPlanningServiceTests`, `DeckQualityReviewServiceTests`, `PptxSkillAutoRepairTests`를 추가했고, 기존 `PptxSkillConsultingDeckTests`와 함께 검증했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_ppt_phase3\\ -p:IntermediateOutputPath=obj\\verify_ppt_phase3\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "DeckPlanningServiceTests|DeckQualityReviewServiceTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests" -p:OutputPath=bin\\verify_ppt_phase3_tests\\ -p:IntermediateOutputPath=obj\\verify_ppt_phase3_tests\\` 통과 5
업데이트: 2026-04-14 22:14 (KST)
- 문서 planner/assembler 고도화 2차를 반영했습니다. [DocumentPlannerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentPlannerTool.cs)는 `format: xlsx`를 지원하고, 분석/제안 시나리오에서 `summary_sheet + sheets` 구조의 `excel_create` scaffold를 직접 생성합니다.
- 같은 파일의 포맷 해석 로직은 `xlsx`, `excel`, `workbook`, `tracker`, `dashboard`, `scorecard` 계열 의도를 먼저 감지해 워크북 경로로 보내도록 보강했습니다.
- [DocumentAssemblerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentAssemblerTool.cs)는 DOCX 조립 시 `cover_subtitle`, `toc`, `header`, `footer`를 실제 OpenXML 문서에 반영하고, 구조화 HTML을 Word 블록으로 조립한 뒤 품질 리뷰 점수를 함께 반환합니다.
- 같은 도구의 HTML 조립 경로도 공통 [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)와 연결해 score/strengths/issues 기준의 요약을 돌려주도록 정리했습니다.
- [kpi-workbook.skill.md](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/skills/kpi-workbook.skill.md)는 complex workbook 생성 시 planner 경로를 열기 위해 `document_plan`을 허용 도구에 추가했습니다.
- 테스트로 [DocumentPlannerWorkbookScaffoldTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DocumentPlannerWorkbookScaffoldTests.cs), [DocumentAssemblerDocxFeaturesTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DocumentAssemblerDocxFeaturesTests.cs)를 추가했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_planning2\\ -p:IntermediateOutputPath=obj\\verify_doc_planning2\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "DocumentPlannerWorkbookScaffoldTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|DocumentPlannerBusinessDocumentTests|ExcelSkillExecutiveSummaryLinkTests|HtmlSkillConsultingSectionsTests|DocxSkillTemplateFeaturesTests" -p:OutputPath=bin\\verify_doc_planning_tests3\\ -p:IntermediateOutputPath=obj\\verify_doc_planning_tests3\\` 통과 7
업데이트: 2026-04-14 22:28 (KST)
- 문서 포맷 고도화 3차를 반영했습니다. [DocumentAssemblerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentAssemblerTool.cs)는 DOCX 조립 시 `template_path`와 `page_numbers`를 지원해 사내 템플릿 복제 후 커버, 목차, 머리글, 바닥글, 페이지 번호를 함께 적용할 수 있게 했습니다.
- 같은 도구의 DOCX 경로는 템플릿 상속 여부를 [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 구조화 문서 리뷰 입력으로 전달해 템플릿 기반 산출물 강점까지 품질 요약에 반영합니다.
- [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs)는 `data_validations`를 지원하도록 확장했습니다. 단일 시트, summary sheet 포함 워크북, 멀티 시트 워크북 모두에서 OpenXML `DataValidation` 규칙을 생성하고 워크북 품질 리뷰에 검증 규칙 수를 포함합니다.
- [HtmlSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/HtmlSkill.cs)는 `decision_summary`, `evidence_cards` 섹션을 지원해 경영 보고형 HTML에서 의사결정 요약과 근거 카드 묶음을 구조화 블록으로 렌더링합니다.
- [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 HTML 리뷰는 새 블록을 인식해 comparison, roadmap, matrix 외에 decision/evidence 구조도 강점으로 점수화하도록 보강했습니다.
- 테스트로 [ExcelSkillDataValidationTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ExcelSkillDataValidationTests.cs)를 추가했고, [DocumentAssemblerDocxFeaturesTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DocumentAssemblerDocxFeaturesTests.cs), [HtmlSkillConsultingSectionsTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/HtmlSkillConsultingSectionsTests.cs)를 확장해 DOCX 템플릿/페이지 번호와 HTML decision/evidence 블록을 회귀 검증했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_phase_next\\ -p:IntermediateOutputPath=obj\\verify_doc_phase_next\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|DocumentPlannerWorkbookScaffoldTests|ExcelSkillExecutiveSummaryLinkTests|ExcelSkillSummarySheetTests|ExcelSkillDataValidationTests|HtmlSkillConsultingSectionsTests|DocxSkillTemplateFeaturesTests|DocumentPlannerBusinessDocumentTests" -p:OutputPath=bin\\verify_doc_phase_next_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_phase_next_tests\\` 통과 9
업데이트: 2026-04-14 23:05 (KST)
- 문서 고도화 다음 단계를 반영했습니다. [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs)는 `summary_sheet`에 `decision_summary`, `scorecards`, `sheet_summaries`를 추가로 받을 수 있게 확장됐고, executive summary sheet에서 의사결정 요청, 핵심 scorecard, 상세 시트별 상태를 순서대로 렌더링합니다.
- 워크북 품질 리뷰 입력도 같은 구조를 인식하도록 [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 `WorkbookReviewInput`과 `ReviewWorkbook()`를 확장했습니다. 이제 summary sheet가 KPI/decision/detail summary를 충분히 담고 있는지 강점과 보완 포인트로 함께 표시합니다.
- [DocumentAssemblerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentAssemblerTool.cs)는 `style_map` 파라미터를 받아 template-based DOCX assembly에서 `title`, `heading1`, `heading2`, `body` 문단 스타일을 실제 Word 문단에 매핑합니다. cover title, 섹션 헤딩, 본문 문단이 사내 템플릿 스타일을 더 자연스럽게 따라가도록 정리했습니다.
- 새 회귀 테스트 [ExcelSkillDashboardSummaryTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ExcelSkillDashboardSummaryTests.cs), [DocumentAssemblerStyleMapTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DocumentAssemblerStyleMapTests.cs)를 추가했고, [ArtifactQualityReviewServiceTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ArtifactQualityReviewServiceTests.cs)도 새 record 시그니처에 맞춰 갱신했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next2\\ -p:IntermediateOutputPath=obj\\verify_doc_next2\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|DocumentAssemblerStyleMapTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|ExcelSkillDashboardSummaryTests|ExcelSkillSummarySheetTests|ExcelSkillExecutiveSummaryLinkTests|ExcelSkillDataValidationTests|ExcelSkillConditionalFormattingTests" -p:OutputPath=bin\\verify_doc_next2_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next2_tests\\` 통과 11
업데이트: 2026-04-14 23:15 (KST)
- [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs)는 `summary_sheet.trend_series`를 새로 지원합니다. summary sheet에서 `Trend Dashboard` 섹션을 추가로 만들고 `label/current/target/delta/status`를 열 기반으로 렌더링해 workbook summary가 KPI 표 수준을 넘어 상태 대시보드 역할까지 하도록 확장했습니다.
- 같은 파일의 workbook review 입력 계산은 `trend_series`도 summary quality 강점으로 인정하도록 업데이트했습니다. [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)는 workbook summary가 KPI/decision/highlight 없이 끝나는 경우 보완 포인트를 추가로 반환합니다.
- [HtmlSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/HtmlSkill.cs)는 `print=true`에서 명시적 `print_header`/`print_footer`가 없는 경우 기본 frame(`title`, `date | AX Copilot`)을 자동 생성합니다. print-ready HTML이 최소 배포형 header/footer를 갖도록 내부 기본값을 넣은 것입니다.
- [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 HTML 리뷰는 print-ready 문서에 frame이 없거나, decision/evidence block이 부족하거나, 장문 보고서인데 cover가 없는 경우를 추가로 경고합니다.
- [DeckPlanningService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DeckPlanningService.cs)는 `comparison`, `roadmap`, `executive_summary`, `kpi_dashboard` 슬라이드의 최소 구조를 자동 보정하고, 긴 headline은 내부 기준 길이로 압축합니다.
- [DeckQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DeckQualityReviewService.cs)는 slide-level quality gate를 추가해 긴 headline, 과밀 슬라이드, 옵션 부족, 표/차트 데이터 누락을 `Slide N:` 경고로 품질 요약에 포함합니다.
- 테스트로 [ExcelSkillDashboardSummaryTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ExcelSkillDashboardSummaryTests.cs), [HtmlSkillPrintFrameTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/HtmlSkillPrintFrameTests.cs), [DeckQualityReviewServiceTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DeckQualityReviewServiceTests.cs)를 확장했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next3\\ -p:IntermediateOutputPath=obj\\verify_doc_next3\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "DeckQualityReviewServiceTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests|ExcelSkillDashboardSummaryTests|ExcelSkillSummarySheetTests|HtmlSkillPrintFrameTests|HtmlSkillConsultingSectionsTests|ArtifactQualityReviewServiceTests" -p:OutputPath=bin\\verify_doc_next3_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next3_tests\\` 통과 13
업데이트: 2026-04-14 23:25 (KST)
- [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs)는 `summary_sheet.dashboard_sheet_name`과 `trend_series`를 바탕으로 별도 `Dashboard` worksheet를 생성합니다. summary sheet에서 decision summary, scorecards, trend dashboard, detail sheet links를 요약하고, dashboard sheet에서는 이를 한 장의 workbook dashboard로 다시 정리해 summary-only workbook보다 분석/보고 밀도를 높입니다.
- 같은 파일의 single-sheet / multi-sheet workbook 생성 경로는 dashboard sheet가 있으면 시트 순서를 `Summary -> Dashboard -> Detail...`로 정렬하고, summary hyperlink 수와 total sheet count를 품질 리뷰 입력에 정확히 전달합니다.
- [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 `WorkbookReviewInput`은 `HasDashboardSheet`를 새로 받습니다. dashboard가 있는 workbook은 강점으로 계산하고, detail sheet가 여러 장인데 dashboard가 없는 경우는 보완 포인트로 돌려줍니다.
- [DocumentAssemblerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentAssemblerTool.cs)는 `style_map` 지원 범위를 `cover_subtitle`, `callout`, `table_header`까지 넓혔습니다. cover subtitle 문단, 강조 블록 paragraph, 표 header cell paragraph가 사내 DOCX 템플릿 스타일을 실제로 타도록 조립 경로를 연결했습니다.
- [DocumentAssemblerStyleMapTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DocumentAssemblerStyleMapTests.cs)는 title/heading/body뿐 아니라 subtitle/callout/table header 스타일까지 회귀 검증하도록 보강했습니다.
- [PptxSkillGoldenDeckTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/PptxSkillGoldenDeckTests.cs)를 추가해 strong board deck이 `PPT quality` 요약을 안정적으로 반환하고 불필요한 `Slide alerts` 없이 통과하는지 golden regression으로 고정했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next4\\ -p:IntermediateOutputPath=obj\\verify_doc_next4\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|DocumentAssemblerStyleMapTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|ExcelSkillDashboardSummaryTests|ExcelSkillSummarySheetTests|ExcelSkillExecutiveSummaryLinkTests|ExcelSkillDataValidationTests|ExcelSkillConditionalFormattingTests|HtmlSkillPrintFrameTests|HtmlSkillConsultingSectionsTests|DeckQualityReviewServiceTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests|PptxSkillGoldenDeckTests" -p:OutputPath=bin\\verify_doc_next4_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next4_tests\\` 통과 20
업데이트: 2026-04-14 23:32 (KST)
- [HtmlSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/HtmlSkill.cs)는 `board_report`, `strategy_brief` 구조화 섹션 타입을 추가했습니다. board report는 decision ask, recommendation, rationale, metrics, risks, next steps를 board-ready 패널로 렌더링하고, strategy brief는 strategic question, core thesis, implications, decisions를 전략 요약 패널로 렌더링합니다.
- [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 HTML 리뷰는 `board-report-panel`, `strategy-brief-panel`을 새 강점으로 인식합니다. 반대로 board report인데 evidence/table이 없거나 strategy brief인데 comparison/roadmap이 없을 때는 추가 보완 포인트를 반환하도록 규칙을 보강했습니다.
- [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs)의 `WriteDashboardSheet()`는 dashboard sheet에 `kpis`, `highlights`, `actions`까지 함께 표시하도록 확장됐습니다. summary sheet와 dashboard sheet가 서로 같은 정보를 단순 중복하는 대신, executive dashboard 성격을 더 분명히 갖도록 정리한 변경입니다.
- [PptxSkillGoldenDeckTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/PptxSkillGoldenDeckTests.cs)는 board deck 외에 strategy deck golden fixture를 추가했습니다. `storyline`, `decision_ask`, recommendation headline 길이까지 품질 게이트 기준에 맞는 strong strategy deck을 회귀 샘플로 고정했습니다.
- 테스트로 [HtmlSkillConsultingSectionsTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/HtmlSkillConsultingSectionsTests.cs), [ExcelSkillDashboardSummaryTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ExcelSkillDashboardSummaryTests.cs), [ArtifactQualityReviewServiceTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ArtifactQualityReviewServiceTests.cs), [PptxSkillGoldenDeckTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/PptxSkillGoldenDeckTests.cs)를 확장했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next5\\ -p:IntermediateOutputPath=obj\\verify_doc_next5\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|ExcelSkillDashboardSummaryTests|HtmlSkillConsultingSectionsTests|HtmlSkillPrintFrameTests|DeckQualityReviewServiceTests|PptxSkillGoldenDeckTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests" -p:OutputPath=bin\\verify_doc_next5_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next5_tests\\` 통과 14
업데이트: 2026-04-14 23:58 (KST)
- [ArtifactRepairGuideService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactRepairGuideService.cs)를 추가했습니다. 이 서비스는 [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)가 반환한 HTML/XLSX/DOCX 품질 이슈를 읽어 `Repair guide:` 형태의 바로 실행 가능한 개선 가이드로 바꿉니다.
- [HtmlSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/HtmlSkill.cs), [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs), [DocumentAssemblerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentAssemblerTool.cs)는 이제 품질 점수 요약 뒤에 repair guide를 함께 반환합니다. 출력만 보는 사용자도 “무엇을 더 보완해야 하는지”를 바로 이해할 수 있게 정리한 변경입니다.
- [ExcelSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ExcelSkill.cs)는 `dashboard_tiles`, `variance_series`를 추가 지원합니다. `WriteDashboardSheet()` 경로는 decision summary, scorecards, KPI, trend dashboard, detail summaries 외에 dashboard tiles와 variance overview까지 함께 렌더링해 운영 리뷰형 workbook archetype을 더 명확히 만들었습니다.
- workbook 리뷰 강점 계산도 같이 넓혔습니다. [ArtifactQualityReviewService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ArtifactQualityReviewService.cs)의 summary/dashboard 신호 판정은 `dashboard_tiles`, `variance_series`가 들어온 workbook도 richer dashboard로 인식합니다.
- 목적형 번들 스킬을 추가했습니다. [strategy-brief-html.skill.md](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/skills/strategy-brief-html.skill.md)는 전략 브리프 HTML 생성용 진입점을 제공하고, [operating-review-xlsx.skill.md](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/skills/operating-review-xlsx.skill.md)는 Summary/Dashboard/Detail 구조의 운영 리뷰 workbook 생성 경로를 제공합니다.
- 테스트로 [ArtifactRepairGuideServiceTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ArtifactRepairGuideServiceTests.cs)를 추가했고, [ExcelSkillDashboardSummaryTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/ExcelSkillDashboardSummaryTests.cs), [HtmlSkillConsultingSectionsTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/HtmlSkillConsultingSectionsTests.cs)를 확장해 archetype과 repair guide를 함께 회귀 검증했습니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next6\\ -p:IntermediateOutputPath=obj\\verify_doc_next6\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|ArtifactRepairGuideServiceTests|ExcelSkillDashboardSummaryTests|HtmlSkillConsultingSectionsTests|HtmlSkillPrintFrameTests|DocumentAssemblerStyleMapTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|PptxSkillGoldenDeckTests|DeckQualityReviewServiceTests" -p:OutputPath=bin\\verify_doc_next6_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next6_tests\\` 통과 17
업데이트: 2026-04-15 00:19 (KST)
- `AgentCommandQueue`를 `Prompt/Notification` 2종에서 `Steering`, `PermissionContinuation`, `Resume`, `UserDecision`까지 포함하는 통합 큐로 확장했습니다. [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs)는 이를 `queued_steering`, `queue_permission_continuation`, `queue_resume` 메타 메시지로 주입해 실행 중 추가 입력과 승인 후 재개 문맥을 더 안정적으로 반영합니다.
- 코드 탭 언어 지원 카탈로그를 확장했습니다. [CodeLanguageCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/CodeLanguageCatalog.cs)는 `Go`, `Rust`, `PHP`, `Ruby`, `Kotlin`, `Swift`를 LSP 심화 지원군으로 승격했고, [LspClientService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/LspClientService.cs)는 `gopls`, `rust-analyzer`, `intelephense`, `solargraph`, `kotlin-language-server`, `sourcekit-lsp`를 로컬 설치 서버 기준으로 탐지합니다.
- 내부 설정의 코드 탭 설명을 더 명시적으로 정리했습니다. [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs)는 `빠른 선택 언어`, `지원 언어(LSP)`, `코드 탭 기본 지원`을 나눠 보여주도록 보강했습니다.
- 워크스페이스 컨텍스트 생성기를 강화했습니다. [WorkspaceContextGenerator.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/WorkspaceContextGenerator.cs)는 `Language Snapshot`, `Agent Context`, `Key Manifests` 섹션을 추가하고 `.claude/skills`, `.ax/rules`, `AXMEMORY.md`, 주요 manifest 파일을 함께 요약합니다.
- PPT 품질 보정 가이드도 추가했습니다. [DeckRepairGuideService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DeckRepairGuideService.cs)는 deck 품질 이슈를 바로 실행 가능한 개선 문장으로 바꾸고, [PptxSkill.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PptxSkill.cs)는 `Deck repair guide:`를 품질 요약과 함께 반환합니다.
- 테스트: [AgentCommandQueueTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/AgentCommandQueueTests.cs), [CodeLanguageCatalogTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/CodeLanguageCatalogTests.cs), [WorkspaceContextGeneratorTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs), [DeckRepairGuideServiceTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/DeckRepairGuideServiceTests.cs), [PptxSkillConsultingDeckTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/PptxSkillConsultingDeckTests.cs)
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_master_batch\\ -p:IntermediateOutputPath=obj\\verify_master_batch\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AgentCommandQueueTests|CodeLanguageCatalogTests|WorkspaceContextGeneratorTests|PptxSkillConsultingDeckTests|DeckRepairGuideServiceTests" -p:OutputPath=bin\\verify_master_batch_tests\\ -p:IntermediateOutputPath=obj\\verify_master_batch_tests\\` 통과 35
업데이트: 2026-04-15 07:00 (KST)
- `claw-code` 기준 남은 격차를 줄이기 위한 통합 고도화 계획을 확정했습니다. 남은 주요 축은 `에이전틱 루프/명령 큐`, `tool_result preview 안정화`, `명령/스킬 합성`, `문서 포맷 마감`, `개발언어 지원 정합화`, `회귀 테스트/릴리즈 게이트`입니다.
- 첫 배치로 [AgentCommandQueue.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentCommandQueue.cs)를 우선순위 배치 소비가 가능한 구조로 재작성했습니다. `peek`, `dequeue`, `dequeueAllMatching`, `dequeuePriorityBatch`, `snapshot` API를 추가해 `claw-code`의 unified queue처럼 고우선 입력을 먼저 소비하고 lower-priority 항목을 뒤로 미루는 기반을 만들었습니다.
- [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs)의 큐 배수 로직도 함께 조정했습니다. 기존 `DrainAll()` 방식 대신 같은 우선순위 배치만 소비하고, 남은 큐 항목이 있으면 `Deferred ... lower-priority queued item(s)` thinking 이벤트를 남겨 다음 턴으로 넘깁니다.
- [AgentToolResultBudget.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentToolResultBudget.cs)는 preview 재사용 범위를 넓혔습니다. 기존에는 동일 `MsgId`에서만 `QueryPreviewContent`를 재사용했지만, 이제 `tool_use_id` 기준 preview 인덱스를 만들어 재구성된 tool result 메시지에서도 안정적으로 같은 preview를 재사용합니다.
- 테스트는 [AgentCommandQueueTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/AgentCommandQueueTests.cs)에 `priority batch dequeue`, `predicate matching` 시나리오를 추가했고, [AgentToolResultBudgetTests.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot.Tests/Services/AgentToolResultBudgetTests.cs)에는 `tool_use_id`가 같은 cloned tool result가 이전 preview를 재사용하는 회귀 케이스를 추가했습니다.
- 다음 배치에서는 `tool_result replacement state`를 대화 단위로 더 고정하고, 이후 `명령/스킬 합성 계층`과 `문서 포맷 마감`으로 순차 확장할 예정입니다.
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_queue_preview\\ -p:IntermediateOutputPath=obj\\verify_queue_preview\\` 경고 0 / 오류 0
- 검증: `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AgentCommandQueueTests|AgentToolResultBudgetTests" -p:OutputPath=bin\\verify_queue_preview_tests\\ -p:IntermediateOutputPath=obj\\verify_queue_preview_tests\\` 통과 7