From 4b1a1e411b7fa98d80f0ee6c83d171ee57104dbc Mon Sep 17 00:00:00 2001 From: digua Date: Thu, 14 May 2026 22:06:17 +0800 Subject: [PATCH] feat(server,web): connect compression config through SSE stream - Add compressionConfig to SSE agent/stream request body with sensible defaults - Pass compressionConfig from route handler to runServerAgent - Update frontend runStream to forward compressionConfig to the SSE endpoint --- packages/server/src/http/routes/ai.ts | 18 +++++++++++++++++- src/services/registry.ts | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/server/src/http/routes/ai.ts b/packages/server/src/http/routes/ai.ts index 544440cc..78d9d484 100644 --- a/packages/server/src/http/routes/ai.ts +++ b/packages/server/src/http/routes/ai.ts @@ -379,9 +379,15 @@ export function registerAiRoutes( chatType?: 'group' | 'private' locale?: string assistantId?: string + compressionConfig?: { + enabled: boolean + tokenThresholdPercent?: number + bufferSizePercent?: number + maxToolResultPercent?: number + } } }>('/_web/ai/agent/stream', async (request, reply) => { - const { userMessage, conversationId, sessionId, chatType, locale, assistantId } = request.body + const { userMessage, conversationId, sessionId, chatType, locale, assistantId, compressionConfig } = request.body const requestId = `req_${Date.now()}_${Math.random().toString(36).slice(2, 8)}` const abortController = new AbortController() @@ -450,6 +456,15 @@ export function registerAiRoutes( }) try { + const resolvedCompression = compressionConfig?.enabled + ? { + enabled: true as const, + tokenThresholdPercent: compressionConfig.tokenThresholdPercent ?? 75, + bufferSizePercent: compressionConfig.bufferSizePercent ?? 20, + maxToolResultPercent: compressionConfig.maxToolResultPercent, + } + : undefined + await runServerAgent({ userMessage, conversationId, @@ -457,6 +472,7 @@ export function registerAiRoutes( locale, assistantSystemPrompt, skillMenu, + compressionConfig: resolvedCompression, tools: agentTools, aiDataDir, convManager, diff --git a/src/services/registry.ts b/src/services/registry.ts index 0a4ac853..1eba347d 100644 --- a/src/services/registry.ts +++ b/src/services/registry.ts @@ -264,6 +264,7 @@ async function installAiApiShims(): Promise { chatType: chatType || 'group', locale: locale || 'zh-CN', assistantId, + compressionConfig: _compressionConfig, }, signal: abortController.signal, onEvent: ({ event, data }) => {