모델 프로파일 기반 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

@@ -62,6 +62,8 @@ public class IndexService : IDisposable
public IReadOnlyList<IndexEntry> Entries => _index;
public event EventHandler? IndexRebuilt;
/// <summary>전체 재색인 및 증분 갱신 모두에서 발생 — 쿼리 캐시 무효화 용도.</summary>
public event EventHandler? IndexEntriesChanged;
public event EventHandler<LauncherIndexProgressInfo>? IndexProgressChanged;
public TimeSpan LastIndexDuration { get; private set; }
public int LastIndexCount { get; private set; }
@@ -109,6 +111,7 @@ public class IndexService : IDisposable
LastIndexDuration = TimeSpan.Zero;
LastIndexCount = _index.Count;
LogService.Info($"런처 인덱스 캐시 로드: {entries.Count}개 파일 시스템 항목");
IndexEntriesChanged?.Invoke(this, EventArgs.Empty); // FuzzyEngine 캐시 무효화
}
catch (Exception ex)
{
@@ -171,6 +174,7 @@ public class IndexService : IDisposable
$"최근 색인 완료 · {LastIndexCount:N0}개 항목 · {LastIndexDuration.TotalSeconds:F1}초"));
LogService.Info($"런처 인덱싱 완료: {fileSystemEntries.Count}개 파일 시스템 항목 ({sw.Elapsed.TotalSeconds:F1}초)");
IndexRebuilt?.Invoke(this, EventArgs.Empty);
IndexEntriesChanged?.Invoke(this, EventArgs.Empty);
}
finally
{
@@ -329,6 +333,7 @@ public class IndexService : IDisposable
LastIndexCount,
LastIndexDuration,
$"최근 색인 완료 · {LastIndexCount:N0}개 항목");
IndexEntriesChanged?.Invoke(this, EventArgs.Empty); // 증분 갱신도 캐시 무효화 필요
LogService.Info($"런처 인덱스 증분 갱신: {triggerPath}");
}
@@ -516,7 +521,12 @@ public class IndexService : IDisposable
}
RegisterBuiltInApps(entries);
ComputeAllSearchCaches(entries);
// FS 항목은 이미 캐시 계산 완료 — 별칭·내장앱처럼 새로 추가된 항목만 계산
foreach (var entry in entries)
{
if (string.IsNullOrEmpty(entry.NameLower))
ComputeSearchCache(entry);
}
_index = entries;
}
@@ -798,6 +808,10 @@ public class IndexService : IDisposable
if (name.StartsWith(".", StringComparison.Ordinal) || IgnoredDirectoryNames.Contains(name))
continue;
// 파일과 동일하게 숨김·시스템 폴더도 색인에서 제외
if (ShouldIgnorePath(subDir))
continue;
entries.Add(CreateFolderEntry(subDir));
}
}