AX Agent 하단 보조 UI 최소 노출 기준 정리
Some checks failed
Release Gate / gate (push) Has been cancelled

- draft queue 패널은 기본 상태에서 실행/다음/실패가 없으면 숨기도록 조정

- 컨텍스트 사용량 hover 팝업을 현재 모델 사용량과 compact 상태 2줄 요약으로 축소

- 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:
2026-04-05 17:22:11 +09:00
parent 050271e2a9
commit 595f8a76af
3 changed files with 29 additions and 46 deletions

View File

@@ -18681,9 +18681,6 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
var currentModelPromptTokens = GetUsageValue(todayUsage.ModelPromptTokens, currentModelUsageKey);
var currentModelCompletionTokens = GetUsageValue(todayUsage.ModelCompletionTokens, currentModelUsageKey);
var currentModelTotalTokens = currentModelPromptTokens + currentModelCompletionTokens;
var currentModelPostPromptTokens = GetUsageValue(todayUsage.PostCompactionPromptTokens, currentModelUsageKey);
var currentModelPostCompletionTokens = GetUsageValue(todayUsage.PostCompactionCompletionTokens, currentModelUsageKey);
var currentModelPostTotalTokens = currentModelPostPromptTokens + currentModelPostCompletionTokens;
TokenUsagePercentText.Text = percentText;
TokenUsageSummaryText.Text = $"컨텍스트 {percentText}";
TokenUsageHintText.Text =
@@ -18692,45 +18689,6 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
? $" · 오늘 {FormatTokenCount(currentModelTotalTokens)}"
: "");
CompactNowLabel.Text = compactLabel;
var compactHistory = _lastCompactionAt.HasValue && _lastCompactionBeforeTokens.HasValue && _lastCompactionAfterTokens.HasValue
? $"\n최근 압축: {(_lastCompactionWasAutomatic ? "" : "")} · {_lastCompactionAt.Value:HH:mm:ss}\n" +
$"절감: {_lastCompactionBeforeTokens.Value:N0} → {_lastCompactionAfterTokens.Value:N0} tokens " +
$"(-{Math.Max(0, _lastCompactionBeforeTokens.Value - _lastCompactionAfterTokens.Value):N0}, " +
$"{Services.TokenEstimator.Format(_lastCompactionBeforeTokens.Value)} → {Services.TokenEstimator.Format(_lastCompactionAfterTokens.Value)})\n" +
$"단계: {(!string.IsNullOrWhiteSpace(_lastCompactionStageSummary) ? _lastCompactionStageSummary : "")}"
: "";
var compactSession = _sessionCompactionCount > 0
? $"\n세션 누적: {_sessionCompactionCount:N0}회 (자동 {_sessionAutomaticCompactionCount:N0} / 수동 {_sessionManualCompactionCount:N0})\n" +
$"세션 절감: {Services.TokenEstimator.Format(_sessionCompactionSavedTokens)} tokens\n" +
$"세션 메모리 {_sessionMemoryCompactionCount:N0}회 · 경계 {_sessionMicrocompactBoundaryCount:N0}건 · snip {_sessionSnipCompactionCount:N0}건"
: "";
var postCompactionUsage = _sessionPostCompactionResponseCount > 0
? $"\ncompact 이후 응답: {_sessionPostCompactionResponseCount:N0}회\n" +
$"compact 이후 사용량: {Services.TokenEstimator.Format(_sessionPostCompactionPromptTokens)} + {Services.TokenEstimator.Format(_sessionPostCompactionCompletionTokens)} = {Services.TokenEstimator.Format(_sessionPostCompactionPromptTokens + _sessionPostCompactionCompletionTokens)} tokens"
: "";
var pendingPostCompaction = _pendingPostCompaction ? "\ncompact 후 첫 응답 대기 중" : "";
var currentModelUsageText = !string.IsNullOrWhiteSpace(currentModelUsageKey)
? $"\n현재 모델: {currentService} · {currentModel}\n" +
$"오늘 모델 사용량: {FormatTokenCount(currentModelPromptTokens)} + {FormatTokenCount(currentModelCompletionTokens)} = {FormatTokenCount(currentModelTotalTokens)} tokens" +
(currentModelPostTotalTokens > 0
? $"\n현재 모델 compact 이후: {FormatTokenCount(currentModelPostPromptTokens)} + {FormatTokenCount(currentModelPostCompletionTokens)} = {FormatTokenCount(currentModelPostTotalTokens)} tokens"
: "")
: "";
var topModelsText = BuildTopModelUsageSummary(todayUsage);
TokenUsageCard.ToolTip =
$"상태: {summary}\n" +
$"사용량: {currentTokens:N0} / {maxContextTokens:N0} tokens ({percentText})\n" +
$"간단 표기: {Services.TokenEstimator.Format(currentTokens)} / {Services.TokenEstimator.Format(maxContextTokens)}\n" +
$"자동 압축 시작: {triggerPercent}%\n" +
$"현재 입력 초안 포함" +
currentModelUsageText +
topModelsText +
compactHistory +
compactSession +
postCompactionUsage +
pendingPostCompaction;
if (TokenUsagePopupTitle != null)
TokenUsagePopupTitle.Text = $"컨텍스트 창 {percentText}";
@@ -18738,9 +18696,13 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
TokenUsagePopupUsage.Text = $"{Services.TokenEstimator.Format(currentTokens)}/{Services.TokenEstimator.Format(maxContextTokens)}";
if (TokenUsagePopupDetail != null)
{
TokenUsagePopupDetail.Text = currentModelTotalTokens > 0
? $"오늘 {currentService} · {currentModel} 사용량 {FormatTokenCount(currentModelTotalTokens)}"
: $"{summary} · 자동 압축 시작 {triggerPercent}%";
var usageLine = currentModelTotalTokens > 0
? $"{currentService} · {currentModel} 오늘 {FormatTokenCount(currentModelTotalTokens)}"
: $"{summary} · 오늘 모델 사용량 없음";
var compactLine = _pendingPostCompaction
? "compact 후 첫 응답 대기 중"
: $"자동 압축 시작 {triggerPercent}%";
TokenUsagePopupDetail.Text = $"{usageLine}\n{compactLine}";
}
if (TokenUsagePopupCompact != null)
{
@@ -19686,8 +19648,20 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
return;
}
DraftQueuePanel.Visibility = Visibility.Visible;
var summary = _appState.GetDraftQueueSummary(_activeTab);
var shouldShowQueue =
IsDraftQueueExpanded()
|| summary.RunningCount > 0
|| summary.QueuedCount > 0
|| summary.FailedCount > 0;
if (!shouldShowQueue)
{
DraftQueuePanel.Visibility = Visibility.Collapsed;
return;
}
DraftQueuePanel.Visibility = Visibility.Visible;
DraftQueuePanel.Children.Add(CreateDraftQueueSummaryStrip(summary, IsDraftQueueExpanded()));
if (!IsDraftQueueExpanded())
{