全屏 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%);带 ~ 前缀表示这是估算值,尚未拿到实际统计。
第一次使用
- 在你的项目目录里运行
dim。 - 按
Ctrl+P打开命令面板,选 Connect Provider(或直接输入/connect),连接模型提供方并填入 API key。 - 输入
/models选择模型;需要调推理档位时用/effort。 - 输入
/approvals选择工具审批模式(见下文)。 - 描述你要做的事,
Enter发送。
输入框
| 操作 | 按键 |
|---|---|
| 发送 | Enter |
| 换行 | Shift+Enter;终端不支持时用 Ctrl+J |
切换 AGENT / PLAN 模式 |
Tab |
| 翻输入历史(单行状态下) | Up / Down |
| 打开命令面板 | / 或 Ctrl+P |
| 引用技能 | $ |
| 引用文件或目录 | @ 或直接输入路径,Tab 补全目录 |
| 粘贴剪贴板图片 | Ctrl+V |
粘贴的行为按内容自动分类:普通文本直接进入草稿;很长的多行文本折叠成一个 token;绝对路径、file:// 链接和 Windows 盘符路径变成 focus-file token。token 在输入框里就是一段可见文本,删掉它就等于移除附件。
AGENT 与 PLAN 的区别: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+P、Mod+T、Mod+N 三个快捷键可以在设置里改绑。
退出
Ctrl+C 按两次,或输入 /exit。还有任务在跑时会先弹确认框,Enter / Y 强制退出,Esc / N 留下。
退出后终端恢复原样。会话已经保存在本地,下次用 dim 启动后 /resume 即可继续。
常见问题
打开后一片空白或错位。 终端窗口太小,或字体不是等宽。拉大窗口后界面会自动重排。
Shift+Enter 换行没反应。 部分终端不上报这个组合键,用 Ctrl+J,它在所有终端下都可用。
没法用终端自带的搜索翻历史。 全屏形态跑在 alternate screen 上,终端的 scrollback 只有进入前的内容。需要终端原生滚动、搜索、复制,用 Scrollback 形态。
鼠标开着,拖不出终端原生选区。 按住 Option(macOS)或 Shift(Linux)再拖,或在设置里关掉鼠标。
提示未配置模型。 先 /connect 连接提供方,再 /models 选模型。
DimAgent