Kilo Context Condensing 完整指南:自动压缩、上下文剪枝与配置调优

发布时间:2026/9/13 23:08:20

Kilo Context Condensing 完整指南:自动压缩、上下文剪枝与配置调优 Kilo Context Condensing 完整指南自动压缩、上下文剪枝与配置调优【免费下载链接】kilocodeKilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kilocode导读Context Condensing上下文压缩是 Kilo 应对模型上下文窗口上限的核心机制当对话因代码片段、文件内容与来回讨论而迅速膨胀时它会智能地总结历史会话在保留继续工作所需关键信息的同时显著降低 token 消耗。本文以官方文档为主线结合仓库源码packages/core/src/session/compaction.ts、packages/opencode/src/session/compaction.ts等深入讲解压缩的触发条件、默认值、kilo.jsonc配置方式与最佳实践。读完你将掌握如何让长会话不因上下文耗尽而中断并能按需调优压缩时机、保留尾部的 token 预算与预留缓冲。问题背景上下文窗口限制每个 AI 模型都有一个最大上下文窗口context window即一次能处理的文本总量上限。随着对话中不断加入代码片段、文件内容与多轮往返讨论你会逐渐逼近这个上限并可能遇到以下现象模型需要处理的 token 增多响应速度变慢因 token 用量上升API 成本随之增加最终触及上下文上限会话无法继续。Kilo 的 Compaction压缩系统正是为此设计它自动接管上下文管理让长会话可持续进行。解决方案Auto-Compaction 锚定摘要当对话接近 token 上限时压缩机制会启动产出一份锚定摘要anchored summary覆盖以下关键信息会话的整体目标overall goal过程中你给出的约束与偏好constraints and preferences进度、关键决策与下一步计划progress, key decisions, and next steps继续工作所必需的关键上下文critical context相关文件与目录relevant files and directories。这份摘要会替换更早的对话历史而 Kilo 在空间允许时会原样保留最近几轮对话。若会话已经被压缩过Kilo 会在原有摘要基础上进行更新而非推倒重来保留仍然相关的细节剔除已过时的信息。源码层面摘要的生成遵循一份固定结构模板。在 compaction.ts 中SUMMARY_TEMPLATE要求模型严格输出## Objective、## Important Details、## Work StateCompleted / Active / Blocked、## Next Move、## Relevant Files五个章节并规定保留精确的文件路径、符号、命令、错误字符串、URL 与标识符而 buildPrompt 则根据是否存在前次摘要决定提示词是从对话历史创建新锚定摘要还是更新已有摘要、合并新事实并移除过期细节。压缩的触发机制自动触发Kilo 会在每次响应后检查 provider 上报的用量并在联系 provider 之前估算即将发送的文本、系统指令与工具定义。当以下两个条件之一先被满足时即触发压缩用量达到compaction.threshold_percent指定的百分比剩余窗口触及预留安全缓冲reserved safety buffer。缓冲的取值取决于模型如何声明其限制当模型**单独声明了输入上限input limit**时缓冲默认为 20,000 token或模型最大输出大小取较小者当模型只声明单一上下文窗口时Kilo 改为预留模型的完整输出上限——最高可达 32,000 token。compaction.threshold_percent为可选配置取值1100表示在模型输入或上下文窗口用量的该百分比处触发压缩。未声明上下文窗口的自定义模型不会被跟踪自动压缩对它们不生效详见自定义模型。在核心会话执行器中这一判断被实现为compactIfNeeded源码 compaction.ts 先汇总system、messages、tools三部分的估算 token并与context - max(output, buffer)比较超出才调用compactAfterOverflow执行真正的摘要生成若压缩失败如 provider 报错或产出为空会安全地返回false不破坏会话。runner/llm.ts 在每轮开始前调用该判断压缩完成后会基于压缩后的历史重建请求继续执行。此外threshold_percent在 CLI 侧对应更精细的**预检preflight**机制overflow.ts 会按floor(context * percent / 100)计算硬上限并额外用 1.3 倍的估算系数校正 token 计数偏差FACTOR同时对媒体附件与加密的推理状态做专门折算尽量避免估算不足导致的中途溢出。上下文剪枝Context Pruning在轮次之间Kilo 还会执行一次更轻量的prune剪枝过程遍历40,000-token 最近窗口之外的、已完成的工具输出将其替换为占位文本[Old tool result content cleared]。剪枝是增量执行的因此大型工具输出不会永久占用空间即使还没到需要完整压缩的程度。该占位符在 message-v2.ts 中定义。剪枝与完整压缩相互配合剪枝处理大而旧的工具结果压缩处理整体超限的会话历史。手动压缩你可以在任意时刻主动触发压缩VSCode 扩展斜杠命令在聊天框输入/compact也可输入smol或condense检索到任务头部按钮点击当前任务标题栏中的压缩图标设置在Settings → Context中切换自动压缩开关。CLI / TUI斜杠命令在 TUI 中输入/compact别名/summarize快捷键按leaderc触发压缩。默认值与配置压缩行为默认开启全部配置项及其默认值如下设置默认值作用compaction.autotrue到达可用窗口时自动压缩compaction.threshold_percent未设置token 用量达到模型窗口该百分比时压缩compaction.prunetrue清理 40K 最近窗口之外的工具输出compaction.tail_turns2尽可能原样保留最近的用户轮次及其响应compaction.preserve_recent_tokens可用上下文的 25%夹在 2,000 与 8,000 token 之间原样保留的最近尾部 token 预算compaction.reservedmin(20,000, model_max_output_tokens)为下一轮预留的 token 余量若先于阈值触及则作为安全触发条件压缩配置写在你的kilo.jsonc文件中{ compaction: { auto: true, // 启用或禁用自动压缩 threshold_percent: 80, // 可选在模型窗口的 80% 处触发 prune: true, // 启用对最近窗口之外旧工具输出的剪枝 tail_turns: 2, // 压缩期间原样保留的最近用户轮次数 preserve_recent_tokens: 8000, // 最近尾部保留的最大 token 预算 reserved: 20000, // 预留 token 缓冲越小越晚触发越大越早触发 }, }各选项的类型、默认值与详细说明选项类型默认值说明compaction.autobooleantrue到达可用窗口时启用或禁用自动压缩compaction.threshold_percentnumber未设置可选百分比取值 1100。当 token 用量达到模型输入或上下文窗口的该比例时执行自动压缩除非预留安全缓冲先行触发compaction.prunebooleantrue启用对 40K token 最近窗口之外旧工具输出的剪枝compaction.tail_turnsnumber2压缩期间原样保留的最近用户轮次数包括其后的 assistant 与工具响应compaction.preserve_recent_tokensnumber可用上下文的 25%夹在 2,000 与 8,000 token 之间压缩后原样保留的最近轮次最大 token 预算compaction.reservednumbermin(20000, model_max_output)为下一轮预留的 token 余量。仅对单独声明输入上限的模型生效单一上下文窗口模型改用完整输出上限作为预留上述字段在配置 schema 中均有对应定义v1/config/config.ts 定义了auto、threshold_percent、prune、tail_turns、preserve_recent_tokens、reserved六个字段及其描述v2 的 config/compaction.ts 则以auto、prune、keep.tokens、buffer的形式承载等效语义。也就是说preserve_recent_tokens与tail_turns在运行时会换算为尾部保留的 token 预算对应 v2 的keep.tokensreserved对应 v2 的buffer。从实现细节看compaction.ts 的settings函数会按文档顺序合并多个配置来源最终默认auto: true、buffer: 20_000、tokens: 8_000与文档表格完全一致CLI 侧的preserveRecentBudgetopencode 的 compaction.ts则实现了可用上下文的 25%夹在 2,0008,000 之间的默认计算逻辑。为压缩使用不同的模型摘要生成可以使用比主 agent 更便宜或上下文更大的模型。为压缩配置一个专用 agent{ agent: { compaction: { model: anthropic/claude-haiku-4-5, }, }, }若未配置压缩 agent则使用当前会话的模型。相应地压缩摘要的输出 token 上限被限制为SUMMARY_OUTPUT_TOKENS 4_096见 compaction.ts避免摘要本身占用过多窗口。环境变量覆盖变量作用KILO_DISABLE_AUTOCOMPACT1强制compaction.auto falseKILO_DISABLE_PRUNE1强制compaction.prune falseKILO_EXPERIMENTAL_OUTPUT_TOKEN_MAX覆盖默认 32,000 的输出 token 上限这些变量在 flag.ts 与 flag.ts 中定义前两者按值为true或1判定truthy后者要求正整数才生效number非法值会被忽略。最佳实践何时手动压缩长会话在复杂任务上持续工作了较长时间后重大切换之前即将转向项目另一个方面时接近上限时若希望自己掌控摘要产出的时机可在自动触发前手动运行/compact。调优压缩触发时机希望在模型窗口的可预期比例处触发压缩时使用compaction.threshold_percent例如长任务设置80以更早生成摘要预留安全缓冲仍然生效可能比百分比阈值更早触发压缩。对单独声明输入上限的模型reserved是一个权衡较小值如10000→ 压缩触发更晚原始窗口内能进行更多轮对话但若单次响应大于缓冲有中途上下文溢出的风险较大值如40000→ 压缩触发更早溢出错误更少但两次摘要之间的有效会话更短。默认值~20K是为容纳完整大小的 assistant 响应加上工具输出而调优的。该设置对单一上下文窗口的模型无效——这类模型始终预留完整输出上限。维持上下文质量在初始任务中描述具体清晰的任务描述有助于生成更好的摘要使用 AGENTS.md结合 AGENTS.md 提供无需压缩的持久化项目上下文检查摘要压缩完成后摘要会显示在你的聊天历史中可据此确认关键信息是否保留。相关功能AGENTS.md —— 跨会话的持久化上下文存储Codebase Indexing —— 高效的代码搜索与检索。【免费下载链接】kilocodeKilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kilocode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/13 23:03:20

