3. 会话与基本用法
这是什么:会话(session) = opencode 的一段连续对话加它改过的文件;TUI = 那个全屏的终端界面,你平时就待在里面。
为什么用:装好只是能说话,真正省时间的是「会提问、会看回滚、会切会话」。不会用的人只会得到一份啰嗦的答案,会用的人能拿到一整个能跑的改动。
如何用:本章从「进项目」讲起,先用三种提问姿势拿到结果,再把 @、! 两个提效符号和撤销机制用起来。
3.1 开工三步
cd /path/to/your/project
opencode
进去以后先敲一条斜杠命令,给项目建一份说明文件:
/init
/init 会扫描你的仓库,生成一个 AGENTS.md——里面记着构建命令、测试命令、目录结构、代码约定。记得把它提交进 Git:以后每次开新会话,opencode 都会先读它,你不用重复交代背景。
3.2 三种提问姿势
| 姿势 | 怎么用 | 典型问题 |
|---|---|---|
| 问代码 | 直接问 | 「登录逻辑在哪个文件里?」 |
| 先规划 | 按 Tab 切到 Plan 模式,右下角有指示 |
「给用户表加软删除字段,先给方案别动代码」 |
| 直接动手 | 再按 Tab 回到 Build 模式 |
「方案没问题,去改吧」 |
Plan 模式默认不允许改文件(只允许写进 ~/.opencode/plan/ 目录),正好用来做「先想清楚再动手」。
提问像跟团队里的初级开发者说话:给足上下文、给例子,别指望它猜。
notes 路由里的鉴权是怎么做的?参考 @src/routes/notes.ts,
不要动代码,先讲清楚调用链。
3.3 两个提效符号
@:模糊搜索并引用文件,内容会自动塞进对话,不用复制粘贴!:直接跑一条 shell 命令,输出作为工具结果加进对话
@src/routes/settings.ts 里缺少鉴权,照着 @src/routes/notes.ts 补上
!ls -la migrations/
你会看到(示意):
read src/routes/settings.ts
read src/routes/notes.ts
shell ls -la migrations/
edit src/routes/settings.ts
拖一张图片进终端,opencode 也能看图——截图里的报错可以直接扔给它。
3.4 后悔了:/undo 和 /redo
改错了不用慌:
/undo
它会撤掉上一条消息、模型的全部回答,以及文件改动;/redo 再把它们恢复回来。可以连按多次,一层层回退。
⚠️ 撤销是用 Git 实现的,所以你的项目得是个 Git 仓库才能用
/undo//redo。这不是 bug,是设计。
3.5 管理多个会话
opencode -c # 继续上一次会话
opencode session list -n 10 # 列出最近 10 个会话
opencode run "解释一下这个项目的鉴权流程" # 非交互模式,跑完就退出
界面里的对应操作:/sessions(别名 /resume、/continue)列出并切换会话,/new(别名 /clear)开一个全新的。
| 场景 | 建议 |
|---|---|
| 一个功能改到底 | 单个会话一路聊下去 |
| 同时推进三件事 | 三个会话各开一个,互不污染上下文 |
| 试不同方案 | opencode -c --fork 从上次会话分叉出一条新支线 |
3.6 常用斜杠命令 & 快捷键
| 命令 | 作用 | 快捷键 |
|---|---|---|
/init |
生成 / 更新 AGENTS.md |
— |
/models |
切换模型 | Ctrl+X 然后 M |
/new |
新会话 | Ctrl+X 然后 N |
/sessions |
会话列表 | Ctrl+X 然后 L |
/undo / /redo |
撤销 / 重做 | Ctrl+X 然后 U / R |
/compact |
压缩上下文(/summarize) |
Ctrl+X 然后 C |
/export |
导出对话为 Markdown | Ctrl+X 然后 X |
/editor |
用外部编辑器写长提示词 | Ctrl+X 然后 E |
Tab |
切换 Build / Plan | Tab |
| 命令面板 | 搜所有动作 | Ctrl+P |
Ctrl+X 叫 leader 键(前缀键),按完它等 2 秒(可调)再按第二个键,不会和终端本身的快捷键打架。
动手改
- 在你的项目里敲
/init,看完生成的AGENTS.md,手动补一条它没写到的规矩(比如「数据库迁移必须手写 SQL,不许用 ORM 自动生成」)。 - 用 Plan 模式问一个你项目里的真实问题,看它给出的方案;不满意就用
/undo撤掉,改用 Build 模式让它直接动手。 - 故意提一个含糊的问题(「优化一下代码」),对比一下它给出的追问,和你把需求写具体之后的差别。
小结
- 流程:
cd进项目 →opencode→/init生成AGENTS.md→ 开工 - 三种姿势:问代码、Plan 模式(
Tab切换,不许改文件)、Build 模式(动手) - 两个符号:
@引用文件、!跑命令 /undo//redo靠 Git 实现,项目必须是 Git 仓库- 多任务就多开会话:
/new、/sessions、opencode session list
下一章:自定义 agent 与命令 🐸