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/preface.md.
  • 简体中文
  • 前言

    Hunea 内置了一些 斜杠菜单。在输入框为空时输入 /,就会弹出菜单项,效果如下:

    menu

    说明:/ 内联斜杠菜单当前只支持输入框为空时触发;输入框里已有内容时,键入 / 不会打开这份菜单。后续可能会进行优化。

    然后可以用键盘上下方向键移动,或者继续键入来过滤/匹配想要的菜单项,选中后按 Enter,即可触发对应功能。

    打开菜单的两种方式

    0.12.1-alpha.2 起,命令菜单的触发方式可以通过 [tui] 段下的 command_menu_mode 配置,共三档:

    command_menu_mode/ 触发内联菜单Ctrl+O 悬浮菜单
    slash(默认)
    floating否(/ 为普通文本)
    both
    • / 内联菜单:即上面介绍的默认方式,仅在输入框为空时以 / 开头触发。
    • Ctrl+O 悬浮菜单:不依赖输入框是否为空,随时可用 Ctrl+O 唤出。悬浮菜单支持上下滚动,命令较多时浮窗右侧会显示滚动条;一次显示的行数由 command_menu_rows 控制(范围 7..21,默认 7)。适合希望把 / 当作普通字符输入、或更习惯用固定快捷键唤出命令的场景。

    Ctrl+O 悬浮菜单的交互方式

    悬浮菜单除了键盘操作,还支持鼠标点击与滚动:

    • 键盘 / 上下移动选中项(列表超出可见区域时会自动滚动跟随),继续键入进行过滤/匹配,Enter 触发选中命令,Esc 关闭菜单。
    • 鼠标点击:直接单击某一行命令即可选中并触发该命令,不需先用方向键移动。
    • 鼠标滚轮:当命令数量超过 command_menu_rows 设定的行数时,可直接在浮窗上滚动鼠标滚轮来上下翻看;浮窗右侧的滚动条会反映当前所处的位置。

    Ctrl+O 悬浮菜单的效果如下:

    menu-2

    两种菜单的项目、过滤与选中方式一致,只是触发入口不同。配置方式与取值范围见 config.toml · command_menu_mode,按键说明见快捷键一览

    当前 Hunea 内置的斜杠菜单如下(点击 命令 列可跳转到对应文档):

    命令别名作用
    /exit/quit退出应用
    /resume恢复此前的会话
    /context查看下一轮上下文占用情况(估算)
    /copy挑选消息并复制
    /resend回填此前已发送的消息
    /tree精确回溯到某个消息节点(默认模式)
    /sends-back编辑某轮某条用户消息(与 /tree 互斥,见下方说明)
    /models为当前会话选择模型
    /prompt查看下一次新会话的提示词组装情况
    /clear/new清空当前对话上下文

    补充说明

    • /tree/sends-back:二者不会同时出现在菜单中,并且与空输入框连按两次 Esc 的行为是配合使用的,而不是重复提供同一入口。默认 esc_rewind_mode = "coarse" 时:菜单显示 /tree;空输入框连按两次 Esc 会进入「按某轮用户消息编辑/重发」的交互(截断该条之后的内容,并将正文回填到输入框,与 /sends-back 相同)。若将配置改为 esc_rewind_mode = "entry"(位于 [tui] 节下):菜单改为显示 /sends-back,连按两次 Esc 则打开 /tree。也就是说,菜单项与双击 Esc 分别对应两种回溯方式,修改配置只是交换快捷键入口与菜单入口。我把它们拆开,是为了各自对应更合适的使用场景,而不是合并成同一个命令。
    • /tool-debug:仅在开启 debug 命令时出现,用于预览 tool approval 面板,不属于常规用户命令,所以不放进上表。后续也可能会移除,或者继续完善。
    • 别名:输入补全时,/quit 会落到 /exit;同理 /new 会落到 /clear。这样做是为了方便从其他 CLI 产品过渡到 Hunea,这两个命令很常用,我自己在不同 CLI 之间切换时总被名字卡一下手,所以在 Hunea 里做了别名。后续可能会放开别名自定义,甚至考虑“宏”(一个命令串起多个动作)不过这个更偏扩展场景了,等到时候再考虑一下如何设计了。