Files
AX-Copilot-Codex/src/AxCopilot.Tests/Services/AgentLoopDiagnosticsFormatterTests.cs
lacvet e07b6dbed0 코드 탭 컨텍스트 영속화와 Auto budget 복구 적용
- AxAgentExecutionEngine에서 시스템 프롬프트 중복을 제거하고 structured tool_use/tool_result 전사본을 conversation.Messages로 동기화해 다음 턴과 저장 이력에서도 코드 작업 컨텍스트가 유지되도록 수정
- AgentQueryContextBuilder와 ContextCondenser에 post-compact tool snippet 복원, recent window 확대, tool result 보존 강화 로직을 추가해 장기 코드 실행 중 빌드/파일 근거 손실을 줄임
- MaxContextTokens=0 Auto 모드를 AppSettings, SettingsService 마이그레이션, 설정 UI, 오버레이 UI, 컨텍스트 사용량 표시, LLM 요청 본문에 연결하고 Auto 모드에서는 provider output cap 강제 주입을 제거
- 관련 회귀 테스트와 문서 README/DEVELOPMENT/CODE_CONTEXT_RELIABILITY_PLAN을 갱신하고 깨진 진단 문자열 기대값을 영어 기준으로 정리

검증:
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_context_reliability_followup\\ -p:IntermediateOutputPath=obj\\verify_context_reliability_followup\\
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AxAgentExecutionEngineTests|AgentQueryContextBuilderTests|ContextCondenserTests|SettingsServiceTests|AgentLoopDiagnosticsFormatterTests" -p:OutputPath=bin\\verify_context_reliability_followup_tests\\ -p:IntermediateOutputPath=obj\\verify_context_reliability_followup_tests\\
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "AgentLoopQueryAssemblyServiceTests|AgentLoopPreLlmStageServiceTests|AgentLoopLlmRequestPreparationServiceTests|AgentMessageInvariantHelperTests|CodeTaskWorkingSetServiceTests|AgentLoopE2ETests" -p:OutputPath=bin\\verify_context_reliability_followup_tests2\\ -p:IntermediateOutputPath=obj\\verify_context_reliability_followup_tests2\\
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_context_reliability_final\\ -p:IntermediateOutputPath=obj\\verify_context_reliability_final\\
2026-04-16 07:45:36 +09:00

48 lines
1.5 KiB
C#

using AxCopilot.Services.Agent;
using FluentAssertions;
using Xunit;
namespace AxCopilot.Tests.Services;
public class AgentLoopDiagnosticsFormatterTests
{
[Fact]
public void BuildCompactionCompleteMessage_ShouldIncludeStageSummaryAndSavedTokens()
{
var result = new ContextCompactionResult
{
BeforeTokens = 18_400,
AfterTokens = 7_900,
};
result.AppliedStages.Add("tool-result");
result.AppliedStages.Add("session-memory");
var message = AgentLoopDiagnosticsFormatter.BuildCompactionCompleteMessage(result);
message.Should().Be("Context compaction complete: tool-result -> session-memory, saved 10.3K tokens");
}
[Fact]
public void BuildQueryViewSummary_ShouldIncludeWindowAndPreviewReuseMetrics()
{
var result = new AgentQueryContextWindowResult
{
Messages = new(),
SourceMessageCount = 34,
ViewMessageCount = 12,
WindowStartIndex = 21,
BoundaryApplied = true,
ToolPairExpanded = true,
PreservedToolPairCount = 2,
TruncatedToolResultCount = 3,
ReusedToolResultPreviewCount = 4,
TokensBeforeBudget = 8_600,
TokensAfterBudget = 6_100,
};
var summary = AgentLoopDiagnosticsFormatter.BuildQueryViewSummary(result);
summary.Should().Be("query-view 34->12, start=21, pairs=2, tool_result_budget=3, tool_result_preview_reuse=4, tokens 8600->6100");
}
}