개발 문서를 AX 기준 계획 중심으로 정리하고 비교성 표현을 제거

- README와 DEVELOPMENT, 로드맵 문서에서 비교·모사 뉘앙스가 강한 문구를 AX 기준 설명으로 정리함

- 비교/패리티 성격의 문서를 AX Agent 구조 리뷰, 실행 개선 계획, 품질 계획, 런타임 품질 계획, 도구 커버리지 문서로 재구성함

- 회귀 프롬프트와 보조 개발 문서의 용어를 공통 핵심 명령과 운영 기준 중심으로 정리함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_docs_cleanup\\ -p:IntermediateOutputPath=obj\\verify_docs_cleanup\\ (경고 0 / 오류 0)
This commit is contained in:
2026-04-15 17:05:30 +09:00
parent 964e40718f
commit 9344cf83d6
17 changed files with 656 additions and 1750 deletions

View File

@@ -1,238 +1,46 @@
# AX Agent 로드맵 (전면 재작성)
# AX Agent 로드맵
## 1. 보존 이력 (요약만 유지)
- v0.5.0: MCP 연동, 모델 폴백, 대화 분기, 프리뷰/토큰 관리, 에이전트 루프 강화.
- v0.5.1: 고급 스킬 확장, 워크플로우 분석기, 런타임 감지.
- v0.6.0: 멀티패스 문서 생성, 데이터 피벗/템플릿/이미지 분석 계열 도구 확장.
- v0.7.0: Plan Mode, 병렬 도구 실행, 프로젝트 규칙 주입, 테스트 루프 자동화.
- v0.7.1: 도구 실행 후 검증 게이트 강화, 피드백 컨텍스트 개선.
- v0.7.2: 컨텍스트 압축/복원 안정화, UX/성능 보완.
업데이트: 2026-04-15 18:20 (KST)
## 2. 재작성 기준
- 기준 레퍼런스: `OpenCode/OpenCode-f5a40b86dede580f6543bf8926c9af017eea9409/src`.
- 목표: 동작 순서, 예외/검증 흐름, 세션 내구성에서 동일 품질 달성.
- 원칙: AX 코드 스타일로 재구성(표현/구조 변경), 기능적 동등성 유지.
## 1. 목표
- AX Agent의 실행 신뢰성, 세션 내구성, 결과 품질을 단계적으로 높입니다.
- 비교·모사 표현 대신 실제 참조 모듈 경로와 AX 적용 위치만 문서에 남깁니다.
- 변경 우선순위는 `상태 -> 실행 -> 렌더 -> UX` 순서로 유지합니다.
## 3. 2026 실행 계획 (v0.7.3 ~ v0.8.0)
## 2. 보존 이력
- v0.5.x: MCP, 모델 폴백, 대화 분기, 프리뷰/토큰 관리, 에이전트 루프 기반 구축
- v0.6.0: 문서 생성, 데이터 피벗, 템플릿/이미지 분석 도구군 확장
- v0.7.0 ~ v0.7.2: Plan Mode, 병렬 도구 실행, 검증 게이트, 컨텍스트 압축 안정화
| Phase | 참조 대상 (`OpenCode`) | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
## 3. 2026 실행 계획
| Phase | 참조 대상 | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
|---|---|---|---|---|
| A (v0.7.3) Hook/Permission 계약 고도화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts`, `src/utils/permissions/permissionSetup.ts` | `src/AxCopilot/Services/Agent/AgentHookRunner.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Models/AppSettings.cs`, `src/AxCopilot/ViewModels/SettingsViewModel.cs`, `src/AxCopilot/Views/SettingsWindow.xaml` | Hook JSON 출력(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영 완료. Plain text 훅 하위호환 유지. 훅 실패 비차단 유지. | Pre-hook 입력 변형 적용 시 도구 입력이 실제 변경되는지 검증. 권한 업데이트 후 동일 run 내 권한 판정이 즉시 반영되는지 검증. |
| B (v0.7.4) Plan/Run 상태 내구성 강화 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/TaskRunService.cs`, `src/AxCopilot/Services/TaskRunStore.cs`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | Plan 단계 승인/수정 이력 영속화. 앱 재시작 후 run 재개 시 마지막 실행 지점 정확 복원. 중복 실행/중복 이벤트 0건. | 실행 중 종료 재실행 같은 탭/대화에서 run 상태와 최근 실행 이력이 일치하는지 검증. |
| C (v0.7.5) 세션/이벤트 로그 정규화 | `src/utils/sessionStorage.ts`(이벤트 기록/복원 규약), `src/utils/hooks/hookEvents.ts` | `src/AxCopilot/Models/ChatModels.cs`, `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/AppStateService.cs` | 이벤트 스키마 정리(도구 호출/결과/권한/훅/요약). replay 순서 불일치 0건. run 단위 요약 리포트 생성 가능 상태. | 동일 세션을 여러 번 로드해도 실행 이력 순서/상태가 변하지 않는지 검증. |
| D (v0.7.6) 명령/도구 선택 정확도 개선 | `src/commands.ts`, `src/Tool.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopParallelExecution.cs`, `src/AxCopilot/Services/LlmService.ToolUse.cs` | 도구 별칭 정규화 규칙 강화. unknown-tool 재시도 루프 방지. 실패 유형별 복구 흐름 표준화. | 오타/별칭/비활성 도구 요청 시 복구 프롬프트로 정상 도구로 수렴하는지 검증. |
| E (v0.8.0) 품질 게이트 최종 정렬 | `src/query.ts`, `src/QueryEngine.ts`(루프 종료/완료 기준), `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs` | 코드/문서 작업 완료 게이트를 증거 기반으로 고정. 내부 벤치마크 목표 성공률 충족. 완료 응답 근거 누락률 최소화. | 코드수정/문서생성/권한거부/실패복구 혼합 시나리오에서 조기 완료 없이 근거 기반 종료하는지 검증. |
| A (v0.7.3) Hook/Permission 계약 고도화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts`, `src/utils/permissions/permissionSetup.ts` | `AgentHookRunner.cs`, `AgentLoopService.cs`, `AppSettings.cs`, `SettingsViewModel.cs`, `SettingsWindow.xaml` | Hook JSON 출력(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영, plain text 훅 하위호환 유지, 훅 실패 비차단 유지 | pre-hook 입력 변형과 권한 업데이트가 같은 run 안에서 즉시 적용되는지 검증 |
| B (v0.7.4) Plan/Run 상태 내구성 강화 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `ChatSessionStateService.cs`, `TaskRunService.cs`, `TaskRunStore.cs`, `ChatWindow.xaml.cs` | plan 승인/수정 이력 영속화, 재시작 후 마지막 run 지점 복원, 중복 이벤트 0건 | 실행 중 종료 재실행 같은 탭/대화에서 run 상태와 최근 이력이 일치하는지 검증 |
| C (v0.7.5) 세션/이벤트 로그 정규화 | `src/utils/sessionStorage.ts`, `src/utils/hooks/hookEvents.ts` | `ChatModels.cs`, `ChatSessionStateService.cs`, `AppStateService.cs` | 이벤트 스키마 정리, replay 순서 불일치 0건, run 단위 요약 리포트 생성 가능 | 같은 세션을 여러 번 로드해도 실행 이력 순서상태가 변하지 않는지 검증 |
| D (v0.7.6) 명령/도구 선택 정확도 개선 | `src/commands.ts`, `src/Tool.ts` | `AgentLoopService.cs`, `AgentLoopParallelExecution.cs`, `LlmService.ToolUse.cs` | 도구 별칭 정규화 강화, unknown-tool 재시도 루프 방지, 실패 유형별 복구 표준화 | 오타/별칭/비활성 도구 요청 정상 도구로 수렴하는지 검증 |
| E (v0.8.0) 품질 게이트 정렬 | `src/query.ts`, `src/QueryEngine.ts`, `src/utils/sessionStorage.ts` | `AgentLoopService.cs`, `AgentLoopTransitions.Execution.cs`, `AgentLoopTransitions.cs` | 코드/문서 작업 완료 게이트를 증거 기반으로 고정, 조기 완료 방지 | 코드수정/문서생성/권한거부/복구 혼합 시나리오에서 근거 기반 종료 검증 |
## 4. 공통 검증 규칙
- 모든 단계: `dotnet build` 경고 0/오류 0.
- 고위험 변경: 최소 1개 이상 재현 테스트 추가.
- 운영모드(`internal`/`external`) 보안 정책 위반 0건.
- 모든 단계에서 `dotnet build` 경고 0 / 오류 0
- 고위험 변경마다 최소 1개 이상 재현 테스트 추가
- `internal` / `external` 운영 모드 정책 위반 0건
## 5. 즉시 착수 항목
1. 내부 벤치마크(기본 loop/복구/권한/hook) 결과를 릴리즈 체크리스트에 연동 유지.
2. 세션 replay 안정성(`Suite=ReplayStability`) 전건 통과를 릴리즈 게이트로 운영.
3. 패리티 수치(테스트 통과 수/게이트 상태)를 로드맵 문서 간 동일 문구로 유지.
1. 내부 벤치마크 결과를 릴리즈 체크리스트에 계속 연결
2. `Suite=ReplayStability` 전건 통과를 릴리즈 게이트로 유지
3. 계획/실행/검증 문서 간 수치와 상태 문구를 같은 기준으로 동기화
## 6. 최신 검증 스냅샷 (2026-04-03)
- `dotnet test --filter "Suite=ParityBenchmark"`: 13/13 통과.
- `dotnet test --filter "Suite=ReplayStability"`: 14/14 통과.
- `dotnet test`: 379/379 통과.
## 6. 최신 검증 스냅샷
- 기준 시점: 2026-04-03
- `dotnet test --filter "Suite=ParityBenchmark"`: 13/13 통과
- `dotnet test --filter "Suite=ReplayStability"`: 14/14 통과
- `dotnet test`: 379/379 통과
## 7. 명령/도구 보강 스냅샷 (2026-04-04)
- 슬래시 명령 고도화: `/chrome`, `/mcp`, `/verify`, `/commit`, `/settings`, `/permissions` 하위 동작 정리.
- `/mcp` 상태 라벨 표준화: `Connected`, `NeedsAuth`, `Configured`, `Disconnected`, `Disabled`.
- `/chrome` 런타임 재시도: 초기 probe 실패 시 `/mcp reconnect all` 자동 수행 후 1회 재평가.
- Git 정책 정렬: `git_tool` `commit` 비활성 문구 제거(로컬 커밋 경로와 정책 일치).
- `/commit` 부분 커밋 지원: `files:path1,path2 :: 메시지` 형식으로 선택 파일만 stage+commit 가능.
- 테스트 보강:
- `ChatWindowSlashPolicyTests`: 슬래시 파서/검증 프롬프트/MCP 상태 라벨 단위 검증 추가.
- `AgentParityToolsTests`: `git_tool commit` 레거시 비활성 메시지 회귀 방지 테스트 추가.
## 7. 권한 Hook 계약 (P2 마감 기준)
- lifecycle hook 키:
- `__permission_request__` (pre)
- `__permission_granted__` (post)
- `__permission_denied__` (post)
- payload 기준 필드: `runId`, `tool`, `target`, `permission`, `granted`, `reason`.
- 우선순위:
1. Hook `updatedPermissions`가 현재 run의 `AgentContext.ToolPermissions`를 즉시 갱신.
2. 갱신 후 `context.CheckToolPermissionAsync()`로 최종 판정.
3. hook 실패/예외는 non-blocking(권한 흐름 지속).
4. `additionalContext`는 가능한 경로에서 메시지 컨텍스트로 반영.
- 2026-04-04(추가): `/mcp add/remove/reset` 확장, `tool_search` 기반 복구 프롬프트 강화, 슬래시 힌트 밀도(`rich/balanced/simple`) 연동.
- 2026-04-04(추가2): /mcp login/logout 세션 인증 토큰 지원, /mcp status·/chrome 진단에 Auth(Session) 반영.
- 2026-04-04(추가3): 권한 UX 통합(/permissions·/allowed-tools·/settings permissions), 복구 혼합 테스트 보강, 좌측 패널 실패 필터 노출 정책 rich 전용으로 정렬.
- 2026-04-04 20:27 (KST): Added a dedicated AX Agent theme layer and separated in-chat theme selection into style (`claude/codex/slate`) and mode (`system/light/dark`).
- 2026-04-04 18:03 (KST): Added a Codex-style context usage ring to the composer, exposed direct `/compact` execution from the footer, and surfaced Git branch/change status in the Cowork/Code footer when a repository is connected.
- 2026-04-04 18:03 (KST): Simplified the Cowork footer by removing document format/design selectors and moved those defaults into the AX Agent settings page, with output format centered on AI automatic selection.
- 2026-04-04 18:03 (KST): Minimized AX Agent message headers, changed model quick controls to a popup panel, flattened slash command rows into a Codex-style list, and aligned model/permission/template controls to the same dropdown panel language.
- 2026-04-04 18:03 (KST): Expanded the Git branch badge into a dropdown panel, flattened permission/template popups into row-based lists, and made AI message action bars remain visible for the selected message.
- 2026-04-04 18:03 (KST): Flattened the data-usage popup, added Git branch switching/creation inside the dropdown, and surfaced quick model chips so the inline model panel relies less on ComboBox controls.
- 2026-04-04 18:03 (KST): Replaced the visible inline model/service selectors with custom cards and row lists so the AX Agent quick panel more closely follows the Codex/claude-code control feel.
- 2026-04-04 18:03 (KST): Added recent/favorite grouping to the preset popup and enabled right-click pinning so the preset picker better matches Codex-style frequent-use navigation.
- 2026-04-04 18:03 (KST): Added preset search, made selected messages visually persistent, and flattened more of the permission detail popup into row-based information to keep the panel lighter.
- 2026-04-04 18:03 (KST): Switched recent permission-denied actions to flat row actions, exposed Git upstream state in the branch panel, and made inline quick actions read more like custom stateful cards.
- 2026-04-04 19:07 (KST): Unified AX Agent popup panels around the same row-driven language by flattening permission override details, simplifying collapsible section chrome, adding keyboard-friendly row actions, and turning Git change stats into compact pills.
- 2026-04-04 19:07 (KST): Refined message actions into custom pill buttons with visible labels, fixed the custom action template so border visuals render correctly, and tightened composer/footer density so model, preset, token, permission, and Git controls feel like one system.
- 2026-04-04 19:11 (KST): Reworked the AX Agent timeline so execution events render like thin Codex-style inline logs instead of heavy banners, softened older-history loading into an outline pill, and aligned planning cards to the same message-width rhythm.
- 2026-04-04 19:25 (KST): Tightened user/assistant/streaming cards under one density rule by compressing vertical spacing, card padding, header typography, and message meta spacing to a more Codex-like rhythm.
- 2026-04-04 19:25 (KST): Flattened the composer further by reducing input, model, preset, token, and footer control heights so the bottom work area reads more like a single OpenCode-style strip.
- 2026-04-04 19:25 (KST): Matched AX Agent overlay quick settings to inline quick settings with the same `label · value` structure, lighter explanatory copy, and unified section naming.
- 2026-04-04 19:48 (KST): Fixed Chat sidebar topic exploration so clicking the left topic entry surfaces the preset cards again, and made preset selection immediately sync category label, conversation metadata, and saved state.
- 2026-04-04 19:48 (KST): Reduced permission/data-usage UI lag by synchronizing conversation settings before persistence, switching popup rows to immediate mouse-down activation, and refreshing overlay status labels in the same turn.
- 2026-04-04 19:48 (KST): Widened the AX Agent message lane, softened the yellow cast of the Claude-style theme preset, aligned the data-usage button with the permission button language, and routed the tray settings entry directly into AX Agent settings when AI is enabled.
- 2026-04-04 20:41 (KST): Permission surface re-aligned to the four OpenCode public modes, legacy `질문 없이 진행` exposure removed from AX Agent popups/slash guidance, and the in-chat settings/sidebar information hierarchy simplified to match the lighter Claude/Codex-style layout direction.
- 업데이트: 2026-04-04 22:05 (KST)
- AX Agent 고급 설정 오버레이를 설명형 row + 커스텀 On/Off 선택 구조로 개편하고, 내부 기능명을 사용자 친화 문구로 정리함.
- 업데이트: 2026-04-04 20:58 (KST)
- AX Agent 서비스 설정의 내부 서비스 모델 선택을 등록 모델 칩 기반으로 정리하고, vLLM SSL 우회는 모델 등록/편집 다이얼로그에서만 노출되도록 설정 표면을 축소함.
- 업데이트: 2026-04-04 21:02 (KST)
- composer 컨텍스트 카드를 hover 중심의 간단 표기(`%` + `K/M` 사용량)로 정리하고, 최대 컨텍스트 설정 상한을 1M까지 확장함.
- 업데이트: 2026-04-04 21:02 (KST)
- AX Agent 서비스 설정의 `Gemini/Claude`도 모델 칩 선택 구조로 통일하고, composer 모델 버튼을 `서비스 · 모델` 문법으로 맞춰 설정-실행 흐름의 시각 언어를 정리함.
- 업데이트: 2026-04-04 23:14 (KST)
- 트레이 좌클릭 기본 진입점을 AX Agent로 전환하고, 우클릭 메뉴 상단에 앱 버전 헤더를 추가해 AX Agent 중심 진입 흐름을 강화함.
- 메인 설정 저장 완료 후 열린 AX Agent 창이 즉시 테마/모델/권한/하단 상태줄을 다시 읽어오도록 fan-out 경로를 추가해 설정 반영 지연을 줄임.
- DraftQueue kind 분류를 message/command/steering/direct/followup 기준으로 재정리해 큐 타입과 실제 입력 성격이 더 잘 맞도록 보강함.
- 업데이트: 2026-04-04 23:23 (KST)
- AX Agent가 `SettingsService.SettingsChanged`를 직접 구독하도록 바꿔 메인 설정/AX Agent 설정 어느 경로에서 저장하더라도 테마, 모델, 권한, 데이터 활용, composer, 대기열 UI가 즉시 동일 상태를 반영하도록 fan-out을 통합함.
- AX Agent 설정 저장 경로에서 표현 수준을 무조건 `rich`로 덮어쓰던 로직을 제거해 `풍부하게 / 적절하게 / 간단하게`가 다른 설정 저장 경로에서도 유지되도록 보정함.
- DraftQueue 패널은 `실행 중 / 다음 작업 / 보류 / 완료 / 실패` 개별 섹션 구조로 다시 나눠 현재 실행 흐름과 재시도 대기, 결과 이력을 더 빠르게 파악할 수 있도록 정리함.
- ????: 2026-04-04 23:32 (KST)
- AX Agent ???? ??? ?? tool-result ?? -> microcompact ?? ?? ?? -> ?? ?? ?? 3?? ??? ???, claude-code? staged compact ??? ? ??? ? ?? ??? ?? ????? ???.
- ??? ?? ??, tool_result, ?? ???, ???? ? ???? LLM ?? ?? microcompact_boundary? ?? ??? ?? ?? ?? ?? ?? ?? ??? ??? ???? ?? ??.
---
## 8. 지능형 에이전트 고도화 로드맵 (oh-my-openagent 참조)
> 기준: oh-my-openagent 아키텍처 분석 결과에서 단일 모델 환경에서도 효과적인 기능을 우선 채택.
> 원칙: AX 기존 인프라(`ClassifyTaskType`, `SubAgentTool`, `IntentDetector`, `TaskTypePolicy`, `ContextCondenser`) 위에 점진적으로 확장.
### 8-1. 즉시 개발 (P1~P5)
#### P1. IntentGate — 고급 의도 분류기
- **목적**: 사용자 입력을 분석하여 최적 실행 프로파일(system prompt + temperature + tool 권한 + 최대 반복)을 자동 선택
- **현재 상태**: `ClassifyTaskType()` (키워드 6분류) + `IntentDetector` (키워드 7분류, UI 힌트용) 존재하나 실행 프로파일 연동 없음
- **구현 계획**:
1. `IntentGateService.cs` 신규 — 2단계 분류기
- Stage 1: 키워드 기반 빠른 분류 (기존 `ClassifyTaskType` + `IntentDetector` 통합)
- Stage 2: LLM 1-shot 분류 (복합 요청 시만 발동, 토큰 최소화)
2. `ExecutionProfile` 확장 — 분류 결과별 프로파일 매핑
- `code_edit`: temperature 0.3, 코드 도구 우선, 최대 반복 25
- `document_create`: temperature 0.7, 문서 도구 우선, 최대 반복 15
- `analysis`: temperature 0.4, 검색/읽기 도구 우선, 최대 반복 20
- `review`: temperature 0.2, 읽기 전용 도구, 최대 반복 15
- `general_chat`: 도구 없음, temperature 0.8
- `complex_task`: 전체 도구, temperature 0.5, SubAgent 활성화
3. `AgentLoopService.RunAsync()` 진입부에서 `IntentGateService.Classify()` 호출 → 프로파일 적용
- **수정 파일**: `IntentGateService.cs`(신규), `AgentLoopService.cs`, `AppSettings.cs`, `TaskTypePolicy.cs`
- **검증**: 코드수정/문서생성/분석/리뷰/잡담 5개 시나리오에서 올바른 프로파일 선택 확인
#### P2. 카테고리 기반 서브에이전트 실행 프로파일
- **목적**: 같은 모델이지만 작업 유형별로 다른 system prompt + tool 권한 + temperature를 적용하는 "가상 멀티에이전트"
- **현재 상태**: `SubAgentTool`은 고정 system prompt + 읽기 전용 도구만 사용
- **구현 계획**:
1. `SubAgentProfile.cs` 신규 — 프로파일 정의 클래스
- `researcher`: 읽기 전용, 검색 집중, temperature 0.3
- `coder`: 파일 편집 가능, 빌드/테스트 도구 포함, temperature 0.2
- `writer`: 문서 생성 도구 활성, temperature 0.7
- `reviewer`: 코드리뷰 도구 + diff, temperature 0.2
- `planner`: 계획/분해 도구, temperature 0.5
2. `SubAgentTool` 확장 — `profile` 파라미터 추가
- 프로파일별로 system prompt, 도구 레지스트리, temperature를 자동 구성
- 기존 동작(profile 미지정)은 `researcher`로 폴백
3. `IntentGateService`가 복합 요청 감지 시 자동으로 서브에이전트 프로파일 추천
- **수정 파일**: `SubAgentProfile.cs`(신규), `SubAgentTool.cs`, `AgentLoopService.cs`
- **검증**: "코드 수정하고 문서도 만들어줘" → coder + writer 프로파일 분리 실행 확인
#### P3. 누적 학습 (Accumulated Learnings)
- **목적**: 세션 내 발견사항(에러 패턴, 파일 구조, 성공 전략)을 자동 수집하여 후속 반복에 주입
- **현재 상태**: `AgentMemoryService`에 장기 메모리 존재하나, 세션 내 단기 학습 전파 없음
- **구현 계획**:
1. `SessionLearningCollector.cs` 신규
- 도구 실행 결과에서 자동 학습 포인트 추출:
- 빌드 에러 → "이 프로젝트는 .NET 8, nullable 활성"
- grep 결과 → "이 패턴은 Services/ 폴더에 집중"
- 파일 구조 → "테스트는 Tests/ 폴더, 네이밍 규칙 *Tests.cs"
- 최대 10개 항목, FIFO 관리
2. `AgentLoopService` — 각 반복 시작 시 누적 학습을 컨텍스트에 주입
- `[System:SessionLearnings]` 메시지로 삽입 (압축 시 보존)
3. `ContextCondenser` — 학습 메시지는 압축 대상에서 제외
- **수정 파일**: `SessionLearningCollector.cs`(신규), `AgentLoopService.cs`, `ContextCondenser.cs`
- **검증**: 빌드 에러 발생 후 다음 반복에서 동일 실수 반복 안 하는지 확인
#### P4. 워크스페이스 컨텍스트 자동 생성 (.ax-context)
- **목적**: 작업 폴더의 구조/기술스택/컨벤션을 파일로 자동 생성 → 서브에이전트 컨텍스트 효율화
- **현재 상태**: `ProjectRuleTool``.ax-rules` 파일을 읽지만 자동 생성 없음
- **구현 계획**:
1. `WorkspaceContextGenerator.cs` 신규
- 작업 폴더 최초 접근 시 자동 분석:
- 파일 트리 (깊이 3), 주요 확장자 분포, 빌드 시스템 감지
- README/package.json/csproj 등에서 프로젝트 메타 추출
- 기존 `.ax-rules`, `.clinerules`, `CLAUDE.md` 존재 여부
- 결과를 `.ax-context.md`로 저장 (1회 생성, 수동 갱신)
2. `SubAgentTool` — 서브에이전트 생성 시 `.ax-context.md` 내용을 system prompt에 자동 주입
3. `AgentLoopService` — 메인 에이전트도 `.ax-context.md` 존재 시 컨텍스트에 포함
- **수정 파일**: `WorkspaceContextGenerator.cs`(신규), `SubAgentTool.cs`, `AgentLoopService.cs`, `ProjectRuleTool.cs`
- **검증**: 새 작업 폴더 선택 → `.ax-context.md` 자동 생성 → 서브에이전트가 프로젝트 구조 인지 확인
#### P5. 병렬 서브에이전트 실행 확장
- **목적**: LLM이 한 번의 응답에서 여러 서브에이전트를 동시 생성/실행
- **현재 상태**: `SubAgentTool`은 개별 호출 가능하나 LLM이 연속 호출해야 함. `AgentLoopParallelExecution`에서 병렬 도구 실행 지원
- **구현 계획**:
1. `spawn_agents` (복수형) 도구 신규 — 배열로 여러 서브에이전트를 한 번에 생성
- `tasks: [{id, task, profile}, ...]` 형태
2. `IntentGateService` — 복합 요청 감지 시 자동 분해
- "A 분석하고 B 코드 수정해줘" → 두 개의 서브에이전트로 자동 분해 제안
3. `SubAgentTool` — 동시 실행 상한을 설정에서 조정 가능 (기본 3 → 5)
4. UI: 서브에이전트 진행 상태를 타임라인에 병렬로 표시
- **수정 파일**: `SpawnAgentsTool.cs`(신규), `SubAgentTool.cs`, `AgentLoopService.cs`, `AppSettings.cs`
- **검증**: 3개 서브에이전트 동시 실행 → 결과 수집 → 통합 응답 확인
### 8-2. 추후 개발 (P6~P7)
#### P6. 폴백 체인 (Fallback Chains)
- **목적**: 실행 실패 시 다른 프로파일/전략으로 자동 재시도
- **구현 방향**: IntentGate 프로파일에 `fallback` 속성 추가. 1차 실패 → 프로파일 전환 → 재시도 (최대 2회)
- **선행 조건**: P1(IntentGate) + P2(카테고리 프로파일) 완료 후
- **예상 파일**: `IntentGateService.cs`, `AgentLoopService.cs`
#### P7. 모델 성격 매칭 (Model Personality Matching)
- **목적**: 멀티 모델 환경에서 작업 유형별 최적 모델 자동 선택
- **구현 방향**: `RegisteredModel``strengths` 속성 추가 (coding/writing/analysis/speed). IntentGate 분류 결과 + 모델 강점 매칭으로 최적 모델 라우팅
- **선행 조건**: 멀티 모델 환경 확보 + P1(IntentGate) 완료 후
- **예상 파일**: `IntentGateService.cs`, `ModelRouterService.cs`, `AppSettings.cs`
### 8-3. 구현 순서 및 의존 관계
```
P1 (IntentGate) ─────┬──→ P2 (카테고리 프로파일) ──→ P5 (병렬 확장)
├──→ P3 (누적 학습) [독립]
└──→ P4 (워크스페이스 컨텍스트) [독립]
P1 + P2 완료 후 ──→ P6 (폴백 체인)
P1 + 멀티모델 후 ──→ P7 (모델 성격 매칭)
```
### 8-4. 단일 모델에서의 멀티에이전트 원리
> Claude Code, Codex, Cursor 등 주요 AI 코딩 도구는 모두 **단일 모델 + 다른 시스템 프롬프트/도구 권한/temperature** 조합으로 멀티에이전트를 구현합니다.
>
> - 메인 에이전트: 범용 system prompt + 전체 도구 + 중간 temperature
> - 서브에이전트: 특화 system prompt + 제한된 도구 + 작업별 temperature
>
> AX Copilot도 이 패턴을 따릅니다. `SubAgentTool`이 이미 존재하므로, **프로파일 체계화(P2)**만으로 사실상 멀티에이전트가 됩니다.
## 2026-04-15 안정화 마감 메모
업데이트: 2026-04-15 08:32 (KST)
- `tool_result` preview 안정화는 분기/저장/재로드 단계를 넘어 query view 생성과 context compact 이전 정규화까지 연결했습니다.
- 슬래시 명령은 팔레트 정렬과 실제 실행 해석이 같은 우선순위를 사용하도록 맞춰 skill/builtin 충돌 시 일관성이 높아졌습니다.
- 코드 탭은 `LSP 심화 지원 + 정적 fallback` 2단 구조로 정리했습니다. 로컬 언어 서버가 없어도 언어별 매니페스트, build/test/lint 힌트 기반 분석을 계속 제공하는 방향으로 마감 중입니다.
- 다음 남은 축은 `AgentLoopService` 세분화, `tool_result replacement state` 장기 세션 고정, 문서 포맷 최종 마감, 릴리즈 게이트 정리입니다.
## 7. 최근 보강 메모
- 2026-04-04: `/chrome`, `/mcp`, `/verify`, `/commit`, `/settings`, `/permissions` 하위 동작 정리
- 2026-04-04: `/mcp` 상태 라벨 표준화 `/chrome` 런타임 재시도 경로 보강
- 2026-04-04: 전용 AX Agent 테마 레이어 추가, 스타일/모드 분리
- 2026-04-04: 컴포저 컨텍스트 사용량 링, footer 직접 `/compact`, Git 상태 노출 보강
- 2026-04-04: 권한 UX, popup row 언어, 진행 이력 렌더 밀도를 더 가볍게 정리

View File

@@ -0,0 +1,91 @@
# AX Agent 구조 리뷰
업데이트: 2026-04-15 18:20 (KST)
## 1. 목적
- AX Agent의 현재 구조를 실행 엔진, 루프 정책, 세션 저장, transcript 렌더 관점에서 정리합니다.
- 외부 제품 비교 대신 AX 내부 구조와 참조 모듈 흐름만 문서화합니다.
## 2. 현재 구조
### 실행 계층
- `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`
- `src/AxCopilot/Services/Agent/AgentLoopService.cs`
- `src/AxCopilot/Services/Agent/StreamingToolExecutionCoordinator.cs`
### 루프 정책 계층
- `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`
- `src/AxCopilot/Services/Agent/AgentLoopTransitions.Verification.cs`
- `src/AxCopilot/Services/Agent/AgentLoopTransitions.Documents.cs`
- `src/AxCopilot/Services/Agent/AgentLoopCompactionPolicy.cs`
- `src/AxCopilot/Services/Agent/AgentLoopRuntimeThresholds.cs`
### 세션/상태 계층
- `src/AxCopilot/Services/ChatSessionStateService.cs`
- `src/AxCopilot/Services/ChatStorageService.cs`
- `src/AxCopilot/Services/AppStateService.cs`
- `src/AxCopilot/Models/ChatModels.cs`
### transcript/UI 계층
- `src/AxCopilot/Views/ChatWindow.xaml`
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptHost.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptRenderPlanner.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptRenderExecution.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptVirtualization.cs`
## 3. 강점
- Chat / Cowork / Code를 하나의 창과 정책 체계 안에서 운영
- 등록 모델별 실행 프로파일과 verification gate 지원
- 문서 생성 계열 fallback과 품질 리뷰가 루프에 결합되어 있음
- 메모리, slash, permissions, queue가 한 세션 상태에 연결되어 있음
## 4. 구조 리스크
1. `ChatWindow.xaml.cs` 책임이 여전히 크고, UI 이벤트와 런타임 상태 조립이 섞여 있습니다.
2. transcript와 status line이 더 단일한 런타임 상태를 기준으로 계산되면 유지보수가 쉬워질 여지가 있습니다.
3. replay/reopen 경로는 안정화가 많이 진행됐지만, 장기 세션에서는 이벤트 정규화 규칙이 더 중요합니다.
4. 설정이 실행 경로를 바꾸는 지점은 사용자용과 개발용 노출 범위를 더 구분할 필요가 있습니다.
## 5. 개선 우선순위
### A. 런타임 상태 단일화
- 참조 모듈: `src/bootstrap/state.ts`, `src/bridge/initReplBridge.ts`
- AX 적용 위치: `ChatWindow.xaml.cs`, `AxAgentExecutionEngine.cs`, `ChatStorageService.cs`
- 완료 조건:
- 현재 턴, queue, retry, 실행 이벤트, 저장 스냅샷이 같은 런타임 상태 모델을 사용
- reopen 뒤 저장 상태와 렌더 결과가 어긋나지 않음
### B. 이벤트 정규화
- 참조 모듈: `src/bridge/sessionRunner.ts`, `src/bridge/bridgeMessaging.ts`
- AX 적용 위치: `AgentLoopService.cs`, `AgentLoopTransitions.cs`, `AppStateService.cs`
- 완료 조건:
- tool start/result/error/progress, permission, retry, complete 이벤트가 안정적인 스키마를 공유
- replay 시 visible banner 중복 0건
### C. timeline 유도 모델 고정
- 참조 모듈: `src/screens/REPL.tsx`, `src/components/Messages.tsx`
- AX 적용 위치: `ChatWindow.xaml`, `ChatWindow.xaml.cs`
- 완료 조건:
- assistant/user message, execution log, compact boundary, queue summary를 하나의 derived timeline에서 생성
- direct imperative bubble injection 제거
### D. status/composer 정리
- 참조 모듈: `src/components/StatusLine.tsx`
- AX 적용 위치: `ChatWindow.xaml`, `ChatWindow.AgentStatusPresentation.cs`
- 완료 조건:
- status strip, queue summary, runtime activity가 debounce된 같은 상태 소스를 사용
- composer는 명시적 줄바꿈 중심으로만 성장
## 6. 검증 기준
- reopen 후 최신 assistant state가 저장 상태와 동일
- retry/regenerate/queue follow-up이 서로 다른 실행 경로로 분기되지 않음
- permission popup, inline ask, plan approval이 transcript 기준으로 닫힘
- `dotnet build` 경고 0 / 오류 0
## 7. 최근 메모
- 2026-04-06 09:36 (KST): 상태 strip 표현과 permission/tool-result 설명 카탈로그를 분리
- 2026-04-06 09:44 (KST): mixed inline interaction rendering을 presentation 파일로 분리
- 2026-04-06 09:58 (KST): Git branch popup과 footer 보조 요약 helper를 분리
- 2026-04-06 10:07 (KST): topic preset 렌더와 선택 흐름을 전용 presentation 파일로 이동
- 2026-04-06 11:52 (KST): permission, tool-result, skill gallery 설명층을 고도화

