모델 프로파일 기반 Cowork/Code 루프와 진행 UX 고도화 반영

- 등록 모델 실행 프로파일을 검증 게이트, 문서 fallback, post-tool verification까지 확장 적용

- Cowork/Code 진행 카드에 계획/도구/검증/압축/폴백/재시도 단계 메타를 추가해 대기 상태 가시성 강화

- OpenAI/vLLM tool 요청에 병렬 도구 호출 힌트를 추가하고 회귀 프롬프트 문서를 프로파일 기준으로 전면 정리

- 검증: 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-08 13:41:57 +09:00
parent b391dfdfb3
commit a2c952879d
552 changed files with 8094 additions and 13595 deletions

View File

@@ -118,9 +118,10 @@ public sealed class ChatSessionStateService
// 새 대화를 시작한 직후처럼 아직 저장되지 않은 현재 대화가 있으면,
// 최신 저장 대화로 되돌아가지 말고 그 임시 세션을 그대로 유지합니다.
// HasActualContent를 사용하여 WorkFolder/Permission 같은 설정값만 있는 경우도 새 대화로 인식.
if (CurrentConversation != null
&& string.Equals(NormalizeTab(CurrentConversation.Tab), normalizedTab, StringComparison.OrdinalIgnoreCase)
&& !HasPersistableContent(CurrentConversation))
&& !HasActualContent(CurrentConversation))
{
return CurrentConversation;
}
@@ -607,6 +608,20 @@ public sealed class ChatSessionStateService
return "Chat";
}
/// <summary>
/// 실제 사용자 상호작용 데이터가 있는지 확인합니다. WorkFolder/Permission 같은 설정값은 제외.
/// LoadOrCreateConversation의 새 대화 보호 가드에서 사용합니다.
/// </summary>
private static bool HasActualContent(ChatConversation conv)
{
if ((conv.Messages?.Count ?? 0) > 0) return true;
if ((conv.ExecutionEvents?.Count ?? 0) > 0) return true;
if ((conv.AgentRunHistory?.Count ?? 0) > 0) return true;
if ((conv.DraftQueueItems?.Count ?? 0) > 0) return true;
if (conv.Pinned) return true;
return false;
}
private static bool HasPersistableContent(ChatConversation conv)
{
if ((conv.Messages?.Count ?? 0) > 0) return true;