import type { AgentQueryMessage } from "../types/agent.js"; export interface ContextCollapseOptions { /** 触发阈值:token 估算超过此值才折叠(默认 150000) */ triggerThreshold?: number; /** 每次折叠保留的最近轮次数(默认 6) */ keepRecentTurns?: number; /** 折叠后的摘要占位文本 */ collapseMarker?: string; } export interface ContextCollapseResult { messages: AgentQueryMessage[]; collapsed: boolean; tokensFreed: number; /** 本轮折叠了多少个轮次 */ collapsedTurns: number; } /** * Context collapse:渐进式折叠旧轮次。 * * 策略(对齐 Claude Code context-collapse): * 1. 把消息按"轮次"分组(每轮 = 1 assistant + 其 tool results + 下一条 user) * 2. 保留最近 keepRecentTurns 轮原文 * 3. 更早的轮次折叠为单个占位 user 消息: * "[N earlier conversation turns collapsed. Key points: ...]" * 4. 从折叠的轮次中提取关键信息(工具名 + 文件路径 + 错误关键词) * * 与 autoCompact 的区别: * - autoCompact 调 LLM 做全量总结(重,但质量高) * - collapse 纯本地提取关键词(轻,快速降 context) * - collapse 在 autoCompact 之前运行,可能使 autoCompact 不需要触发 */ export declare function contextCollapse(messages: AgentQueryMessage[], options?: ContextCollapseOptions): ContextCollapseResult;