AX Agent 계획 승인 흐름을 transcript 우선으로 전환하고 claw-code 비교 기준을 문서화

- claw-code 대비 canonical prompt set 10종을 parity 문서에 추가해 Chat/Cowork/Code 회귀 검증 기준을 고정함
- AX와 claw-code의 도구/스킬 차이를 문서에 정리해 남은 parity 목표를 명확히 함
- PlanViewerWindow를 즉시 띄우지 않고 inline 승인/수정/취소 버튼을 transcript에 먼저 노출하도록 계획 승인 흐름을 변경함
- PlanViewerWindow는 하단 계획 버튼으로 여는 보조 상세 보기 역할로 축소함
- 검증: 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 18:53:28 +09:00
parent a3b3522bb7
commit 6c5b0c5be3
5 changed files with 106 additions and 16 deletions

View File

@@ -9916,22 +9916,10 @@ public partial class ChatWindow : Window
await Dispatcher.InvokeAsync(() =>
{
// PlanViewerWindow 생성 또는 재사용
if (_planViewerWindow == null || !IsWindowAlive(_planViewerWindow))
{
_planViewerWindow = new PlanViewerWindow(this);
_planViewerWindow.Closing += (_, e) =>
{
e.Cancel = true;
_planViewerWindow.Hide();
};
}
// 계획 표시 + 승인 대기
_planViewerWindow.ShowPlanAsync(planSummary, steps, tcs);
// 하단 바 계획 버튼 표시
EnsurePlanViewerWindow();
_planViewerWindow?.LoadPlan(planSummary, steps, tcs);
ShowPlanButton(true);
AddDecisionButtons(tcs, options);
});
// 5분 타임아웃
@@ -9973,6 +9961,19 @@ public partial class ChatWindow : Window
};
}
private void EnsurePlanViewerWindow()
{
if (_planViewerWindow != null && IsWindowAlive(_planViewerWindow))
return;
_planViewerWindow = new PlanViewerWindow(this);
_planViewerWindow.Closing += (_, e) =>
{
e.Cancel = true;
_planViewerWindow.Hide();
};
}
/// <summary>하단 바에 계획 보기 버튼을 표시/숨김합니다.</summary>
private void ShowPlanButton(bool show)
{

View File

@@ -287,7 +287,7 @@ internal sealed class PlanViewerWindow : Window
// 공개 API
// ════════════════════════════════════════════════════════════
public Task<string?> ShowPlanAsync(string planText, List<string> steps, TaskCompletionSource<string?> tcs)
public void LoadPlan(string planText, List<string> steps, TaskCompletionSource<string?> tcs)
{
_planText = planText;
_steps = steps;
@@ -304,7 +304,11 @@ internal sealed class PlanViewerWindow : Window
RenderSteps();
BuildApprovalButtons();
_statusBar.Visibility = Visibility.Collapsed;
}
public Task<string?> ShowPlanAsync(string planText, List<string> steps, TaskCompletionSource<string?> tcs)
{
LoadPlan(planText, steps, tcs);
Show();
Activate();
return tcs.Task;