Skip to content

[Feature] Plan Mode:批准方案时支持“清除上下文并实施计划”(保留产物,全新上下文) #325

Description

@cmp0xff

问题

Plan Mode 输出 <proposed_plan> 后,当前只有 3 个选项:implement this plan / stay in Plan mode / switch to Default mode。

选择 “implement this plan” 时,会在同一会话中继续:规划阶段的大量探索记录(文件读取、工具输出、来回问答、被否定的思路)仍全部留在上下文里。而执行阶段真正需要的是最终方案本身,不是这些过程信息。

期望

新增第 4 个选项:clear context and implement this plan(清除上下文并实施计划):

  • 新建干净会话,只携带已批准的计划文本开始实施
  • 磁盘产物保持不变:已创建/修改的文件、AGENTS.md、配置等一律不动
  • 原规划会话保留在历史中,可随时 /resume 回看

这样既“清洗上下文”,又“保留产物”,能显著降低执行阶段的 token 消耗和无关信息干扰。

详细说明与建议设计(点击展开)

现状

  • 当前版本中,PlanImplementationPrompt 只有 3 个选项;implement 的处理是在同一会话内发送实现指令,上下文不重置。
  • 目前没有手动 /clear/compact 命令,只有达到 autoCompactWindow(默认 50% 上下文窗口)后的自动压缩。
  • 基础设施已具备:SessionManager.forkSession()compactSession()/fork/undo,本功能可低成本复用。

对标

  • Codex CLI(约 2026-04 起)在计划弹窗提供 “Yes, clear context and implement”:清空会话、新建线程,仅以已批准的计划 markdown 作为首个输入。
  • Claude Code 提供 /clear(清历史、保留文件与 CLAUDE.md)与 /compact(摘要压缩),但计划批准本身不会自动清空上下文。
  • Copilot CLI 提供 /clear/compact,但同样缺少计划交接的“清空上下文并实施”选项。

价值

  • 工程:执行阶段输入 token 大幅下降;规划期试错路径、无关文件内容等噪声不再进入执行上下文;更利于命中 DeepSeek 上下文缓存。
  • 研究:长上下文存在 lost-in-the-middle 与指令跟随退化,上下文相关性比体积更重要。执行任务的相关上下文是“决策完备的计划 + 代码现状”,而非规划过程转录——等价于把 spec 交给一位新工程师。
  • 成本:仓库内 Plan Mode 对比研究显示规划带来约 +26% 成本,交接模式可在执行阶段回收部分输入成本。

建议交互与实现

  • PlanImplementationPrompt 增加第 4 项 clear context and implement this plan;默认光标仍停在第 1 项;数字键改为 1-4。
  • 选择后:以当前会话为源派生新会话,仅保留系统提示 + <proposed_plan> 全文 + 实现指令(沿用 getImplementationPrompt 的中英文判定);AGENTS.md、settings、MCP、skills 等运行上下文照常注入;file-history 分支随 fork 复制,保证 /undo 可追溯。
  • 原会话保留在 sessions-index.json,标题可加后缀(如“(规划)”)以避免与新会话混淆。

边界与回退

  • 该选项为 opt-in,不改变现有 “implement this plan” 行为。
  • 若计划不够决策完备,新会话执行中可 /resume 回到原规划会话继续完善。
  • 不删除、不回滚任何磁盘文件;只重置模型上下文。

实现提示

  • 复用 SessionManager.forkSession() + 消息过滤,或新增 startPlanImplementationSession(planText)
  • 同步更新 docs/plan-mode.mddocs/plan-mode_en.md;README 斜杠命令表目前还漏了 /plan/fork,可顺带补上。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions