znlgis 博客

GIS开发与技术分享 — GDAL · GeoServer · PostGIS · QGIS · OpenLayers · Cesium · FreeCAD · NPOI

第三章:界面操作、会话管理与内置命令

本章介绍 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”: “n", "session_list": "l", "session_compact": "c", "agent_cycle": "tab", "agent_cycle_reverse": "shift+tab", "variant_cycle": "ctrl+t", "model_list": "m" } }


`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:为当前会话生成一个可分享的链接并复制到剪贴板(默认不自动分享,可在配置中改为 autodisabled,见第四章)。
  • /export:把对话导出为 Markdown,用 $EDITOR 打开,便于归档或写文档。

3.8 小结

本章覆盖了 TUI 的核心交互、全部常用内置命令、键位与会话管理,以及两个对成本优化至关重要的工具:/compactopencode stats。从下一章开始,我们进入本教程的核心——OpenCode 的配置体系。