AX Agent 폴더 데이터 활용 사용자 옵션 제거 및 자동 정책 고정
Some checks are pending
Release Gate / gate (push) Waiting to run

- 코워크/코드의 폴더 내 문서 활용을 사용자 설정에서 제거하고 탭별 자동 정책으로 고정
- ChatWindow 하단 데이터 활용 버튼과 AX Agent 내부 설정 row, 메인 설정/구형 설정창의 관련 UI 제거
- Chat/Cowork/Code 탭별 자동 데이터 활용 정책을 none/passive/active로 고정하고 저장 경로에서 사용자 선택값 반영 제거
- README와 DEVELOPMENT 문서에 변경 이력 및 적용 기준 반영
- 검증: 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-05 23:06:38 +09:00
parent f0af86cc1e
commit f9d18fba08
7 changed files with 25 additions and 279 deletions

View File

@@ -1117,3 +1117,6 @@ MIT License
- AX Agent transcript 품질 향상을 위해 렌더 책임을 실제로 분리했다. [ChatWindow.InlineInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.InlineInteractions.cs), [ChatWindow.TaskSummary.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TaskSummary.cs)를 추가해 `의견 요청`, `계획 승인`, `작업 요약` UI 로직을 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에서 분리했다.
- [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs), [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)를 추가해 권한 요청과 도구 결과를 `명령/네트워크/파일`, `성공/실패/거부/취소` 기준으로 나눠 transcript badge에 재사용하도록 정리했다.
- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)에 `OperationalStatusPresentationState``GetOperationalStatusPresentation(...)`을 추가해 status/runtime summary 계산을 전용 요약 모델로 한 번 더 계층화했다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 상태선 갱신은 이제 이 presentation summary를 소비한다.
- 업데이트: 2026-04-06 01:12 (KST)
- AX Agent 코워크/코드의 `폴더 내 문서 활용`을 사용자 옵션에서 제거했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [AgentSettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml) 에서 하단 버튼, 내부 설정 행, 구형 설정창 항목을 걷어냈다.
- 런타임은 옵션이 아닌 자동 정책으로 유지한다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 채팅은 `none`, 코워크는 `passive`, 코드는 `active`를 자동 적용하고, 더 이상 오버레이 저장 시 `FolderDataUsage`를 사용자 선택값으로 저장하지 않는다.

View File

