长上下文失效:7 个实用做法
模型可能读到了规则,却没有执行。减少遗漏,先少放无关资料,把本轮任务和关键约束放在一起,交付前逐条检查。 这些方法能降低风险,不能保证零遗漏。
先确认规则确实发给了模型。被截断、被摘要删掉,或 Skill 没加载时,要把缺少的内容补回当前请求。
一张图,看懂本轮怎么组织
Section titled “一张图,看懂本轮怎么组织”固定规则保留在平台规定的指令层。本轮任务的材料,可以先试下面的顺序:
七个做法,直接照着用
Section titled “七个做法,直接照着用”| 方法 | 直接怎么做 |
|---|---|
| 少放资料 | 文档只读相关段落,Skill 按需加载,日志只取报错附近。 |
| 末尾重申 | 长材料之后,简短列出本轮任务和关键约束。 |
| 分清主次 | 强约束保留原文,参考资料可摘要,过期要求清理掉。 |
| 先找证据 | 先定位原文、函数或运行结果,再作判断。 |
| 保存进度 | 阶段交接时,带上目标、约束、进度、待办和来源。 |
| 逐条复查 | 单独一轮提供约束与结果,逐条给出检查证据。 |
| 程序兜底 | 字段用 Schema 校验,接口兼容用回归测试,工具权限由执行层限制。 |
“优先级高”只是提示模型重点,不会改变平台权限。末尾重申的约束,也要与原有规则一致。
假设让编码 Agent 给订单查询增加分页:
参考资料(可摘要):订单接口文档的分页段落。已确认:旧客户端仍在使用无分页参数的请求。本轮任务:增加可选分页参数。
必须遵守(交接时原样保留):C1. 保留旧请求的返回字段和默认行为。C2. 不修改数据库结构。
交付前逐条检查:C1 → 给出旧请求的测试结果。C2 → 给出数据库相关改动的 diff 检查结果。未验证就写“未验证”;检查失败,修正后重查。复查时提供的是原始约束 + 实际结果。只问“你检查过了吗”,模型的一句“检查过了”不能作为证据。
研究结论与权威依据
Section titled “研究结论与权威依据”| 结论 | 依据与适用边界 |
|---|---|
| 长度影响 | Chroma 在任务复杂度不变时,也观察到输入变长后的性能下降;干扰内容同样会影响表现。Context Rot |
| 位置影响 | 受测模型的问答与检索任务中,开头或结尾的信息通常比中间更容易被利用,不能说遗漏与位置无关。Lost in the Middle |
| 末尾提问 | Anthropic 对 Claude 的长文档输入推荐“材料在前,问题在后”,并建议先提取相关原文;不代表所有模型始终最关注末尾。官方建议 |
| 压缩有损 | 摘要可能遗漏关键细节。强约束保留原文,重要事实保留可回查的来源。Anthropic 上下文工程 |
| 自检限制 | ICLR 2024 发现,当时受测模型在缺少外部反馈的推理自纠错中可能变差;不证明所有复查无效,但自检不能代替证据。自纠错研究 |
验证效果:固定模型与任务,多跑几次,比较约束遗漏率、任务通过率、Token 和耗时。