Skip to content

转向 / rewind / compact

跑动过程中,deepcode 提供三类会话级控制手段:中途插话(steering)、把工作区文件和/或对话还原到更早一轮(/rewind)、以及压缩上下文腾出空间(/compact)。本页把三者放在一起讲清楚。

转向(steering)

deepcode 在生成/执行过程中直接接受输入——不需要等它说完再提问。打完字按 Enter,这条消息立即进入一个 FIFO 队列,并根据当时的状态决定何时被注入:

  • 正在跑工具时按 Enter:入队的同时会对当前回合发起一次软中断。已经在执行的工具不会被打断——它会正常跑完;工具结果一回灌,deepcode 就把队列里排队的消息作为新的 user 消息注入进去,然后自然续入下一轮,模型据此调整后续动作。已经生成的部分文本、已经拿到的工具结果都会保留,不会因为这次插话而丢失进度。
  • 模型正在纯文本流式输出、没有工具在跑时按 Enter:消息照样入队,不会打断当前这段文本;等模型本轮自然说完(没有发起新的工具调用)时,队列里的消息会被取出并续跑。

排队的每条消息都会带上标记,明确告诉模型「这是你还在处理时用户补发的」,据此调整当前工作,而不是把它当成一次全新的独立请求。

/rewind:回退到某一轮之前

/rewind 把当前会话拉回到某一轮开始时的状态,可选三种范围:

  • 仅对话——只截断对话历史,不动工作区文件;
  • 仅代码——只还原文件,对话记录保留;
  • 两者——对话和文件一起回退。

代码还原的原理是内容寻址快照:每次 Edit/Write 落笔前,deepcode 先把目标文件当时的内容(或「文件当时不存在」这个事实)按轮次记一笔,内容按哈希存成 blob,索引单独落盘。/rewind 到某一轮时,按「每个文件离目标轮次最近的一条记录」找回该文件当时的样子,写回去;如果那一轮时文件还不存在,则把之后新建的文件删掉。记录条数超过上限后按先进先出淘汰最老的,不会无限增长。

如果要回退的那一轮对话已经被 /compact 压缩掉、不在当前内存范围内了,/rewind 会明确提示「回退不到」,不会假装成功。

/compact:压缩上下文腾空间

对话变长后可以手动 /compact:把历史总结成一段摘要 + 保留最近的尾巴,替换掉冗长的中间部分,给后续对话腾出上下文空间。压缩过程本身受两层保护:一是超时保护(跑太久没响应会主动掐断,不会无限挂起),二是 Esc 也能直接中断在途的压缩。压缩失败时现场不会被破坏——只有真正拿到新结果才会替换旧的历史,失败就维持原样。

deepcode 也会在上下文接近上限时自动触发同样的压缩流程,/compact 是手动版本,随时可用。

Esc:中断当前回合

Esc 在这里是硬中断,和转向的软中断不是一回事:按下去会直接终止当前正在生成/执行的回合,如果有权限确认框、追问框或计划审批框正挂起,也会一并按「拒绝」处理掉(避免卡死),在途的 /compact 同样会被一起中断。空闲时按 Esc 只是清空输入框。连按两次 Esc 会打开 rewind 选择器,直接挑一轮回退。

/clear/fork

  • /clear —— 清空当前对话,开一个全新的会话文件(本次会话累计花费仍会保留统计)。
  • /fork —— 把当前对话完整分叉成一个新会话继续跑,原会话冻结在分叉点,新会话标题会标注分叉来源。

相关:命令与快捷键