跳转到内容

TUI

OpenCode 提供了一个交互式终端界面(TUI),用于与 LLM 一起处理你的项目。

为当前目录启动 OpenCode:

opencode

或针对特定目录:

opencode /path/to/project

文件引用

你可以在消息中使用 @ 引用文件。这会进行模糊文件搜索:

How is auth handled in @packages/functions/src/api/index.ts?

文件内容会自动添加到对话中。

配置的引用也会出现在 @ 自动补全中。

输入 @alias 可将已配置的引用根目录添加为上下文,或输入 @alias/ 自动补全其中的文件。详见 References。

Bash 命令

以 ! 开头的消息会作为 shell 命令执行:

!ls -la

命令输出会添加到对话中。

命令

输入 / 后跟命令名来执行操作:

/help

大多数命令有使用 ctrl+x 作为默认 leader 键的键盘快捷键。

Connect

向 OpenCode 添加 provider:

/connect

Compact

压缩当前会话内容为摘要。别名:/summarize

快捷键: ctrl+x c

Details

切换工具执行详情显示:

/details

Editor

使用外部编辑器撰写消息。使用 EDITOR 环境变量。

快捷键: ctrl+x e

Exit

退出 OpenCode。别名:/quit、/q

快捷键: ctrl+x q

Export

将对话导出为 Markdown 并在编辑器中打开。

快捷键: ctrl+x x

Help

显示帮助对话框:

/help

Init

引导创建或更新 AGENTS.md。

Models

列出可用的 AI 模型。

快捷键: ctrl+x m

New

开始新会话。别名:/clear

快捷键: ctrl+x n

Redo

重做被撤销的消息。仅在 /undo 之后可用。

注意: 文件更改也会一并恢复。内部使用 Git,因此项目必须是 Git 仓库。

快捷键: ctrl+x r

Sessions

列出和切换会话。别名:/resume、/continue

快捷键: ctrl+x l

Share

分享当前会话以便协作。

Themes

列出可用的主题。

快捷键: ctrl+x t

Thinking

切换思考/推理块显示。启用后,你可以看到模型的推理过程。

注意: 这仅控制显示,不控制实际推理能力。使用 ctrl+t 切换推理。

Undo

撤销上一条消息。移除最新的用户消息、所有后续响应以及任何文件更改。

注意: 内部使用 Git 管理文件更改。项目必须是 Git 仓库。

快捷键: ctrl+x u

Unshare

取消分享当前会话。

编辑器设置

/editor 和 /export 都使用你 EDITOR 环境变量中的编辑器。

Linux/macOS:

export EDITOR=nano  # 或 vim
export EDITOR="code --wait"  # 用于 VS Code

Windows (CMD):

set EDITOR=notepad
set EDITOR=code --wait

Windows (PowerShell):

$env:EDITOR = "code --wait"

要让设置永久生效,在 Linux/macOS 上将其添加到 shell 配置文件(~/.bashrc、~/.zshrc),在 Windows PowerShell 上添加到你的 PowerShell 配置文件,或在 Windows CMD 上使用系统属性 > 环境变量。

常用的编辑器选项包括 code(VS Code)、cursor(Cursor)、windsurf(Windsurf)、nvim(Neovim)、vim、nano、notepad(Windows 记事本)和 subl(Sublime Text)。

配置

通过 tui.json 自定义 TUI 行为:

{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "opencode",
  "leader_timeout": 2000,
  "keybinds": {
    "leader": "ctrl+x",
    "command_list": "ctrl+p"
  },
  "scroll_speed": 3,
  "diff_style": "auto",
  "mouse": true,
  "attention": {
    "enabled": true,
    "notifications": true,
    "sound": true,
    "volume": 0.4
  }
}

tui.json 与 opencode.json 相互独立,后者用于配置服务端/运行时行为。tui.json 的 keybinds 条目会与内置默认值合并,因此只需设置想要修改的快捷键。

选项

  • theme - 设置你的 UI 主题
  • keybinds - 自定义键盘快捷键
  • leader_timeout - leader 键后的等待时间(默认:2000)
  • scroll_speed - 控制滚动速度(默认:3)
  • diff_style - Diff 渲染:"auto" 或 "stacked"
  • mouse - 启用/禁用鼠标捕获(默认:true)
  • attention - 桌面通知和声音
  • cursor - 输入框中的终端光标:style 默认为 "block"(可为 "underline"、"line" 或 "default"),blinking 默认为 true("default" 表示恢复终端光标并忽略 blinking)
  • scroll_acceleration.enabled - macOS 风格的滚动加速;启用时优先于并覆盖 scroll_speed

使用 OPENCODE_TUI_CONFIG 加载自定义 TUI 配置路径。注意 scroll_speed 支持小至 0.001 的小数值,且在 scroll_acceleration.enabled 为 true 时会被忽略。

Attention

配置 TUI 通知和声音:

  • enabled - 启用所有 attention 功能(默认:false)
  • notifications - 桌面通知(默认:true)
  • sound - Attention 声音(默认:true)
  • volume - 声音音量 0-1(默认:0.4)
  • sound_pack - 声音包 ID(默认:opencode.default)
  • sounds - 覆盖 default、question、permission、error、done 或 subagent_done 的声音文件;路径可为绝对路径、file:// URL 或相对于 tui.json 的相对路径

Attention 的触发时机包括提问、权限请求、会话出错以及会话完成。非 subagent 事件仅在终端失焦时才请求桌面通知。

自定义

你可以通过命令面板(ctrl+p)自定义 TUI 视图:

  • 用户名显示 - 切换聊天消息中是否显示你的用户名