@@ -4879,3 +4879,6 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- 권한/도구 결과 presentation catalog를 추가했다. [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs)는 `명령/네트워크/파일/일반` 권한 요청·허용 메타를, [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)는 `success/error/reject/cancel` 기준의 도구 결과 badge 메타를 제공한다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddAgentEventBanner(...)`는 이제 이 catalog를 사용해 권한 요청과 도구 결과 badge를 결정한다.
- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)에 `OperationalStatusPresentationState``GetOperationalStatusPresentation(...)`을 추가해 status line/runtime summary 계산을 presentation layer로 분리했다. `UpdateTaskSummaryIndicators()`는 presentation summary만 소비하도록 바뀌었다.
- 업데이트: 2026-04-06 01:12 (KST)
- 코워크/코드의 `폴더 내 문서 활용`은 사용자 제어 옵션에서 제거하고 탭별 자동 정책으로 고정했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 하단 데이터 활용 버튼과 AX Agent 내부 설정의 관련 row를 제거했고, [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [AgentSettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml) 의 대응 UI도 정리했다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 는 이제 `GetAutomaticFolderDataUsage()`만 사용해 채팅=`none`, 코워크=`passive`, 코드=`active`를 적용한다. 오버레이 저장에서도 `llm.FolderDataUsage`를 더 이상 사용자 입력으로 덮어쓰지 않으며, UI 클릭/선택 변경 핸들러는 자동 정책 유지용 no-op 수준으로 축소했다.

View File

@@ -391,7 +391,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,8,0,0" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -533,32 +533,6 @@
Style="{StaticResource OutlineHoverBtn}"
Click="BtnReasoningMode_Click"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="폴더 데이터 활용"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Width="16" Height="16" CornerRadius="8" Background="{DynamicResource ItemHoverBackground}" Margin="6,0,0,0" Cursor="Help" VerticalAlignment="Center">
<TextBlock Text="?" FontSize="10" FontWeight="Bold" Foreground="{DynamicResource AccentColor}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap" Foreground="White" FontSize="12" LineHeight="18" MaxWidth="320">
현재 작업 폴더 파일과 문맥을 AI가 얼마나 적극적으로 참고할지 정합니다.
</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<Button x:Name="BtnFolderDataUsage"
Grid.Column="1"
MinWidth="120"
Style="{StaticResource OutlineHoverBtn}"
Click="BtnFolderDataUsage_Click"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>

View File

@@ -17,7 +17,6 @@ public partial class AgentSettingsWindow : Window
private readonly LlmSettings _llm;
private string _permissionMode = PermissionModeCatalog.Deny;
private string _reasoningMode = "detailed";
private string _folderDataUsage = "active";
private string _operationMode = OperationModePolicy.InternalMode;
private string _displayMode = "rich";
private string _defaultOutputFormat = "auto";
@@ -48,7 +47,6 @@ public partial class AgentSettingsWindow : Window
ModelInput.Text = _selectedModel;
_permissionMode = PermissionModeCatalog.NormalizeGlobalMode(_llm.FilePermission);
_reasoningMode = string.IsNullOrWhiteSpace(_llm.AgentDecisionLevel) ? "detailed" : _llm.AgentDecisionLevel;
_folderDataUsage = string.IsNullOrWhiteSpace(_llm.FolderDataUsage) ? "active" : _llm.FolderDataUsage;
_operationMode = OperationModePolicy.Normalize(_settings.Settings.OperationMode);
_displayMode = "rich";
_defaultOutputFormat = string.IsNullOrWhiteSpace(_llm.DefaultOutputFormat) ? "auto" : _llm.DefaultOutputFormat;
@@ -114,7 +112,6 @@ public partial class AgentSettingsWindow : Window
BtnOperationMode.Content = BuildOperationModeLabel(_operationMode);
BtnPermissionMode.Content = PermissionModeCatalog.ToDisplayLabel(_permissionMode);
BtnReasoningMode.Content = BuildReasoningModeLabel(_reasoningMode);
BtnFolderDataUsage.Content = BuildFolderDataUsageLabel(_folderDataUsage);
}
private void RefreshDisplayModeCards()
@@ -173,16 +170,6 @@ public partial class AgentSettingsWindow : Window
};
}
private static string BuildFolderDataUsageLabel(string mode)
{
return (mode ?? "none").ToLowerInvariant() switch
{
"active" => "적극 활용",
"passive" => "소극 활용",
_ => "활용하지 않음",
};
}
private static string BuildOutputFormatLabel(string format)
{
return (format ?? "auto").ToLowerInvariant() switch
@@ -469,17 +456,6 @@ public partial class AgentSettingsWindow : Window
RefreshModeLabels();
}
private void BtnFolderDataUsage_Click(object sender, RoutedEventArgs e)
{
_folderDataUsage = _folderDataUsage switch
{
"none" => "passive",
"passive" => "active",
_ => "none",
};
RefreshModeLabels();
}
private void BtnDefaultOutputFormat_Click(object sender, RoutedEventArgs e)
{
_defaultOutputFormat = (_defaultOutputFormat ?? "auto").ToLowerInvariant() switch
@@ -514,7 +490,6 @@ public partial class AgentSettingsWindow : Window
_llm.FilePermission = _permissionMode;
_llm.DefaultAgentPermission = _permissionMode;
_llm.AgentDecisionLevel = _reasoningMode;
_llm.FolderDataUsage = _folderDataUsage;
_llm.AgentUiExpressionLevel = "rich";
_llm.DefaultOutputFormat = _defaultOutputFormat;
_llm.DefaultMood = _defaultMood;

View File

@@ -1360,22 +1360,6 @@
</Border>
</Popup>
<!-- ── 데이터 활용 수준 팝업 ── -->
<Popup x:Name="DataUsagePopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=BtnDataUsage}"
Placement="Top" StaysOpen="False"
AllowsTransparency="True" PopupAnimation="Fade">
<Border Background="{DynamicResource LauncherBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1" CornerRadius="18"
Padding="10" MinWidth="300">
<Border.Effect>
<DropShadowEffect BlurRadius="22" ShadowDepth="0" Opacity="0.15"/>
</Border.Effect>
<StackPanel x:Name="DataUsageItems" Margin="2"/>
</Border>
</Popup>
<!-- ── 슬래시 명령어 팝업 ── -->
<Popup x:Name="SlashPopup" Grid.Row="4"
PlacementTarget="{Binding ElementName=InputBorder}"
@@ -2198,28 +2182,7 @@
<Border x:Name="FormatMoodSeparator" Grid.Column="4" Width="1" Height="18" Margin="4,0"
Background="{DynamicResource SeparatorColor}" Visibility="Collapsed"/>
<!-- 데이터 활용 메뉴 -->
<Border x:Name="BtnDataUsage" Grid.Column="5" Cursor="Hand"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
Padding="10,5"
CornerRadius="8"
MouseLeftButtonUp="BtnDataUsage_Click"
ToolTip="폴더 데이터 활용 수준">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="DataUsageIcon" Text="&#xE9F5;" FontFamily="Segoe MDL2 Assets" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center" Margin="0,0,4,0"/>
<TextBlock x:Name="DataUsageLabel" Text="활용하지 않음" FontSize="12"
Foreground="{DynamicResource SecondaryText}"
VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- 구분선 -->
<Border Grid.Column="6" Width="1" Height="18" Margin="4,0"
Background="{DynamicResource SeparatorColor}"/>
<!-- 폴더 데이터 활용은 코드/코워크 자동 정책으로만 동작 -->
<!-- 권한 메뉴 -->
<Button x:Name="BtnPermission" Grid.Column="7" Style="{StaticResource OutlineHoverBtn}"
@@ -3493,43 +3456,6 @@
<ComboBoxItem Content="모드 · 사외 모드" Tag="external"/>
</ComboBox>
</Grid>
<Grid x:Name="OverlayFolderDataUsageRow" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="폴더 데이터 활용"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
<Border Style="{StaticResource OverlayHelpBadge}">
<TextBlock Text="?"
FontSize="10"
FontWeight="Bold"
Foreground="{DynamicResource AccentColor}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Border.ToolTip>
<ToolTip Style="{StaticResource HelpTooltipStyle}">
<TextBlock TextWrapping="Wrap"
Foreground="White"
FontSize="12"
LineHeight="18"
MaxWidth="280">현재 폴더의 파일과 문맥을 응답에 얼마나 적극적으로 활용할지 정합니다. 적극 활용은 관련 파일을 더 넓게 참조하고, 활용하지 않음은 현재 입력 중심으로만 답합니다.</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<ComboBox x:Name="CmbOverlayFolderDataUsage"
Grid.Column="1"
MinWidth="140"
Style="{StaticResource OverlayComboBox}"
SelectionChanged="CmbOverlayFolderDataUsage_SelectionChanged">
<ComboBoxItem Content="데이터 · 활용하지 않음" Tag="none"/>
<ComboBoxItem Content="데이터 · 소극 활용" Tag="passive"/>
<ComboBoxItem Content="데이터 · 적극 활용" Tag="active"/>
</ComboBox>
</Grid>
<Grid x:Name="OverlayTlsRow" Visibility="Collapsed" Margin="0,0,0,0">
<CheckBox x:Name="OverlayHiddenTlsToggle" Visibility="Collapsed"/>

View File

@@ -206,7 +206,7 @@ public partial class ChatWindow : Window
// 설정에서 초기값 로드 (Loaded 전에도 null 방지)
_selectedMood = settings.Settings.Llm.DefaultMood ?? "modern";
_folderDataUsage = settings.Settings.Llm.FolderDataUsage ?? "none";
_folderDataUsage = "none";
_cursorTimer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(530) };
_cursorTimer.Tick += CursorTimer_Tick;
@@ -295,7 +295,7 @@ public partial class ChatWindow : Window
// ── 즉시 필요한 UI 초기화만 동기 실행 ──
SetupUserInfo();
_selectedMood = _settings.Settings.Llm.DefaultMood ?? "modern";
_folderDataUsage = _settings.Settings.Llm.FolderDataUsage ?? "none";
_folderDataUsage = GetAutomaticFolderDataUsage();
UpdateAnalyzerButtonVisibility();
UpdateModelLabel();
RefreshInlineSettingsPanel();
@@ -1815,9 +1815,7 @@ public partial class ChatWindow : Window
: fallbackPermission;
_settings.Settings.Llm.FilePermission = conversationPermission;
_folderDataUsage = IsFolderDataAlwaysEnabledTab()
? "active"
: (conv?.DataUsage ?? llm.FolderDataUsage ?? "none");
_folderDataUsage = GetAutomaticFolderDataUsage();
_selectedMood = conv?.Mood ?? llm.DefaultMood ?? "modern";
}
@@ -1853,7 +1851,7 @@ public partial class ChatWindow : Window
try
{
var normalizedPermission = PermissionModeCatalog.NormalizeGlobalMode(_settings.Settings.Llm.FilePermission);
var dataUsage = IsFolderDataAlwaysEnabledTab() ? "active" : (_folderDataUsage ?? "none");
var dataUsage = GetAutomaticFolderDataUsage();
var mood = _selectedMood ?? (_settings.Settings.Llm.DefaultMood ?? "modern");
var outputFormat = conv.OutputFormat ?? "auto";
@@ -2259,114 +2257,21 @@ public partial class ChatWindow : Window
private void BtnDataUsage_Click(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (IsFolderDataAlwaysEnabledTab())
return;
if (DataUsagePopup == null) return;
DataUsageItems.Children.Clear();
var options = new (string Key, string Sym, string Label, string Desc, string Color, string CheckColor)[]
{
("none", "\uE8D8", "활용하지 않음", "폴더 내 문서를 읽기만 포함해 참조하지 않습니다", "#6B7280", "#6B7280"),
("passive", "\uE8FD", "소극 활용", "사용자가 요청할 때만 폴더 데이터를 참조합니다", "#D97706", "#D97706"),
("active", "\uE9F5", "적극 활용", "폴더 내 문서를 자동 탐색하여 보고서 작성에 적극 활용합니다", "#107C10", "#107C10"),
};
foreach (var (key, sym, label, desc, color, checkColor) in options)
{
var isActive = key.Equals(_folderDataUsage, StringComparison.OrdinalIgnoreCase);
var row = new Border
{
Background = isActive ? BrushFromHex("#F8FAFC") : Brushes.Transparent,
BorderBrush = isActive ? BrushFromHex("#C7D2FE") : BrushFromHex("#E5E7EB"),
BorderThickness = new Thickness(isActive ? 2 : 0, 0, 0, 1),
Cursor = Cursors.Hand,
Padding = new Thickness(8, 9, 8, 9),
Margin = new Thickness(0),
};
var sp = new StackPanel { Orientation = Orientation.Horizontal };
var checkIcon = CreateCheckIcon(isActive);
if (checkIcon is TextBlock checkText)
checkText.Foreground = isActive ? BrushFromHex(checkColor) : Brushes.Transparent;
sp.Children.Add(checkIcon);
sp.Children.Add(new TextBlock
{
Text = sym, FontFamily = new FontFamily("Segoe MDL2 Assets"), FontSize = 14,
Foreground = BrushFromHex(color),
VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(0, 0, 10, 0),
});
var textStack = new StackPanel();
textStack.Children.Add(new TextBlock
{
Text = label, FontSize = 11.5, FontWeight = FontWeights.SemiBold,
Foreground = BrushFromHex(color),
});
textStack.Children.Add(new TextBlock
{
Text = desc, FontSize = 10.5,
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
TextWrapping = TextWrapping.Wrap,
MaxWidth = 240,
});
sp.Children.Add(textStack);
row.Child = sp;
var capturedKey = key;
row.MouseEnter += (_, _) =>
{
row.Background = BrushFromHex("#F8FAFC");
row.BorderBrush = isActive ? BrushFromHex("#C7D2FE") : BrushFromHex("#E2E8F0");
};
row.MouseLeave += (_, _) =>
{
row.Background = isActive ? BrushFromHex("#F8FAFC") : Brushes.Transparent;
row.BorderBrush = isActive ? BrushFromHex("#C7D2FE") : BrushFromHex("#E5E7EB");
};
row.MouseLeftButtonDown += (_, _) =>
{
_folderDataUsage = capturedKey;
UpdateDataUsageUI();
SaveConversationSettings();
RefreshOverlayModeButtons();
DataUsagePopup.IsOpen = false;
};
DataUsageItems.Children.Add(row);
}
DataUsagePopup.IsOpen = true;
_folderDataUsage = GetAutomaticFolderDataUsage();
}
private void UpdateDataUsageUI()
{
if (DataUsageLabel == null || DataUsageIcon == null) return;
if (IsFolderDataAlwaysEnabledTab())
_folderDataUsage = "active";
var (label, icon, color) = _folderDataUsage switch
{
"none" => ("데이터 미활용", "\uE8D8", "#6B7280"),
"passive" => ("데이터 소극", "\uE8FD", "#D97706"),
_ => ("데이터 적극", "\uE9F5", "#107C10"),
};
DataUsageLabel.Text = label;
DataUsageIcon.Text = icon;
DataUsageIcon.Foreground = BrushFromHex(color);
if (BtnDataUsage != null)
{
BtnDataUsage.Visibility = IsFolderDataAlwaysEnabledTab() ? Visibility.Collapsed : Visibility.Visible;
BtnDataUsage.Background = Brushes.Transparent;
BtnDataUsage.BorderBrush = Brushes.Transparent;
BtnDataUsage.BorderThickness = new Thickness(0);
BtnDataUsage.ToolTip = _folderDataUsage switch
{
"none" => "폴더 문서와 파일을 읽지 않거나 참조하지 않습니다.",
"passive" => "사용자가 요청할 때만 폴더 데이터를 참조합니다.",
_ => "폴더 문서와 파일을 자동 탐색해 작업에 적극 활용합니다."
};
}
if (IsFolderDataAlwaysEnabledTab() && DataUsagePopup != null)
DataUsagePopup.IsOpen = false;
_folderDataUsage = GetAutomaticFolderDataUsage();
}
private bool IsFolderDataAlwaysEnabledTab()
=> string.Equals(_activeTab, "Code", StringComparison.OrdinalIgnoreCase);
private string GetAutomaticFolderDataUsage()
=> _activeTab switch
{
"Code" => "active",
"Cowork" => "passive",
_ => "none",
};
/// <summary>Cowork/Code 탭 진입 시 설정의 기본 권한을 적용.</summary>
private void ApplyTabDefaultPermission()
@@ -8652,8 +8557,8 @@ public partial class ChatWindow : Window
sb.AppendLine($"File permission mode: {llm.FilePermission}");
sb.Append(BuildSubAgentDelegationSection(false));
// 폴더 데이터 활용 지침
switch (_folderDataUsage)
// 폴더 데이터 활용 지침 (사용자 옵션이 아닌 탭별 자동 정책)
switch (GetAutomaticFolderDataUsage())
{
case "active":
sb.AppendLine("IMPORTANT: Folder Data Usage = ACTIVE. You have 'document_read' and 'folder_map' tools available.");
@@ -13964,7 +13869,6 @@ public partial class ChatWindow : Window
llm.WorkflowVisualizer = ChkOverlayWorkflowVisualizer?.IsChecked == true;
llm.ShowTotalCallStats = ChkOverlayShowTotalCallStats?.IsChecked == true;
llm.EnableAuditLog = ChkOverlayEnableAuditLog?.IsChecked == true;
llm.FolderDataUsage = _folderDataUsage;
CommitOverlayEndpointInput(normalizeOnInvalid: true);
CommitOverlayApiKeyInput();
@@ -14884,12 +14788,6 @@ public partial class ChatWindow : Window
OverlayModelEditorPanel.Visibility = showBasic ? Visibility.Visible : Visibility.Collapsed;
if (OverlayAnchorPermission != null)
OverlayAnchorPermission.Visibility = showBasic ? Visibility.Visible : Visibility.Collapsed;
if (IsFolderDataAlwaysEnabledTab())
_folderDataUsage = "active";
if (OverlayFolderDataUsageRow != null)
OverlayFolderDataUsageRow.Visibility = IsFolderDataAlwaysEnabledTab()
? Visibility.Collapsed
: (showShared || showCowork ? Visibility.Visible : Visibility.Collapsed);
if (OverlayTlsRow != null)
OverlayTlsRow.Visibility = showChat ? Visibility.Visible : Visibility.Collapsed;
if (OverlayAnchorAdvanced != null)
@@ -16257,7 +16155,6 @@ public partial class ChatWindow : Window
{
var llm = _settings.Settings.Llm;
SelectComboTag(CmbOverlayOperationMode, OperationModePolicy.Normalize(_settings.Settings.OperationMode));
SelectComboTag(CmbOverlayFolderDataUsage, _folderDataUsage);
SelectComboTag(CmbOverlayPermission, PermissionModeCatalog.NormalizeGlobalMode(llm.FilePermission));
SelectComboTag(CmbOverlayReasoning, llm.AgentDecisionLevel);
SelectComboTag(CmbOverlayFastMode, llm.FreeTierMode ? "on" : "off");
@@ -16713,19 +16610,7 @@ public partial class ChatWindow : Window
private void BtnOverlayFolderDataUsage_Click(object sender, RoutedEventArgs e)
{
if (IsFolderDataAlwaysEnabledTab())
{
_folderDataUsage = "active";
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
return;
}
_folderDataUsage = _folderDataUsage switch
{
"none" => "passive",
"passive" => "active",
_ => "none",
};
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
_folderDataUsage = GetAutomaticFolderDataUsage();
}
private void CmbOverlayFastMode_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -16800,11 +16685,7 @@ public partial class ChatWindow : Window
private void CmbOverlayFolderDataUsage_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (_isOverlaySettingsSyncing || CmbOverlayFolderDataUsage.SelectedItem is not ComboBoxItem selected || selected.Tag is not string tag)
return;
_folderDataUsage = IsFolderDataAlwaysEnabledTab() ? "active" : tag;
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
_folderDataUsage = GetAutomaticFolderDataUsage();
}
private void CmbOverlayAgentLogLevel_SelectionChanged(object sender, SelectionChangedEventArgs e)

View File

@@ -4957,22 +4957,6 @@
</Grid>
</Border>
<TextBlock Style="{StaticResource SectionHeader}" Text="폴더 데이터 활용"/>
<Border Style="{StaticResource SettingsRow}">
<Grid>
<StackPanel HorizontalAlignment="Left">
<TextBlock Style="{StaticResource RowLabel}" Text="기본 데이터 활용 수준"/>
<TextBlock Style="{StaticResource RowHint}" Text="작업 폴더 내 문서/데이터를 보고서 작성에 활용하는 수준입니다."/>
</StackPanel>
<ComboBox HorizontalAlignment="Right" VerticalAlignment="Center"
Width="180" SelectedValue="{Binding FolderDataUsage, Mode=TwoWay}"
SelectedValuePath="Tag">
<ComboBoxItem Content="활용하지 않음" Tag="none"/>
<ComboBoxItem Content="소극 활용 (요청 시)" Tag="passive"/>
<ComboBoxItem Content="적극 활용 (자동 탐색)" Tag="active"/>
</ComboBox>
</Grid>
</Border>
<!-- ── 품질 검증 ── -->
<TextBlock Style="{StaticResource SectionHeader}" Text="품질 검증"/>