AX Agent loop 정책을 분리하고 transcript 가상화·성능 계측 구조를 강화한다
Some checks failed
Release Gate / gate (push) Has been cancelled

- AgentLoop 검증/문서/compact 정책 메서드를 partial 파일로 분리해 loop 본문의 책임을 줄임
- transcript 렌더에 cache pruning과 deferred scrolling을 적용해 긴 세션의 UI 부담을 낮춤
- AgentPerformanceLogService를 추가해 transcript 렌더와 agent loop 실행 요약을 perf 로그로 남김
- README와 DEVELOPMENT 문서에 2026-04-09 10:08 (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:57:38 +09:00
parent 594d38e4a9
commit 0ceca202e9
11 changed files with 682 additions and 494 deletions

View File

@@ -0,0 +1,25 @@
using System.Linq;
namespace AxCopilot.Views;
public partial class ChatWindow
{
private const int TranscriptCacheRetentionCount = 240;
private void PruneTranscriptElementCache(IReadOnlyCollection<string> visibleKeys)
{
if (_elementCache.Count <= TranscriptCacheRetentionCount)
return;
var keep = new HashSet<string>(visibleKeys, StringComparer.Ordinal);
foreach (var key in _lastRenderedTimelineKeys.TakeLast(Math.Min(TranscriptCacheRetentionCount, _lastRenderedTimelineKeys.Count)))
keep.Add(key);
var removable = _elementCache.Keys
.Where(key => !keep.Contains(key))
.ToList();
foreach (var key in removable)
_elementCache.Remove(key);
}
}