从命令行敲下 opencode 的那一刻,一个彩色、可交互的终端界面就会铺满屏幕。这就是 OpenCode 的 TUI(Terminal User Interface),专门为开发者在终端里跟大语言模型一起写项目而设计的。如果希望直接进入某个项目目录,只要把路径传给命令就行:
bash
opencode /path/to/project
进入 TUI 之后,最自然的动作就是给它一句提示,比如:
plain
Give me a quick summary of the codebase.
模型会直接在当前项目上下文中开始工作。

用 @ 引用文件
在消息里想要提及某个文件时,OpenCode 支持用 @ 符号触发模糊文件搜索。比方说想知道某个 API 文件中身份认证是怎么处理的,可以这样写:
plain
How is auth handled in @packages/functions/src/api/index.ts?
TUI 会自动把匹配到的文件内容附加到对话里,省去了复制粘贴的麻烦。这个 @ 引用方式在对话中随时都能用,对于快速围绕某个文件提问非常顺手。
运行 Shell 命令
如果消息以 ! 开头,OpenCode 会把它当成一条 Shell 命令来执行,然后把命令的输出作为工具调用结果直接送到对话中。例如:
plain
!ls -la
执行完毕后,ls -la 的输出就会出现在聊天里,后续的对话可以基于这些结果继续分析。利用这一特性,可以很自然地让模型帮忙解读日志、查看文件列表或运行测试。
斜杠命令:操作快车道
在 TUI 里,输入 / 再加上命令名,就能快速完成各种操作。大部分命令也绑定了键盘快捷键,默认的前导键是 ctrl+x,也就是说类似 ctrl+x c 这样的组合就是先按 ctrl+x,松开后再按 c。
下面把所有可用的斜杠命令过一遍,包括它们的作用、别名和快捷键。
/connect
添加一个新的模型提供商。选择可用的提供商,并输入对应的 API 密钥。
/compact
压缩当前会话的上下文。别名是 /summarize。当对话变得太长,想要精简一下时可以使用。
快捷键:ctrl+x c
/details
切换工具执行细节的显示。开启之后能看到更详细的调用信息。
快捷键:ctrl+x d
/editor
打开外部编辑器来撰写消息。会用系统 EDITOR 环境变量里设置的编辑器。比如想用 VS Code 长长地写一段提示,比起在终端里敲要方便得多。
快捷键:ctrl+x e
/exit
退出 OpenCode。别名有 /quit 和 /q。
快捷键:ctrl+x q
/export
把当前对话导出为 Markdown 文件,并用默认编辑器打开。编辑器同样由 EDITOR 环境变量决定。
快捷键:ctrl+x x
/help
显示帮助对话框。里面可以看到各种命令和快捷键说明。
快捷键:ctrl+x h
/init
引导式设置,帮助创建或更新项目中的 AGENTS.md 文件。这份文件可以定义项目给语言模型的说明和规范。
快捷键:ctrl+x i
/models
列出当前可用的模型列表。
快捷键:ctrl+x m
/new
开启全新会话,同时清除当前对话。别名 /clear。
快捷键:ctrl+x n
/redo
重做刚才被撤销的消息。只有在使用了 /undo 之后才能用这个命令。
有一点很实用:被撤销的文件改动也会一并恢复。OpenCode 内部用 Git 来管理这些文件变更,所以项目需要是一个 Git 仓库。
快捷键:ctrl+x r
/sessions
列出并切换会话。可以看成是对话历史的"存档"。别名有 /resume 和 /continue。
快捷键:ctrl+x l(注意是小写 L)
/share
分享当前会话。适合把对话记录发给同伴或者保存到云端。
快捷键:ctrl+x s
/themes
列出可用的主题,方便换个视觉风格。
快捷键:ctrl+x t
/thinking
控制在对话中是否显示模型的"思考块"(thinking/reasoning blocks)。对于支持扩展思考的模型,开启后可以看到它是如何一步步推理的。
需要留意的是:这个命令只控制思考块的显示 ,并不会开启或关闭模型本身的推理能力。要切换实际的推理功能,得用 ctrl+t 在模型变体之间循环。
快捷键:无额外快捷键列在这里,但可以通过命令面板调用。
/undo
撤销上一条消息。会删掉最近的用户消息以及模型后续的全部回答,同时也会回滚因此产生的所有文件改动。
和 /redo 一样,底层依赖 Git 实现,所以要求项目是 Git 仓库。
快捷键:ctrl+x u
/unshare
取消当前会话的分享状态。
没有公开的默认快捷键,可以在命令面板里找到。
外部编辑器设置
前文提到的 /editor 和 /export 命令都会用到系统环境变量 EDITOR 里指定的编辑器。在 Linux 或 macOS 上,可以这样设置:
bash
export EDITOR=nano
export EDITOR=vim
# 如果喜欢图形界面编辑器,像 VS Code 需要加上 --wait 参数
export EDITOR="code --wait"
为了让设置长期生效,建议把这一行写入 shell 配置文件(例如 ~/.bashrc 或 ~/.zshrc)。
常见的编辑器选项如下:
code------ Visual Studio Codecursor------ Cursorwindsurf------ Windsurfnvim------ Neovimvim------ Vimnano------ Nanonotepad------ Windows 记事本subl------ Sublime Text
这里有一个细节:对于 VS Code 这类图形编辑器,需要加上 --wait 标志。这是因为 OpenCode 发送一条消息后,会等待编辑器进程结束才将内容送入对话。--wait 的作用就是让编辑器进程保持阻塞,直到使用者关闭编辑文件,这样 OpenCode 才能知道编辑完成了。不加这个参数的话,TUI 几乎会在瞬间继续运行,导致编辑内容丢失。
用 tui.json 定制界面
TUI 的外观和行为可以通过 tui.json(也支持带注释的 tui.jsonc)来配置。注意这个文件和运行时配置 opencode.json 是不同的,它专管界面侧。
一个完整的示例长这样:
json
{
"$schema": "https://opencode.ai/tui.json",
"theme": "opencode",
"keybinds": {
"leader": "ctrl+x"
},
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
下面逐一看每个配置项的含义:
- theme :设置 UI 主题。通过
/themes可以查看所有可用主题的名字。 - keybinds :自定义键盘快捷键,比如可以改掉
leader键,让习惯用ctrl+a的用户也能顺手操作。 - scroll_speed :控制 TUI 滚动的速度,最小值可设为
0.001,默认是3。 - scroll_acceleration.enabled :启用类似 macOS 的滚动加速。开启后,快速的滚动手势会让滚动速度更快,而慢速操作则更精确。当此项设为
true时,scroll_speed** 会被忽略**,因为加速逻辑会接管。 - diff_style :控制版本差异(diff)的渲染方式。
"auto"会根据终端宽度自动选择布局,"stacked"则会固定显示为单列式。 - mouse :是否在 TUI 中启用鼠标捕获。默认是
true,即鼠标可以用来点击和滚动;如果设为false,鼠标会回归终端原本的选择与滚动行为,相当于把控制权交还给终端自身。
如果希望通过环境变量指定自定义的 TUI 配置文件路径,可以设置 OPENCODE_TUI_CONFIG。
隐藏用户名
还有一个容易被忽略的细节是用户名显示。在聊天消息中,默认会显示当前操作系统的用户名。如果不希望它出现,可以通过命令面板来关掉:打开 /help 或者按 ctrl+x h,然后在里面搜索 "username" 或 "hide username" 就能找到对应的开关。这个设置会自动持久化,下次再打开 OpenCode TUI 时依然保持关闭状态。
整体上看,OpenCode 的 TUI 把命令行、文件引用、模型对话和 Git 管理揉在了一起,很多操作都遵循 "少即是多" 的原则,通过简洁的语法和快捷键就能完成复杂工作流。这些能力组合起来,让直接在终端里写代码、改设计、做重构这件事情变得更流畅了。