AX Agent 도구·스킬 정합성 재구성 및 실행 품질 보강

변경 목적:
- AX Agent의 도구 이름, 내부 설정, 스킬 정책, 실행 루프 사이의 불일치를 줄이고 전체 동작 품질을 높인다.
- claw-code 수준의 일관된 동작 품질을 참고하되 AX 구조에 맞는 고유한 카탈로그·정규화 레이어로 재구성한다.

핵심 수정사항:
- 도구 canonical id, legacy alias, 탭 노출, 설정 카테고리, read-only 분류를 중앙 카탈로그로 통합했다.
- ToolRegistry, AgentLoopService, 병렬 실행 분류, 권한 처리, 훅 처리, 스킬 allowed-tools 해석이 같은 이름 체계를 사용하도록 정리했다.
- Agent 설정/일반 설정/도움말의 도구 카드와 훅 편집기, 스킬 설명을 현재 런타임 구조에 맞게 갱신했다.
- 컨텍스트 압축, intent gate, spawn agents, session learning, model prompt adapter, workspace context 관련 변경과 테스트 추가를 함께 반영했다.
- 문서 이력과 비교/로드맵 문서를 최신 상태로 갱신했다.

검증 결과:
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_toolcat\ -p:IntermediateOutputPath=obj\verify_toolcat\ : 경고 0 / 오류 0
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter AgentToolCatalogTests -p:OutputPath=bin\verify_toolcat_tests\ -p:IntermediateOutputPath=obj\verify_toolcat_tests\ : 통과 8
This commit is contained in:
2026-04-14 17:52:46 +09:00
parent fa33b98f7e
commit 8cb08576d5
200 changed files with 13522 additions and 5764 deletions

View File

