goal 模式上下文压缩后进度遗忘

goal 模式上下文压缩后,已完成进度和已确认决策被遗忘,导致任务从头重做、确认事项丢失

问题现象

在 trae IDE 的 goal 模式下,当会话发生上下文压缩(compaction)后,经常出现以下情况:

  1. goal 中提到的任务被从头开始重新执行一遍,即使这些任务在压缩前已经完成。

  2. 上下文压缩前已经完成的进度被遗忘,agent 重复劳动。

  3. 通过 AskUserQuestion 向用户确认过、用户已明确指示要继续执行的问题或决策,在压缩后被遗忘,导致该做的没有做。

  4. 最终结果是:已经做完的事情反复做,确认过要继续做的东西却又没做。用户等待很长时间、消耗大量积分之后,得不到满意的结果。
    复现步骤

  5. 在 goal 模式下启动一个多步骤、长时间的任务(goal 中包含多个子任务)。

  6. 在执行过程中,通过 AskUserQuestion 与用户确认若干关键决策,用户给出明确指示。

  7. 完成其中部分子任务。

  8. 触发上下文压缩(会话变长后自动触发)。

  9. 观察压缩后的行为:agent 是否记得已完成的工作、是否记得用户确认过的决策、是否从断点继续。
    期望行为

上下文压缩后,agent 应当至少保留并知晓以下信息,并从断点处继续:

  • goal 中各子任务的完成状态(哪些已完成、哪些未完成)。

  • 用户通过 AskUserQuestion 确认过的所有决策与指示。

  • 当前进度位置,从断点处继续,而非从头重做。
    实际行为

  • 已完成的子任务被重新执行。

  • 用户确认过的决策被遗忘,应当执行的未执行。

  • agent 从 goal 起点重新开始,而非从断点继续。
    影响

  • 严重浪费用户时间与积分:长时间运行后得到的是重复劳动和遗漏成果,而非有效产出。

  • 破坏用户对 goal 模式的信任:用户无法依赖 agent 记住关键决策,被迫在每次压缩后重新交代背景、重新确认已确认过的问题。

  • goal 模式作为"长任务托管"的核心价值被削弱——本应让用户放心托付,实际却需要用户全程盯防压缩后的失忆,用户不敢发起长任务。

  • 形成"越长的任务越容易失忆、越长的任务越需要重做"的负反馈,与 goal 模式鼓励长任务托管的初衷相悖。
    环境信息

  • 问题平台:trae IDE goal 模式
    建议

  • 上下文压缩时,应强制保留一份"进度快照",至少包含:① goal 的任务清单及各项完成状态;② 所有用 AskUserQuestion 确认过的决策原文;③ 当前断点位置。

  • 压缩后的 prompt 应明确指示 agent"从断点继续,不要重做已完成项",而非让 agent 自行从 goal 文本推断进度。

  • 可考虑在 goal 模式维护一个持久化的进度文件(由 agent 实时更新),作为压缩后的恢复依据,从根本上解决"压缩即失忆"的问题。

感谢你这么详细和专业的反馈!在 goal 模式(SOLO Agent)下处理长任务时,多次触发上下文压缩(compaction)确实容易导致 Agent 遗忘之前的进度或你确认过的决策,这也是当前机制下的一个已知痛点。

作为目前的临时解决方案,建议你不要完全依赖 Agent 自身的上下文记忆,而是让它使用结构化的任务追踪。你可以在下发任务时,要求 Agent 先在项目里创建一个进度文件(比如 todo.md),并将整体计划写进去。在执行过程中,要求它每完成一个子任务或与你确认完关键决策后,都把状态更新到这个文件里。这样即使发生了压缩,Agent 也能通过读取这个外部文件找回断点,避免从头重做。

你提到的“强制保留进度快照”和由官方维护“持久化进度文件”的建议非常有建设性,这能从根本上解决长任务托管时的失忆问题,这也是产品后续优化的重要方向。

如果在使用这个临时方案时还有什么问题,或者有其他想法,随时交流哦~

get!压缩的问题正在排查了