문서: claw-code 기준 AX Agent 개선 계획 재정립
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
- claw-code 실제 런타임 참조 축(state/initReplBridge/sessionRunner/REPL/Messages/StatusLine)을 기준으로 AX Agent 개선 계획을 재수립함 - README, DEVELOPMENT, parity plan 문서에 참조 파일, AX 적용 위치, 완료 조건, 품질 기준, 검증 시나리오를 반영함 - 이번 변경은 계획 문서 정리만 포함하며 코드 수정이나 빌드 검증은 수행하지 않음
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# AX Copilot - 媛쒕컻 臾몄꽌
|
||||
|
||||
- Document update: 2026-04-05 15:34 (KST) - Rebased the AX Agent improvement plan on actual `claw-code` runtime files instead of prior AX snapshots. The active reference spine is `src/bootstrap/state.ts -> src/bridge/initReplBridge.ts -> src/bridge/sessionRunner.ts -> src/screens/REPL.tsx -> src/components/Messages.tsx -> src/components/StatusLine.tsx`.
|
||||
- Document update: 2026-04-05 15:34 (KST) - Locked the AX implementation order to the same quality sequence used by that spine: runtime state canonicalization, prepared execution unification, loop event normalization, timeline render parity, composer/status strip simplification, and recovery/resume validation.
|
||||
- Document update: 2026-04-05 07:11 (KST) - Simplified the AX Agent footer for Cowork/Code by removing the duplicated `MoodIconPanel` chip group from those tabs and leaving workspace context only in the main folder path row. Also removed the outline border from the data-usage button so the footer option strip reads flatter and less pill-heavy.
|
||||
- Document update: 2026-04-05 07:08 (KST) - Improved AX Agent responsiveness in three hot paths: added an ordered meta cache in `ChatStorageService` so repeated conversation-list refreshes stop re-sorting the full meta set every time, short-circuited `SaveConversationSettings()` when permission/data-usage/mood/output-format values are unchanged, and debounced the sidebar conversation search refresh to avoid re-filtering on every keystroke.
|
||||
- Document update: 2026-04-05 02:00 (KST) - Reworked the AX Agent in-chat gear overlay navigation itself to match the restored internal settings taxonomy: `basic / chat / cowork / code / dev / tools / skill-block`. The left nav labels now follow that scheme, and the overlay rows/toggles are regrouped per tab instead of the earlier `common / service / permission / advanced` split.
|
||||
|
||||
@@ -3,11 +3,94 @@
|
||||
## 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.
|
||||
|
||||
## 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`).
|
||||
@@ -28,3 +111,10 @@
|
||||
- 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
|
||||
|
||||
Reference in New Issue
Block a user