AX Agent 구조를 claw-code 기준으로 추가 정리해 transcript 렌더와 tool streaming 책임을 분리함
Some checks failed
Release Gate / gate (push) Has been cancelled

- ChatWindow.TranscriptRendering partial을 추가해 transcript windowing, 증분 렌더, 스크롤 보존 로직을 메인 ChatWindow.xaml.cs에서 분리
- StreamingToolExecutionCoordinator를 도입해 read-only 도구 prefetch, tool-use 스트리밍 수신, context overflow/transient error 복구를 별도 계층으로 이동
- AgentLoopRuntimeThresholds helper를 추가해 no-tool, plan retry, terminal evidence gate 임계값 계산을 AgentLoopService에서 분리
- AgentLoopTransitions.Execution은 coordinator thin wrapper 중심 구조로 정리해 이후 executor 고도화와 정책 변경이 덜 위험하도록 개선
- README와 docs/DEVELOPMENT.md를 2026-04-09 09:14 (KST) 기준으로 갱신
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
This commit is contained in:
2026-04-09 00:16:54 +09:00
parent 74d43e701c
commit 8643562319
8 changed files with 441 additions and 343 deletions

View File

@@ -5503,3 +5503,20 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- 실행 중 `Children.Add/Remove`에 직접 매달리던 경로를 줄여 레이아웃 churn을 완화했다.
- `claw-code``VirtualMessageList`처럼 완전한 전면 가상화는 아니지만, 그 단계로 가기 위한 transcript host 분리를 마쳤다.
- 이후 단계에서는 이 컬렉션 호스트 위에 실제 item virtualization/placeholder/windowing을 더 강하게 적용할 수 있다.
## 2026-04-09 09:14 (KST)
- `claw-code` 구조 대조 재점검
- [Messages.tsx](/E:/AX%20Copilot%20-%20Codex/claw-code/claw-code-f5a40b86dede580f6543bf8926c9af017eea9409/src/components/Messages.tsx), [VirtualMessageList.tsx](/E:/AX%20Copilot%20-%20Codex/claw-code/claw-code-f5a40b86dede580f6543bf8926c9af017eea9409/src/components/VirtualMessageList.tsx), [StreamingToolExecutor.ts](/E:/AX%20Copilot%20-%20Codex/claw-code/claw-code-f5a40b86dede580f6543bf8926c9af017eea9409/src/services/tools/StreamingToolExecutor.ts)를 다시 대조한 결과, AX는 메인 창과 AgentLoop에 아직 일부 오케스트레이션 책임이 과밀한 상태였다.
- [ChatWindow.TranscriptRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs)
- transcript windowing, 증분 렌더, scroll preserve를 전담하는 partial을 새로 추가했다.
- 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `RenderMessages()`와 관련 스크롤 처리 로직을 분리해, transcript 구조 개선을 독립적으로 이어갈 수 있게 정리했다.
- [StreamingToolExecutionCoordinator.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/StreamingToolExecutionCoordinator.cs)
- read-only 도구 prefetch, tool-use 스트리밍 수신, partial tool-call 수집, context overflow/transient error 복구 루프를 별도 coordinator로 이동했다.
- [AgentLoopTransitions.Execution.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs)는 이제 thin wrapper로 coordinator를 호출하는 구조가 되어, 이후 `claw-code`식 executor 고도화를 더 쉽게 적용할 수 있다.
- [AgentLoopRuntimeThresholds.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopRuntimeThresholds.cs)
- no-tool response threshold, no-tool recovery max retries, plan execution retry max, terminal evidence gate max retries 계산을 별도 helper로 분리했다.
- [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs)는 이제 환경 변수/설정값 임계치 계산 로직을 직접 들고 있지 않고 helper를 통해 소비한다.
- 구조 효과
- transcript 렌더링과 tool streaming 복구 정책의 책임 경계가 더 분명해졌다.
- 이후 남은 큰 작업인 `진짜 transcript 가상화``AgentLoopService 추가 분해`를 더 작은 변경 단위로 진행할 수 있는 기반을 마련했다.