View File

@@ -0,0 +1,92 @@
# AX Agent 실행 개선 계획
업데이트: 2026-04-15 18:20 (KST)
## 1. 목적
- AX Agent의 실행 신뢰성, 권한 처리 일관성, 세션 복원 품질을 높입니다.
- 외부 제품명 비교 대신 실제 참조 모듈 경로와 AX 적용 위치만 기준으로 관리합니다.
- UI 보정만으로 가리는 수정은 지양하고 `상태 -> 실행 -> 렌더` 순서로 정리합니다.
## 2. 현재 판단
- 실행 엔진과 루프 품질은 안정 구간에 들어왔지만, 장기 세션 복원과 이벤트 정규화는 계속 다듬을 여지가 있습니다.
- 설정이 런타임 경로를 바꾸는 지점은 사용자 설정과 개발자용 실험 설정을 더 분리할 필요가 있습니다.
- transcript, status line, queue 표시는 충분히 가벼워졌지만 상태 계산 소스는 더 단일화해야 합니다.
## 3. 참조 흐름
| 참조 모듈 | AX 적용 위치 | 완료 조건 | 품질 판정 기준 |
|---|---|---|---|
| `src/bootstrap/state.ts` | `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs` | 현재 턴, queue, retry, 실행 이벤트, 저장 스냅샷이 하나의 런타임 상태 모델로 정리 | reopen/retry/queue 후 중복 assistant 카드나 빈 카드가 생기지 않음 |
| `src/bridge/initReplBridge.ts` | `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/LlmService.cs` | send/regenerate/retry/queued follow-up/slash가 하나의 실행 준비 경로를 통과 | 같은 입력과 설정에서 진입점이 달라도 실행 경로가 흔들리지 않음 |
| `src/bridge/sessionRunner.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs` | tool start/result/error/progress가 루프 계층에서 한 번만 정규화 | Cowork/Code 장기 실행 중 상태 문구가 과도하게 흔들리지 않음 |
| `src/bridge/bridgeMessaging.ts` | `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs` | 실행 이벤트와 표시 전용 이벤트를 렌더 이전에 분리 | replay 후 visible banner 중복이 발생하지 않음 |
| `src/screens/REPL.tsx`, `src/components/Messages.tsx`, `src/components/StatusLine.tsx` | `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | timeline, composer, status strip이 공통 런타임 상태를 사용 | 리사이즈, queue 연속 실행, retry 후에도 UI가 패치식으로 흔들리지 않음 |
## 4. 실행 단계
### A. 런타임 상태 단일화
- 적용 위치: `ChatWindow.xaml.cs`, `AxAgentExecutionEngine.cs`, `ChatStorageService.cs`
- 완료 조건:
- `Chat`, `Cowork`, `Code`가 같은 런타임 상태 모델을 갱신
- queue, retry, compact 이후 상태가 재오픈 후에도 동일하게 복원
- 품질 기준:
- 같은 대화를 다시 열었을 때 보이는 timeline과 저장 상태가 일치
- queue badge와 최근 실행 이력이 어긋나지 않음
### B. 실행 준비 경로 일원화
- 적용 위치: `AxAgentExecutionEngine.cs`, `LlmService.cs`
- 완료 조건:
- prompt stack assembly, execution mode choice, final commit이 엔진 기준으로 통합
- send/regenerate/retry/slash가 동일 API를 사용
- 품질 기준:
- 같은 탭과 같은 설정에서 실행 경로가 예측 가능
- UI에서 별도 prompt stack을 만들지 않음
### C. 루프 이벤트 정규화
- 적용 위치: `AgentLoopService.cs`, `AgentLoopTransitions.cs`, `AgentLoopTransitions.Execution.cs`
- 완료 조건:
- 권한 요청, 실패, 재시도, 완료 이벤트가 안정적인 스키마를 사용
- bounded activity/event record 기준이 문서화
- 품질 기준:
- 장기 도구 실행 중 상태 flash가 줄고 debug payload 노출이 최소화
### D. timeline 유도 모델 고정
- 적용 위치: `ChatWindow.xaml`, `ChatWindow.xaml.cs`
- 완료 조건:
- assistant/user message, 실행 로그, compact boundary, queue summary가 하나의 derived timeline에서 생성
- 직접 bubble injection 경로 제거
- 품질 기준:
- blank assistant card 0건
- token-only completion 0건
- re-render 뒤 duplicate banner 0건
### E. composer와 status strip 정리
- 적용 위치: `ChatWindow.xaml`, `ChatWindow.xaml.cs`
- 완료 조건:
- composer height는 명시적 줄바꿈 중심으로만 증가
- status strip, queue summary, runtime activity가 debounce된 업데이트를 사용
- 품질 기준:
- resize 이후 입력창이 과하게 커지지 않음
- metadata가 메시지 본문보다 앞서 보이지 않음
### F. 복구/재개/검증 마감
- 적용 위치: `ChatWindow.xaml.cs`, `AxAgentExecutionEngine.cs`, `ChatStorageService.cs`
- 완료 조건:
- reopen after interruption, retry-last, regenerate, manual compact, manual stop, manual resume 시나리오를 모두 통과
- 최신 assistant state와 저장 conversation이 일치
- 품질 기준:
- 복원 후 마지막 상태가 실제 종료 시점과 같음
- 세션 재개 후 추가 오류 전파가 없음
## 5. 검증 기준
- `dotnet build` 경고 0 / 오류 0
- 고위험 변경마다 최소 1개 이상 회귀 테스트 추가
- `internal` / `external` 운영 모드 정책 위반 0건
- reopen, retry, regenerate, queue follow-up, permission, compact 시나리오 수동 점검 유지
## 6. 최신 메모
- 2026-04-05 15:34 (KST): 실행 개선 계획을 실제 참조 모듈 흐름 기준으로 재정리했습니다.
- 2026-04-05 16:55 (KST): 엔진, 채팅 UI, 상태 UX, 설정 연동의 구조적 갭을 분리해 정리했습니다.
- 2026-04-06 09:36 (KST): 상태 strip 표현을 전용 카탈로그로 분리하고 permission/tool-result 설명을 정형화했습니다.
- 2026-04-06 10:07 (KST): topic preset과 사용자 상호작용 렌더 책임을 presentation 파일로 계속 분리했습니다.
- 2026-04-06 11:52 (KST): permission, tool-result, skill gallery 설명층을 더 구체적인 운영 정보 중심으로 보강했습니다.

View File

@@ -0,0 +1,78 @@
# AX Agent 품질 계획
업데이트: 2026-04-15 18:20 (KST)
## 1. 범위
- 명령 처리 흐름
- 권한 / hook 계약
- plan / run 내구성
- 세션 / 로그 관리
- 도구 / 스킬 운영 정합성
## 2. 현재 상태 요약
- 루프 가드와 검증 게이트는 주요 경로에 반영됨
- 병렬 도구 실행, Plan Mode, unknown-tool 복구는 기본 동작 확보
- 세션 재개와 이벤트 replay는 수치 기반 관리 단계로 진입
## 3. 단계별 품질 게이트
### P1 Hook 계약 고도화
- `updatedInput`, `updatedPermissions`, `additionalContext`를 AX 실행 루프에 반영
- 설정 토글로 위험 기능 제어
### P2 세션 / 이벤트 내구성
- run 상태 영속화와 resume 기준 고정
- jsonl 이벤트 필드 표준화와 재생 가능성 확보
### P3 실패 복구 표준화
- unknown-tool, 권한거부, 파라미터 오류를 유형화
- 유형별 복구 프롬프트와 다음 액션 우선순위 고정
### P4 완료 품질 정렬
- 코드/문서 작업별 완료 체크리스트 표준화
- 증거 없는 완료 응답 방지
## 4. 운영 점검 스냅샷
- 도구 레지스트리 등록 수: 65개
- `IAgentTool` 구현 수: 65개
- 내장 스킬 파일 수: 40개
- `allowed-tools` 적용 스킬: 40/40
- 레거시 도구명 `process_run`, `grep_tool` 참조: 0건
- 내부 모드 차단 정책: `http_tool` 전면 차단, `open_external` 외부 URL 차단
## 5. 즉시 보완 항목
1. 스킬 frontmatter 확장 유지: `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell`
2. `paths` 기반 조건부 활성화 유지
3. 도구 별칭 정규화와 runtime hook filter 적용 유지
4. 위험 자동허용 가드(`process`, `spawn_agent`, `snippet_runner`) 강제 승인 정책 유지
## 6. 내부 벤치마크 기준
| 시나리오 | 기준 테스트 | 합격 기준 |
|---|---|---|
| 기본 Agentic loop | `AgentLoopE2ETests.RunAsync_ExecutesToolCall_AndCompletesWithFinalText` | ToolCall/ToolResult/Complete 이벤트 순서 유효, 최종 응답에 결과 포함 |
| unknown-tool 복구 | `AgentLoopE2ETests.RunAsync_UnknownTool_RecoversAndCompletes` | 오류 후 완료까지 수렴, 반복 실패 루프 없음 |
| Plan Mode 실행 연결 | `AgentLoopE2ETests.RunAsync_PlanModeAlways_EmitsPlanningThenExecutesTool` | 계획 응답 뒤 실제 도구 호출과 최종 결과 생성 |
| 권한 Ask 거부 처리 | `AgentLoopE2ETests.RunAsync_AskPermissionDenied_EmitsPermissionEvents_AndCompletes` | PermissionRequest/PermissionDenied 이벤트 기록 후 안전 종료 |
| Hook 입력 변형 | `AgentLoopE2ETests.RunAsync_PreHookInputMutation_ChangesToolArguments` | pre-hook `updatedInput`이 실제 도구 입력에 반영 |
| Runtime 정책 강제 | `AgentLoopE2ETests.RunAsync_DisallowedTool_ByRuntimePolicy_EmitsPolicyRecoveryError` | 비허용 도구 차단과 정책 복구 경고 후 종료 |
| Hook filter 정합성 | `AgentLoopE2ETests.RunAsync_HookFilters_ExecuteOnlyMatchingHookForToolAndTiming` | 지정 hook만 실행되고 비매칭 hook는 미실행 |
| 별칭 정규화 | `AgentLoopE2ETests.RunAsync_EnterPlanModeAlias_ResolvesAndExecutes` | CamelCase 도구명이 내부 snake_case 도구로 매핑되어 실행 |
| 혼합 복구 내구성 | `AgentLoopE2ETests.RunAsync_MixedRecovery_UnknownToolAndPermissionDenied_TerminatesSafely` | 반복 한도 안에서 안전 종료 |
## 7. replay 안정성 기준
| 시나리오 | 기준 테스트 | 합격 기준 |
|---|---|---|
| 실행 이벤트 정렬/압축 복원 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesHistoryOrderAndCompactsSize` | ExecutionEvents 400개 상한과 시간순 정렬 유지 |
| run 이력 중복 정규화 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesAgentRunDuplicatesByRunId` | 동일 `RunId`는 최신 상태 1건으로 축약 |
| terminal 우선 판정 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_PrefersTerminalEventsWhenTimestampsEqual` | 동시각 이벤트는 terminal 상태 기준으로 복원 |
| active 복원 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_RebuildsActiveTasksFromNonTerminalEvents` | 중단 후 재개 시 active task 재구성 |
| dangling 정리 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_CompleteClearsDanglingRunScopedActiveTasks` | Complete 뒤 run 스코프 dangling active task 0건 |
## 8. 배포 체크리스트
1. `dotnet build` 경고 0 / 오류 0
2. `dotnet test` 전체 통과
3. 내부 벤치마크 시나리오 전건 통과
4. `Suite=ReplayStability` 전건 통과
5. `scripts/release-gate.ps1` 실행 결과 기록