从流量逻辑到任务逻辑,AI Agent正在终结互联网的免费午餐

【编者按】 2026 年 4 月 29 日,Andrej Karpathy 在红杉 AI Ascent 的炉边对谈中提出一个判断:一个面向原生智能体(agent-native)的新经济正在长出来,今天所有为人类写的软件、文档和流程,都要被重写为“为…

2026/9/13 23:03:20

248基于SpringBoot4+Vue3的厦门旅游推荐系统、厦门旅游平台、个性化旅游推荐、在线旅游预约系统、智慧旅游Web系统;协同过滤推荐算法、景点-线路-酒店一体化管理与预约、毕业设计、课程设计

✅博主简介:Java全栈开发工程师(bishecoder),精通Java开发、系统设计、项目实战。 ✅技术栈:SpringBoot、Vue、React、Node.js、Nest.js、uni-app等 ✅技术擅长:定制项目、修改代码、编写文档、技术指导等。…

2026/9/13 23:53:22

Python 中的布尔类型(bool):深入解析与高效使用

中的布尔类型(bool):深入解析与高效使用对于布尔类型(bool)而言, 它是一种基础的数据类型, 存在于特定范畴的编程环境里, 表示一种逻辑意义的真和假。布尔这个值, 在多个编程场景当中有着广泛的应用, 比如条件判断的相…

2026/9/13 23:53:22

Python百分号转义技巧与实战应用

于编程里头, 百分号%属于一个特殊符号, 它被用在字符串格式化那儿, 也被用在取模运算这儿。好多初学者当碰到要输出百分号自身的时候, 时常会感到困惑, 不晓得该怎么正确转义此符号。本文会详细介绍当中转义百分号的多种办法, 帮你完全解决这一难题。百分号在字符串里的角色。百…

2026/9/13 23:53:22

如何寻找python解释器目录

为了寻找到解释器目录, 其方法涵盖, 运用命令行工具, 借助代码, 查看环境变量, 利用集成开发环境(IDE)等来操作。一种详细的方法是通过代码来获取解释器的路径。具体操作如下:将终端或者命令提示符予以打开, 输入 或者 , 之后按下回车键用以启…

2026/9/13 23:48:22

POD与DMD全解析:从流场数据提取时空模态的Python实现

简介:面向流体力学与信号处理学习者的POD与DMD算法速览包,聚焦本征正交分解与动态模态分解的原理及MATLAB实现,适合需要快速理解流场降维和动力学特征提取的初学者或研究人员。压缩包内共3个文件,其中POD_DMD.m为可直接运行的MATL…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码