import type { ManagedReActAgentInterceptor } from '../managed-interceptor'; export type IterationLimitInterceptorOptions = { /** 最大迭代次数。达到此数时注入预警,超过此数时强制终止。传入 0 表示关闭迭代限制 */ iterationLimit: number; /** * 达到上限时注入的预警提示语。用于提醒 LLM 停止使用工具。 * * 默认提示词参考 Claude Code 风格,强调: * - 直接行动,不要道歉、不要复述 * - 引导总结(已完成、发现、剩余工作) */ reachLimitPrompt?: string; /** * 超过上限时注入的强制提示语。用于强制要求 LLM 直接回答。 * * 默认提示词引导 LLM 基于已收集的信息生成有价值的回答。 */ overLimitPrompt?: string; }; /** * 控制最大迭代次数。 * * 采用"预警 + 强制"两阶段策略: * - 达到上限时注入 `` 标签的预警消息(工具仍可用) * - 超过上限时注入强制消息并清空工具列表 * - 传入 iterationLimit: 0 时所有 hook 直接透传,等同于关闭 * * ## 消息注入策略 * * 两阶段都通过 `messageStore.addMessages()` 持久化注入 user 消息到消息列表末尾: * - 位置紧邻 LLM 下一次请求,确保模型一定能看到 * - 使用 `` 标签,模型能正确识别为系统指令 * - 携带 `extra.source` 标签,供上下文压缩策略识别 * * ## 依赖 * * 本拦截器依赖 `SystemReminderInterceptor` 在 system 消息中注入 `` 标签的解释文本, * 确保 LLM 能正确理解标签含义。 */ export declare const createIterationLimitInterceptor: (options: IterationLimitInterceptorOptions) => ManagedReActAgentInterceptor<{ currentIterations?: number; }>;