AX Agent 코워크·코드 흐름과 컨텍스트 관리를 claude-code 기준으로 대폭 정리
- 코워크·코드 프롬프트, 도구 선택, 문서 생성/검증 흐름을 claude-code 동등 품질 기준으로 재정렬함 - OpenAI/vLLM 경로의 오래된 tool history를 평탄화하고 최근 이력만 구조화해 컨텍스트 직렬화를 경량화함 - AX Agent UI를 테마 기준으로 재구성하고 플랜 승인/오버레이/이벤트 렌더링/명령 입력 상호작용을 개선함 - 파일 후보 제안, 반복 경로 정체 복구, LSP 보강, 문서·PPT 처리 개선, 설정/서비스 인터페이스 정리를 함께 반영함 - README.md 및 docs/DEVELOPMENT.md를 작업 시점별로 갱신함 - 검증: 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:
@@ -87,7 +87,26 @@ public partial class ChatWindow
|
||||
{
|
||||
var result = _chatEngine.AppendExecutionEvent(
|
||||
session, _storage, _currentConversation, activeTab, eventTab, evt);
|
||||
_currentConversation = result.CurrentConversation;
|
||||
// 방어: 결과 대화가 빈 대화로 교체되는 것을 방지
|
||||
// EnsureCurrentConversation이 기존 대화 대신 새 빈 대화를 생성하는 경우 발생
|
||||
var resultConv = result.CurrentConversation;
|
||||
var currentMsgCount = _currentConversation?.Messages?.Count ?? 0;
|
||||
var resultMsgCount = resultConv?.Messages?.Count ?? 0;
|
||||
if (resultConv != null && resultMsgCount == 0 && currentMsgCount > 0
|
||||
&& _currentConversation != null
|
||||
&& string.Equals(
|
||||
_currentConversation.Tab?.Trim(),
|
||||
resultConv.Tab?.Trim(),
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// 기존 대화 유지 — session에도 복원
|
||||
session.CurrentConversation = _currentConversation;
|
||||
LogService.Info($"[EventProc] 대화 교체 차단: 기존 msgCount={currentMsgCount}, 결과 msgCount={resultMsgCount}, convId={_currentConversation.Id?[..Math.Min(8, _currentConversation.Id?.Length ?? 0)]}");
|
||||
}
|
||||
else
|
||||
{
|
||||
_currentConversation = resultConv;
|
||||
}
|
||||
pendingPersist = result.UpdatedConversation;
|
||||
}
|
||||
}
|
||||
@@ -109,7 +128,17 @@ public partial class ChatWindow
|
||||
var summary = string.IsNullOrWhiteSpace(evt.Summary) ? "작업 완료" : evt.Summary;
|
||||
var result = _chatEngine.AppendAgentRun(
|
||||
session, _storage, _currentConversation, activeTab, eventTab, evt, "completed", summary);
|
||||
_currentConversation = result.CurrentConversation;
|
||||
// 방어: Complete 이벤트에서도 대화 교체 보호
|
||||
var completeMsgCount = result.CurrentConversation?.Messages?.Count ?? 0;
|
||||
var existingMsgCount = _currentConversation?.Messages?.Count ?? 0;
|
||||
if (completeMsgCount == 0 && existingMsgCount > 0 && _currentConversation != null)
|
||||
{
|
||||
session.CurrentConversation = _currentConversation;
|
||||
}
|
||||
else
|
||||
{
|
||||
_currentConversation = result.CurrentConversation;
|
||||
}
|
||||
pendingPersist = result.UpdatedConversation;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user