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

@@ -29,16 +29,16 @@ public partial class ChatWindow
var msgMaxWidth = GetMessageMaxWidth();
var wrapper = new StackPanel
{
HorizontalAlignment = HorizontalAlignment.Center,
Width = msgMaxWidth,
MaxWidth = msgMaxWidth,
Margin = new Thickness(0, 12, 0, 4),
HorizontalAlignment = HorizontalAlignment.Right,
MaxWidth = msgMaxWidth * 0.85,
Margin = new Thickness(60, 12, 12, 4),
};
// 사용자 아이콘 + 이름 헤더
var header = new StackPanel
{
Orientation = Orientation.Horizontal,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = new Thickness(2, 0, 0, 4),
};
header.Children.Add(new TextBlock
@@ -187,7 +187,7 @@ public partial class ChatWindow
var contentPanel = new Border
{
Background = Brushes.Transparent,
Padding = new Thickness(2, 4, 2, 4),
Padding = new Thickness(6, 4, 6, 4),
};
if (IsBranchContextMessage(content))
@@ -216,7 +216,7 @@ public partial class ChatWindow
Orientation = Orientation.Horizontal,
HorizontalAlignment = HorizontalAlignment.Left,
Margin = new Thickness(2, 2, 0, 0),
Opacity = 0.7,
Opacity = 0,
};
var btnColor = secondaryText;
var capturedContent = content;
@@ -232,7 +232,7 @@ public partial class ChatWindow
{
Text = aiTimestamp.ToString("HH:mm"),
FontSize = 10,
Opacity = 0.52,
Opacity = 0.6,
Foreground = btnColor,
VerticalAlignment = VerticalAlignment.Center,
Margin = new Thickness(4, 0, 0, 1),
@@ -245,8 +245,12 @@ public partial class ChatWindow
if (assistantMeta != null)
container.Children.Add(assistantMeta);
container.MouseEnter += (_, _) => actionBar.Opacity = 1;
container.MouseLeave += (_, _) => actionBar.Opacity = 0.7;
container.MouseEnter += (_, _) =>
actionBar.BeginAnimation(OpacityProperty,
new System.Windows.Media.Animation.DoubleAnimation(0.8, TimeSpan.FromMilliseconds(150)));
container.MouseLeave += (_, _) =>
actionBar.BeginAnimation(OpacityProperty,
new System.Windows.Media.Animation.DoubleAnimation(0, TimeSpan.FromMilliseconds(200)));
var aiContent = content;
container.MouseRightButtonUp += (_, re) =>