@@ -135,8 +135,8 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,0"
Padding="12,8"
Margin="0,0,10,0"
MouseLeftButtonUp="AgentTabBasicCard_MouseLeftButtonUp">
<TextBlock Text="기본" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -145,8 +145,8 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,0"
Padding="12,8"
Margin="0,0,10,0"
MouseLeftButtonUp="AgentTabChatCard_MouseLeftButtonUp">
<TextBlock Text="채팅" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -155,8 +155,8 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,0"
Padding="12,8"
Margin="0,0,10,0"
MouseLeftButtonUp="AgentTabCoworkCard_MouseLeftButtonUp">
<TextBlock Text="코워크" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -165,8 +165,8 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,0"
Padding="12,8"
Margin="0,0,10,0"
MouseLeftButtonUp="AgentTabCodeCard_MouseLeftButtonUp">
<TextBlock Text="코드" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -175,8 +175,8 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,0"
Padding="12,8"
Margin="0,0,10,0"
MouseLeftButtonUp="AgentTabDevCard_MouseLeftButtonUp">
<TextBlock Text="개발자" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -185,8 +185,8 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Margin="0,0,8,0"
Padding="12,8"
Margin="0,0,10,0"
MouseLeftButtonUp="AgentTabToolsCard_MouseLeftButtonUp">
<TextBlock Text="도구" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -195,7 +195,7 @@
CornerRadius="10"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
Padding="10,7"
Padding="12,8"
MouseLeftButtonUp="AgentTabEtcCard_MouseLeftButtonUp">
<TextBlock Text="스킬/차단" FontSize="12" Foreground="{DynamicResource PrimaryText}"/>
</Border>
@@ -208,10 +208,10 @@
<StackPanel Margin="18,14,18,16">
<StackPanel x:Name="PanelBasic">
<TextBlock Text="기본 상태"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Grid Margin="0,8,0,0" Visibility="Collapsed">
<Grid Margin="0,10,0,0" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -222,14 +222,14 @@
FontSize="12"/>
<TextBlock Text="비활성화하면 AX Agent 대화와 관련 설정이 숨겨집니다."
Foreground="{DynamicResource SecondaryText}"
FontSize="11"
Margin="0,2,0,0"/>
FontSize="11.5"
Margin="0,3,0,0"/>
</StackPanel>
<CheckBox x:Name="ChkAiEnabled"
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0" Visibility="Collapsed">
<Grid Margin="0,10,0,0" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -240,8 +240,8 @@
FontSize="12"/>
<TextBlock Text="계획, 승인 카드, 보조 설명의 정보 밀도를 조정합니다."
Foreground="{DynamicResource SecondaryText}"
FontSize="11"
Margin="0,2,0,0"/>
FontSize="11.5"
Margin="0,3,0,0"/>
</StackPanel>
<WrapPanel Grid.Column="1">
<Border x:Name="DisplayModeRichCard"
@@ -276,13 +276,13 @@
</WrapPanel>
</Grid>
<Border Height="1" Margin="0,10,0,10" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="테마"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<WrapPanel Margin="0,8,0,0">
<WrapPanel Margin="0,10,0,0">
<Border x:Name="ThemeSystemCard"
Cursor="Hand"
CornerRadius="10"
@@ -315,17 +315,17 @@
</Border>
</WrapPanel>
<Border Height="1" Margin="0,10,0,10" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
</StackPanel>
<StackPanel x:Name="PanelChat">
<TextBlock Text="모델 및 연결"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="서비스를 선택하고 모델, 연결 옵션, 운영 모드를 조정합니다."
Margin="0,4,0,10"
FontSize="11"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
<WrapPanel>
<Border x:Name="SvcOllamaCard"
@@ -372,7 +372,7 @@
<TextBox x:Name="ModelInput"
Visibility="Collapsed"
Margin="0,6,0,8"
Padding="8,6"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
@@ -391,7 +391,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0" Visibility="Collapsed">
<Grid Margin="0,10,0,0" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -418,7 +418,7 @@
Style="{StaticResource OutlineHoverBtn}"
Click="BtnOperationMode_Click"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -445,7 +445,7 @@
Style="{StaticResource OutlineHoverBtn}"
Click="BtnDefaultOutputFormat_Click"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -472,15 +472,15 @@
Click="BtnDefaultMood_Click"/>
</Grid>
<Border Height="1" Margin="0,10,0,10" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
</StackPanel>
<StackPanel x:Name="PanelCowork" Visibility="Collapsed">
<TextBlock Text="권한 및 실행"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -507,7 +507,7 @@
Style="{StaticResource OutlineHoverBtn}"
Click="BtnPermissionMode_Click"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -533,7 +533,7 @@
Style="{StaticResource OutlineHoverBtn}"
Click="BtnReasoningMode_Click"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -545,7 +545,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -557,7 +557,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -569,7 +569,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="120"/>
@@ -591,7 +591,7 @@
</StackPanel>
<TextBox x:Name="TxtMaxAgentIterations"
Grid.Column="1"
Padding="8,5"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
@@ -602,10 +602,10 @@
<StackPanel x:Name="PanelCode" Visibility="Collapsed">
<TextBlock Text="코드 실행"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -617,7 +617,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -629,7 +629,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -641,7 +641,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -653,7 +653,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -668,13 +668,13 @@
</StackPanel>
<StackPanel x:Name="PanelDev" Visibility="Collapsed">
<Border Height="1" Margin="0,10,0,10" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="컨텍스트 및 오류 관리"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -686,7 +686,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="120"/>
@@ -696,14 +696,14 @@
VerticalAlignment="Center"/>
<TextBox x:Name="TxtContextCompactTriggerPercent"
Grid.Column="1"
Padding="8,5"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="120"/>
@@ -723,14 +723,14 @@
</StackPanel>
<TextBox x:Name="TxtMaxContextTokens"
Grid.Column="1"
Padding="8,5"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="120"/>
@@ -750,7 +750,7 @@
</StackPanel>
<TextBox x:Name="TxtMaxRetryOnError"
Grid.Column="1"
Padding="8,5"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
@@ -758,14 +758,50 @@
FontSize="12"/>
</Grid>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="진단 및 디버깅"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,0,12,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="IBM+Qwen 진단 로그"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"
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="300">IBM watsonx + Qwen 조합 사용 시 요청/응답/인증/파싱 등 상세 진단 로그를 기록합니다. 로그 파일: %APPDATA%\AxCopilot\logs\</TextBlock>
</ToolTip>
</Border.ToolTip>
</Border>
</StackPanel>
<TextBlock Text="활성화하면 [IBM진단] 태그로 인증, 요청, 응답, 파싱 과정을 상세 기록합니다."
Foreground="{DynamicResource SecondaryText}"
FontSize="11.5"
Margin="0,3,0,0"/>
</StackPanel>
<CheckBox x:Name="ChkEnableIbmDiagnosticLog"
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
</StackPanel>
<StackPanel x:Name="PanelTools" Visibility="Collapsed">
<TextBlock Text="도구 및 검증"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -787,7 +823,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -809,7 +845,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -821,7 +857,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -833,39 +869,39 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Border Height="1" Margin="0,12,0,12" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="도구 노출"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="AX Agent에 노출할 도구를 내부 설정에서 바로 켜고 끕니다."
Margin="0,4,0,8"
FontSize="11"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
<StackPanel x:Name="ToolCardsPanel"/>
<Border Height="1" Margin="0,12,0,12" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="도구 훅"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<StackPanel x:Name="HookListPanel" Margin="0,8,0,0"/>
<StackPanel x:Name="HookListPanel" Margin="0,10,0,0"/>
<Button Content="훅 추가"
HorizontalAlignment="Left"
Margin="0,8,0,0"
Margin="0,10,0,0"
Style="{StaticResource OutlineHoverBtn}"
Click="BtnAddHook_Click"/>
</StackPanel>
<StackPanel x:Name="PanelEtc" Visibility="Collapsed">
<TextBlock Text="스킬/차단"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="스킬 폴더와 슬래시/드래그 동작, 폴백 모델과 MCP 서버를 관리합니다."
Margin="0,4,0,8"
FontSize="11"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
@@ -891,8 +927,8 @@
<TextBox x:Name="TxtSkillsFolderPath"
Grid.Row="1"
Grid.Column="0"
Margin="0,8,0,0"
Padding="8,5"
Margin="0,10,0,0"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
@@ -911,17 +947,17 @@
Content="열기"
Click="BtnOpenSkillFolder_Click"/>
</Grid>
<Border Height="1" Margin="0,12,0,12" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="로드된 스킬"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<TextBlock Text="현재 AX Agent에서 사용할 수 있는 슬래시 스킬 목록입니다."
Margin="0,4,0,8"
FontSize="11"
FontSize="11.5"
Foreground="{DynamicResource SecondaryText}"/>
<StackPanel x:Name="SkillListPanel"/>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="120"/>
@@ -941,14 +977,14 @@
</StackPanel>
<TextBox x:Name="TxtSlashPopupPageSize"
Grid.Column="1"
Padding="8,5"
Padding="10,7"
Background="{DynamicResource ItemBackground}"
BorderBrush="{DynamicResource BorderColor}"
BorderThickness="1"
Foreground="{DynamicResource PrimaryText}"
FontSize="12"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -970,7 +1006,7 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Grid Margin="0,8,0,0">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
@@ -992,13 +1028,13 @@
Grid.Column="1"
Style="{StaticResource ToggleSwitch}"/>
</Grid>
<Border Height="1" Margin="0,12,0,12" Background="{DynamicResource SeparatorColor}"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<TextBlock Text="폴백 모델"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"/>
<StackPanel x:Name="FallbackModelsPanel" Margin="0,8,0,0"/>
<Border Height="1" Margin="0,12,0,12" Background="{DynamicResource SeparatorColor}"/>
<StackPanel x:Name="FallbackModelsPanel" Margin="0,10,0,0"/>
<Border Height="1" Margin="0,14,0,14" Background="{DynamicResource SeparatorColor}"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@@ -1006,7 +1042,7 @@
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="MCP 서버"
FontSize="13"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryText}"
VerticalAlignment="Center"/>
@@ -1024,7 +1060,7 @@
Content="서버 추가"
Click="BtnAddMcpServer_Click"/>
</Grid>
<StackPanel x:Name="McpServerListPanel" Margin="0,8,0,0"/>
<StackPanel x:Name="McpServerListPanel" Margin="0,10,0,0"/>
</StackPanel>
</StackPanel>
</ScrollViewer>