- retry, follow-up, branch follow-up, steering 요청이 모두 EnqueueDraftRequest helper를 타도록 정리 - 현재 대화 갱신과 세션 반영 지점을 queue 생성 helper 한 군데로 모아 이후 정책 변경 시 일관성을 높임 - README와 DEVELOPMENT 이력에 claw-code parity 기준 진행 상황을 반영 - 검증: 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:
@@ -930,6 +930,10 @@ ow + toggle 시각 언어로 통일했습니다.
|
|||||||
- Cowork/Code 후속 큐 요약은 더 `claw-code`처럼 최소 노출로 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 compact queue 요약은 이제 기본적으로 `실행 / 다음 / 실패`만 표시하고, `보류`, `완료` 배지는 `상세 보기`를 펼쳤을 때만 보입니다.
|
- Cowork/Code 후속 큐 요약은 더 `claw-code`처럼 최소 노출로 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 compact queue 요약은 이제 기본적으로 `실행 / 다음 / 실패`만 표시하고, `보류`, `완료` 배지는 `상세 보기`를 펼쳤을 때만 보입니다.
|
||||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||||
- 업데이트: 2026-04-05 20:15 (KST)
|
- 업데이트: 2026-04-05 20:15 (KST)
|
||||||
|
- 재시도/후속 큐 적재 경로도 한 축으로 정리했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `EnqueueDraftRequest(...)` helper를 추가해 `조정 요청`, `후속 작업`, `분기 후속 작업`, `재시도 직접 실행`이 모두 같은 대기열 생성 경로를 타도록 맞췄습니다.
|
||||||
|
- 이 정리로 `retry / follow-up / branch follow-up / steering` 큐 생성 시 현재 대화 교체, 세션 반영, 후속 queue UI 갱신 지점이 하나로 모였고, 이후 queue 정책 조정도 같은 helper 한 군데만 손보면 되게 됐습니다.
|
||||||
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||||
|
- 업데이트: 2026-04-05 20:21 (KST)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -4695,3 +4695,8 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
|||||||
- 이번 묶음 후 추정 parity는 `core engine 90% / main transcript UI 96% / Cowork·Code runtime UX 95% / internal settings 92% / overall 95%` 정도로 재평가했습니다.
|
- 이번 묶음 후 추정 parity는 `core engine 90% / main transcript UI 96% / Cowork·Code runtime UX 95% / internal settings 92% / overall 95%` 정도로 재평가했습니다.
|
||||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0
|
||||||
- 업데이트: 2026-04-05 20:15 (KST)
|
- 업데이트: 2026-04-05 20:15 (KST)
|
||||||
|
- 대기열 생성 경로도 더 엔진 친화적으로 공통화했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `EnqueueDraftRequest(...)` helper를 추가하고, `QueueComposerDraft(...)`, `EnqueueFollowUpFromRun(...)`, `BranchConversationFromRun(...)`, `RetryLastUserMessageFromConversation()` 이 모두 같은 적재 경로를 타게 바꿨습니다.
|
||||||
|
- 이번 정리로 재시도/후속 작업/분기 후속 작업이 더 이상 각자 `session.EnqueueDraft(...)` 를 따로 만지지 않고, 대화 갱신과 current conversation 반영도 한 helper에 모였습니다. 남은 차이는 queue 실행 후처리와 compact 이후 자동 다음 턴의 event polish 쪽입니다.
|
||||||
|
- 이번 묶음 후 추정 parity는 `core engine 91% / main transcript UI 96% / Cowork·Code runtime UX 95% / internal settings 92% / overall 95%` 정도로 재평가했습니다.
|
||||||
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0
|
||||||
|
- 업데이트: 2026-04-05 20:21 (KST)
|
||||||
|
|||||||
@@ -19550,20 +19550,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
HideSlashChip(restoreText: false);
|
HideSlashChip(restoreText: false);
|
||||||
ClearPromptCardPlaceholder();
|
ClearPromptCardPlaceholder();
|
||||||
|
|
||||||
DraftQueueItem? queuedItem = null;
|
var queuedItem = EnqueueDraftRequest(text, priority, explicitKind);
|
||||||
lock (_convLock)
|
|
||||||
{
|
|
||||||
var session = _appState.ChatSession;
|
|
||||||
if (session != null)
|
|
||||||
_currentConversation = (queuedItem = session.EnqueueDraft(
|
|
||||||
_activeTab,
|
|
||||||
text,
|
|
||||||
priority,
|
|
||||||
_storage,
|
|
||||||
InferDraftKind(text, explicitKind))) != null
|
|
||||||
? session.CurrentConversation
|
|
||||||
: _currentConversation;
|
|
||||||
}
|
|
||||||
|
|
||||||
InputBox.Clear();
|
InputBox.Clear();
|
||||||
InputBox.Focus();
|
InputBox.Focus();
|
||||||
@@ -19590,6 +19577,26 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
ShowToast(toast);
|
ShowToast(toast);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DraftQueueItem? EnqueueDraftRequest(string text, string priority, string? explicitKind = null)
|
||||||
|
{
|
||||||
|
DraftQueueItem? queuedItem = null;
|
||||||
|
lock (_convLock)
|
||||||
|
{
|
||||||
|
var session = _appState.ChatSession;
|
||||||
|
if (session != null)
|
||||||
|
_currentConversation = (queuedItem = session.EnqueueDraft(
|
||||||
|
_activeTab,
|
||||||
|
text,
|
||||||
|
priority,
|
||||||
|
_storage,
|
||||||
|
InferDraftKind(text, explicitKind))) != null
|
||||||
|
? session.CurrentConversation
|
||||||
|
: _currentConversation;
|
||||||
|
}
|
||||||
|
|
||||||
|
return queuedItem;
|
||||||
|
}
|
||||||
|
|
||||||
// ─── 헬퍼 ─────────────────────────────────────────────────────────────
|
// ─── 헬퍼 ─────────────────────────────────────────────────────────────
|
||||||
private Popup? _taskSummaryPopup;
|
private Popup? _taskSummaryPopup;
|
||||||
private UIElement? _taskSummaryTarget;
|
private UIElement? _taskSummaryTarget;
|
||||||
@@ -21062,15 +21069,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
private void EnqueueFollowUpFromRun(AppStateService.AgentRunState run)
|
private void EnqueueFollowUpFromRun(AppStateService.AgentRunState run)
|
||||||
{
|
{
|
||||||
var prompt = BuildFollowUpPromptFromRun(run);
|
var prompt = BuildFollowUpPromptFromRun(run);
|
||||||
|
EnqueueDraftRequest(prompt, "next", "followup");
|
||||||
lock (_convLock)
|
|
||||||
{
|
|
||||||
var session = _appState.ChatSession;
|
|
||||||
if (session != null)
|
|
||||||
_currentConversation = session.EnqueueDraft(_activeTab, prompt, "next", _storage, "followup") != null
|
|
||||||
? session.CurrentConversation
|
|
||||||
: _currentConversation;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshDraftQueueUi();
|
RefreshDraftQueueUi();
|
||||||
ShowToast("후속 작업이 대기열에 추가되었습니다.");
|
ShowToast("후속 작업이 대기열에 추가되었습니다.");
|
||||||
@@ -21116,14 +21115,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
run.RunId);
|
run.RunId);
|
||||||
|
|
||||||
var prompt = BuildFollowUpPromptFromRun(run);
|
var prompt = BuildFollowUpPromptFromRun(run);
|
||||||
lock (_convLock)
|
EnqueueDraftRequest(prompt, "next", "followup");
|
||||||
{
|
|
||||||
var session = _appState.ChatSession;
|
|
||||||
if (session != null)
|
|
||||||
_currentConversation = session.EnqueueDraft(_activeTab, prompt, "next", _storage, "followup") != null
|
|
||||||
? session.CurrentConversation
|
|
||||||
: _currentConversation;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshDraftQueueUi();
|
RefreshDraftQueueUi();
|
||||||
ShowToast("새 분기 대화가 생성되고 후속 작업이 대기열에 추가되었습니다.");
|
ShowToast("새 분기 대화가 생성되고 후속 작업이 대기열에 추가되었습니다.");
|
||||||
@@ -21145,14 +21137,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
|
|
||||||
if (_isStreaming)
|
if (_isStreaming)
|
||||||
{
|
{
|
||||||
lock (_convLock)
|
EnqueueDraftRequest(lastUserMessage, "now", "direct");
|
||||||
{
|
|
||||||
var session = ChatSession;
|
|
||||||
if (session != null)
|
|
||||||
_currentConversation = session.EnqueueDraft(_activeTab, lastUserMessage, "now", _storage, "direct") != null
|
|
||||||
? session.CurrentConversation
|
|
||||||
: _currentConversation;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshDraftQueueUi();
|
RefreshDraftQueueUi();
|
||||||
ShowToast("현재 작업 뒤에 같은 요청을 다시 실행하도록 대기열에 추가했습니다.");
|
ShowToast("현재 작업 뒤에 같은 요청을 다시 실행하도록 대기열에 추가했습니다.");
|
||||||
|
|||||||
Reference in New Issue
Block a user