재구성 AX Agent 설정과 채팅 UI를 Claude형 구조로
Some checks failed
Release Gate / gate (push) Has been cancelled

This commit is contained in:
2026-04-04 17:48:51 +09:00
parent 90c2f15e96
commit a027ea4f9a
6000 changed files with 11532 additions and 94063 deletions

View File

@@ -39,17 +39,26 @@ public static class ContextCondenser
/// 2단계: 이전 대화 LLM 요약 (토큰이 여전히 높으면)
/// </summary>
public static async Task<bool> CondenseIfNeededAsync(
List<ChatMessage> messages, LlmService llm, int maxOutputTokens, CancellationToken ct = default)
List<ChatMessage> messages,
LlmService llm,
int maxOutputTokens,
bool proactiveEnabled = true,
int triggerPercent = 80,
bool force = false,
CancellationToken ct = default)
{
if (messages.Count < 6) return false;
if (!force && !proactiveEnabled) return false;
// 현재 모델의 입력 토큰 한도
var settings = llm.GetCurrentModelInfo();
var inputLimit = GetModelInputLimit(settings.service, settings.model);
var threshold = (int)(inputLimit * 0.65); // 65%에서 압축 시작
var effectiveMax = maxOutputTokens > 0 ? Math.Min(inputLimit, maxOutputTokens) : inputLimit;
var percent = Math.Clamp(triggerPercent, 50, 95);
var threshold = (int)(effectiveMax * (percent / 100.0)); // 설정 임계치에서 압축 시작
var currentTokens = TokenEstimator.EstimateMessages(messages);
if (currentTokens < threshold) return false;
if (!force && currentTokens < threshold) return false;
bool didCompress = false;
@@ -58,7 +67,7 @@ public static class ContextCondenser
// 1단계 후 다시 추정
currentTokens = TokenEstimator.EstimateMessages(messages);
if (currentTokens < threshold) return didCompress;
if (!force && currentTokens < threshold) return didCompress;
// ── 2단계: 이전 대화 LLM 요약 ──
didCompress |= await SummarizeOldMessagesAsync(messages, llm, ct);