全屏 TUI

dim 的交互式终端界面有两种形态:全屏(fullscreen)Scrollback。本页只讲全屏形态,Scrollback 形态见 Scrollback TUI

全屏形态运行在终端的 alternate screen 上:它接管整个终端窗口,自己绘制对话区、居中浮层和底部输入框,支持鼠标和主题切换。退出后终端恢复成打开前的样子,对话内容不会留在终端历史里——会话本身已经存好,用 /resume 随时找回。

选哪一种形态

你的场景 建议
日常长会话,经常开设置、模型、会话列表面板 全屏
想用鼠标滚动、点击列表、拖选复制 全屏
想换配色主题 全屏(/theme,Scrollback 不提供)
想让整段对话留在终端里,用终端自己的搜索和复制 Scrollback
通过 SSH / tmux 工作,或终端能力较弱 Scrollback

两种形态共用同一套会话、同一套配置,随时可以互相切换,不会丢会话。

启动

# 打开交互式 TUI(使用默认形态)
dim

# 明确以全屏形态打开
dim tui --fullscreen

# 打开并恢复指定会话
dim tui --session <session-id>

没有设置过默认形态时,dim 打开的是 Scrollback;加 --fullscreen 启动,或在界面里输入 /tui,即可使用全屏形态。

设为默认形态

dim tui --fullscreen default

这条命令只写入配置、不打开界面,成功后输出 Default TUI form set to fullscreen。也可以在界面里改:/settings启动界面形态

运行中切换形态

在输入框输入 /tui 回车即可切到另一种形态,/tui --fullscreen/tui --scrollback 指定目标形态。切换过程不新建会话,正在跑的任务也不会中断——换的只是画面。

界面结构

刚打开是 Home 首屏,发出第一条消息后进入 Chat 工作区。

Home 首屏:

┌──────────────────────────────────────────────────────────┐
│                                                          │
│                        DIM LOGO                          │
│                                                          │
│              ┌──────────────────────────┐                │
│              │ Ask anything...          │                │
│              └──────────────────────────┘                │
│                                                          │
│  ~/workspace/repo:main                             v0.x.y│
└──────────────────────────────────────────────────────────┘

Chat 工作区:

┌──────────────────────────────────────────────────────────┐
│ Session title  ~/workspace/repo    12 msgs | 42k | v0.x.y│ ← Header
├──────────────────────────────────────────────────────────┤
│ Transcript                                               │ ← 对话区
│   user message                                           │
│   assistant message                                      │
│   Thinking: ...                                          │
│   → write src/app.ts                                     │
│   $ pnpm test                                            │
├──────────────────────────────────────────────────────────┤
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Ask anything...                                      │ │ ← 输入框
│ │ AGENT  ready           42.0K (33%)      ■ model-id   │ │
│ └──────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────┤
│ drag to select        Tab: switch mode  Ctrl+P commands  │ ← Footer
└──────────────────────────────────────────────────────────┘
区域 显示什么
Header 会话标题、工作目录、消息条数、累计 token、CLI 版本
对话区 用户消息、模型回复、thinking、工具调用与结果、子代理状态、错误与系统提示
输入框 输入区,底部一行是模式标签、运行状态、上下文用量、当前模型
Footer 快捷键提示、临时通知、运行指示、TODO chip、后台任务指示、工作目录

上下文用量写作 42.0K (33%);带 ~ 前缀表示这是估算值,尚未拿到实际统计。

第一次使用

  1. 在你的项目目录里运行 dim
  2. Ctrl+P 打开命令面板,选 Connect Provider(或直接输入 /connect),连接模型提供方并填入 API key。
  3. 输入 /models 选择模型;需要调推理档位时用 /effort
  4. 输入 /approvals 选择工具审批模式(见下文)。
  5. 描述你要做的事,Enter 发送。

输入框

操作 按键
发送 Enter
换行 Shift+Enter;终端不支持时用 Ctrl+J
切换 AGENT / PLAN 模式 Tab
翻输入历史(单行状态下) Up / Down
打开命令面板 /Ctrl+P
引用技能 $
引用文件或目录 @ 或直接输入路径,Tab 补全目录
粘贴剪贴板图片 Ctrl+V

粘贴的行为按内容自动分类:普通文本直接进入草稿;很长的多行文本折叠成一个 token;绝对路径、file:// 链接和 Windows 盘符路径变成 focus-file token。token 在输入框里就是一段可见文本,删掉它就等于移除附件。

AGENTPLAN 的区别:AGENT 直接动手,PLAN 先给方案再执行。也可以用 /agent/plan/goal 切换。

命令面板与斜杠命令

Ctrl+P 打开命令面板,或者在输入框行首打 / 边打边过滤。常用命令:

