For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /guide/fun/menu/sends-back.md.
  • 简体中文
  • /sends-back

    /sends-back 用来回到某条已发送的用户消息,把它填回输入框,并截断该条之后的对话。默认配置下这个菜单项不会出现在斜杠菜单里,你可以在没有流式输出时,在主对话界面双击 ESC 打开它。

    使用过 Codex CLI 的话就会很熟悉这个界面。相较于前者,Hunea 在这个细节上做了调整:在该界面使用 ESC 只会关闭当前覆盖层,不会继续向上层回溯。我之前被 Codex CLI 这个设计坑过,所以在实现时特意做了区分。

    这个功能适用于想改某一轮提问再重发、接上某条旧的用户输入继续写,又不想像 /tree 那样在会话树上精确选节点开分支时。它更偏向“按用户消息改/重发”,侧重点是接上那条用户输入。

    注意

    这个功能更侧重于重写/重发,所以不会保留已有的对话内容。如果你想要保留内容的同时,想回到之前的发送消息处进行重发查看模型的更多回答的话,那么你应该使用 /tree 而非该功能。

    /tree 不会同时出现在斜杠菜单里。只有把 esc_rewind_mode 配成 "entry" 时,菜单才会显示 /sends-back;默认 coarse 时菜单显示的是 /tree。互斥关系也写在斜杠菜单前言里。

    该功能效果大致如下图所示:

    sends-back

    被选择的之前发送的消息会被高亮出来。

    怎么打开

    1. 斜杠菜单(仅 entry 模式)

    先配置:

    [tui]
    esc_rewind_mode = "entry"

    然后在输入框为空时输入 /,选中 /sends-back,按 Enter

    2. 空输入框连按两次 Esc(默认 coarse 模式)

    默认 esc_rewind_mode = "coarse" 时,菜单里没有 /sends-back 这一项,但空输入框连按两次 Esc,会进入同一套“按用户消息回溯”的交互:

    1. 第一次 Esc:状态栏提示 Press Esc again to edit previous message
    2. 第二次 Esc:打开全屏对话覆盖层,并高亮最近一条用户消息

    若提示超时、中间又做了别的操作,或输入框里已有草稿 / 当前仍在流式输出,这次回溯通常不会继续。

    配置成 "entry" 后:菜单显示 /sends-back;空输入框连按两次 Esc 则改为打开 /tree。也就是说,菜单项与双击 Esc 分别对应两种回溯方式,而不是提供两个相同入口。

    界面概览

    打开后是一个全屏对话覆盖层(复用 transcript overlay),不是 /tree 那种独立会话树列表。

    你会看到:

    1. 当前会话的完整可见对话内容
    2. 当前选中的用户消息会被高亮
    3. 底部提示类似:

    Enter edit · ← older · → newer · ↑↓ scroll · Esc close

    默认会尽量落在最新一条用户消息上。若当前会话还没有任何用户消息,通过菜单打开时可能提示 No previous user message,不会进入面板。

    怎么操作

    常用操作如下:

    • :选中更早的一条用户消息
    • :选中更新的一条用户消息
    • / ,以及 PgUp / PgDnHome / End:滚动查看对话(不切换选中的用户消息)
    • Enter:确认选中这条用户消息,进入“改/重发”流程
    • Esc:关闭覆盖层,不做改动

    也可以用 Ctrl + TCtrl + C 关闭覆盖层(与普通 transcript 全屏查看一致)。

    需要注意:

    • 这里只遍历用户消息,不会在助手回复 / 工具结果 / reasoning 行之间逐条切换
    • 左右键才是“换一条用户消息”;上下键主要是滚动窗口

    确认之后会发生什么

    在覆盖层里选中某条用户消息并按 Enter 后,Hunea 会:

    1. 关闭覆盖层
    2. 从界面可见对话里删掉该条用户消息及其后的内容
    3. 把该条用户消息的完整正文(含附件信息时也会尽量保留)回填到输入框
    4. 同步截断发给供应商的会话历史,使后续请求对齐到“这条用户消息之前”的上下文
    5. 不会自动发送;你可以改完再自己按发送

    因此它更像:

    “回到某轮提问,把后面作废,改完再发”

    而不是:

    “在会话树里开一条新分支,旧内容还都留着”

    需要注意:

    • 若当前仍有进行中的请求,运行时可能拒绝截断,并给出错误提示
    • 回填到输入框的内容不会进入输入框的 Ctrl+Z 撤销历史;这是刻意避免“半截草稿被 undo 弄乱”
    • 这和 /resend 不同:/resend 只从全局用户历史回填,不改当前会话树;/sends-back 会改当前会话可见内容与后续请求上下文

    和相邻命令的区别

    你想做的事更合适的命令
    按某轮用户消息改/重发,并截掉后面内容/sends-back(或默认 coarse 下双击 Esc
    在会话树上精确选节点、保留内容并开分支/tree
    只回填以前发过的用户输入,不改当前会话/resend
    从当前会话拷用户/助手消息出去/copy
    清空整段对话、开一条全新会话/clear

    简单说:

    • 想改“刚才那句提问”再发/sends-back / 双击 Esc
    • 想精确回到某个 assistant / tool 节点附近并开分支/tree
    • 只想复用一句旧提示词,会话别动/resend

    相关配置

    [tui]
    # 默认 coarse:
    # - 菜单显示 /tree
    # - 空输入框连按两次 Esc:进入本文的“按用户消息改/重发”交互
    #
    # 配成 entry 时:
    # - 菜单显示 /sends-back
    # - 空输入框连按两次 Esc:改为打开 /tree
    esc_rewind_mode = "coarse"

    一点使用建议

    • 只想改最近一轮提问:打开后默认已在最新用户消息,直接 Enter 即可。
    • 想回到更早的提问:用 往旧消息走;内容看不清时用 / 滚动。
    • 如果后续仍有需要保留的分支内容,优先使用 /tree,它不会直接截断已有内容。
    • 只是想把旧提示词拷出来或复用、不想动当前会话:用 /copy/resend