AX Agent loop 정책을 분리하고 transcript 가상화·성능 계측 구조를 강화한다
Some checks failed
Release Gate / gate (push) Has been cancelled
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:
25
src/AxCopilot/Views/ChatWindow.TranscriptVirtualization.cs
Normal file
25
src/AxCopilot/Views/ChatWindow.TranscriptVirtualization.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user