AI会话上下文压缩翻车实录:我在hermes项目里整理待办任务的避坑指南
AI会话上下文压缩翻车实录:我在hermes项目里整理待办任务的避坑指南
上周在hermes项目迭代中,我让AI编码助手整理过去7天所有会话里的待办任务,结果它把3天前已经关闭的bug修复任务又列了一遍,还顺手把当时已经取消的接口重构需求给“复活”了——这就是典型的上下文压缩(Context Compaction)场景下的待办任务处理翻车现场。事后排查才发现,问题根源根本不是AI能力不足,而是我对上下文压缩的规则理解有偏差,踩了3个几乎所有人都会犯的错。
一、问题本质:上下文压缩不是“删减冗余”,是边界重定义
很多人对Context Compaction的认知是“把过长的对话历史删掉没用的部分,保留有效信息”,但实际上压缩机制的核心是边界重定义:当会话长度超过模型上下文窗口阈值时,系统会把历史对话压缩成精简摘要,同时明确标记Historical Task Snapshot(历史任务快照)、Historical In-Progress State(历史进行中状态)、Historical Pending User Asks(历史待处理用户请求)、Historical Remaining Work(历史剩余工作)四个模块为仅背景参考,不作为当前有效指令。
这次翻车的核心诱因,就是我省略了这个边界规则:prompt里只写了“整理所有会话中的待办任务”,没加“忽略历史已完成/已取消任务,仅以最新指令为准”的限定,导致AI把压缩后的历史快照里的所有任务,无论状态是否有效,全部当成了当前待办。
二、3个高频踩坑实录与根因分析
我们在hermes项目的AI助手使用中,一共踩过3个和上下文压缩相关的典型错误,每一个都对应明确的根因:
- 把历史任务快照当成当前待办:最典型的就是那个已经完成的“优化用户登录接口响应速度”任务,3天前的会话里已经合并到主分支、状态标记为
done,但压缩后的快照里依然保留了这个任务条目,AI没做状态过滤就直接列进了新待办,还附上了当时的实现方案,浪费了半小时排查。 - 上下文重叠就默认延续旧任务:之前的会话里AI正在做“hermes日志模块重构”,压缩后的摘要里提到了这个任务,后来用户只是问“待办里有没有和日志相关的需求”,AI直接默认要继续推进重构,甚至开始写代码,完全没识别到用户只是要查询,不是要执行。
- 反向指令无法终止在途任务:有一次AI正在自动整理待办,用户发了“stop,先别整理了,帮我查下部署文档”,结果AI完全没识别到反向指令,还是继续输出整理好的待办列表,根源就是没遵守“反向指令出现时立即终止所有历史在途任务,不重新 surfaced 历史内容”的规则。
针对第一个问题,我们后来写了一个简易的过滤逻辑,从根源上避免历史任务污染当前待办:
def filter_valid_tasks(compacted_context: dict, latest_user_msg: str) -> list:
# 1. 先过滤掉所有非待处理/进行中状态的历史任务
valid_tasks = [t for t in compacted_context.get("historical_tasks", [])
if t["status"] in ["pending", "in_progress"]]
# 2. 仅提取最新用户消息明确提到的任务,不自动联想历史任务
mentioned_keywords = extract_keywords(latest_user_msg)
return [t for t in valid_tasks if any(k in t["desc"] for k in mentioned_keywords)]
这段伪代码没有涉及任何hermes的内部业务逻辑,核心是先把历史任务的状态过滤掉,再根据最新用户消息的关键词匹配,避免AI自动联想历史内容。
三、我们验证可用的处理规则
踩了3次坑之后,我们给hermes项目的AI编码助手定了3条强制规则,至今没有再出现过同类问题:
- 上下文边界强制声明:所有涉及跨会话、长上下文的指令,prompt里必须加前缀:“本次任务忽略所有历史会话中的已完成/已取消任务,历史上下文仅作参考,仅以当前最新用户指令为准”;
- 状态过滤前置:所有涉及任务、bug、需求列表的整理类任务,必须明确要求“仅提取状态为pending/in_progress的内容,历史完成/取消条目一律过滤”;
- 反向指令优先级最高:只要最新用户消息包含stop/undo/roll back/取消等反向关键词,立即终止所有在途的历史任务,不重新输出任何历史相关的内容。
四、可带走的方法论
这次踩坑最大的收获,不是学会了一个过滤逻辑,而是搞懂了AI长上下文场景下的一个核心规律:上下文压缩后的历史内容,本质是“参考档案”,不是“当前有效指令”。很多开发者遇到AI输出不符合预期时,第一反应是调整模型参数、优化prompt措辞,但实际上很多时候问题出在没守住“历史内容仅参考”的边界。
如果你也在用AI编码助手处理跨会话的任务整理、需求梳理类工作,可以直接复用我们验证过的3条规则,至少能避免80%的同类翻车。

浙公网安备 33010602011771号