AX Agent 스트리밍 중 탭 전환과 새 대화가 멈추는 저장 루프 회귀 수정

원인: 같은 LastActiveTab·LastConversationIds 상태에서도 ChatSessionStateService.Save가 매번 settings.Save를 호출해 SettingsChanged -> UpdateTabUI -> SwitchToTabConversation -> SaveLastConversations 순환이 계속 발생했습니다. 이 때문에 시간 표시가 0초에 머무르고 탭 전환/새 대화가 즉시 덮어써졌습니다.

수정: ChatSessionStateService는 세션 스냅샷이 실제로 바뀐 경우에만 저장하도록 변경했고, 동일 상태 반복 저장 시 Save와 SettingsChanged가 재발화하지 않도록 테스트를 추가했습니다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_streaming_tab_loop_fix\ -p:IntermediateOutputPath=obj\verify_streaming_tab_loop_fix\ (경고 0 / 오류 0), dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter ChatSessionStateServiceTests|ChatStreamingUiPolicyTests|AxAgentExecutionEngineTests -p:OutputPath=bin\verify_streaming_tab_loop_fix_tests\ -p:IntermediateOutputPath=obj\verify_streaming_tab_loop_fix_tests\ (통과 51)
This commit is contained in:
2026-04-15 20:00:54 +09:00
parent f3717cda21
commit 22261579d0
4 changed files with 124 additions and 3 deletions

View File

@@ -1,5 +1,10 @@
# AX Commander
- 업데이트: 2026-04-15 19:59 (KST)
- AX Agent 스트리밍 중 탭 전환, 새 대화, 경과 시간이 멈춘 것처럼 보이던 회귀를 수정했습니다. `src/AxCopilot/Services/ChatSessionStateService.cs`는 탭별 마지막 대화 ID와 활성 탭이 실제로 바뀐 경우에만 설정 저장을 수행합니다.
- 원인은 스트리밍 UI가 현재 대화를 다시 그릴 때마다 같은 세션 상태를 반복 저장하고, 그 저장이 `SettingsChanged`를 다시 발생시켜 `UpdateTabUI -> SwitchToTabConversation -> SaveLastConversations` 루프를 만들던 흐름이었습니다.
- 테스트: `src/AxCopilot.Tests/Services/ChatSessionStateServiceTests.cs`에 동일 세션 상태 반복 저장 시 Save/이벤트가 발생하지 않는 케이스와, 실제 변경이 있을 때만 저장되는 케이스를 추가했습니다.
- 업데이트: 2026-04-15 19:46 (KST)
- Code 탭 auto skill 선택을 실제 키워드·경로 매치 기반으로 다시 조정했습니다. `src/AxCopilot/Services/Agent/SkillService.cs`가 기본 점수만으로 무관한 번들 스킬을 매 요청마다 붙이지 않도록 바뀌었습니다.
- 같은 파일에서 proactive auto skill은 guidance만 주고 `allowed_tools` 같은 하드 런타임 정책은 더 이상 자동 주입하지 않습니다. 빈 작업 폴더 생성 요청이 `file_write` 없이 종료되던 회귀를 막는 목적입니다.