命令 作用
/new 开新会话
/resume(别名 /sessions 打开会话列表并恢复
/connect(别名 /provider 连接模型提供方
/models 选择模型
/effort(别名 /reasoning 调整推理档位
/approvals 工具审批模式
/settings 设置面板
/mcp 管理 MCP server
/plugins 管理插件(含 WebSearch 的 Serper Key)
/skills 管理技能
/external-agents 启用/停用外部 agent
/timeline 消息时间线,跳到历史某条消息
/compact 压缩上下文
/export 导出当前会话
/theme/language 主题与界面语言
/debug 输出诊断信息
/tui 切换 TUI 形态
/exit 退出

面板通用操作:Up/Down 移动,Home/End 到首尾,PageUp/PageDown 翻页,直接打字过滤,Enter 确认,Esc 先清过滤词再关闭。鼠标可以滚轮滚动、点击选中。

运行中

发送后 Footer 会出现运行指示和 esc interrupt

●●○ esc interrupt                                Ctrl+P commands
想做的事 怎么做
打断当前这轮 Esc
运行中继续输入 直接打字,Enter 提交后进入队列
看队列 队列非空且终端宽度 ≥ 60 时,右侧自动展开 Queue 面板
看后台任务 / 子代理 Ctrl+O
看 TODO 清单 Ctrl+L,或点 Footer 上的 TODO 2/6 chip

队列里的消息会在当前这轮结束后按顺序执行;/compact 期间提交的内容同样进队列,压缩完继续。

工具审批与提问

模型要执行写文件、跑命令这类动作时,会弹出居中的审批浮层:

┌──────────────────────────────────────────────┐
│ Permission required                          │
│ $ rm -rf node_modules                        │
│                                              │
│ [Allow once]  Allow always   Reject          │
└──────────────────────────────────────────────┘
按键 结果
Y 允许这一次
N 拒绝
Left / Right / Tab 移动焦点
Enter 确认当前焦点上的选项

Allow always 会把这条规则记下来,之后同类调用不再询问。弹窗弹出的频率由审批模式决定,用 /approvals 设置:

模式 含义
auto 全部自动放行
approve-for-me 由 Agent 自动审核,无法安全判断时才问你
normal 读取类自动执行,写入和命令类问你

模型主动提问时(AskUser)会弹出带选项的浮层:Up/Down 移动,Space 勾选,Enter 确认或提交,Tab/Shift+Tab 在多个问题之间切换。

鼠标与复制

鼠标默认开启。开启时:

  • 滚轮滚动对话区和列表面板。
  • 点击列表行即选中并激活。
  • 在对话区或输入框里拖选,松开鼠标即复制到剪贴板。
  • 点击用户消息可以打开 Message actions,复制整条消息。

如果你要用终端自己的选择(例如拖拽到别的应用、或用终端的复制模式),按住终端的绕过修饰键再拖选:macOS 上是 Option,多数 Linux 终端是 Shift

也可以直接关掉鼠标:/settings鼠标 → 关闭,或启动前设置环境变量:

DIM_TUI_MOUSE=off dim

快捷键总表

Mod 在 macOS 上是 Cmd,其他平台是 Ctrl

按键 作用
Enter 发送
Shift+Enter / Ctrl+J 换行
Tab 切换 AGENT / PLAN
Ctrl+P 命令面板
Mod+T 时间线
Mod+N 回到 Home / 开新会话
Ctrl+O 后台任务面板
Ctrl+L TODO 面板
Ctrl+V 粘贴剪贴板图片
Esc 运行中打断本轮;有浮层时先关浮层
Ctrl+C 逐层退:关浮层 → 清空输入 → 退出确认
Up / Down 单行输入时翻历史;面板里移动选中

Ctrl+PMod+TMod+N 三个快捷键可以在设置里改绑。

退出

Ctrl+C 按两次,或输入 /exit。还有任务在跑时会先弹确认框,Enter / Y 强制退出,Esc / N 留下。

退出后终端恢复原样。会话已经保存在本地,下次用 dim 启动后 /resume 即可继续。

常见问题

打开后一片空白或错位。 终端窗口太小,或字体不是等宽。拉大窗口后界面会自动重排。

Shift+Enter 换行没反应。 部分终端不上报这个组合键,用 Ctrl+J,它在所有终端下都可用。

没法用终端自带的搜索翻历史。 全屏形态跑在 alternate screen 上,终端的 scrollback 只有进入前的内容。需要终端原生滚动、搜索、复制,用 Scrollback 形态

鼠标开着,拖不出终端原生选区。 按住 Option(macOS)或 Shift(Linux)再拖,或在设置里关掉鼠标。

提示未配置模型。/connect 连接提供方,再 /models 选模型。