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:
2026-04-12 22:02:14 +09:00
parent b8f4df1892
commit fb0bea41f7
137 changed files with 18532 additions and 1144 deletions

View File

@@ -76,6 +76,7 @@ public partial class SettingsWindow : Window
EnsureHotkeyInCombo();
BuildQuoteCategoryCheckboxes();
BuildDockBarSettings();
InitChatIconGlowCombo();
BuildTextActionCommandsPanel();
if (HasLegacyAgentTab())
{
@@ -182,7 +183,8 @@ public partial class SettingsWindow : Window
if (AgentRetentionDays90 != null) AgentRetentionDays90.IsChecked = retentionDays == 90;
if (AgentRetentionDaysUnlimited != null) AgentRetentionDaysUnlimited.IsChecked = retentionDays == 0;
var logLevel = (_vm.AgentLogLevel ?? "simple").Trim().ToLowerInvariant();
var logLevel = (_vm.AgentLogLevel ?? "hidden").Trim().ToLowerInvariant();
if (AgentLogLevelHidden != null) AgentLogLevelHidden.IsChecked = logLevel == "hidden";
if (AgentLogLevelSimple != null) AgentLogLevelSimple.IsChecked = logLevel == "simple";
if (AgentLogLevelDetailed != null) AgentLogLevelDetailed.IsChecked = logLevel == "detailed";
if (AgentLogLevelDebug != null) AgentLogLevelDebug.IsChecked = logLevel == "debug";
@@ -2330,6 +2332,7 @@ public partial class SettingsWindow : Window
_vm.AgentLogLevel = rb.Name switch
{
"AgentLogLevelHidden" => "hidden",
"AgentLogLevelDetailed" => "detailed",
"AgentLogLevelDebug" => "debug",
_ => "simple",
@@ -2875,6 +2878,28 @@ public partial class SettingsWindow : Window
}
}
private void InitChatIconGlowCombo()
{
if (CmbChatIconGlow == null || _vm == null) return;
var current = _vm.ChatIconGlowIntensity ?? "medium";
for (int i = 0; i < CmbChatIconGlow.Items.Count; i++)
{
if (CmbChatIconGlow.Items[i] is ComboBoxItem item && (item.Tag as string) == current)
{
CmbChatIconGlow.SelectedIndex = i;
break;
}
}
}
private void CmbChatIconGlow_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!IsLoaded) return;
if (sender is not ComboBox combo || combo.SelectedItem is not ComboBoxItem selected) return;
var intensity = selected.Tag as string ?? "medium";
if (_vm != null) _vm.ChatIconGlowIntensity = intensity;
}
private void OperationModeCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!IsLoaded) return;