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

@@ -1,7 +1,10 @@
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
namespace AxCopilot.Services;
@@ -313,12 +316,19 @@ public static class MarkdownRenderer
if (pm.Index > lastIndex)
AddPlainTextWithCodeSymbols(inlines, text[lastIndex..pm.Index]);
// 파일 경로 — 파란색 강조
inlines.Add(new Run(pm.Value)
// 파일 경로 — 파란색 강조 + 클릭 시 파일 열기
var matchedPath = pm.Value;
var hyperlink = new Hyperlink(new Run(matchedPath))
{
Foreground = FilePathBrush,
FontWeight = FontWeights.Medium,
});
TextDecorations = null,
Cursor = Cursors.Hand,
};
hyperlink.MouseEnter += (_, _) => hyperlink.TextDecorations = TextDecorations.Underline;
hyperlink.MouseLeave += (_, _) => hyperlink.TextDecorations = null;
hyperlink.Click += (_, _) => OpenFilePath(matchedPath);
inlines.Add(hyperlink);
lastIndex = pm.Index + pm.Length;
}
@@ -327,6 +337,19 @@ public static class MarkdownRenderer
AddPlainTextWithCodeSymbols(inlines, text[lastIndex..]);
}
private static void OpenFilePath(string path)
{
try
{
var expanded = Environment.ExpandEnvironmentVariables(path);
if (File.Exists(expanded))
Process.Start(new ProcessStartInfo(expanded) { UseShellExecute = true });
else if (Directory.Exists(expanded))
Process.Start("explorer.exe", $"\"{expanded}\"");
}
catch { /* 경로가 잘못됐거나 앱이 없으면 무시 */ }
}
private static void AddPlainTextWithCodeSymbols(InlineCollection inlines, string text)
{
if (string.IsNullOrEmpty(text))