第三章:界面操作、会话管理与内置命令
本章介绍 OpenCode 终端界面(TUI)的核心操作、内置斜杠命令、键位绑定与会话管理。熟练掌握这些能大幅提升日常效率,也为后续的配置定制打下基础。
3.1 TUI 基本交互
启动 opencode 后进入全屏交互界面。常见操作:
- 输入消息:直接键入需求并回车发送。
@引用文件:输入@触发模糊搜索,把文件加入上下文。例如@src/app.ts。- 拖入图片:把图片拖进终端即可作为多模态输入(需模型支持)。
Tab切换主智能体:在 build / plan 间循环切换(见第六章)。@调用子智能体:例如@general 帮我搜索这个函数。- 中断生成:
Esc打断当前回答。
3.2 斜杠命令(Slash Commands)
在输入框中输入 / 即可唤起命令列表。下面是常用内置命令:
| 命令 | 作用 | 默认键位 |
|---|---|---|
/help |
显示帮助 | — |
/connect |
添加提供商并填入 API Key | — |
/models |
列出并切换模型 | ctrl+x m |
/themes |
列出并切换主题 | ctrl+x t |
/init |
引导生成 / 更新 AGENTS.md |
— |
/new(别名 /clear) |
开始新会话 | ctrl+x n |
/sessions(别名 /resume /continue) |
列出并切换历史会话 | ctrl+x l |
/compact(别名 /summarize) |
压缩当前会话上下文 | ctrl+x c |
/undo |
撤销最近一条消息及其文件改动 | ctrl+x u |
/redo |
重做被撤销的改动 | ctrl+x r |
/share |
分享当前会话(生成链接) | — |
/unshare |
取消分享 | — |
/details |
切换工具执行细节的显示 | — |
/thinking |
切换思考 / 推理块的显示 | — |
/editor |
用外部编辑器撰写消息(依赖 $EDITOR) |
ctrl+x e |
/export |
导出当前对话为 Markdown 并用编辑器打开 | ctrl+x x |
/exit(别名 /quit /q) |
退出 OpenCode | ctrl+x q |
注意:
/thinking只控制是否显示推理块,不会开关模型的推理能力;要切换真正的推理强度,用ctrl+t在模型变体(variant)间循环(见第五章)。
自定义命令(第七章)会与内置命令并列出现,同名时自定义命令会覆盖内置命令。
3.3 在提示中执行 Bash
TUI 支持把 bash 命令的输出注入到提示里,这在自定义命令中尤其有用(详见第七章)。这让你能把「当前测试结果」「最近的 git 提交」等动态信息直接喂给模型,而不必手动复制粘贴。
3.4 键位绑定(Keybinds)
OpenCode 的 TUI 键位可在 tui.json 中自定义(注意:是独立的 tui.json,不是 opencode.json)。键位采用「leader 键 + 后续键」的模式,默认 leader 是 ctrl+x:
```json title=”tui.json”
{
“$schema”: “https://opencode.ai/tui.json”,
“leader_timeout”: 2000,
“keybinds”: {
“leader”: “ctrl+x”,
“command_list”: “ctrl+p”,
“session_new”: “
`keybinds` 会与内置默认值**合并**,你只需要写你想改的那几个;把某个键设为 `"none"` 可以禁用它。常用的几个值得记住的键位:
- `tab` / `shift+tab`:在主智能体之间循环。
- `ctrl+t`:循环切换当前模型的变体(推理强度)。
- `<leader>c`:压缩当前会话(省 Token 的关键操作,见第九章)。
- `<leader>n`:开新会话(避免上下文膨胀)。
- `escape`:中断当前生成。
完整键位清单见官方 keybinds 文档或 `tui.json` 的 Schema 提示。
---
## 3.5 会话管理
每一次对话都是一个**会话(session)**,OpenCode 会持久化它们,便于回溯与续聊。
- **新建会话**:`/new`(`ctrl+x n`)。开新会话能丢弃旧上下文、显著降低 Token——养成「一个任务一个会话」的习惯。
- **切换 / 续聊历史会话**:`/sessions`(`ctrl+x l`),或在 CLI 用 `opencode run -c`(继续上一次)/ `-s <session-id>`(指定会话)。
- **子会话导航**:当子智能体创建子会话时,用 `session_child_first`(默认 `<leader>+Down`)进入第一个子会话,再用方向键在父/子会话间穿梭(`Right`/`Left` 循环子会话,`Up` 返回父会话)。
- **撤销 / 重做**:`/undo` 移除最近一条用户消息及其后的所有回复与文件改动;`/redo` 恢复。二者基于 Git 快照。
- **压缩会话**:`/compact` 把长上下文总结为更短的摘要,释放上下文窗口(详见第九章)。
### 命令行下的会话操作
```bash
opencode session list # 列出会话
opencode session delete <id> # 删除会话
opencode run -c "继续" # 继续最近一次会话
opencode run --continue --fork "在副本上继续" # 复刻会话后继续
3.6 用量统计(opencode stats)
想知道自己花了多少 Token、多少钱,用 opencode stats:
opencode stats # 全部历史统计
opencode stats --days 7 # 最近 7 天
opencode stats --models 5 # 显示用量 Top 5 的模型
opencode stats --tools 10 # 显示工具调用次数
opencode stats --project "" # 只看当前项目
这是做「成本优化」时最重要的反馈工具:先用它看清钱花在哪个模型、哪些工具、哪些会话上,再有针对性地优化(第九章会反复用到它)。
3.7 分享与导出
/share:为当前会话生成一个可分享的链接并复制到剪贴板(默认不自动分享,可在配置中改为auto或disabled,见第四章)。/export:把对话导出为 Markdown,用$EDITOR打开,便于归档或写文档。
3.8 小结
本章覆盖了 TUI 的核心交互、全部常用内置命令、键位与会话管理,以及两个对成本优化至关重要的工具:/compact 和 opencode stats。从下一章开始,我们进入本教程的核心——OpenCode 的配置体系。