/sends-back
/sends-back 用来回到某条已发送的用户消息,把它填回输入框,并截断该条之后的对话。默认配置下这个菜单项不会出现在斜杠菜单里,你可以在没有流式输出时,在主对话界面双击 ESC 打开它。
使用过 Codex CLI 的话就会很熟悉这个界面。相较于前者,Hunea 在这个细节上做了调整:在该界面使用 ESC 只会关闭当前覆盖层,不会继续向上层回溯。我之前被 Codex CLI 这个设计坑过,所以在实现时特意做了区分。
这个功能适用于想改某一轮提问再重发、接上某条旧的用户输入继续写,又不想像 /tree 那样在会话树上精确选节点开分支时。它更偏向“按用户消息改/重发”,侧重点是接上那条用户输入。
这个功能更侧重于重写/重发,所以不会保留已有的对话内容。如果你想要保留内容的同时,想回到之前的发送消息处进行重发查看模型的更多回答的话,那么你应该使用 /tree 而非该功能。
和
/tree不会同时出现在斜杠菜单里。只有把esc_rewind_mode配成"entry"时,菜单才会显示/sends-back;默认coarse时菜单显示的是/tree。互斥关系也写在斜杠菜单前言里。
该功能效果大致如下图所示:

被选择的之前发送的消息会被高亮出来。
怎么打开
1. 斜杠菜单(仅 entry 模式)
先配置:
然后在输入框为空时输入 /,选中 /sends-back,按 Enter。
2. 空输入框连按两次 Esc(默认 coarse 模式)
默认 esc_rewind_mode = "coarse" 时,菜单里没有 /sends-back 这一项,但空输入框连按两次 Esc,会进入同一套“按用户消息回溯”的交互:
- 第一次
Esc:状态栏提示Press Esc again to edit previous message - 第二次
Esc:打开全屏对话覆盖层,并高亮最近一条用户消息
若提示超时、中间又做了别的操作,或输入框里已有草稿 / 当前仍在流式输出,这次回溯通常不会继续。
配置成
"entry"后:菜单显示/sends-back;空输入框连按两次Esc则改为打开/tree。也就是说,菜单项与双击Esc分别对应两种回溯方式,而不是提供两个相同入口。
界面概览
打开后是一个全屏对话覆盖层(复用 transcript overlay),不是 /tree 那种独立会话树列表。
你会看到:
- 当前会话的完整可见对话内容
- 当前选中的用户消息会被高亮
- 底部提示类似:
Enter edit · ← older · → newer · ↑↓ scroll · Esc close
默认会尽量落在最新一条用户消息上。若当前会话还没有任何用户消息,通过菜单打开时可能提示 No previous user message,不会进入面板。
怎么操作
常用操作如下:
←:选中更早的一条用户消息→:选中更新的一条用户消息↑/↓,以及PgUp/PgDn、Home/End:滚动查看对话(不切换选中的用户消息)Enter:确认选中这条用户消息,进入“改/重发”流程Esc:关闭覆盖层,不做改动
也可以用 Ctrl + T 或 Ctrl + C 关闭覆盖层(与普通 transcript 全屏查看一致)。
需要注意:
- 这里只遍历用户消息,不会在助手回复 / 工具结果 / reasoning 行之间逐条切换
- 左右键才是“换一条用户消息”;上下键主要是滚动窗口
确认之后会发生什么
在覆盖层里选中某条用户消息并按 Enter 后,Hunea 会:
- 关闭覆盖层
- 从界面可见对话里删掉该条用户消息及其后的内容
- 把该条用户消息的完整正文(含附件信息时也会尽量保留)回填到输入框
- 同步截断发给供应商的会话历史,使后续请求对齐到“这条用户消息之前”的上下文
- 不会自动发送;你可以改完再自己按发送
因此它更像:
“回到某轮提问,把后面作废,改完再发”
而不是:
“在会话树里开一条新分支,旧内容还都留着”
需要注意:
- 若当前仍有进行中的请求,运行时可能拒绝截断,并给出错误提示
- 回填到输入框的内容不会进入输入框的 Ctrl+Z 撤销历史;这是刻意避免“半截草稿被 undo 弄乱”
- 这和
/resend不同:/resend只从全局用户历史回填,不改当前会话树;/sends-back会改当前会话可见内容与后续请求上下文
和相邻命令的区别
简单说:
- 想改“刚才那句提问”再发 →
/sends-back/ 双击Esc - 想精确回到某个 assistant / tool 节点附近并开分支 →
/tree - 只想复用一句旧提示词,会话别动 →
/resend