TUI
TUI 是 Anyy 的交互式终端应用。不带任何参数运行 anyy 即可启动它:
一个全屏的对话界面,包含多行输入框、斜杠命令、自动补全、实时工具进度、审批卡片
以及一条实用的状态栏。它是常驻的主要使用界面——如果只想获得一次性的非交互回复,
请参阅一次性对话;如需完整的 CLI 子命令与参数,请参阅
CLI 参考。
启动 TUI
anyy
不带参数时,anyy 会启动交互式终端应用,并连接到本地 gateway(必要时会自动
启动一个)。有几个入口参数可以改变会话的起始方式:
| 参数 | 作用 |
|---|---|
--role ROLE | 为新会话选择初始 Role。 |
--resume SESSION_ID | 恢复已有会话,而非新建。 |
--profile NAME | 按名称选择 Anyy profile。 |
--home PATH | 使用指定的 Anyy home 目录。 |
--socket PATH | 连接到指定的 gateway socket。 |
--no-color | 关闭彩色输出。 |
完整的参数列表以及其他 anyy 子命令,请参阅 CLI 参考。TUI 需要
真实的交互式终端;如果把输入通过管道喂给它(没有 TTY),它会立即退出。
当终端足够高(至少 15 行)且连接到真实 TTY 时,应用会在启动时预先打印若干空行, 使输入框停留在屏幕底部,对话内容向上增长进入其上方的回滚区。它不会接管备用屏幕 (alternate screen)——你的终端回滚内容会被保留。
为什么选择 TUI
TUI 是使用 Anyy 最丰富的方式:
- 对话式,而非一次性。 持久会话,带完整的对话记录、流式回复,以及可显示或隐藏 的推理 / 工具细节。
- 真正的多行输入框。 可插入换行、粘贴大段内容(会折叠成简洁的占位符)、调取 历史输入,并使用熟悉的 readline 风格按键编辑。
- 可在回合中途引导或打断。 由你决定智能体工作时输入会做什么:排队、引导当前 回合,或打断。
- 就地审批。 审批卡片与 ChangePlan 卡片就地出现在对话中;无需离开对话即可批准 或拒绝。
- 状态一目了然。 状态栏展示模型、连接、上下文用量与耗时;模型选择器可实时切换 模型。
如果是脚本化场景或只需一个答案,anyy chat 更合适。TUI 适合
你坐下来、与助手一起工作。
快捷键
编辑按键遵循常见的 readline 习惯。输入框是多行的,因此 Enter 用于发送,而由另一
个按键插入换行。
发送与换行
| 按键 | 操作 |
|---|---|
Enter | 发送当前消息(或运行斜杠命令)。 |
Alt+Enter | 插入换行(多行输入)。 |
Ctrl+J | 插入换行(与 Alt+Enter 相同)。 |
\ 后接 Enter | 单独的行尾反斜杠会变成换行,而不是发送。 |
Shift+Enter 有意未绑定:在多数终端上它与 Enter 无法区分,因此换行键以
Alt+Enter / Ctrl+J 为准。
光标移动与编辑
| 按键 | 操作 |
|---|---|
Left / Right | 按字符移动光标(会把粘贴块作为一个整体跨越)。 |
Home / Ctrl+A | 移动到输入起始处。 |
End / Ctrl+E | 移动到输入结尾处。 |
Backspace | 删除光标前的字符(会整块删除一个粘贴块)。 |
Delete | 删除光标后的字符。 |
Ctrl+U | 从光标删除到输入起始处。 |
Ctrl+K | 从光标删除到输入结尾处。 |
Ctrl+W | 删除光标前的一个词(一个粘贴块算作一个词)。 |
历史、补全与导航
| 按键 | 操作 |
|---|---|
Up / Down | 调取上一条 / 下一条已提交的输入(补全菜单关闭时)。 |
Tab | 应用高亮的斜杠命令补全项。 |
Up / Down | 在打开的补全菜单中移动选择。 |
PgUp / PgDown | 滚动对话内容;PgDown 回到最新消息。 |
Shift+Up / Shift+Down | 滚动对话内容。 |
回合控制与退出
| 按键 | 操作 |
|---|---|
Esc | 打断当前回合(仅在智能体工作时有效)。 |
Ctrl+C | 工作中:打断回合。否则:清空非空输入框,若已为空则退出。 |
Ctrl+D | 立即退出 TUI。 |
Enter(输入为空且连接已断开) | 重试 gateway 连接。 |
斜杠命令
输入 / 打开补全菜单;它把本地 UI 命令(在 TUI 内处理)与 gateway 为该界面
提供的运行时命令(技能、工具、MCP 等)合并在一起。随着输入,匹配项会按前缀
排序;按 Tab 应用高亮项,用 Up/Down 移动选择。
/help 会按分类列出可用命令(Local、Runtime、Session、Model、Skills/Tools、
Debug、Other);/help <name> 显示某个命令的详情。
下面是几个最常用的本地命令:
| 命令 | 作用 |
|---|---|
/help | 显示 TUI 帮助(可针对某个命令)。 |
/new | 新建会话。 |
/resume | 打开会话选择器,或按 id 恢复。 |
/model | 为当前会话打开模型选择器。 |
/busy | 设置忙时输入行为:queue、steer 或 interrupt。 |
/compact | 切换紧凑对话显示。 |
/details、/reasoning | 控制工具细节与推理的可见性。 |
/statusbar | 切换状态栏。 |
/copy、/paste | 复制选区 / 助手回复,或附加剪贴板内容。 |
/queue | 查看或入队消息。 |
/undo、/retry | 撤销上一次交互,或重试上一条用户消息。 |
/quit | 退出 TUI。 |
这只是一部分示例。完整、权威的斜杠命令列表——包括 gateway 运行时命令——请参阅 斜杠命令参考。
状态栏
状态栏默认关闭,用 /statusbar 切换。显示在顶部时,标题栏显示 Anyy
(设置了 Role 时附加 Role),回合进行中会显示带 spinner 的运行指示,否则显示当前
状态;当与 gateway 的连接尚未就绪时,会出现 connection <state> 字段。
输入框上方另有一条上下文栏,用 │ 连接显示:
- 当前模型 id,
- 上下文用量
used/max [▓▓▓░░░░░░░] NN%(接近上限时百分比变红), - 回合计时器(
⏱,智能体工作中),或上一回合的耗时(⏲,结束后)。
模型选择器
/model 为当前会话打开模型选择器。用 Up/Down(或 j/k)移动选择,按
Enter 切换,Esc 或 Ctrl+C 取消。列表末尾是 ← Back 和 Cancel 两行。
当某个 provider 提供的模型较多(25 个或以上)时,顶部会出现过滤框:直接输入即可
缩小列表,按一次 Esc 清除过滤(再按一次 Esc 关闭选择器)。切换会作用于当前
会话,并就地确认。
如果该 provider 没有可用模型,选择器会提示你运行 anyy setup model。
Profile 面板
/profile 显示当前 profile 详情,/config 显示当前配置,二者均就地渲染在对话中。
它们是只读视图,用于确认当前会话使用的 profile、Role 与设置;要修改它们,请使用
anyy profile 与 anyy role 子命令(参阅 CLI 参考)。
审批卡片
当智能体提出改变状态或需要 root 权限的操作时,对话中会就地出现一张审批卡片——一个
带边框、标题为 需要批准 的方框,显示 Title:、存在时的 Risk: 等级
(■■■ high、■■ medium、■ low)、一行 Approval ID: <id>、Summary:,以及
任何拟议的更改、命令、验证与回滚步骤,底部是 Y/Enter approve N deny 控件:
╭─ 需要批准 ──────────────────────────────────╮
│ Title: restart service │
│ Risk: ■■■ high │
│ Approval ID: approval_1 │
│ │
│ Y/Enter approve N deny │
╰─────────────────────────────────────────────╯
ChangePlan 审批的标题为 ChangePlan Approval,并额外添加一行 ChangePlan ID: <id>;
澄清提示使用相同样式、标题为 需要确认 的方框。卡片处于活动状态时:
| 按键 | 操作 |
|---|---|
Y 或 Enter | 批准该操作。 |
N | 拒绝该操作。 |
Esc / Ctrl+C | 保持卡片活动,并打印按键提示。 |
澄清提示与之类似,但接受自由文本:输入你的答案(或列出的选项编号)并按 Enter;
输入框提示会就地显示你的草稿。批准 / 拒绝与澄清的决定都会发送给 gateway,由其保留
审批与审计语义。
工具进度显示
智能体运行工具时,每个工具都会显示在对话中,带名称和状态,并根据细节模式显示其 参数、实时进度与结果。你可以控制显示多少内容:
/details调整工具细节的可见性(包括隐藏工具输出,或展开完整的参数 / 进度 / 结果)。/reasoning显示、隐藏或查看助手的推理。/compact把每条消息和工具折叠成一行,让对话更紧凑。
回复会实时流式呈现;在回合完成前,会有一个块状光标标记流式位置。
自动重连
TUI 订阅 gateway 的事件流,该事件流是实时回合的权威来源。如果连接断开,应用会打印
connection lost; reconnecting,并以退避策略自动重试。恢复期间,标题栏与屏幕顶部
那行会显示当前的 connection <state>;连接恢复正常后,排队的草稿会自动发出。
如果重连最终失败,应用会显示 connection unavailable; press Enter to retry——在
输入框为空时按 Enter 会立即触发一次重试。连接不可用期间,Ctrl+C 会退出。
TUI 如何与 Gateway 通信
TUI 是常驻 gateway 的客户端,而非智能体循环本身。它只负责本地渲染、输入编辑、补全 以及可见的队列状态;gateway 负责会话、工具、技能、审批、ChangePlan、持久化、 provider/模型解析与后台任务。
两条通道连接二者:
- RPC 承载你的操作——发送消息、引导或打断回合、运行运行时斜杠命令、切换模型, 以及批准 / 澄清的决定。
- 事件流 承载会话中发生的一切——流式文本、工具进度、状态变化与审批提示——它是 对话内容渲染所依据的真实来源。
由于 gateway 是常驻的,会话与历史会在 TUI 重启后保留:退出再重新启动(或用
--resume 加会话 id)即可从上次中断处继续。