View File

@@ -2,13 +2,13 @@
업데이트: 2026-04-08 10:38 (KST)
`OpenCode`AX Agent 같은 기준으로 비교하기 위한 공통 회귀 프롬프트 세트입니다.
AX Agent 실행 흐름을 같은 기준으로 점검하기 위한 공통 회귀 프롬프트 세트입니다.
## 사용 규칙
- 루프 정책, transcript 렌더, 권한/계획/진행 UX, queue/compact/reopen 흐름에 영향을 주는 변경 뒤에는 이 문서를 기준으로 최소 1회 점검합니다.
- 모든 항목을 매번 전부 돌릴 필요는 없지만, 바뀐 영역과 맞닿은 묶음은 반드시 확인합니다.
- 결과는 “모양이 똑같은가”보다 “사용자 체감 흐름과 완료 품질이 같은가”를 기준으로 봅니다.
- 결과는 “화면이 비슷한가”보다 “사용자 체감 흐름과 완료 품질이 안정적인가”를 기준으로 봅니다.
## 실패 분류

View File

@@ -0,0 +1,50 @@
# AX Agent 런타임 품질 계획
업데이트: 2026-04-15 18:20 (KST)
## 1. 기준
- 대상 범위: 명령 처리, 권한/훅, plan/run 내구성, 세션/로그 관리
- 문서 목적: AX Agent 런타임 경로의 품질 기준과 마감 조건을 명확히 고정
## 2. 주요 갭
- Hook 출력의 구조화 계약 적용 범위가 일부 경로에 아직 제한적입니다.
- 세션 재개와 이벤트 replay 품질은 시나리오별 편차가 남아 있습니다.
- 도구 선택 실패 뒤 재시도 전략의 메시지와 다음 행동이 완전히 표준화되지는 않았습니다.
## 3. 실행 순서
1. Hook 계약 고도화
2. 세션/이벤트 내구성 정리
3. 실패 복구 메시지 표준화
4. 완료 품질 게이트 고정
## 4. 완료 판정
- 내부 벤치마크 목표 성공률 충족
- 세션 재개/이벤트 재생 오류 0건
- 빌드 경고 0 / 오류 0 유지
## 5. 점검 스냅샷
- 기준 시점: 2026-04-03
- 계획 대비 현재 수준: 약 92~95%
- 테스트 상태: `dotnet test` 374/374 통과
- Hook 계약: 구현 완료 수준
- 세션/이벤트 내구성: 복원/재생 경계 케이스 테스트 반영
- 실패 복구 표준화: unknown-tool/권한/정체 경로 반영
- 완료 품질 게이트: 문서화와 코드 반영 완료
## 6. 관리 대상
1. 도구 계층: 목록, 별칭 정규화, unknown-tool 복구, 선택 정책
2. 스킬 계층: 로더, frontmatter, 파일 기반 운영, 조건부 활성화
3. 훅/권한: pre/post hook 계약, permission update 반영, ask/auto/deny 일관성
4. 세션/상태: run 복원, 이벤트 replay, 중복 억제, resume 신뢰성
5. 계획/실행: plan 승인/수정 이력, 실행 게이트, 조기 완료 방지
6. MCP/외부도구: 연결, 리소스 조회, 실패 복구, internal 정책
7. 설정/UI 연동: 설정값, 실행 코드, UI 반영 동기화
## 7. 다음 순서
1. Agentic loop E2E 시나리오를 회귀 테스트로 계속 고정
2. 벤치마크 합격 기준과 증적을 배포 체크리스트에 연결 유지
3. 수치와 상태 문구를 `README.md`, `docs/DEVELOPMENT.md`, 로드맵 문서와 동기화
## 8. 운영 기준
- 내부 벤치마크와 replay 안정성 테스트는 릴리즈 전 최소 조건으로 유지
- 문서에는 비교·모사 표현보다 AX 기준 완료 조건과 검증 결과만 기록

View File

