您的位置首页 >人工智能 >

说好别动文件 Agent 却擅自修改,聊聊 Agent 上下文压缩的坑和原理

很多人在用代码 Agent 跑长任务的时候都遇到过这个问题,明明提前明确告诉 Agent 不要修改某个文件,等到触发上下文压缩之后,Agent 转头就去改动这个受限文件,根本不是 Agent 故意违规,而是上下文压缩属于有损摘要,很容易把 “禁止修改 XX 文件” 这类软性约束给漏掉或者转述变形。Agent 本身没有长期记忆,每一轮执行都要把全部对话历史塞进上下文窗口,对话轮次一多、工具返回日志越来越长,token 很快就会打满,为了继续跑任务、降低推理成本,系统会自动触发上下文压缩,把一大段历史总结成简短摘要;但做摘要的模型很难分清哪些是不重要的闲聊内容,哪些是不能违反的硬性约束,很容易直接丢掉禁止修改文件这类规则,压缩完成之后 Agent 拿到的新上下文里没有这条限制,就会继续执行修改文件操作。想要避免这个问题,需要先看懂上下文压缩的几种实现方式、常见失效场景,再用约束固定、结构化存档、校验回滚这一套工程方案,降低约束丢失的概率,下面整理了压缩方案对比、失效场景、落地步骤和避坑要点。

上下文压缩主流实现方案对比表

压缩方案实现方式优点核心风险适合场景
LLM 摘要压缩调用模型把历史对话总结成文本,替换原有对话实现简单、压缩率高容易丢失禁止修改、权限这类约束,容易改写原意简单短任务、非强约束场景
结构化固定压缩拆分目标、进度、约束、文件清单,约束单独固定不参与摘要约束不容易丢失,可校验开发成本更高,需要设计状态结构代码 Agent、文件操作、强权限管控场景
KV 缓存压缩 / 截断直接丢弃早期 KV 缓存,保留最近对话速度快、不调用额外模型早期规则直接消失,风险最高日志量大、不依赖早期约束的任务
加密存档式压缩摘要 + 加密原始日志索引,需要时可以回查原始记录可追溯,出错能还原现场架构复杂、存储开销上升生产环境、需要审计的 Agent

上下文压缩导致 Agent 乱改文件的常见失效场景清单

  1. 约束属于软性要求:“别动这个文件” 不属于通用安全红线,摘要模型优先保留任务目标,更容易忽略这类自定义约束
  2. 约束埋在长对话中间:前面大量工具返回日志、代码内容挤占注意力,摘要时直接跳过这条限制
  3. 摘要转述失真:原本 “禁止修改 config.yaml”,摘要被简化成 “处理配置文件”,含义发生变化
  4. 压缩触发时机无感知:自动压缩静默执行,用户看不到摘要内容,不知道约束已经丢了
  5. 多轮压缩叠加:多次压缩之后,原始约束信息层层衰减,也就是行业说的治理衰减(Governance Decay)

落地规避步骤

  1. 约束单独固定:把禁止修改文件、权限限制、禁止操作路径这类规则放到独立的固定区块,不参与摘要压缩,每次请求都原样带入 prompt,也就是约束钉住(Constraint Pinning)方案
  2. 使用结构化状态模板:压缩摘要固定包含四块内容:当前任务目标、已完成进度、待办、不可违反约束清单,约束字段强制单独抽取
  3. 开启压缩前校验:每次触发压缩前,自动扫描全部约束,确认文件黑名单、禁止路径全部写入状态结构体
  4. 增加后置校验:Agent 调用文件修改工具前,先和黑名单做匹配,命中就直接拦截,不依赖模型记忆
  5. 保留原始日志索引:压缩只替换传入模型的上下文,完整原始对话、工具调用记录单独存储,出问题可以回滚复盘
  6. 优先手动触发压缩:关掉自动压缩,任务间隙手动执行,并且检查压缩后的摘要内容,确认约束还在

上下文压缩什么时候才必须开启

  • 对话 + 工具返回内容持续上涨,快要触达模型上下文 token 上限
  • 推理延迟很高、调用成本太高,需要降低 token 开销
  • 长周期任务,比如持续多轮的代码重构、批量文件处理

【常见问题】

问题 1:Agent 说好别动文件,上下文压缩之后为什么会忘记这条指令?

回答 1:Agent 说好别动文件,上下文压缩大多是有损摘要机制,摘要模型会优先保留任务主线,很容易忽略 “禁止修改指定文件” 这类自定义软性约束,一旦约束没有写入摘要,Agent 后续执行就会失去这条限制,进而修改文件。

问题 2:Agent 上下文压缩有没有办法保证禁止修改文件这类约束不丢失?

回答 2:有,做 Agent 上下文压缩时采用约束钉住方案,把禁止修改文件、黑名单路径这类规则单独隔离出来,不参与摘要,每一轮请求都固定带上,同时搭配工具调用前置黑名单校验,双重防护。

问题 3:Agent 上下文压缩是一定会丢指令吗,什么类型的指令最容易丢?

回答 3:Agent 上下文压缩不是一定会丢指令,自定义业务约束、文件读写限制、临时禁止操作这类软规则最容易丢失;模型内置的通用安全规则保留概率更高。

问题 4:代码 Agent 自动上下文压缩,要不要直接关掉自动压缩?

回答 4:如果你的代码 Agent 经常涉及文件修改、权限操作,建议关掉自动上下文压缩,改成手动压缩,每次压缩完成检查摘要,确认别动文件这类约束保留;长任务场景可以搭配结构化状态方案。

【参考资料】

[2026-11-14](刚说好别动这个文件,Agent 怎么又改了?聊聊上下文压缩)阿里云开发者社区

[2026-11-14](刚说好别动这个文件,Agent 怎么又改了?聊聊上下文压缩)腾讯云开发者社区

[2026-06-24](Governance Decay: How Context Compaction Silently Erases Safety Constraints in Long-Horizon LLM Agents)arXiv

[2026-05-20](Slipstream: Trajectory-Grounded Compaction Validation for Long-Horizon Agents)arXiv

【免责声明】

本文关于 Agent 上下文压缩失效、约束丢失的原理和方案,仅为行业技术科普,不同 Agent 框架、模型、压缩实现的表现存在差异;约束钉住、黑名单校验等方案不能保证 100% 杜绝 Agent 误改文件风险,生产环境文件操作建议增加独立权限、备份、变更审计机制。

今日大家都在搜的词: