/** * Micro-Compact — 工具结果微压缩 * * 设计: * 在主压缩(auto-compact)之前执行轻量级清理, * 对旧的工具调用结果替换为占位符,保留 user/assistant 文本块。 * * 策略: * 1. 基于时间衰减:越早的 tool_result 越先被清理 * 2. 仅清理可压缩类型的工具结果(file_read, bash, grep 等) * 3. 保留 user/assistant/system 消息不动 * 4. 保留最近 N 条工具结果不清理 */ import type { ChatMessage } from '../types.js'; /** 可压缩的工具类型集合(大型输出工具) */ export declare const COMPACTABLE_TOOLS: Set; /** 被清理后的占位文本 */ export declare const CLEARED_MESSAGE = "[\u65E7\u5DE5\u5177\u7ED3\u679C\u5DF2\u6E05\u7406]"; /** 图片/文档消息的预估 token 数 */ export declare const IMAGE_MAX_TOKEN_SIZE = 2000; /** 默认保留最近 N 条工具结果不清理 */ export declare const DEFAULT_KEEP_RECENT_TOOL_RESULTS = 6; /** micro-compact 默认 token 节省目标(不清理超过所需的量) */ export declare const DEFAULT_TARGET_SAVINGS_RATIO = 0.3; export interface MicroCompactOptions { /** 保留最近 N 条工具结果不清理 */ keepRecentToolResults?: number; /** 仅当总 token 超过此阈值时才执行微压缩(force 为 true 时忽略) */ tokenThreshold?: number; /** 可压缩的工具名集合(默认使用 COMPACTABLE_TOOLS) */ compactableTools?: Set; /** 跳过 token 阈值检查,强制执行清理 */ force?: boolean; } export interface MicroCompactResult { /** 压缩后的消息列表 */ messages: ChatMessage[]; /** 清理的工具结果数量 */ clearedCount: number; /** 节省的估计 token 数 */ savedTokens: number; /** 是否执行了清理 */ didCompact: boolean; } /** * 对消息列表执行微压缩 * * 从最旧的 tool/tool_result 消息开始,将可压缩工具的结果替换为占位符。 * user/assistant/system 消息保持不变。 */ export declare function microCompactMessages(messages: ChatMessage[], options?: MicroCompactOptions): MicroCompactResult; //# sourceMappingURL=micro-compact.d.ts.map