@@ -1,238 +0,0 @@
# claude-code / AX Agent 구조 비교 문서
업데이트: 2026-04-09 10:20 (KST)
이 문서는 AX Agent를 `claude-code` 동등 품질 기준으로 유지·검증하기 위한 비교 기준 문서입니다.
실제 비교 대상 저장 폴더명은 `claw-code`이지만, 문서 표기는 `claude-code`로 통일합니다.
## 1. claude-code 구조, 특징 기능, 에이전트 루프
### 1-1. 구조 핵심
`claude-code`는 크게 아래 축으로 나뉩니다.
1. 부트스트랩/세션 상태
- `src/bootstrap/state.ts`
- `src/bridge/initReplBridge.ts`
- `src/bridge/sessionRunner.ts`
2. 메인 REPL/대화 화면
- `src/screens/REPL.tsx`
- `src/components/Messages.tsx`
- `src/components/VirtualMessageList.tsx`
- `src/components/StatusLine.tsx`
3. 도구 실행 계층
- `src/services/tools/toolOrchestration.ts`
- `src/services/tools/StreamingToolExecutor.ts`
4. 메모리/컨텍스트/권한
- `04_작동원리.md`
- `05_메모리와컨텍스트.md`
- `06_권한시스템.md`
- `15_스킬.md`
### 1-2. 특징 기능
`claude-code`의 강점은 기능 개수보다 실행 품질에 있습니다.
- 대화, 도구 실행, 권한, 상태줄이 한 흐름으로 이어진다.
- transcript가 단순 채팅 로그가 아니라 실행 관측 UI 역할을 한다.
- 도구 호출이 응답 후처리가 아니라 루프 자체의 핵심 경로다.
- read-only 도구는 병렬화하고, non-concurrent 도구는 직렬화해 체감 반응성을 높인다.
- 메모리 구조가 `managed / user / project / local` 계층으로 명확하다.
- `CLAUDE.md`, `.claude/rules/*.md`, `paths:` frontmatter, `@include` 같은 규칙 기반 메모리 주입이 강하다.
- 권한 시스템이 `default / acceptEdits / plan / bypassPermissions`와 allow/deny rule로 분리되어 있다.
- skill 시스템이 단순 프롬프트 스니펫이 아니라 재사용 가능한 워크플로우 레이어다.
### 1-3. 에이전트 루프 구조
`claude-code`의 기본 루프는 다음 순서에 가깝습니다.
1. 사용자 메시지 수신
2. 시스템 컨텍스트 조립
- Git 상태
- 메모리 계층
- 현재 날짜/환경
- 사용 가능한 도구/권한 상태
3. 모델 호출
4. tool_use block 감지
5. 권한 판단
6. 도구 실행
7. tool_result를 다시 모델에 투입
8. 필요 시 추가 도구 호출
9. 최종 텍스트 응답 커밋
중요한 점은, 이 루프가 단순히 "LLM 호출 후 도구 실행"이 아니라 `도구를 전제로 설계된 루프`라는 점입니다.
### 1-4. Cowork/Code에서 결과가 잘 나오는 이유
#### 1. 도구 우선 오케스트레이션
- `toolOrchestration.ts`가 tool call을 배치로 나누고
- `StreamingToolExecutor.ts`가 스트리밍 도중에도 도구 실행 준비를 진행합니다.
- read-only/concurrency-safe 도구는 병렬 실행해 첫 반응 시간을 줄입니다.
#### 2. 실행 중 관측성이 높음
- `Messages.tsx`
- `VirtualMessageList.tsx`
- `StatusLine.tsx`
이 구조 덕분에 사용자는 "지금 무엇을 읽고, 무엇을 실행하고, 어디서 멈췄는지"를 계속 볼 수 있습니다.
긴 작업에서도 멈춘 것처럼 느껴지지 않는 이유가 여기 있습니다.
#### 3. 긴 세션을 버티는 transcript 구조
- transcript는 전체 렌더를 계속 다시 그리지 않습니다.
- `VirtualMessageList.tsx` 기준으로 가시 영역 중심 렌더와 스크롤/탐색 보조 구조가 분리되어 있습니다.
- 긴 세션, 많은 도구 호출, 많은 중간 상태에서도 UI 부하가 상대적으로 낮습니다.
#### 4. 메모리와 규칙 주입이 명시적
- `CLAUDE.md`
- `.claude/rules/*.md`
- `paths:`
- `@include`
이 구조 때문에 프로젝트/경로/사용자/관리자 규칙이 프롬프트에 일관되게 들어갑니다.
결과가 흔들릴 때도 "왜 그런 성향이 나왔는지" 추적이 쉽습니다.
### 1-5. 주요 성능과 품질에 영향을 주는 프롬프트 전략
1. 도구를 먼저 쓰게 만드는 직접적인 지시
2. 컨텍스트를 계층화해서 넣음
3. 권한과 도구 사용 범위를 명확히 분리
4. 실행 중간 상태를 계속 보여줘 재시도/복구가 자연스러움
5. read-only tool 병렬화로 초기 탐색 시간을 줄임
6. transcript/상태줄이 실제 실행 관측 수단으로 동작
## 2. AX Agent 구조, 특징 기능, 에이전트 루프
### 2-1. 구조 핵심
현재 AX Agent는 다음 축으로 구성됩니다.
1. 에이전트 실행
- `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`
- `src/AxCopilot/Services/Agent/AgentLoopService.cs`
- `src/AxCopilot/Services/Agent/StreamingToolExecutionCoordinator.cs`
2. 루프 정책 분리 계층
- `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`
- `src/AxCopilot/Services/Agent/AgentLoopTransitions.Verification.cs`
- `src/AxCopilot/Services/Agent/AgentLoopTransitions.Documents.cs`
- `src/AxCopilot/Services/Agent/AgentLoopCompactionPolicy.cs`
- `src/AxCopilot/Services/Agent/AgentLoopRuntimeThresholds.cs`
3. 메모리 구조
- `src/AxCopilot/Services/AgentMemoryService.cs`
- `src/AxCopilot/Services/Agent/MemoryTool.cs`
4. transcript/UI 구조
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptHost.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptRenderPlanner.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptRenderExecution.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptVirtualization.cs`
5. 성능/검증 로그
- `src/AxCopilot/Services/AgentPerformanceLogService.cs`
### 2-2. 특징 기능
- Chat / Cowork / Code를 한 창에서 운영
- 등록 모델별 실행 프로파일 지원
- Cowork/Code 전용 agent loop 사용
- 문서 생성 계열 fallback 및 verification gate 지원
- IBM/vLLM/OpenAI 호환 tool-use 경로 대응
- 계층형 메모리 구조 지원
- `/memory` 계열 도구와 설정 UI에서 메모리 관리 가능
- transcript/진행 표시/UI 구조를 `claude-code` 기준으로 계속 분해해온 상태
### 2-3. 에이전트 루프 구조
현재 AX Agent의 루프는 대략 아래 순서입니다.
1. 실행 컨텍스트 구성
2. 사용자 메시지와 시스템 지시 조립
3. LLM 호출
4. tool call 감지
5. `StreamingToolExecutionCoordinator`를 통한 조기 도구 실행/prefetch
6. 도구 결과 재투입
7. verification/document fallback/compact 정책 수행
8. 최종 결과 커밋
9. transcript/status/perf 로그 반영
### 2-4. 현재 구조적 강점
1. 모델 프로파일 기반 제어
2. 계층형 메모리 구조
3. Cowork/Code용 별도 실행 정책
4. 성능 계측 로그
### 2-5. 현재 구조적 약점
1. `ChatWindow.xaml.cs` 책임이 여전히 큼
2. transcript가 아직 완전한 데이터 기반 가상화는 아님
3. 루프 정책이 여전히 서비스 중심
4. tool streaming executor가 독립 계층으로 강화되었지만 결합이 남음
## 3. claude-code와 AX Agent 비교
### 3-1. 전체 비교 요약
| 항목 | claude-code | AX Agent 현재 상태 |
|------|-------------|-------------------|
| 메모리 계층 | 매우 강함 | 많이 근접 |
| tool orchestration | 매우 강함 | 많이 강화됨 |
| transcript 가상화 | 강함 | 부분 근접 |
| 진행 관측성 | 강함 | 많이 근접 |
| 모델 프로파일성 | 단단함 | 프로파일 시스템 도입 완료 |
| 문서 fallback | 비교적 단순/직접적 | 더 많은 정책 보유 |
| 루프 응집도 | 모듈 분리 우수 | 개선 중, 많이 나아짐 |
### 3-2. AX Agent가 이미 따라잡은 부분
1. 메모리 계층 구조
2. 진행 표시 UX
3. 모델별 실행 성향 제어
4. 도구 호출 강화
### 3-3. AX Agent가 아직 더 개선할 수 있는 부분
1. transcript의 진짜 가상화
2. UI 렌더의 data-template화
3. tool executor의 독립성
4. Cowork/Code 실사용 로그 기반 검증 체계
### 3-4. 성능과 결과 품질에 직접 영향이 큰 구조 요소 비교
#### claude-code 쪽 핵심
- read-only tool 병렬화
- streaming executor
- transcript 가상화
- 상태줄/메시지/도구 실행 분리
- 명시적 메모리 계층
- 권한 시스템과 루프의 강한 연결
#### AX Agent 쪽 핵심
- 모델 프로파일
- document/verification/compact 정책 분리
- IBM/vLLM 도구 호출 보강
- transcript host/windowing/virtualization 보강
- WPF 환경 특화 성능 대응
### 3-5. 현 시점 결론
현 시점 AX Agent는 `claude-code` 대비 다음 상태로 보는 것이 적절합니다.
- 구조적 방향성: 거의 동일한 방향
- 메모리/도구/진행 표시: 상당 부분 근접
- transcript/렌더 구조: 아직 한 단계 차이 존재
- 장기 세션 성능: 실제 로그 기반 추가 검증 필요
즉 AX Agent는 더 이상 "기본 구조가 부족한 상태"는 아니고, 이제부터는 `실사용 검증 기반으로 남은 구조 차이를 줄이는 단계`입니다.
## 4. AX 개발 시 이 문서를 어떻게 쓸지
1. Cowork/Code 품질 이슈가 생기면 먼저 `claude-code` 기준 흐름과 비교
2. 구조 리팩터링이 필요할 때 transcript / tool executor / loop policy / memory 중 어디를 건드리는지 먼저 분류
3. 실사용 성능 검증 시 `%APPDATA%\\AxCopilot\\perf` 로그와 loop elapsed, transcript render elapsed, no-tool loop, verification/fallback/compact 비율을 함께 본다
4. 계획 수립 시 항상 참조 파일, AX 적용 위치, 완료 조건, 품질 판정 기준을 같이 적는다

View File

@@ -1,153 +0,0 @@
# CLAW-CODE 품질 동등화 계획 (전면 재작성)
## 1. 기준
- 레퍼런스: `E:\AX Copilot - Codex\claw-code\claw-code-f5a40b86dede580f6543bf8926c9af017eea9409\src`
- 동등화 범위: 명령 처리 흐름, 권한/훅 체계, plan/run 내구성, 세션/로그 관리.
## 2. 보존 이력 (요약만 유지)
- 루프 가드(반복 실패/정체 감지)와 검증 게이트는 이미 AX에 부분 반영.
- 병렬 도구 실행, Plan Mode, Unknown-tool 복구 로직은 반영 완료.
- 세션/이력 안정화는 진행 중.
## 3. 현재 갭
- Hook 출력의 구조화 계약 적용 범위가 제한적.
- 세션 재개/이벤트 replay 품질이 시나리오별 편차 존재.
- 도구 선택 실패 후 재시도 전략의 일관성 부족.
## 4. 단계별 실행
### P1 Hook 계약 고도화
- `updatedInput`, `updatedPermissions`, `additionalContext`를 AX 실행 루프에 반영.
- 설정 토글로 위험 기능 제어.
### P2 세션/이벤트 내구성
- run 상태 영속화와 resume 기준 고정.
- jsonl 이벤트 필드 표준화 및 재생 가능성 확보.
### P3 실패 복구 표준화
- unknown-tool/권한거부/파라미터 오류를 유형화.
- 유형별 복구 프롬프트와 다음 액션 우선순위 고정.
### P4 완료 품질 정렬
- 코드/문서 작업별 완료 체크리스트 표준화.
- 증거 없는 완료 응답 방지.
## 5. 완료 판정
- 내부 벤치마크 시나리오에서 목표 성공률 충족.
- 세션 재개/이벤트 재생 오류 0건.
- 빌드 경고 0/오류 0 유지.
## 6. 2026-04-03 점검 스냅샷
- 기준 시점: 2026-04-03.
- 계획 대비 현재 수준: 약 92~95%.
- 테스트 상태: `dotnet test` 374/374 통과.
- P1 Hook 계약: 구현 완료 수준.
- P2 세션/이벤트 내구성: 구현 완료 수준(복원/재생 경계 케이스 테스트 반영).
- P3 실패 복구 표준화: 구현 완료 수준(unknown-tool/권한/정체/fork 강제 흐름 반영).
- P4 완료 품질 정렬: 구현 완료 수준(게이트 로직 + 벤치마크 기준 문서화 완료).
## 7. 스킬/도구 운영 점검 (2026-04-03)
- 도구 레지스트리 등록 수: 65개 (`ToolRegistry.CreateDefault()` 기준).
- `IAgentTool` 구현 수: 65개. 동적 MCP 래퍼(`McpTool`)는 런타임 등록 구조로 정상.
- 내장 스킬 파일 수: 40개 (`src/AxCopilot/skills/*.skill.md`).
- `allowed-tools` 적용 스킬: 40/40.
- `requires: python` 고정 의존 스킬: 0개(기존 10개에 Python 가능/불가 분기 fallback 경로 반영).
- 레거시 도구명 `process_run` 참조: 0건 (`process`로 정규화).
- 레거시 도구명 `grep_tool` 참조: 0건 (`grep`로 정규화).
- 내부 모드 차단 정책: `http_tool` 전면 차단, `open_external`의 외부 URL 차단.
- 테스트 상태: `dotnet test` 374/374 통과.
## 8. claw-code 소스 직접 비교 결과 (2026-04-03)
- 비교 기준 소스: `claw-code/.../src/tools.ts`, `src/Tool.ts`, `src/skills/loadSkillsDir.ts`, `src/skills/bundled/*.ts`.
- claw-code 도구 상수명: 41개 (`*_TOOL_NAME` 기준).
- AX 도구명: 65개 (`IAgentTool.Name` 기준).
- claw-code 도구명 중 AX alias로 직접 해석되는 항목: 8개 (`Bash/Read/Write/Edit/Glob/Grep/WebFetch/WebSearch`).
- 미해석 항목(33개)은 대부분 제품 철학 차이 영역(예: `EnterPlanMode`, `ExitWorktree`, `TeamCreate`, `TodoWrite`, `ToolSearch`, `REPL`, `Cron*`).
- claw-code 번들 스킬은 코드 등록형 14개(`registerBundledSkill`)이며, AX는 파일 기반 스킬 40개(`*.skill.md`) 중심 구성.
- 번들 스킬 이름 교집합은 0개이며(의도된 차별화), 품질 기준은 "이름 일치"가 아니라 "동작 등가(계획/복구/검증/권한/세션 내구성)"로 판단해야 함.
- claw-code 스킬 메타데이터는 `allowedTools`, `whenToUse`, `model`, `disableModelInvocation`, `userInvocable`, `hooks`, `context`, `agent`, `paths`, `effort`, `shell`까지 지원.
- AX 스킬 메타데이터는 `allowed-tools`, `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell`, `hooks`, `hook_filters`까지 런타임 연계 확장 완료.
## 9. claw-code 비교 기반 즉시 보완 항목 (반영 상태)
1. 스킬 frontmatter 확장: `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell` 반영 완료.
2. 스킬 실행 범위 제어: `paths` 기반 조건부 활성화 반영 완료(첨부 파일 경로 매칭 시 동적 활성화).
3. 도구 별칭 정규화: claw-code 기본 도구명군(`WebFetch`, `WebSearch`, `AskUserQuestion`, `LSP`, `ListMcpResourcesTool` 등) AX 내부 도구명으로 매핑 반영 완료.
4. 반영 완료(2026-04-03): `hooks`/`hook_filters` 계약 확장 및 runtime hook 필터링(도구/타이밍 기준) 적용.
5. 반영 완료(2026-04-03): 슬래시 스킬 실행 시 `context/agent/effort/model/disable-model-invocation/allowed-tools/hooks/hook_filters` 메타데이터를 런타임 정책 지시문으로 합성 적용.
6. 반영 완료(2026-04-03): `permissionSetup` 비교 기반으로 위험 자동허용 가드 추가(`process`, `spawn_agent`, `snippet_runner`는 전역 `Auto`에서도 승인 단계 강제).
## 10. 전체 영역 동시 비교 기준 (누락 방지)
1. 도구 계층: 도구 목록, 별칭 정규화, unknown-tool 복구, tool search/선택 정책.
2. 스킬 계층: 로더, frontmatter, 번들/파일 기반 동시 운영, 조건부 활성화.
3. 훅/권한: pre/post hook 계약, permission update 반영, ask/auto/deny 일관성.
4. 세션/상태: run 복원, 이벤트 replay, 중복 이벤트 억제, resume 신뢰성.
5. 계획/실행: plan 승인/수정 이력, 실행 게이트, 조기 완료 방지.
6. MCP/외부도구: 연결/리소스 조회/읽기, 실패 복구, internal 모드 정책.
7. 서브에이전트: spawn/wait 제약, read-only 모드, 결과 회수 구조.
8. 운영/설정/UI 연동: 설정값-실행코드-UI 동기화, 탭별 분기(Cowork/Code) 일치.
## 11. 다음 적용 순서 (전체 영역 병렬 보정)
1. 기본 Agentic loop E2E 시나리오(도구 실행/unknown-tool 복구)를 회귀 테스트로 고정.
2. 벤치마크 합격 기준(시나리오/통과조건/증적)을 문서화하고 배포 체크리스트에 연결. (완료)
3. 최종 마감 시 패리티 문서(수치/상태)와 로드맵 문서를 동기화. (진행 중)
## 12. 내부 벤치마크 기준 (고정)
| 시나리오 | 기준 테스트 | 합격 기준 |
|---|---|---|
| 기본 Agentic loop (도구 호출 → 완료) | `AgentLoopE2ETests.RunAsync_ExecutesToolCall_AndCompletesWithFinalText` | ToolCall/ToolResult/Complete 이벤트가 순서상 유효하고 최종 응답에 계산 결과 포함 |
| unknown-tool 복구 | `AgentLoopE2ETests.RunAsync_UnknownTool_RecoversAndCompletes` | unknown 도구 오류 이벤트 후 완료까지 수렴, 반복 실패 루프 없음 |
| Plan Mode 실행 연결 | `AgentLoopE2ETests.RunAsync_PlanModeAlways_EmitsPlanningThenExecutesTool` | 계획 응답 후 실제 도구 호출이 이어지고 최종 결과 생성 |
| 권한 Ask 거부 처리 | `AgentLoopE2ETests.RunAsync_AskPermissionDenied_EmitsPermissionEvents_AndCompletes` | PermissionRequest/PermissionDenied 이벤트가 기록되고 안전 종료 |
| Hook 입력 변형 반영 | `AgentLoopE2ETests.RunAsync_PreHookInputMutation_ChangesToolArguments` | pre-hook `updatedInput`이 실제 도구 입력에 적용됨 |
| Runtime 정책(`allowed_tools`) 강제 | `AgentLoopE2ETests.RunAsync_DisallowedTool_ByRuntimePolicy_EmitsPolicyRecoveryError` | 비허용 도구 차단 + 정책 복구 경고 후 종료 |
| Hook filter 정합성 | `AgentLoopE2ETests.RunAsync_HookFilters_ExecuteOnlyMatchingHookForToolAndTiming` | 지정된 hook만 실행되고 비매칭 hook는 미실행 |
| claw-code alias(`EnterPlanMode`) 정규화 | `AgentLoopE2ETests.RunAsync_EnterPlanModeAlias_ResolvesAndExecutes` | CamelCase 도구명이 AX 내부 snake_case 도구로 매핑되어 정상 실행 |
| 혼합 복구 내구성 (unknown + 권한 + 대체도구) | `AgentLoopE2ETests.RunAsync_MixedRecovery_UnknownToolAndPermissionDenied_TerminatesSafely` | unknown-tool 오류 후 file_write 경유, math_eval로 수렴하고 반복 한도 내 안전 종료 |
### 벤치마크 배포 체크리스트 연결
1. `dotnet build` 경고 0/오류 0.
2. `dotnet test` 전체 통과 (`374/374` 기준, 증가 시 최신 값으로 동기화).
3. 위 9개 시나리오의 회귀 테스트가 모두 통과.
4. 패리티 수치/상태를 `NEXT_ROADMAP.md`와 동일 문구로 동기화.
5. 릴리즈 전 게이트 스크립트 실행: `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`
### 실행 증적 (2026-04-03)
- `dotnet test --filter "Suite=ParityBenchmark"`: 12/12 통과.
- `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`: build/replay/full gate 통과.
## 13. 세션 Replay 안정성 기준 (고정)
| 시나리오 | 기준 테스트 | 합격 기준 |
|---|---|---|
| 실행 이벤트 정렬/압축 복원 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesHistoryOrderAndCompactsSize` | ExecutionEvents 400개 상한 유지 + 시간순 정렬 유지 |
| run 이력 중복 정규화 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesAgentRunDuplicatesByRunId` | 동일 `RunId` 중복이 최신 상태 1건으로 축약 |
| 동시각 이벤트 종결 우선 판정 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_PrefersTerminalEventsWhenTimestampsEqual` | Tool/Permission 상태가 terminal 이벤트 기준으로 복원 |
| 비종결 이벤트 active 복원 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_RebuildsActiveTasksFromNonTerminalEvents` | 중단 후 재개 시 active task 3종(agent/tool/permission) 재구성 |
| run 종료 시 dangling 정리 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_CompleteClearsDanglingRunScopedActiveTasks` | Complete 이후 run 스코프 active task 잔존 0건 |
| 현재 run 복원 우선순위 | `AppStateServiceTests.RestoreCurrentAgentRun_PrefersRunningExecutionEventOverHistory` | 실행 중 이벤트가 history보다 우선되어 현재 run 복원 |
| recent timeline 재구성 | `AppStateServiceTests.RestoreRecentTasks_RebuildsRecentTaskTimelineFromExecutionEvents` | 도구/권한/에이전트 최근 이력 순서 복원 |
| 권한 거부 후 active 권한 상태 정리 | `AppStateServiceTests.RestoreRecentTasks_PermissionDeniedLeavesNoActivePermissionAfterResume` | PermissionDenied 이후 run 재개 시 active permission 잔존 0건 |
| Hook 타임라인 역순 병합 정합성 | `AppStateServiceTests.ApplyAgentEvent_ReplaysHookTimelineInReverseChronologicalOrder` | Hook 이벤트가 역순 타임라인에서도 시간/의미 순서 보존 |
| 완료 이벤트 우선 정리(병렬 도구) | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_CompleteClearsParallelToolCallsForSameRun` | Complete 도착 시 동일 run의 병렬 도구 active task 즉시 정리 |
### 운영 규칙
1. 위 시나리오는 `Suite=ReplayStability` 테스트 태그로 관리.
2. 릴리즈 전 `Suite=ReplayStability` 전건 통과를 replay 불일치 0건의 최소 조건으로 사용.
### 실행 증적 (2026-04-03)
- `dotnet test --filter "Suite=ReplayStability"`: 12/12 통과.
- `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`: `ReplayStability` 포함 게이트 통과.
## 14. 권한 Hook 계약 (P2 마감 기준)
- lifecycle hook 키:
- `__permission_request__` (pre)
- `__permission_granted__` (post)
- `__permission_denied__` (post)
- payload 기준 필드: `runId`, `tool`, `target`, `permission`, `granted`, `reason`.
- 우선순위:
1. Hook `updatedPermissions`가 현재 run의 `AgentContext.ToolPermissions`를 즉시 갱신.
2. 갱신 후 `context.CheckToolPermissionAsync()`로 최종 판정.
3. hook 실패/예외는 non-blocking(권한 흐름 지속).
4. `additionalContext`는 가능한 경로에서 메시지 컨텍스트로 반영.

View File

@@ -1,5 +1,7 @@
업데이트: 2026-04-14 19:50 (KST)
업데이트: 2026-04-14 19:50 (KST)
업데이트: 2026-04-15 12:51 (KST)
- 업데이트: 2026-04-15 18:20 (KST)
- README, 로드맵, 실행 계획 문서에서 비교·모사 표현을 줄이고 AX 기준 개발 계획과 검증 기록 중심으로 문서명과 설명을 정리했습니다.
- 업데이트: 2026-04-15 16:49 (KST)
- 런처 `~` 워크스페이스 복원 경로를 재검토하고, 같은 `exe`의 첫 번째 창 하나를 모든 스냅샷에 재사용하던 복원 매칭 결함을 수정했습니다. 기존 `src/AxCopilot/Core/ContextManager.cs`는 각 스냅샷마다 `exe`만 비교해 HWND를 찾았기 때문에, Chrome/Edge처럼 여러 창이 떠 있을 때 한 창만 반복 이동되며 배치가 무너지기 쉬웠습니다.
- `src/AxCopilot/Core/ContextManager.cs`는 열린 창 후보를 수집한 뒤 `exe + 제목 매칭 점수 + 이미 사용한 핸들 제외` 기준으로 창을 배정하도록 바꿨습니다. exact title을 최우선으로 두고, 브라우저 suffix 제거/토큰 비교를 통해 비슷한 제목도 보조적으로 매칭합니다. 이미 다른 스냅샷에 배정된 핸들은 다시 쓰지 않아 multi-window 복원 품질을 높였습니다.
@@ -92,7 +94,7 @@
## ?낅뜲?댄듃 濡쒓렇
- ?낅뜲?댄듃: 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??媛깆떊?섎룄濡??곌껐?덉뒿?덈떎.
- `기준 구조` 湲곗? 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???뚯씪 ?≪뀡 李⑤떒???④퍡 諛섏쁺?덉뒿?덈떎.
@@ -549,7 +551,7 @@ dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj
| ?꾩씠肄??좊땲硫붿씠???ш? ?쒖뼱 | `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)
### 업무형 데스크톱 UI 개선 (2026-04-09)
| ??ぉ | ?뚯씪 | ?섏젙 ?댁슜 |
|------|------|----------|
@@ -616,7 +618,7 @@ dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj
### ?ㅽ듃由щ컢 以?UI 踰꾨쾮???€??媛쒖꽑 (2026-04-09)
Claude Desktop(React)?€ ?꾧뎄 ?몄텧???섏떗 嫄댁씠?대룄 留ㅻ걚?ъ슫 諛섎㈃, WPF ?깆? ?ы븯寃?踰꾨쾮?대뒗 臾몄젣???먯씤 遺꾩꽍 諛??섏젙.
업무형 데스크톱 UI와 비교했을 때 WPF transcript가 과하게 다시 그려지던 문제를 분석하고 수정했습니다.
**洹쇰낯 ?먯씤**: React virtual DOM?€ 蹂€寃쎈맂 遺€遺꾨쭔 diff/patch?섏?留? WPF??留??뚮뜑留덈떎 ?꾩껜 ?쒓컖???몃━瑜??뚭눼 ???ъ깮??
@@ -629,7 +631,7 @@ Claude Desktop(React)?€ ?꾧뎄 ?몄텧???섏떗 嫄댁씠?대룄 留ㅻ걚?ъ
**鍮꾧탳**:
| ??ぉ | ?섏젙 ??(WPF) | ?섏젙 ??| Claude Desktop (React) |
| ??ぉ | ?섏젙 ??(WPF) | ?섏젙 ??| 업무형 데스크톱 UI (React) |
|------|-------------|---------|----------------------|
| ?낅뜲?댄듃 ?꾨왂 | ?꾩껜 ?몃━ ?뚭눼?믪옱?앹꽦 | 4?④퀎: StreamingAppend ??Incremental ??**DiffRender** ??FullRender | Virtual DOM diff |
| ?뚮뜑 媛꾧꺽 | 1.5~2.2珥?| 3~4珥?| ~16ms (requestAnimationFrame) |
@@ -856,8 +858,8 @@ UI ?붿옄???€洹쒕え 由ы뙥?좊쭅 ???꾪뿕 ?묒뾽 ??湲곕줉???덉쟾
|------|------|
| `docs/AGENT_ROADMAP.md` | ?먯씠?꾪듃 湲곕뒫 濡쒕뱶留?(吏€?ν삎 怨좊룄??P1~P7 ?곸꽭 ?ы븿) |
| `docs/LAUNCHER_ROADMAP.md` | ?곗쿂 湲곕뒫 濡쒕뱶留?|
| `docs/OPENCODE_PARITY_PLAN.md` | OpenCode 湲곕뒫 ?€??怨꾪쉷 |
| `docs/TOOL_PARITY_REPORT.md` | ?꾧뎄 ?명솚??由ы룷??|
| `docs/AX_AGENT_QUALITY_PLAN.md` | AX Agent 품질 게이트 계획 |
| `docs/TOOL_COVERAGE_REPORT.md` | ?꾧뎄 ?명솚??由ы룷??|
| `docs/AX_AGENT_UI_CHECKLIST.md` | ?먯씠?꾪듃 UI 泥댄겕由ъ뒪??|
| `docs/UI_UX_CHECKLIST.md` | UI/UX 泥댄겕由ъ뒪??|
> ?낅뜲?댄듃: 2026-04-14 18:08 (KST)
@@ -887,7 +889,7 @@ UI ?붿옄???€洹쒕え 由ы뙥?좊쭅 ???꾪뿕 ?묒뾽 ??湲곕줉???덉쟾
> - 李멸퀬: ?뚯뒪???꾨줈?앺듃??湲곗〈 nullable 寃쎄퀬 `src/AxCopilot.Tests/Services/WorkspaceContextGeneratorTests.cs(76)` 1嫄댁? ?좎??⑸땲??
- ?낅뜲?댄듃: 2026-04-14 18:37 (KST)
- claude-code 濡쒖뺄 ?ㅻ깄?룹쓣 ?ㅼ떆 ?뺤씤?덉?留? ?꾩옱 ?ㅻ깄?룹뿉??PPT/臾몄꽌 ?꾩슜 踰덈뱾 ?ㅽ궗???쒕졆?섏? ?딆븯?듬땲?? ?€??AX媛€ 湲곕낯 ?ы븿?섍퀬 ?덈뒗 臾몄꽌??managed skill ?명듃瑜?以묒떖?쇰줈 諛고룷 ?먯궛 ?덉쭏???ㅻ벉?덉뒿?덈떎.
- 기준 구조 濡쒖뺄 ?ㅻ깄?룹쓣 ?ㅼ떆 ?뺤씤?덉?留? ?꾩옱 ?ㅻ깄?룹뿉??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?먯꽌 ?ъ슜???ㅽ궗怨?援щ텇???곹깭濡??뺤씤?????덉뒿?덈떎.
@@ -1009,8 +1011,8 @@ UI ?붿옄???€洹쒕え 由ы뙥?좊쭅 ???꾪뿕 ?묒뾽 ??湲곕줉???덉쟾
- 검증: `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 항목을 뒤로 미루는 기반을 만들었습니다.
- `기준 구조` 기준 남은 격차를 줄이기 위한 통합 고도화 계획을 확정했습니다. 남은 주요 축은 `에이전틱 루프/명령 큐`, `tool_result preview 안정화`, `명령/스킬 합성`, `문서 포맷 마감`, `개발언어 지원 정합화`, `회귀 테스트/릴리즈 게이트`입니다.
- 첫 배치로 [AgentCommandQueue.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentCommandQueue.cs)를 우선순위 배치 소비가 가능한 구조로 재작성했습니다. `peek`, `dequeue`, `dequeueAllMatching`, `dequeuePriorityBatch`, `snapshot` API를 추가해 `기준 구조`의 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를 재사용하는 회귀 케이스를 추가했습니다.
@@ -1107,27 +1109,27 @@ UI ?붿옄???€洹쒕え 由ы뙥?좊쭅 ???꾪뿕 ?묒뾽 ??湲곕줉???덉쟾
업데이트: 2026-04-15 10:10 (KST)
- 통합 마감 계획 확정:
1. `문서 포맷 최종 마감`
- 참조 대상: `claw-code/src/query.ts`, `claw-code/src/utils/toolResultStorage.ts`, `claw-code/src/commands/init-verifiers.ts`
- 참조 대상: `기준 구조/src/query.ts`, `기준 구조/src/utils/toolResultStorage.ts`, `기준 구조/src/commands/init-verifiers.ts`
- AX 적용 위치: `PptxSkill.cs`, `DeckPlanningService.cs`, `DeckQualityReviewService.cs`, `DocxSkill.cs`, `DocumentAssemblerTool.cs`, `ExcelSkill.cs`, `HtmlSkill.cs`, `ArtifactQualityReviewService.cs`, `ArtifactRepairGuideService.cs`
- 완료 조건: PPTX/DOCX/XLSX/HTML 모두 `plan -> critic -> repair` 흐름과 golden fixture 확장 완료
- 품질 판정 기준: strong fixture는 `Needs work: none`, weak fixture는 포맷별 적절한 repair guide를 반환
2. `에이전틱 루프 iteration pipeline 분리`
- 참조 대상: `claw-code/src/QueryEngine.ts`, `claw-code/src/query.ts`, `claw-code/src/utils/messageQueueManager.ts`
- 참조 대상: `기준 구조/src/QueryEngine.ts`, `기준 구조/src/query.ts`, `기준 구조/src/utils/messageQueueManager.ts`
- AX 적용 위치: `AgentLoopService.cs`, `AgentLoopRunLifecycle.cs`, `AgentQueuedCommandProjector.cs`, `AgentQueryContextBuilder.cs`
- 완료 조건: `RunAsync`의 bootstrap, query-view 생성, LLM 호출, tool dispatch, finalize를 더 작은 helper/service로 분리
- 품질 판정 기준: 중단/재개/권한 승인/분기/장기 세션 replay 테스트 통과
3. `tool_result replacement state 장기 세션 고정`
- 참조 대상: `claw-code/src/utils/toolResultStorage.ts`
- 참조 대상: `기준 구조/src/utils/toolResultStorage.ts`
- AX 적용 위치: `AgentMessageInvariantHelper.cs`, `AgentToolResultBudget.cs`, `ContextCondenser.cs`, `ChatStorageService.cs`
- 완료 조건: `tool_use_id` 변경, compact 이후, branch/replay 상황에서도 preview와 replacement 정책이 안정 유지
- 품질 판정 기준: replay/branch 저장본에서 preview 흔들림 0건
4. `개발언어 no-LSP fallback 심화`
- 참조 대상: `claw-code/src/query.ts`, `claw-code/src/context.ts`
- 참조 대상: `기준 구조/src/query.ts`, `기준 구조/src/context.ts`
- AX 적용 위치: `CodeLanguageCatalog.cs`, `LspTool.cs`, `WorkspaceContextGenerator.cs`, `ChatWindow.SystemPromptBuilder.cs`, `SettingsWindow.xaml`
- 완료 조건: 언어별 `manifest/build/test/lint` 힌트가 실제 fallback 분석과 워크스페이스 컨텍스트에 더 깊게 연결
- 품질 판정 기준: 로컬 LSP 없는 저장소에서도 Auto 모드가 기본 실행 흐름과 영향 범위를 안정적으로 안내
5. `명령/스킬 합성 및 릴리즈 게이트`
- 참조 대상: `claw-code/src/commands.ts`, `claw-code/src/skills/loadSkillsDir.ts`
- 참조 대상: `기준 구조/src/commands.ts`, `기준 구조/src/skills/loadSkillsDir.ts`
- AX 적용 위치: `SlashCommandCatalog.cs`, `SkillService.cs`, `README.md`, `docs/DEVELOPMENT.md`, `docs/NEXT_ROADMAP.md`
- 완료 조건: builtin/skill/plugin/workflow 토큰 충돌의 노출/실행 우선순위 완전 일치, 릴리즈 체크리스트 최신화
- 품질 판정 기준: 같은 토큰 충돌 시 팔레트 표시와 실제 실행이 완전 일치하고, 릴리즈 전 수동 확인 항목 최소화

View File

@@ -26,8 +26,8 @@
- `skills/*.skill.md` 파일 수: 41
- Slash 명령 매핑 엔트리 수: 85
## 4) OpenCode 비교 포인트 (실행 반영 기준)
- OpenCode 문서 기준 핵심 slash: `/permissions`, `/mcp` 확인
## 4) 핵심 명령 점검 포인트 (실행 반영 기준)
- 공통 운영 명령 기준: `/permissions`, `/mcp` 확인
- AX 현재 매핑에 `/permissions`, `/allowed-tools`, `/mcp`, `/chrome`, `/compact` 포함
- 다음 보강 우선순위:
1. 수동 시나리오 기반 MCP/Chrome 진단 품질 강화

View File

@@ -8,7 +8,7 @@
## 2. 재작성 기준
- 런처는 AX Agent 실행 품질을 끌어올리는 입력 허브로 재정의.
- OpenCode의 명령 중심 워크플로우를 AX Commander UX에 맞게 흡수.
- 명령 중심 워크플로우를 AX Commander UX에 맞게 재구성.
## 3. 2026 실행 계획 (v0.7.3 ~ v0.8.x)

View File

@@ -1,226 +1,80 @@
# AX Copilot 통합 로드맵 (전면 재작성)
# AX Copilot 통합 로드맵
## 1. 보존 이력 (요약만 유지)
- v0.5.x: 에이전트/런처 핵심 기능 확장, MCP/스킬/검증 체계 도입.
- v0.6.0: 문서 생성 및 업무 자동화 도구군 확장.
- v0.7.0~v0.7.2: Plan Mode, 병렬 도구, 검증 게이트 및 안정화 강화.
업데이트: 2026-04-15 18:20 (KST)
## 2. 재작성 목표
- OpenCode 수준의 실행 신뢰성, 세션 내구성, 결과 품질 확보.
- AX Copilot 고유 제약(사내 운영모드, WPF UX, 로컬 우선)을 유지한 동등 품질 구현.
## 1. 방향
- AX Copilot 전반의 실행 신뢰성, 세션 내구성, 결과 품질을 함께 끌어올립니다.
- 개발 문서는 비교 보고서가 아니라 AX 기준 계획과 검증 기록으로 유지합니다.
## 3. 마일스톤
## 2. 마일스톤
| 마일스톤 | 참조 대상 (`OpenCode`) | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
| 마일스톤 | 참조 대상 | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
|---|---|---|---|---|
| M1 (v0.7.3) Hook 계약 정식화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts` | `src/AxCopilot/Services/Agent/AgentHookRunner.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Models/AppSettings.cs`, `src/AxCopilot/ViewModels/SettingsViewModel.cs`, `src/AxCopilot/Views/SettingsWindow.xaml` | Hook 출력 계약(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영. 설정값-실행코드-UI 동시 반영. | JSON 훅/텍스트 훅 혼합 환경에서 실행 품질과 하위호환 유지 확인. |
| M2 (v0.7.4~v0.7.5) 세션/로그 내구성 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/TaskRunService.cs`, `src/AxCopilot/Services/TaskRunStore.cs`, `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Models/ChatModels.cs` | Plan/Run 상태 영속화. 이벤트 로그 표준화 replay 안정성 확보. | 앱 재시작/강제종료 후 동일 세션 재개 시 상태/이력 불일치 0건. |
| M3 (v0.7.6) 도구 선택/복구 안정화 | `src/commands.ts`, `src/Tool.ts`, `src/query.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopParallelExecution.cs`, `src/AxCopilot/Services/LlmService.ToolUse.cs` | 도구 선택 실패 루프 억제. 실패 유형별 복구 흐름 정형화. | 오타/비활성/별칭 도구 요청이 반복 실패 없이 정상 경로로 수렴하는지 확인. |
| M4 (v0.8.0) 품질 게이트 최종 정렬 | `src/query.ts`, `src/QueryEngine.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs` | 증거 기반 완료 판정 고정. 내부 벤치마크에서 OpenCode 동급 품질 달성. | 코드수정/문서생성/권한거부/복구 혼합 시나리오에서 조기완료 없이 근거 기반 종료 확인. |
| M1 (v0.7.3) Hook 계약 정식화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts` | `AgentHookRunner.cs`, `AgentLoopService.cs`, `AppSettings.cs`, `SettingsViewModel.cs`, `SettingsWindow.xaml` | Hook 출력 계약(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영, 설정값-실행코드-UI 동시 반영 | JSON 훅/텍스트 훅 혼합 환경에서 실행 품질과 하위호환 유지 |
| M2 (v0.7.4 ~ v0.7.5) 세션/로그 내구성 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `ChatSessionStateService.cs`, `TaskRunService.cs`, `TaskRunStore.cs`, `ChatWindow.xaml.cs`, `ChatModels.cs` | plan/run 상태 영속화, 이벤트 로그 표준화, replay 안정성 확보 | 앱 재시작/강제 종료 후 같은 세션 재개 시 상태 불일치 0건 |
| M3 (v0.7.6) 도구 선택/복구 안정화 | `src/commands.ts`, `src/Tool.ts`, `src/query.ts` | `AgentLoopService.cs`, `AgentLoopParallelExecution.cs`, `LlmService.ToolUse.cs` | 도구 선택 실패 루프 억제, 실패 유형별 복구 흐름 정형화 | 오타/비활성/별칭 도구 요청이 반복 실패 없이 정상 경로로 수렴 |
| M4 (v0.8.0) 품질 게이트 고정 | `src/query.ts`, `src/QueryEngine.ts`, `src/utils/sessionStorage.ts` | `AgentLoopService.cs`, `AgentLoopTransitions.Execution.cs`, `AgentLoopTransitions.cs` | 증거 기반 완료 판정 고정, 릴리즈 게이트 자동화 강화 | 코드수정/문서생성/권한거부/복구 혼합 시나리오에서 조기 완료 없이 종료 |
## 4. 측정 지표
- 반복 실패 루프 발생률.
- 세션 재개 성공률.
- 완료 응답 근거 누락률.
- 빌드/테스트 통과율.
## 3. 측정 지표
- 반복 실패 루프 발생률
- 세션 재개 성공률
- 완료 응답 근거 누락률
- 빌드/테스트 통과율
## 5. 운영 원칙
- `internal` 모드: 외부 유출 경로 차단 우선.
- 신규 기능은 반드시 설정값 연결 + 실제 동작 반영.
- 문서 마스터는 `.md`, HTML은 요청 시만 갱신.
## 4. 운영 원칙
- `internal` 모드에서는 외부 유출 경로 차단 우선
- 신규 기능은 설정값 연결 실제 동작 반영을 함께 완료
- 문서 마스터는 `.md`, HTML은 요청 시만 갱신
## 6. 즉시 실행 백로그
1. Hook 계약 확장 마무리 및 회귀 테스트.
2. 세션 복원 경계조건 테스트 세트 추가.
3. 이벤트 로그 스키마 고정 및 분석 리포트 템플릿 정리.
## 5. 즉시 실행 백로그
1. Hook 계약 확장 마무리 및 회귀 테스트
2. 세션 복원 경계조건 테스트 세트 추가
3. 이벤트 로그 스키마 고정 및 분석 리포트 템플릿 정리
## 7. 2026-04-03 실행 증적 동기화 (M4 포함)
- 기준 시점: 2026-04-03.
- 테스트: `dotnet test` 379/379 통과.
- M1 증적: Hook 계약 필드(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영 경로 구현 완료.
- M2 증적: run 복원/이력 재구성(`RestoreRecentFromExecutionEvents`, `RestoreCurrentAgentRun`, plan 이력 조회) 구현 및 테스트 존재.
- M3 증적: unknown-tool 복구 루프/결정 이벤트 처리 경로 구현 및 테스트 존재.
- M4 증적: 실행 종료 품질 게이트(`CodeQualityGate`, `ExecutionSuccessGate`, `TerminalEvidenceGate`) 반영 및 관련 테스트 존재.
- 스킬/도구 운영 정렬: 40개 스킬 모두 `allowed-tools` 명시 완료, Python 의존 10개는 fallback 분기 적용, 레거시 도구명(`process_run`, `grep_tool`) 참조 제거.
## 6. 실행 증적 기준
- 기준 시점: 2026-04-03
- 전체 테스트: `379/379` 통과
- Hook 계약 필드 반영 경로 구현 완료
- run 복원/이력 재구성 경로 구현 및 테스트 존재
- unknown-tool 복구 루프와 완료 게이트 경로 구현 및 테스트 존재
- 스킬/도구 운영 정렬: `allowed-tools` 전건 명시, Python 의존 경로 fallback 반영, 레거시 도구명 참조 제거
## 8. 남은 마감 항목 (M4 종료 조건)
1. 세션 replay 불일치 0건을 재현 시나리오별 수치로 기록.
2. 위 결과를 배포 전 체크리스트로 고정하고 매 릴리즈마다 수치 동기화.
## 7. 벤치마크 기준
- 기준 문서: `docs/AX_AGENT_QUALITY_PLAN.md`
- 고정 시나리오:
- 기본 loop
- unknown-tool 복구
- plan 연결
- 권한 거부
- hook 입력 변형
- allowed-tools 강제
- hook filter
- 합격 게이트:
- 빌드 경고·오류 0
- 전체 테스트 통과
- 고정 시나리오 회귀 통과
## 9. 벤치마크 고정 기준 (CLAW 패리티 동기화)
- 기준 문서: `docs/OPENCODE_PARITY_PLAN.md` 12절.
- 고정 시나리오: 기본 loop / unknown-tool 복구 / plan 연결 / 권한 거부 / hook 입력 변형 / allowed-tools 강제 / hook filter.
- 합격 게이트: 빌드 경고·오류 0 + 전체 테스트 통과 + 고정 시나리오 회귀 통과.
## 8. 실행 프레임
## 10. Replay 안정성 검증 연동
- 기준 문서: `docs/OPENCODE_PARITY_PLAN.md` 13절.
- 테스트 태그: `Suite=ReplayStability`.
- 운영 기준: 릴리즈 전 `ReplayStability` 시나리오 전건 통과 시 replay 불일치 0건으로 판정.
- 최신 실행 증적(2026-04-03): `ParityBenchmark 13/13`, `ReplayStability 14/14`, 전체 `379/379`.
- 실행 자동화: `scripts/release-gate.ps1`로 빌드/벤치마크/리플레이/전체 테스트를 일괄 점검.
### 입력 계층
- slash 명령 카탈로그와 매칭 상태를 별도 파일로 분리
- 입력 파싱 변경은 회귀 테스트와 함께 반영
## 11. 권한 Hook 계약 고정 (M1 완료 기준)
- lifecycle hook 키:
- `__permission_request__` (pre)
- `__permission_granted__` (post)
- `__permission_denied__` (post)
- payload 기준 필드: `runId`, `tool`, `target`, `permission`, `granted`, `reason`.
- 실행 우선순위:
1. Hook의 `updatedPermissions`를 현재 run 권한 컨텍스트에 즉시 반영.
2. 반영 후 `CheckToolPermissionAsync()`로 최종 권한 판정 수행.
3. hook 예외/실패는 non-blocking으로 처리하고 권한 흐름은 지속.
4. `additionalContext`는 가능한 경로에서 실행 메시지 컨텍스트에 병합.
### 권한 UX
- 권한 모드 명칭, 설명, 색, 정렬 순서를 단일 소스에서 관리
- 팝업, 상태 배너, 슬래시 출력이 같은 용어를 사용
### 설정 동기화
- Cowork/Code 설정 분기를 실행 코드까지 일치
- 설정 변경 즉시 반영 시나리오를 체크리스트화
### 통합 회귀
- `internal/external`, permission deny/recover, mcp reconnect, compact 수동/자동 흐름을 함께 검증
### 업무형 UI 마감
- 좌측 패널, 컴포저, 권한 팝업 밀도와 탐색 동작을 단순하고 일관된 패턴으로 정리
## 2026-04-04 추가 계획 (Codex/Claude 추격 로드맵 재정렬)
업데이트: 2026-04-04 13:24 (KST)
### 기준 소스
- OpenCode/src/commands.ts
- OpenCode/src/utils/permissions/PermissionMode.ts
- OpenCode/src/components/PromptInput/PromptInput.tsx
### 현재 AX 격차 요약
1. 입력/슬래시/권한 처리 로직이 ChatWindow 단일 파일에 상대적으로 집중되어 변경 파급도가 큼.
2. 설정-런타임-UI 동기화는 기능은 많지만 구조적 분리가 부족해 회귀 리스크가 높음.
3. Agent loop 품질 게이트는 확보됐으나, UI 상호작용 회귀 시나리오와 결합된 자동 검증이 더 필요함.
### 연속 실행 목표 (L1~L5)
- **L1. 입력 계층 모듈화**
- 목표: slash 명령 카탈로그/매칭/선택 상태를 분리해 ChatWindow 결합도 축소
- 완료 기준: slash 관련 핵심 로직을 독립 파일로 분리하고 기존 slash 테스트 통과
- **L2. 권한 UX/로직 단일 카탈로그화**
- 목표: 권한 모드 명칭/설명/색/정렬 순서를 단일 소스에서 제공
- 완료 기준: 팝업/상태 배너/슬래시 출력에서 동일 용어·동일 순서 유지
- **L3. 설정 동기화 강화**
- 목표: Cowork/Code 설정 분기를 실행 코드 경로까지 일치시켜 회귀 감소
- 완료 기준: 설정 변경 즉시 반영 시나리오 체크리스트 전건 통과
- **L4. Agentic loop + UI 결합 회귀 테스트 보강**
- 목표: internal/external, permission deny/recover, mcp reconnect, compact 수동/자동 흐름을 통합 검증
- 완료 기준: 릴리즈 게이트용 통합 테스트 세트 추가 및 통과
- **L5. Codex/Claude형 UI 마감**
- 목표: 좌측 패널/컴포저/권한 팝업 밀도와 탐색 동작을 단순·일관 패턴으로 정리
- 완료 기준: UI 체크리스트 주요 항목 100% 충족 + 빌드 경고/오류 0
### 이번 턴 즉시 반영 (L1 시작)
- ChatWindow의 대형 slash 명령 사전을 SlashCommandCatalog로 분리.
- ChatWindow는 카탈로그 API(MatchBuiltinCommands, TryGetEntry)를 통해 조회하도록 전환.
- 결과: 입력 계층 결합도 감소 + 향후 slash 확장/정리 시 변경 범위 축소.
## 2026-04-04 실행 프레임 고정 (중기 계획)
업데이트: 2026-04-04 14:47 (KST)
### 3축 고정 운영
1. 로직 안정화: 권한/운영모드/compact/모델 연결 경로를 테스트 우선으로 보강.
2. 기능 동등성: OpenCode 기준 주요 명령(/compact, /permissions, /mcp, /chrome)을 실행 시나리오로 검증.
3. UX 정렬: 상단/컴포저/팝업 밀도는 로직 안정화 완료 범위 내에서만 단계 반영.
### 이번 사이클 기준 완료 조건
- 빌드: `dotnet build` 경고 0 / 오류 0.
- 핵심 회귀: 운영모드, 권한, slash, 모델연결, compact 관련 필터 테스트 통과.
- 문서: `README.md`, `docs/DEVELOPMENT.md`에 시간 포함 이력 동기화 후 커밋/푸시.
### 이번 사이클 실제 보강 항목
- `ContextCondenserTests` 추가:
- proactive 비활성 시 무변경 확인
- 대용량 tool_result 축약 동작 확인
- `LlmRuntimeOverrideTests` 보강:
- vLLM 암호화 API키 런타임 복호화 검증
- 등록모델/전역 TLS 우회 플래그 합성 규칙 검증
업데이트: 2026-04-15 08:32 (KST)
### 이번 배치 마감 상태
- 에이전틱 루프는 우선순위 큐, tool_result preview 복원, 슬래시 합성 일원화까지 반영되어 `claw-code` 대비 남은 격차가 `루프 세분화/장기 상태 고정` 중심으로 축소됐습니다.
- 문서 포맷은 PPTX/DOCX/XLSX/HTML 모두 실무형 상급 수준까지 올라왔고, 이후 남은 작업은 `slide/workbook/document-level critic``golden regression` 확대 같은 마감 단계입니다.
- 개발언어 지원은 `빠른 선택 + LSP 심화 지원 + 정적 fallback` 구조로 정리됐습니다. 다음 단계는 언어별 실행 힌트 활용 범위를 더 넓히고, no-LSP 환경에서도 분석 품질을 더 끌어올리는 것입니다.
### 다음 우선순위
1. `AgentLoopService` 실행 상태 분해와 장기 세션 replacement state 고정
2. PPTX/XLSX/DOCX/HTML critic/repair loop 최종 마감
3. 언어별 build/test/lint 힌트의 실제 도구 활용 경로 확대
4. 릴리즈 게이트와 로드맵 문서 최종 정합화
업데이트: 2026-04-15 09:49 (KST)
### 추가 진행 메모
1. 개발언어 고도화는 `지원 언어 표시`를 넘어서 `Language Workflow`를 실제 컨텍스트에 주입하는 단계로 넘어갔습니다.
2. 다음 구현 배치는 `AgentLoopService` 세분화, `tool_result replacement state` 장기 세션 고정, 문서 포맷 공통 quality formatter 확장 순으로 진행합니다.
3. 문서 포맷은 PPTX가 가장 앞서 있고, DOCX/XLSX/HTML은 공통 critic/repair와 golden 회귀를 같은 수준으로 끌어올리는 마감 단계에 들어갑니다.
업데이트: 2026-04-15 10:05 (KST)
### 추가 진행 메모
1. 에이전틱 루프는 이제 `queued command projector + run lifecycle helper` 구조까지 들어와 시작/종료 책임이 분리됐습니다. 다음 마감 단계는 `RunAsync` 본체의 iteration pipeline을 더 잘게 나누는 작업입니다.
2. `tool_result replacement state`는 synthetic preview를 넘어 fingerprint 재바인딩까지 들어갔습니다. 남은 방향은 compact/branch 이후의 replacement policy를 세션 단위 상태로 더 오래 유지하는 것입니다.
3. 문서 포맷은 `ArtifactQualityOutputFormatter`가 HTML/XLSX뿐 아니라 DOCX/PPTX까지 확장되었습니다. 다음 마감은 포맷별 critic/repair 자체를 더 깊게 하고, golden fixture 샘플을 확대하는 단계입니다.
업데이트: 2026-04-15 10:50 (KST)
### 추가 진행 메모
1. 개발언어 fallback은 이제 `Language Workflow``.ax-context.md`와 코드 시스템 프롬프트에 모두 주입하는 단계까지 올라왔습니다. 남은 마감은 no-LSP 환경에서 이 힌트를 실제 도구 사용/검증 흐름과 더 촘촘히 묶는 것입니다.
2. 에이전틱 루프는 `run lifecycle`, `queued command projection`, `iteration preparation`, `LLM request preparation` helper까지 분리됐습니다. 다음 큰 축은 `RunAsync`의 tool dispatch/finalize 분리를 더 진행해 본체 책임을 더 줄이는 것입니다.
3. 명령/스킬 합성은 우선순위 충돌 해소가 대부분 정리됐고, 이후 작업은 릴리즈 게이트와 체크리스트를 최종 상태에 맞춰 닫는 단계입니다.
업데이트: 2026-04-15 10:10 (KST)
### 통합 마감 계획
1. 문서 포맷 최종 마감
- 참조 대상: `claw-code/src/query.ts`, `claw-code/src/utils/toolResultStorage.ts`, `claw-code/src/commands/init-verifiers.ts`
- AX 적용 위치: `PptxSkill`, `DeckPlanningService`, `DeckQualityReviewService`, `DocxSkill`, `DocumentAssemblerTool`, `ExcelSkill`, `HtmlSkill`, `ArtifactQualityReviewService`
- 완료 조건: PPTX/DOCX/XLSX/HTML golden fixture 확대, critic/repair loop 최종 보강
- 품질 판정 기준: strong fixture `Needs work: none`, weak fixture는 포맷별 정확한 repair guide 반환
2. AgentLoop/Queue/Context 최종 분리
- 참조 대상: `claw-code/src/QueryEngine.ts`, `claw-code/src/query.ts`, `claw-code/src/utils/messageQueueManager.ts`, `claw-code/src/utils/toolResultStorage.ts`
- AX 적용 위치: `AgentLoopService`, `AgentLoopRunLifecycle`, `AgentQueuedCommandProjector`, `AgentMessageInvariantHelper`, `AgentToolResultBudget`, `AgentQueryContextBuilder`, `ContextCondenser`
- 완료 조건: `RunAsync` iteration pipeline 분리, replacement state 장기 세션 고정
- 품질 판정 기준: 중단/재개/권한/branch/replay 회귀 전건 통과
3. 개발언어 fallback 심화
- 참조 대상: `claw-code/src/query.ts`, `claw-code/src/context.ts`
- AX 적용 위치: `CodeLanguageCatalog`, `LspTool`, `WorkspaceContextGenerator`, `SystemPromptBuilder`, 설정 도움말
- 완료 조건: no-LSP 환경에서도 manifest/build/test/lint 힌트와 영향 범위 설명 강화
- 품질 판정 기준: Auto 모드가 LSP 없는 주요 언어 저장소에서도 안정적으로 안내
4. 명령/스킬 합성 및 릴리즈 게이트
- 참조 대상: `claw-code/src/commands.ts`, `claw-code/src/skills/loadSkillsDir.ts`
- AX 적용 위치: `SlashCommandCatalog`, `SkillService`, `README`, `DEVELOPMENT`, `NEXT_ROADMAP`
- 완료 조건: builtin/skill/plugin/workflow 충돌 해소와 릴리즈 체크리스트 최신화
- 품질 판정 기준: 토큰 충돌 시 팔레트와 실제 실행이 완전 일치
### 실행 순서
1. 문서 포맷 마감
2. 루프/큐/컨텍스트 분리
3. 개발언어 fallback 심화
4. 명령/스킬 합성 및 릴리즈 게이트
업데이트: 2026-04-15 10:57 (KST)
- Agent loop 마감 작업으로 `도구 미호출 복구` 규칙을 서비스화했습니다. 남은 우선순위는 `iteration/tool dispatch 추가 분리`, `장기 세션 replacement state 완전 고정`, `문서 golden fixture 확대`, `릴리즈 체크리스트 닫기` 정도의 마감 품질 중심입니다.
업데이트: 2026-04-15 11:17 (KST)
### 추가 진행 메모
1. SQL은 별도 정적 분석 계층까지 올라왔습니다. 현재도 no-LSP 환경에서 `dialect/statement/risk/next checks`를 직접 설명할 수 있고, 다음 단계로 더 간다면 dialect별 migration lint나 schema dependency graph 정도가 후보입니다.
2. PPT는 구조화된 슬라이드를 더 적극적으로 `comparison/roadmap/kpi_dashboard/chart`로 승격하고, KPI/evidence/verdict/owner 같은 컨설팅형 품질 기준을 slide critic에 반영했습니다. 큰 기능보다 golden fixture 확대 성격의 마감 작업이 남아 있습니다.
3. HTML은 `kpi_panel`이 새 핵심 블록으로 들어오면서 board/strategy 문서의 decision/evidence/KPI 연결성이 더 중요해졌습니다. 이후 작업은 목적형 bundled skill 확장과 print/export polish 쪽이 중심입니다.
업데이트: 2026-04-15 11:36 (KST)
### 추가 진행 메모
1. SQL fallback은 `dialect/statement/risk` 수준을 넘어 `script intent/dependency/review focus`까지 확장됐습니다. 다음 선택지는 dialect별 migration lint, schema dependency graph, rollback 시뮬레이션처럼 더 깊은 전용 리뷰 계층입니다.
2. HTML 문서는 `decision_matrix``metric_strip`이 들어오면서 board/strategy 보고서의 의사결정 구조를 더 직접적으로 표현할 수 있게 됐습니다. 남은 작업은 bundled skill을 목적형으로 더 쪼개고 print/export polish를 마감하는 수준입니다.
3. PPT critic은 headline, trade-off, phase milestone, chart takeaway, KPI context를 세밀하게 보기 시작했습니다. 이후 남는 작업은 finance/sales/board fixture 확대와 slide-level auto-repair 정교화처럼 golden 마감 중심입니다.
업데이트: 2026-04-15 11:50 (KST)
### 추가 진행 메모
1. SQL은 이제 fallback 요약에 별도 `review severity / findings / checklist`가 붙는 수준까지 올라왔습니다. 남은 고도화는 dialect별 migration lint, schema dependency graph, rollback simulation 같은 더 깊은 검증 계층입니다.
2. Agent loop는 응답 분해 helper가 추가되어 `RunAsync` 본체가 한 단계 더 얇아졌습니다. 이후 분리 후보는 tool dispatch와 finalize 쪽이라, 구조적 마감은 거의 끝나가고 있습니다.
3. 문서 쪽은 기능 확장보다 `golden fixture 확대`, `목적형 bundled skill`, `print/export polish`처럼 완성도 마감 항목이 중심으로 남았습니다.
업데이트: 2026-04-15 12:14 (KST)
### 추가 진행 메모
1. Cowork/Code의 사용자 체감 진행 문구는 `AgentStatusNarrativeCatalog` 기준으로 정리됐습니다. 같은 agent event를 status bar, idle 힌트, readable process feed가 함께 재사용하게 되어 `작업 분석 -> 읽기 -> 수정 -> 검증 -> 정리` 흐름이 더 선명하게 드러납니다.
2. 남은 AX Agent UX 마감 항목은 상태 문구 자체보다 `카드 밀도`, `표현 수준(풍부하게/적절하게/간단하게)`별 정보량 차등, 목적형 이벤트 배지 polish 쪽입니다.
3. 구조적 우선순위는 여전히 `tool dispatch/finalize 추가 분리`, `장기 세션 replacement state 고정`, `PPT/HTML golden 확대`가 가장 높습니다.
## 9. 최근 진행 메모
- 2026-04-15 08:32 (KST): 루프 품질은 장기 상태 고정과 세분화 중심 과제로 축소
- 2026-04-15 09:49 (KST): 언어별 workflow 주입과 문서 포맷 critic/repair 루프를 다음 우선순위로 정리
- 2026-04-15 10:05 (KST): queued command projector, run lifecycle helper, quality formatter 확장을 다음 배치로 고정

View File

@@ -1,153 +0,0 @@
# OpenCode 품질 동등화 계획 (전면 재작성)
## 1. 기준
- 레퍼런스: `E:\AX Copilot - Codex\OpenCode\OpenCode-f5a40b86dede580f6543bf8926c9af017eea9409\src`
- 동등화 범위: 명령 처리 흐름, 권한/훅 체계, plan/run 내구성, 세션/로그 관리.
## 2. 보존 이력 (요약만 유지)
- 루프 가드(반복 실패/정체 감지)와 검증 게이트는 이미 AX에 부분 반영.
- 병렬 도구 실행, Plan Mode, Unknown-tool 복구 로직은 반영 완료.
- 세션/이력 안정화는 진행 중.
## 3. 현재 갭
- Hook 출력의 구조화 계약 적용 범위가 제한적.
- 세션 재개/이벤트 replay 품질이 시나리오별 편차 존재.
- 도구 선택 실패 후 재시도 전략의 일관성 부족.
## 4. 단계별 실행
### P1 Hook 계약 고도화
- `updatedInput`, `updatedPermissions`, `additionalContext`를 AX 실행 루프에 반영.
- 설정 토글로 위험 기능 제어.
### P2 세션/이벤트 내구성
- run 상태 영속화와 resume 기준 고정.
- jsonl 이벤트 필드 표준화 및 재생 가능성 확보.
### P3 실패 복구 표준화
- unknown-tool/권한거부/파라미터 오류를 유형화.
- 유형별 복구 프롬프트와 다음 액션 우선순위 고정.
### P4 완료 품질 정렬
- 코드/문서 작업별 완료 체크리스트 표준화.
- 증거 없는 완료 응답 방지.
## 5. 완료 판정
- 내부 벤치마크 시나리오에서 목표 성공률 충족.
- 세션 재개/이벤트 재생 오류 0건.
- 빌드 경고 0/오류 0 유지.
## 6. 2026-04-03 점검 스냅샷
- 기준 시점: 2026-04-03.
- 계획 대비 현재 수준: 약 92~95%.
- 테스트 상태: `dotnet test` 374/374 통과.
- P1 Hook 계약: 구현 완료 수준.
- P2 세션/이벤트 내구성: 구현 완료 수준(복원/재생 경계 케이스 테스트 반영).
- P3 실패 복구 표준화: 구현 완료 수준(unknown-tool/권한/정체/fork 강제 흐름 반영).
- P4 완료 품질 정렬: 구현 완료 수준(게이트 로직 + 벤치마크 기준 문서화 완료).
## 7. 스킬/도구 운영 점검 (2026-04-03)
- 도구 레지스트리 등록 수: 65개 (`ToolRegistry.CreateDefault()` 기준).
- `IAgentTool` 구현 수: 65개. 동적 MCP 래퍼(`McpTool`)는 런타임 등록 구조로 정상.
- 내장 스킬 파일 수: 40개 (`src/AxCopilot/skills/*.skill.md`).
- `allowed-tools` 적용 스킬: 40/40.
- `requires: python` 고정 의존 스킬: 0개(기존 10개에 Python 가능/불가 분기 fallback 경로 반영).
- 레거시 도구명 `process_run` 참조: 0건 (`process`로 정규화).
- 레거시 도구명 `grep_tool` 참조: 0건 (`grep`로 정규화).
- 내부 모드 차단 정책: `http_tool` 전면 차단, `open_external`의 외부 URL 차단.
- 테스트 상태: `dotnet test` 374/374 통과.
## 8. OpenCode 소스 직접 비교 결과 (2026-04-03)
- 비교 기준 소스: `OpenCode/.../src/tools.ts`, `src/Tool.ts`, `src/skills/loadSkillsDir.ts`, `src/skills/bundled/*.ts`.
- OpenCode 도구 상수명: 41개 (`*_TOOL_NAME` 기준).
- AX 도구명: 65개 (`IAgentTool.Name` 기준).
- OpenCode 도구명 중 AX alias로 직접 해석되는 항목: 8개 (`Bash/Read/Write/Edit/Glob/Grep/WebFetch/WebSearch`).
- 미해석 항목(33개)은 대부분 제품 철학 차이 영역(예: `EnterPlanMode`, `ExitWorktree`, `TeamCreate`, `TodoWrite`, `ToolSearch`, `REPL`, `Cron*`).
- OpenCode 번들 스킬은 코드 등록형 14개(`registerBundledSkill`)이며, AX는 파일 기반 스킬 40개(`*.skill.md`) 중심 구성.
- 번들 스킬 이름 교집합은 0개이며(의도된 차별화), 품질 기준은 "이름 일치"가 아니라 "동작 등가(계획/복구/검증/권한/세션 내구성)"로 판단해야 함.
- OpenCode 스킬 메타데이터는 `allowedTools`, `whenToUse`, `model`, `disableModelInvocation`, `userInvocable`, `hooks`, `context`, `agent`, `paths`, `effort`, `shell`까지 지원.
- AX 스킬 메타데이터는 `allowed-tools`, `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell`, `hooks`, `hook_filters`까지 런타임 연계 확장 완료.
## 9. OpenCode 비교 기반 즉시 보완 항목 (반영 상태)
1. 스킬 frontmatter 확장: `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell` 반영 완료.
2. 스킬 실행 범위 제어: `paths` 기반 조건부 활성화 반영 완료(첨부 파일 경로 매칭 시 동적 활성화).
3. 도구 별칭 정규화: OpenCode 기본 도구명군(`WebFetch`, `WebSearch`, `AskUserQuestion`, `LSP`, `ListMcpResourcesTool` 등) AX 내부 도구명으로 매핑 반영 완료.
4. 반영 완료(2026-04-03): `hooks`/`hook_filters` 계약 확장 및 runtime hook 필터링(도구/타이밍 기준) 적용.
5. 반영 완료(2026-04-03): 슬래시 스킬 실행 시 `context/agent/effort/model/disable-model-invocation/allowed-tools/hooks/hook_filters` 메타데이터를 런타임 정책 지시문으로 합성 적용.
6. 반영 완료(2026-04-03): `permissionSetup` 비교 기반으로 위험 자동허용 가드 추가(`process`, `spawn_agent`, `snippet_runner`는 전역 `Auto`에서도 승인 단계 강제).
## 10. 전체 영역 동시 비교 기준 (누락 방지)
1. 도구 계층: 도구 목록, 별칭 정규화, unknown-tool 복구, tool search/선택 정책.
2. 스킬 계층: 로더, frontmatter, 번들/파일 기반 동시 운영, 조건부 활성화.
3. 훅/권한: pre/post hook 계약, permission update 반영, ask/auto/deny 일관성.
4. 세션/상태: run 복원, 이벤트 replay, 중복 이벤트 억제, resume 신뢰성.
5. 계획/실행: plan 승인/수정 이력, 실행 게이트, 조기 완료 방지.
6. MCP/외부도구: 연결/리소스 조회/읽기, 실패 복구, internal 모드 정책.
7. 서브에이전트: spawn/wait 제약, read-only 모드, 결과 회수 구조.
8. 운영/설정/UI 연동: 설정값-실행코드-UI 동기화, 탭별 분기(Cowork/Code) 일치.
## 11. 다음 적용 순서 (전체 영역 병렬 보정)
1. 기본 Agentic loop E2E 시나리오(도구 실행/unknown-tool 복구)를 회귀 테스트로 고정.
2. 벤치마크 합격 기준(시나리오/통과조건/증적)을 문서화하고 배포 체크리스트에 연결. (완료)
3. 최종 마감 시 패리티 문서(수치/상태)와 로드맵 문서를 동기화. (진행 중)
## 12. 내부 벤치마크 기준 (고정)
| 시나리오 | 기준 테스트 | 합격 기준 |
|---|---|---|
| 기본 Agentic loop (도구 호출 → 완료) | `AgentLoopE2ETests.RunAsync_ExecutesToolCall_AndCompletesWithFinalText` | ToolCall/ToolResult/Complete 이벤트가 순서상 유효하고 최종 응답에 계산 결과 포함 |
| unknown-tool 복구 | `AgentLoopE2ETests.RunAsync_UnknownTool_RecoversAndCompletes` | unknown 도구 오류 이벤트 후 완료까지 수렴, 반복 실패 루프 없음 |
| Plan Mode 실행 연결 | `AgentLoopE2ETests.RunAsync_PlanModeAlways_EmitsPlanningThenExecutesTool` | 계획 응답 후 실제 도구 호출이 이어지고 최종 결과 생성 |
| 권한 Ask 거부 처리 | `AgentLoopE2ETests.RunAsync_AskPermissionDenied_EmitsPermissionEvents_AndCompletes` | PermissionRequest/PermissionDenied 이벤트가 기록되고 안전 종료 |
| Hook 입력 변형 반영 | `AgentLoopE2ETests.RunAsync_PreHookInputMutation_ChangesToolArguments` | pre-hook `updatedInput`이 실제 도구 입력에 적용됨 |
| Runtime 정책(`allowed_tools`) 강제 | `AgentLoopE2ETests.RunAsync_DisallowedTool_ByRuntimePolicy_EmitsPolicyRecoveryError` | 비허용 도구 차단 + 정책 복구 경고 후 종료 |
| Hook filter 정합성 | `AgentLoopE2ETests.RunAsync_HookFilters_ExecuteOnlyMatchingHookForToolAndTiming` | 지정된 hook만 실행되고 비매칭 hook는 미실행 |
| OpenCode alias(`EnterPlanMode`) 정규화 | `AgentLoopE2ETests.RunAsync_EnterPlanModeAlias_ResolvesAndExecutes` | CamelCase 도구명이 AX 내부 snake_case 도구로 매핑되어 정상 실행 |
| 혼합 복구 내구성 (unknown + 권한 + 대체도구) | `AgentLoopE2ETests.RunAsync_MixedRecovery_UnknownToolAndPermissionDenied_TerminatesSafely` | unknown-tool 오류 후 file_write 경유, math_eval로 수렴하고 반복 한도 내 안전 종료 |
### 벤치마크 배포 체크리스트 연결
1. `dotnet build` 경고 0/오류 0.
2. `dotnet test` 전체 통과 (`374/374` 기준, 증가 시 최신 값으로 동기화).
3. 위 9개 시나리오의 회귀 테스트가 모두 통과.
4. 패리티 수치/상태를 `NEXT_ROADMAP.md`와 동일 문구로 동기화.
5. 릴리즈 전 게이트 스크립트 실행: `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`
### 실행 증적 (2026-04-03)
- `dotnet test --filter "Suite=ParityBenchmark"`: 12/12 통과.
- `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`: build/replay/full gate 통과.
## 13. 세션 Replay 안정성 기준 (고정)
| 시나리오 | 기준 테스트 | 합격 기준 |
|---|---|---|
| 실행 이벤트 정렬/압축 복원 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesHistoryOrderAndCompactsSize` | ExecutionEvents 400개 상한 유지 + 시간순 정렬 유지 |
| run 이력 중복 정규화 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesAgentRunDuplicatesByRunId` | 동일 `RunId` 중복이 최신 상태 1건으로 축약 |
| 동시각 이벤트 종결 우선 판정 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_PrefersTerminalEventsWhenTimestampsEqual` | Tool/Permission 상태가 terminal 이벤트 기준으로 복원 |
| 비종결 이벤트 active 복원 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_RebuildsActiveTasksFromNonTerminalEvents` | 중단 후 재개 시 active task 3종(agent/tool/permission) 재구성 |
| run 종료 시 dangling 정리 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_CompleteClearsDanglingRunScopedActiveTasks` | Complete 이후 run 스코프 active task 잔존 0건 |
| 현재 run 복원 우선순위 | `AppStateServiceTests.RestoreCurrentAgentRun_PrefersRunningExecutionEventOverHistory` | 실행 중 이벤트가 history보다 우선되어 현재 run 복원 |
| recent timeline 재구성 | `AppStateServiceTests.RestoreRecentTasks_RebuildsRecentTaskTimelineFromExecutionEvents` | 도구/권한/에이전트 최근 이력 순서 복원 |
| 권한 거부 후 active 권한 상태 정리 | `AppStateServiceTests.RestoreRecentTasks_PermissionDeniedLeavesNoActivePermissionAfterResume` | PermissionDenied 이후 run 재개 시 active permission 잔존 0건 |
| Hook 타임라인 역순 병합 정합성 | `AppStateServiceTests.ApplyAgentEvent_ReplaysHookTimelineInReverseChronologicalOrder` | Hook 이벤트가 역순 타임라인에서도 시간/의미 순서 보존 |
| 완료 이벤트 우선 정리(병렬 도구) | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_CompleteClearsParallelToolCallsForSameRun` | Complete 도착 시 동일 run의 병렬 도구 active task 즉시 정리 |
### 운영 규칙
1. 위 시나리오는 `Suite=ReplayStability` 테스트 태그로 관리.
2. 릴리즈 전 `Suite=ReplayStability` 전건 통과를 replay 불일치 0건의 최소 조건으로 사용.
### 실행 증적 (2026-04-03)
- `dotnet test --filter "Suite=ReplayStability"`: 12/12 통과.
- `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`: `ReplayStability` 포함 게이트 통과.
## 14. 권한 Hook 계약 (P2 마감 기준)
- lifecycle hook 키:
- `__permission_request__` (pre)
- `__permission_granted__` (post)
- `__permission_denied__` (post)
- payload 기준 필드: `runId`, `tool`, `target`, `permission`, `granted`, `reason`.
- 우선순위:
1. Hook `updatedPermissions`가 현재 run의 `AgentContext.ToolPermissions`를 즉시 갱신.
2. 갱신 후 `context.CheckToolPermissionAsync()`로 최종 판정.
3. hook 실패/예외는 non-blocking(권한 흐름 지속).
4. `additionalContext`는 가능한 경로에서 메시지 컨텍스트로 반영.

View File

@@ -0,0 +1,101 @@
# 도구 / 슬래시 커버리지 현황
업데이트: 2026-04-15 18:20 (KST)
## 1. 요약
- AX slash count: 85
- 공통 핵심 명령 수: 7
- AX 확장 명령 수: 78
## 2. 공통 핵심 명령
- `/clear`
- `/exit`
- `/help`
- `/init`
- `/mcp`
- `/memory`
- `/permissions`
## 3. AX 확장 명령
- `/add-dir`
- `/advisor`
- `/agents`
- `/allowed-tools`
- `/branch`
- `/btw`
- `/build`
- `/chrome`
- `/color`
- `/commit`
- `/compact`
- `/config`
- `/context`
- `/copy`
- `/cost`
- `/desktop`
- `/diff`
- `/doctor`
- `/effort`
- `/explain`
- `/export`
- `/fast`
- `/feedback`
- `/files`
- `/fix`
- `/heapdump`
- `/hooks`
- `/ide`
- `/init-verifiers`
- `/install-github-app`
- `/install-slack-app`
- `/keybindings`
- `/login`
- `/logout`
- `/mobile`
- `/model`
- `/new`
- `/output-style`
- `/passes`
- `/plan`
- `/plugin`
- `/pr`
- `/pr-comments`
- `/privacy-settings`
- `/rate-limit-options`
- `/release-notes`
- `/reload-plugins`
- `/remote-env`
- `/rename`
- `/reset`
- `/resume`
- `/review`
- `/rewind`
- `/sandbox-toggle`
- `/search`
- `/security-review`
- `/session`
- `/settings`
- `/skills`
- `/stats`
- `/status`
- `/statusline`
- `/stickers`
- `/structure`
- `/summary`
- `/tag`
- `/tasks`
- `/terminal-setup`
- `/test`
- `/theme`
- `/thinkback`
- `/thinkback-play`
- `/translate`
- `/ultrareview`
- `/upgrade`
- `/usage`
- `/verify`
- `/vim`
## 4. 메모
- AX source baseline: `src/AxCopilot/Views/ChatWindow.xaml.cs`
- 이 문서는 비교 보고서가 아니라 현재 AX가 제공하는 명령 범위와 공통 핵심 명령을 확인하기 위한 운영 문서입니다.

View File

@@ -1,105 +0,0 @@
# Tool/Slash Parity Report
Generated: 2026-04-04 02:06:25
## Summary
- AX slash count: 85
- OpenCode slash count: 7
- Common: 7
- AX only: 78
- OpenCode only: 0
## Common
- /clear
- /exit
- /help
- /init
- /mcp
- /memory
- /permissions
## AX Only
- /add-dir
- /advisor
- /agents
- /allowed-tools
- /branch
- /btw
- /build
- /chrome
- /color
- /commit
- /compact
- /config
- /context
- /copy
- /cost
- /desktop
- /diff
- /doctor
- /effort
- /explain
- /export
- /fast
- /feedback
- /files
- /fix
- /heapdump
- /hooks
- /ide
- /init-verifiers
- /install-github-app
- /install-slack-app
- /keybindings
- /login
- /logout
- /mobile
- /model
- /new
- /output-style
- /passes
- /plan
- /plugin
- /pr
- /pr-comments
- /privacy-settings
- /rate-limit-options
- /release-notes
- /reload-plugins
- /remote-env
- /rename
- /reset
- /resume
- /review
- /rewind
- /sandbox-toggle
- /search
- /security-review
- /session
- /settings
- /skills
- /stats
- /status
- /statusline
- /stickers
- /structure
- /summary
- /tag
- /tasks
- /terminal-setup
- /test
- /theme
- /thinkback
- /thinkback-play
- /translate
- /ultrareview
- /upgrade
- /usage
- /verify
- /vim
## OpenCode Only
## Notes
- OpenCode source baseline: OpenCode/en/quickstart.md
- AX source baseline: src/AxCopilot/Views/ChatWindow.xaml.cs

View File

@@ -1,523 +0,0 @@
# Claw Code Parity Plan (Rewritten)
## Scope
- Align AX Copilot with claw-code quality for loop reliability, permission/hook behavior, and session durability.
## Update
- Updated: 2026-04-05 15:34 (KST)
- Rebased the AX Agent improvement plan on actual `claw-code` runtime files instead of earlier AX snapshots. The reference spine is now `src/bootstrap/state.ts -> src/bridge/initReplBridge.ts -> src/bridge/sessionRunner.ts -> src/screens/REPL.tsx -> src/components/Messages.tsx -> src/components/StatusLine.tsx`.
- AX Agent work should follow that same quality order: state first, execution second, render last. UI-only fixes that bypass state/execution should be treated as temporary.
- Updated: 2026-04-05 16:55 (KST)
- Current estimated parity vs `claw-code`: core execution engine `82%`, main chat UI `68%`, Cowork/Code status UX `63%`, internal settings linkage `88%`, overall AX Agent `74%`.
- Engine-affecting settings should be handled conservatively during parity work. If a setting changes the main execution route, approval flow, or recovery behavior without representing a stable real-world user choice, it should be moved to developer-only UI or removed from user-facing surfaces.
- Updated: 2026-04-06 09:36 (KST)
- Progressed the maintainability track by moving runtime strip styling into `OperationalStatusPresentationCatalog.cs`, expanding permission/tool-result transcript catalogs with typed descriptions, and removing the stale plan-mode presentation branch from permission UI surfaces. The next structural focus remains footer/status/composer presentation slimming and regression ritual enforcement.
- Updated: 2026-04-06 09:44 (KST)
- Continued the maintainability track by splitting mixed inline interaction rendering into `ChatWindow.UserAskPresentation.cs` and `ChatWindow.PlanApprovalPresentation.cs`. This reduces message-type coupling inside the main window and keeps the next focus on footer/composer presentation and regression-routine formalization.
- Updated: 2026-04-06 09:58 (KST)
- Continued the maintainability track by splitting Git branch popup and footer-adjacent summary helpers into `ChatWindow.GitBranchPresentation.cs`, leaving `ChatWindow.FooterPresentation.cs` focused on folder bar state and preset-guide sync only.
- Formalized the regression ritual in `docs/AX_AGENT_REGRESSION_PROMPTS.md` by adding failure classes (`blank-reply`, `duplicate-banner`, `bad-approval-flow`, `queue-drift`, `restore-drift`, `status-noise`) and required prompt bundles per change area.
- Updated: 2026-04-06 10:07 (KST)
- Continued the maintainability track by moving topic preset rendering, custom preset context menus, and topic-selection application flow into `ChatWindow.TopicPresetPresentation.cs`. This reduces mixed preset UI logic inside `ChatWindow.xaml.cs` and keeps the main window closer to orchestration-only responsibility.
- Updated: 2026-04-06 11:52 (KST)
- Continued the tool/permission/skill sophistication track by expanding AX presentation catalogs toward `claw-code` specificity. `PermissionRequestPresentationCatalog.cs` now models action-level permission kinds plus severity/action hints, `ToolResultPresentationCatalog.cs` now models `approval_required`/`partial` result states plus follow-up guidance, and the AX skill gallery now exposes runtime-policy metadata that was previously hidden.
## Preserved History (Summary)
- Core loop guards and post-tool verification gates are already partially implemented.
- Plan Mode, parallel tool execution, and unknown-tool recovery are in place.
- Session restore hardening is ongoing.
## Reference Map
| claw-code reference | AX apply target | completion criteria | quality criteria |
|---|---|---|---|
| `src/bootstrap/state.ts` | `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs` | one canonical runtime/session state for current turn, queue, retry, execution events, and persisted snapshot | reopen/retry/queue flows do not create duplicate or blank assistant messages |
| `src/bridge/initReplBridge.ts` | `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/LlmService.cs` | send/regenerate/retry/queued follow-up/slash all enter through one prepared-execution path | same input under same settings takes same execution route regardless of entry point |
| `src/bridge/sessionRunner.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs` | tool start/result/error/progress normalized once inside loop layer | Cowork/Code no longer flash repeated status strings or overshare debug payloads |
| `src/bridge/bridgeMessaging.ts` | `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs` | inbound execution events separated from display-only events before UI render | execution event replay does not duplicate visible timeline banners |
| `src/screens/REPL.tsx` | `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | screen state transitions, queue flow, retry flow, and composer state use shared runtime helpers | window resize, queue chaining, and retry feel stable instead of UI-patched |
| `src/components/Messages.tsx` | `src/AxCopilot/Views/ChatWindow.xaml.cs` | timeline derives from normalized conversation/session state only | no token-only completions, blank cards, or direct injected duplicates |
| `src/components/StatusLine.tsx` | `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | status strip computed from debounced runtime state, not multiple imperative refresh calls | metadata stays lightweight and does not overpower message timeline |
## AX Agent Improvement Phases
### Phase A. Runtime State Canonicalization
- Reference: `src/bootstrap/state.ts`
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs`
- Completion criteria:
- `Chat`, `Cowork`, `Code` all update one shared runtime/session state model.
- queue, retry, post-compaction, and execution-event state can be restored after reopen.
- Quality criteria:
- reopening a conversation reproduces the same visible timeline without extra assistant cards.
- queue and execution badges remain in sync with the stored conversation.
### Phase B. Prepared Execution Unification
- Reference: `src/bridge/initReplBridge.ts`
- AX apply location: `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/LlmService.cs`
- Completion criteria:
- prompt stack assembly, execution mode choice, and final assistant commit are engine-owned.
- send/regenerate/retry/queued follow-up/slash flows all call the same preparation API.
- Quality criteria:
- behavior is deterministic per tab/settings combination.
- UI stops building different prompt stacks for the same conversation state.
### Phase C. AgentLoop Event Normalization
- Reference: `src/bridge/sessionRunner.ts`, `src/bridge/bridgeMessaging.ts`
- AX apply location: `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`
- Completion criteria:
- loop events are normalized into bounded activity/event records before UI consumption.
- permission requests, failure states, retries, and completion states use a stable event shape.
- Quality criteria:
- Cowork/Code no longer flash rapidly during long-running tool sequences.
- file path/debug detail remains collapsed by default.
### Phase D. Timeline Render Parity
- Reference: `src/screens/REPL.tsx`, `src/components/Messages.tsx`
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs`
- Completion criteria:
- assistant/user messages, execution logs, compact boundaries, and queue summaries are rendered from one derived timeline model.
- direct imperative bubble injection is removed from normal send/regenerate/retry flows.
- Quality criteria:
- no blank assistant cards.
- no token-only completion without visible content.
- no duplicate event banners after re-render.
### Phase E. Composer and Status Strip Simplification
- Reference: `src/screens/REPL.tsx`, `src/components/StatusLine.tsx`
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs`
- Completion criteria:
- composer height grows only on explicit line breaks.
- status strip, queue summary, and runtime activity all use debounced runtime updates.
- Chat/Cowork/Code share one responsive width calculation policy.
- Quality criteria:
- resizing feels natural.
- composer does not keep growing after send.
- metadata remains subordinate to the message timeline.
### Phase F. Recovery, Resume, and Verification
- Reference: `src/bootstrap/state.ts`, `src/bridge/sessionRunner.ts`, `src/screens/REPL.tsx`
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs`
- Completion criteria:
- reopen after interruption keeps queue, runtime summary, and latest visible assistant state consistent.
- retry-last and regenerate do not depend on mutating `InputBox.Text`.
- all three tabs pass reopen/retry/manual compact/manual stop/manual resume scenarios.
- Quality criteria:
- stored conversation and rendered conversation stay identical after restore.
- final reopened state matches the last completed runtime state.
## Execution Tracks
1. Hook contract parity
- Structured hook output support (`updatedInput`, `updatedPermissions`, `additionalContext`).
- Runtime gating through settings toggles.
2. Session/state parity
- Deterministic run resume rules.
- Stable jsonl event schema + replay compatibility.
3. Recovery parity
- Failure-type classification and standardized retry guidance.
- Reduced repeated wrong-tool loops.
4. Completion parity
- Evidence-based finalization criteria for code/document tasks.
## Done Criteria
- Internal parity scenarios pass target threshold.
- Resume/replay failures: zero.
- `dotnet build` warnings/errors: zero.
## Validation Matrix
- Build: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
- Manual scenario 1: Chat send -> answer visible -> retry -> regenerate -> reopen conversation
- Manual scenario 2: Cowork tool run -> progress summary -> completion -> queue next request -> reopen
- 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.
- Operational checklist copy: `docs/AX_AGENT_REGRESSION_PROMPTS.md`
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`
## Transcript-First Approval / Ask UX
- Updated: 2026-04-05 18:58 (KST)
- `plan approval` and `user ask` should both resolve inside the transcript first.
- Secondary windows are allowed only as detail surfaces, not as the primary decision flow.
- AX implementation status:
- `plan approval`: transcript-first, detail view via `PlanViewerWindow`
- `user ask`: transcript-first inline question card with choices / direct input / submit
## Tool / Skill UX Parity Follow-up
- Updated: 2026-04-05 19:04 (KST)
- Default transcript should prefer role-oriented badges and readable labels over raw internal tool names.
- AX implementation status:
- tool event badges: simplified to role-first labels
- item naming: normalized into readable Korean labels or `/skill-name` style
- observability panels: permission/background diagnostics reduced outside debug mode
- Remaining quality target:
- move more tool-result and permission-result presentation into smaller message-type-specific helpers, closer to `claw-code` component separation
## Focused Quality Tracks
- Updated: 2026-04-06 09:27 (KST)
- The remaining improvement work should now be managed in three parallel tracks so UX polish, runtime quality, and maintainability do not get mixed together.
### Track 1. User-Facing UI/UX Quality
- Reference:
- `src/components/Messages.tsx`
- `src/components/MessageRow.tsx`
- `src/components/StatusLine.tsx`
- `src/components/PromptInput/PromptInput.tsx`
- `src/components/PromptInput/PromptInputFooter.tsx`
- `src/components/SessionPreview.tsx`
- AX apply target:
- `src/AxCopilot/Views/ChatWindow.xaml`
- `src/AxCopilot/Views/ChatWindow.MessageInteractions.cs`
- `src/AxCopilot/Views/ChatWindow.StatusPresentation.cs`
- `src/AxCopilot/Views/ChatWindow.FooterPresentation.cs`
- `src/AxCopilot/Views/ChatWindow.PreviewPresentation.cs`
- Focus:
- keep transcript text dominant and metadata secondary
- make footer controls read as a task bar, not a settings strip
- unify preview surfaces, chooser popups, and approval cards under one visual language
- reduce visual noise from queue/status/diagnostic surfaces unless the state is actionable
- Completion criteria:
- message rows, footer, preview, and inline approval/question cards feel visually coherent
- chooser popups share the same spacing, hover behavior, and summary-row structure
- footer/status elements appear only when they convey useful state
- Quality criteria:
- a user can understand “what is happening now” from the transcript and footer without opening extra panels
- the interface remains readable under narrow widths without text clipping or layout jitter
### Track 2. LLM / Task Handling Quality
- Reference:
- `src/bootstrap/state.ts`
- `src/bridge/initReplBridge.ts`
- `src/bridge/sessionRunner.ts`
- `src/components/messages/AssistantToolUseMessage.tsx`
- `src/components/messages/PlanApprovalMessage.tsx`
- `src/components/permissions/*`
- AX apply target:
- `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`
- `src/AxCopilot/Services/Agent/AgentLoopService.cs`
- `src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs`
- `src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs`
- `src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs`
- `src/AxCopilot/Views/ChatWindow.InlineInteractions.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptPolicy.cs`
- Focus:
- keep all entry routes (`send`, `retry`, `regenerate`, `queue`, `slash`) on the same prepared execution path
- distinguish `success / error / reject / cancel / needs-approval` tool results more clearly
- keep plan approval and user-question flows transcript-native by default
- minimize mismatches between execution state and what the user sees in the timeline
- Completion criteria:
- plan/permission/tool-result/question events all have consistent transcript-native lifecycles
- reopen/retry/queue/compact flows preserve the same visible runtime state
- tool failures and permission rejections are clearly distinguishable in transcript rendering
- Quality criteria:
- the same prompt under the same tab/settings uses the same execution route
- users can tell whether the agent succeeded, failed, was blocked, or is waiting for approval without reading raw diagnostics
### Track 3. Maintainability / Extensibility Structure
- Reference:
- `src/components/*` split by role in `claw-code`
- `src/components/messages/*`
- `src/components/permissions/*`
- `src/components/PromptInput/*`
- AX apply target:
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- `src/AxCopilot/Views/ChatWindow.*.cs`
- `src/AxCopilot/Services/AppStateService.cs`
- `src/AxCopilot/Services/Agent/*.cs`
- Focus:
- continue shrinking `ChatWindow.xaml.cs` toward orchestration-only responsibility
- keep renderer, popup, footer, message-interaction, status, and preview logic in dedicated partials
- centralize presentation rules in catalogs/models instead of scattered UI string/visibility branches
- prepare the codebase for new permission types, new tool classes, and new transcript card types without re-bloating the main window file
- Completion criteria:
- `ChatWindow.xaml.cs` owns orchestration and runtime coordination more than direct UI element construction
- new message/permission/tool card types can be added via presentation catalogs or dedicated partials
- runtime summary and footer/status visibility derive from presentation models rather than ad-hoc branching
- Quality criteria:
- adding a new tool-result or approval type should mostly affect one catalog/renderer area
- future UI polish work should land in dedicated presentation files rather than expanding the main window file again
## Recommended Execution Order
- Updated: 2026-04-06 09:27 (KST)
1. Finish Track 2 consistency first whenever a UX issue is caused by runtime truth mismatch.
2. Apply Track 1 visual cleanup only after the state/message lifecycle is stable for that surface.
3. Fold each stable surface into Track 3 structure immediately so later changes do not reintroduce `ChatWindow.xaml.cs` sprawl.
4. Keep validating against `docs/AX_AGENT_REGRESSION_PROMPTS.md` after each change set, especially for `plan / permission / queue / compact / reopen`.
## Current Snapshot
- Updated: 2026-04-05 19:42 (KST)
- Estimated parity:
- Core engine: `89%`
- Main transcript UI: `96%`
- Cowork/Code runtime UX: `92%`
- Internal settings linkage: `88%`
- Overall AX Agent parity: `93%`
## Remaining Gaps
1. Prompt lifecycle parity
- `claw-code` reference: `src/utils/handlePromptSubmit.ts`, `src/utils/processUserInput/processTextPrompt.ts`
- AX gap:
- `send / retry / regenerate` are mostly unified, but `slash / compact 후 다음 턴 / 일부 queue 후처리`는 아직 `ChatWindow.xaml.cs`에서 UI 상태를 먼저 만지는 구간이 남아 있습니다.
- 목표는 모든 입력 진입점이 `AxAgentExecutionEngine`의 동일한 prepare/execute/finalize 축만 타게 만드는 것입니다.
2. Plan / approval rendering parity
- `claw-code` reference: `src/components/messages/PlanApprovalMessage.tsx`
- AX gap:
- 기본 transcript에서는 compact pill 위주로 줄였지만, 승인/계획 결과 표현이 아직 `Popup/Window + WPF 카드`와 섞여 있습니다.
## Quality Uplift Plan
- Updated: 2026-04-06 00:22 (KST)
- Goal: move AX Agent from parity-oriented stability into `claw-code`-grade maintainability and transcript quality, without copying implementation expression.
### Track 1. Transcript Renderer Decomposition
- `claw-code` references:
- `src/components/Messages.tsx`
- `src/components/MessageRow.tsx`
- `src/components/messages/AssistantToolUseMessage.tsx`
- `src/components/messages/PlanApprovalMessage.tsx`
- AX apply targets:
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- new partial/helper files under `src/AxCopilot/Views/`
- Completion criteria:
- `plan / permission / ask / tool-result / task-summary` rendering no longer lives as one large block inside `ChatWindow.xaml.cs`
- each transcript concern has a dedicated helper/partial/class boundary
- Quality criteria:
- render changes for one message type do not regress unrelated timeline behavior
- transcript behavior remains stable after reopen / retry / regenerate
### Track 2. Permission Presentation Catalog
- `claw-code` references:
- `src/components/permissions/PermissionRequest.tsx`
- `src/components/permissions/PermissionDialog.tsx`
- tool-specific permission request components under `src/components/permissions/*`
- AX apply targets:
- `src/AxCopilot/Services/Agent/PermissionModeCatalog.cs`
- new `src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs`
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- Completion criteria:
- permission request title, subtitle, icon, severity, and choice set are resolved by tool/request type
- file edit / shell / skill / ask-user / web-like permission requests use distinct presentation metadata
- Quality criteria:
- permission prompts feel explicit and predictable
- user can distinguish request type without reading raw tool names or payload
### Track 3. Tool Result Message Taxonomy
- `claw-code` references:
- `src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx`
- `src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx`
- `src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx`
- `src/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx`
- AX apply targets:
- new `src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs`
- `src/AxCopilot/Views/ChatWindow.TranscriptPolicy.cs`
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- Completion criteria:
- transcript display rules differ for `success / error / reject / cancel`
- tool-result badges and summaries are resolved from presentation metadata instead of inline ad-hoc branches
- Quality criteria:
- result cards read as stable UX language, not raw execution logs
- failed and rejected tool runs are visually distinct without increasing noise
### Track 4. Plan Approval Transcript-Only Flow
- `claw-code` references:
- `src/components/messages/PlanApprovalMessage.tsx`
- `src/components/messages/UserPlanMessage.tsx`
- AX apply targets:
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- `src/AxCopilot/Views/PlanViewerWindow.cs`
- Completion criteria:
- default approval / reject / revise flow completes inline in transcript
- `PlanViewerWindow` is detail-only and never required for primary approval flow
- Quality criteria:
- planning feels like part of the conversation, not a modal interruption
- approval history is replayable from persisted conversation state
### Track 5. Runtime Summary Layer
- `claw-code` references:
- `src/components/StatusLine.tsx`
- `src/components/PromptInput/PromptInputFooter.tsx`
- `src/bootstrap/state.ts`
- AX apply targets:
- `src/AxCopilot/Services/AppStateService.cs`
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
- Completion criteria:
- one runtime/status summary model feeds the status line, queue summary, runtime badge, and completion hint
- status rendering no longer depends on scattered imperative refresh branches
- Quality criteria:
- no contradictory or stale runtime badges
- long-running Cowork/Code sessions stay visually calm
### Track 6. Regression Prompt Ritual
- `claw-code` references:
- runtime validation scenarios implied by `sessionRunner`, `Messages`, `StatusLine`, and permission components
- AX apply targets:
- `docs/AX_AGENT_REGRESSION_PROMPTS.md`
- `docs/claw-code-parity-plan.md`
- developer workflow / release checklist
- Completion criteria:
- Chat / Cowork / Code prompt set is treated as mandatory regression for runtime-affecting changes
- each prompt is mapped to a failure class (`blank reply`, `duplicate banner`, `bad approval flow`, `queue drift`, `restore drift`)
- Quality criteria:
- parity claims are based on repeatable checks instead of visual spot-checks
- regressions are easier to catch before release
## Recommended Execution Order
1. Transcript renderer decomposition
2. Permission presentation catalog
3. Tool result taxonomy
4. Plan approval transcript-only flow
5. Runtime summary layer
6. Regression prompt ritual hardening
## Settings and Logic Review
- Updated: 2026-04-06 00:22 (KST)
- Candidate to move to developer-only:
- `FreeTierDelaySeconds`
- `MaxAgentIterations`
- `MaxRetryOnError`
- Keep as runtime-critical user settings:
- `OperationMode`
- `MaxContextTokens`
- `ContextCompactTriggerPercent`
- `EnableProactiveContextCompact`
- `EnableCoworkVerification`
- `EnableCodeVerification`
- code tool exposure toggles
- Rule:
- if a setting changes the main execution route or recovery semantics without representing a stable real-world user choice, move it out of default user-facing surfaces
- 목표는 “본문 우선 + 필요 시 열기” 기준으로 더 단일한 timeline 언어로 수렴시키는 것입니다.
3. Status line / composer parity
- `claw-code` reference: `src/components/StatusLine.tsx`, `src/components/PromptInput/PromptInput.tsx`
- AX gap:
- 하단 상태바와 composer 옵션은 많이 줄었지만, 상태 메타가 여전히 분산돼 있고 일부 토글/빠른 설정이 별도 행으로 남아 있습니다.
- 목표는 transcript 하단의 작업 바 한 축으로 더 압축하는 것입니다.
4. Runtime event density parity
- `claw-code` reference: `src/bridge/sessionRunner.ts`, `src/components/StatusNotices.tsx`
- AX gap:
- non-debug 기본 로그는 줄었지만, 일부 Cowork/Code 이벤트는 여전히 timeline을 자주 흔듭니다.
- 목표는 `permission / tool / error / complete / paused / resumed`를 더 안정된 event shape로 정규화하는 것입니다.
## Settings Review
- Remove candidate:
- `PlanMode`
- current state: 사용자 노출 UI와 저장 경로는 `off` 고정으로 정리됐지만 `AppSettings`, `SettingsViewModel`, `AppStateService` 타입 잔재가 남아 있음
- rationale: 현재 정책이 `off` 고정이라 사용자 선택값이 엔진에 의미 있게 기여하지 않음
- `Code.EnablePlanModeTools`
- current state: UI/저장 경로와 기본값은 `false` 고정으로 정리됐지만 모델/설정 타입에 호환용 잔재가 남아 있음
- rationale: 현재 엔진 정책에서 실제 실행 경로를 더 이상 바꾸지 않음
- Move to developer-only candidate:
- `FreeTierDelaySeconds`
- rationale: 일반 사용자가 조정할 이유가 적고 엔진 지연 정책에 직접 영향
- `MaxAgentIterations`
- `MaxRetryOnError`
- rationale: 핵심 실행 루프 품질에 직접 영향하는 런타임 튜닝값
- Keep as runtime-critical:
- `OperationMode`
- `MaxContextTokens`
- `ContextCompactTriggerPercent`
- `EnableProactiveContextCompact`
- `EnableCoworkVerification`
- `EnableCodeVerification`
- `Code.EnableWorktreeTools / EnableTeamTools / EnableCronTools`
## Known UX / Performance Risks
- Topic preset hover flicker was caused by duplicate hover systems:
- custom hover label
- default WPF `ToolTip`
- AX fix:
- remove default `ToolTip` from topic cards and keep a single hover label path
- Remaining runtime performance review targets:
- `RefreshContextUsageVisual()` frequency
- `BuildTopicButtons()` rebuild frequency
- `OnAgentEvent` timeline churn during long Cowork/Code runs
- compact queue summary still needs one more pass to fully match `claw-code` footer minimalism
## Progress Notes
- 업데이트: 2026-04-06 00:58 (KST)
- transcript renderer 분리 1차 완료
- AX 적용: [ChatWindow.InlineInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.InlineInteractions.cs), [ChatWindow.TaskSummary.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TaskSummary.cs)
- 완료 조건: `plan / ask / task-summary` 렌더 helper가 메인 `ChatWindow.xaml.cs` 밖으로 이동
- permission / tool-result presentation catalog 도입
- AX 적용: [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs), [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)
- 완료 조건: `AddAgentEventBanner(...)`가 권한/도구 결과 badge 메타를 inline switch가 아니라 catalog에서 해석
- runtime summary 전용 계층 1차 반영
- AX 적용: [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)
- 완료 조건: 상태선 UI가 `OperationalStatusPresentationState`를 소비해 strip/runtime badge visibility를 계산