From 6c5b0c5be3e005c95684e0296c60166efc56aef0 Mon Sep 17 00:00:00 2001 From: lacvet Date: Sun, 5 Apr 2026 18:53:28 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EA=B3=84=ED=9A=8D=20=EC=8A=B9?= =?UTF-8?q?=EC=9D=B8=20=ED=9D=90=EB=A6=84=EC=9D=84=20transcript=20?= =?UTF-8?q?=EC=9A=B0=EC=84=A0=EC=9C=BC=EB=A1=9C=20=EC=A0=84=ED=99=98?= =?UTF-8?q?=ED=95=98=EA=B3=A0=20claw-code=20=EB=B9=84=EA=B5=90=20=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=EC=9D=84=20=EB=AC=B8=EC=84=9C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - claw-code 대비 canonical prompt set 10종을 parity 문서에 추가해 Chat/Cowork/Code 회귀 검증 기준을 고정함 - AX와 claw-code의 도구/스킬 차이를 문서에 정리해 남은 parity 목표를 명확히 함 - PlanViewerWindow를 즉시 띄우지 않고 inline 승인/수정/취소 버튼을 transcript에 먼저 노출하도록 계획 승인 흐름을 변경함 - PlanViewerWindow는 하단 계획 버튼으로 여는 보조 상세 보기 역할로 축소함 - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0) --- README.md | 5 ++ docs/DEVELOPMENT.md | 3 + docs/claw-code-parity-plan.md | 77 +++++++++++++++++++++++++ src/AxCopilot/Views/ChatWindow.xaml.cs | 31 +++++----- src/AxCopilot/Views/PlanViewerWindow.cs | 6 +- 5 files changed, 106 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 5dbaf89..036bdf5 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,11 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저 개발 참고: Claw Code 동등성 작업 추적 문서 `docs/claw-code-parity-plan.md` +- 업데이트: 2026-04-05 22:04 (KST) +- `claw-code`와 AX Agent를 같은 기준으로 비교할 수 있도록 canonical prompt set 10종을 parity 문서에 고정했습니다. Chat 기본/장문, Cowork 문서/데이터, Code 수정/빌드, queue follow-up, post-compaction, permission 승인, slash skill 진입까지 핵심 회귀 흐름을 한 세트로 검증하도록 정리했습니다. +- 도구/스킬 비교 기준도 parity 문서에 추가했습니다. AX는 문서/오피스/데이터/업무형 도구가 더 풍부하고, `claw-code`는 transcript-native tool/approval/permission 메시지 구조가 더 정교하다는 차이를 명시했습니다. +- 계획 승인 UX는 `claw-code` 쪽 흐름에 더 가깝게 inline 우선으로 바꿨습니다. AX Agent는 이제 승인 요청 시 `PlanViewerWindow`를 먼저 띄우지 않고 transcript 내부의 승인/수정/취소 버튼을 우선 보여주며, 계획 상세는 하단 `계획` 버튼으로만 여는 보조 경로를 사용합니다. + - 업데이트: 2026-04-05 16:55 (KST) - `claw-code` 대비 AX Agent 추정 진척율 기준선을 문서에 남겼습니다. 현재 기준은 핵심 엔진 `82%`, 채팅 메인 UI `68%`, Cowork/Code 상태 UX `63%`, 내부 설정 연결 `88%`, 전체 AX Agent 동등 품질 `74%`입니다. - 메인 핵심 엔진 로직에 직접 영향을 주는 설정은 최소화 원칙으로 다시 검토하기 시작했습니다. 이미 실질 선택지가 사라진 `계획 모드` 계열은 사용자 노출을 더 줄였고, 남은 엔진성 설정은 개발자 탭 중심으로 계속 정리합니다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index fbee7fe..d74eb47 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4745,3 +4745,6 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 이번 묶음 후 parity 는 `core engine 100% / main transcript UI 100% / Cowork·Code runtime UX 100% / internal settings 100% / overall 100%` 기준으로 최종 마감 판단했습니다. - 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0 - 업데이트: 2026-04-05 21:43 (KST) +- Document update: 2026-04-05 22:04 (KST) - Added a canonical 10-prompt regression set to `docs/claw-code-parity-plan.md` so AX Agent and `claw-code` can be compared on the same Chat/Cowork/Code scenarios: basic/long chat, document/data cowork, bug-fix/build code, queued follow-up, post-compaction continuity, permission approval, and slash skill entry. +- Document update: 2026-04-05 22:04 (KST) - Added a tool/skill delta snapshot to the parity plan. AX remains stronger on document/office/data workflows, while `claw-code` remains stronger on transcript-native approval/tool-result/permission message taxonomy. +- Document update: 2026-04-05 22:04 (KST) - Switched plan approval flow to transcript-first. `CreatePlanDecisionCallback()` now prepares `PlanViewerWindow` without auto-opening it, shows the inline approval controls in the transcript first, and keeps the bottom `계획` button as the secondary detail surface. diff --git a/docs/claw-code-parity-plan.md b/docs/claw-code-parity-plan.md index 51ec0eb..fcc3d81 100644 --- a/docs/claw-code-parity-plan.md +++ b/docs/claw-code-parity-plan.md @@ -122,6 +122,83 @@ - Manual scenario 3: Code task with execution log noise -> completion -> compact -> next turn -> reopen - Manual scenario 4: AX Agent internal settings change -> immediate runtime reflection without layout regression +## Canonical Prompt Set +- Updated: 2026-04-05 22:04 (KST) +- The following prompt set should be used for AX vs `claw-code` parity checks. The goal is not byte-identical output, but equivalent execution route, approval behavior, and artifact/result quality. + +1. Chat basic answer +- Prompt: `회의 일정 조정 메일을 정중한 한국어로 써줘` +- Apply to: `Chat` +- Verify: normal reply render, retry/regenerate stability, reopen durability + +2. Chat long-form explanation +- Prompt: `RAG와 fine-tuning 차이를 실무 관점으로 7가지로 설명해줘` +- Apply to: `Chat` +- Verify: long response rendering, compaction follow-up continuity + +3. Cowork document task +- Prompt: `신규 ERP 도입 제안서 초안을 작성해줘. 목적, 범위, 기대효과, 추진일정 포함` +- Apply to: `Cowork` +- Verify: topic/task preset routing, plan-first execution, actual document-oriented output path + +4. Cowork data task +- Prompt: `매출 CSV를 분석해서 월별 추세와 이상치를 요약해줘` +- Apply to: `Cowork` +- Verify: data-analysis tool choice, reduced runtime noise, final summary quality + +5. Code bug-fix task +- Prompt: `현재 프로젝트에서 설정 저장 버그 원인 찾고 수정해줘` +- Apply to: `Code` +- Verify: read/search/edit path, diff persistence, reopen consistency + +6. Code build/test task +- Prompt: `빌드 오류를 재현하고 수정한 뒤 다시 빌드해줘` +- Apply to: `Code` +- Verify: build/test loop, failure retry, final completion message + +7. Queued follow-up +- Prompt sequence: + - `이 창 레이아웃 문제 원인 찾아줘` + - `끝나면 README도 같이 갱신해줘` +- Apply to: `Cowork`, `Code` +- Verify: queue chaining, next-turn pickup without UI mutation + +8. Post-compaction continuity +- Prompt: `지금까지 논의한 내용을 5줄로 이어서 정리하고 다음 작업 제안해줘` +- Apply to: `Chat`, `Cowork`, `Code` +- Verify: compact-after-next-turn continuity, no token-only completion + +9. Permission approval +- Prompt: `이 파일을 수정해서 저장해줘` +- Apply to: `Code` +- Verify: permission request, approve/reject rendering, final transcript consistency + +10. Slash / skill entry +- Prompt: `/bug-hunt src 폴더 잠재 버그 찾아줘` +- Apply to: `Code` +- Verify: slash entry uses the same prepared-execution route as normal send + +## Tool / Skill Delta Snapshot +- Updated: 2026-04-05 22:04 (KST) +- AX tool registry count is larger than `claw-code`, but the shape is different. +- AX reference: `src/AxCopilot/Services/Agent/ToolRegistry.cs` +- `claw-code` reference: `src/tools/*`, `src/skills/bundledSkills.ts` + +### AX stronger areas +- Document/office generation and conversion (`ExcelSkill`, `DocxSkill`, `PptxSkill`, `DocumentPlannerTool`, `DocumentAssemblerTool`) +- Data/business utilities (`DataPivotTool`, `SqlTool`, `FormatConvertTool`, `TextSummarizeTool`) +- WPF-integrated enterprise UX and Korean workflow presets + +### claw-code stronger areas +- Transcript-native tool use / rejection / approval message taxonomy +- Plan approval request/response rendering in the message stream +- Permission and tool-result message consistency +- Bundled skill registry and skill message integration + +### Remaining parity target +- Keep AX's richer business/document tool set +- Bring transcript rendering and approval/status UX closer to `claw-code` + ## Current Snapshot - Updated: 2026-04-05 19:42 (KST) - Estimated parity: diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 6f6d043..b74b7d5 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -9916,22 +9916,10 @@ public partial class ChatWindow : Window await Dispatcher.InvokeAsync(() => { - // PlanViewerWindow 생성 또는 재사용 - if (_planViewerWindow == null || !IsWindowAlive(_planViewerWindow)) - { - _planViewerWindow = new PlanViewerWindow(this); - _planViewerWindow.Closing += (_, e) => - { - e.Cancel = true; - _planViewerWindow.Hide(); - }; - } - - // 계획 표시 + 승인 대기 - _planViewerWindow.ShowPlanAsync(planSummary, steps, tcs); - - // 하단 바 계획 버튼 표시 + EnsurePlanViewerWindow(); + _planViewerWindow?.LoadPlan(planSummary, steps, tcs); ShowPlanButton(true); + AddDecisionButtons(tcs, options); }); // 5분 타임아웃 @@ -9973,6 +9961,19 @@ public partial class ChatWindow : Window }; } + private void EnsurePlanViewerWindow() + { + if (_planViewerWindow != null && IsWindowAlive(_planViewerWindow)) + return; + + _planViewerWindow = new PlanViewerWindow(this); + _planViewerWindow.Closing += (_, e) => + { + e.Cancel = true; + _planViewerWindow.Hide(); + }; + } + /// 하단 바에 계획 보기 버튼을 표시/숨김합니다. private void ShowPlanButton(bool show) { diff --git a/src/AxCopilot/Views/PlanViewerWindow.cs b/src/AxCopilot/Views/PlanViewerWindow.cs index dcc023c..7f4f454 100644 --- a/src/AxCopilot/Views/PlanViewerWindow.cs +++ b/src/AxCopilot/Views/PlanViewerWindow.cs @@ -287,7 +287,7 @@ internal sealed class PlanViewerWindow : Window // 공개 API // ════════════════════════════════════════════════════════════ - public Task ShowPlanAsync(string planText, List steps, TaskCompletionSource tcs) + public void LoadPlan(string planText, List steps, TaskCompletionSource tcs) { _planText = planText; _steps = steps; @@ -304,7 +304,11 @@ internal sealed class PlanViewerWindow : Window RenderSteps(); BuildApprovalButtons(); _statusBar.Visibility = Visibility.Collapsed; + } + public Task ShowPlanAsync(string planText, List steps, TaskCompletionSource tcs) + { + LoadPlan(planText, steps, tcs); Show(); Activate(); return tcs.Task;