OpenCode 使用指南
记录学习 OpenCode 的使用方法。
OpenCode 使用指南
OpenCode 是一款运行在终端中的 AI 编程助手(Terminal User Interface),提供键盘驱动的编码体验。本指南基于 v1.18.1 整理。
关于插件依赖:本指南中部分进阶能力依赖以下插件,非 OpenCode 原生功能,已逐处标注:
- [oh-my-opencode-slim] — 提供 designer、fixer、librarian、oracle、observer 等 specialist agent 类型
- [superpowers] — 提供技能系统(skill 工具、brainstorming、systematic-debugging 等工作流模板)、subagent-driven-development、AGENTS.md 委托工作流等
目录
第一部分:高效工作方法论
掌握 OpenCode 的第一步不是背快捷键,而是理解它的工作机制。以下几点直接影响你每天的实际效率。
Agent 分工机制 [oh-my-opencode-slim]
⚠️ 本节介绍的 specialist agent 类型来自 oh-my-opencode-slim 插件。OpenCode 原生仅有 orcherstrator、explore、general 等基础 agent 类型。
tab/shift+tab切换 agent 是内置功能,但可用 agent 列表依赖插件配置。
调度者(orchestrator)本身不应该做所有事,而是把专业任务分发到更有针对性的 agent。
| Agent | 擅长领域 | 使用场景 |
|---|---|---|
@explorer |
代码库搜索和模式匹配 | 需要查找文件、定位函数、理解代码结构时使用。它搜索速度是调度者的 2 倍,且只返回摘要,不膨胀上下文。 |
@librarian |
外部文档和库研究 | 需要查阅第三方库的 API、官方文档、GitHub 示例或 bug 解决方案时使用。成本和速度均优于调度者自行查阅。 |
@oracle |
架构决策、复杂调试、代码审查 | 遇到难以定位的 bug(两次尝试仍未解决)、做跨系统的架构决策、或需要独立代码审查时使用。 |
@designer |
UI/UX 设计和样式 | 用户可见的界面改动、响应式布局、动画效果等视觉相关工作。设计水平远高于调度者。 |
@fixer |
边界清晰的代码实现 | 改多文件、跨文件夹的实现工作。编辑速度是调度者的 2 倍,成本仅一半。 |
@observer |
图片、PDF、截图的视觉分析 | 需要分析设计稿、错误截图、PDF 文档等视觉内容时使用。 |
一个简单的判断原则:如果是单行修改或确认性问题,自己完成;否则,委托出去。
上下文管理
LLM 的上下文窗口是有限且昂贵的资源。每一条消息都在消耗 token,而 token 直接影响成本和响应质量。
- 不要让调度者直接读取大文件。用
@explorer搜索特定行或模式,它读完只返回摘要。 - 一个消息只问一个核心问题。把多个问题拆分,逐个处理,比挤在一轮里结果更好。
- 复杂需求先写计划、达成共识、再执行。不要在方向模糊时就开始写代码。
背景并行任务
这是最能提升效率的技巧:把没有依赖关系的任务同时发给不同 agent,而不是串行等待。
❌ 低效模式:
调度者搜文件 → 找到 → 调查文档 → 查到 → 开始改
✅ 高效模式:
调度者同时发起:
├── @explorer 搜索接口定义 ───┐
└── @librarian 查阅库文档 ──┤
两者完成后 ←──────────────┘
调度者整合结果,规划修改方案
判断标准:如果两个任务之间没有依赖关系,就应该并行执行。
委托决策参考 [oh-my-opencode-slim]
下面这张对照表总结了最常见的“自己动手”误区:
| 习惯做法 | 更好的方式 | 效率差异 |
|---|---|---|
| “让我搜一下这个文件在哪” | 交给 @explorer |
搜索 2x 快,成本 1/2 |
| “让我看看这个库的文档” | 交给 @librarian |
查阅 2x 快,成本 1/2 |
| “这个改动很直观,我自己改” | 交给 @fixer |
编辑 2x 快,成本 1/2 |
| “这个 UI 我来调一下” | 交给 @designer |
设计水平 10x |
会话复用
多次委托同一个 agent 时,传入 task_id 可以复用该 agent 之前的会话上下文。这避免了每一次都重新理解项目和环境,显著降低 token 开销。这是 OpenCode 内置的 task 工具功能。
技能与工作流模板 [superpowers]
⚠️ 技能系统(
skill工具及所有技能文件)来自 superpowers 插件。未安装时,OpenCode 不提供这些工作流模板。
OpenCode 的技能系统为常见工作场景提供了预置流程。有对应技能时优先加载,它提供了完整的工作清单。下表列出最常用的几个:
| 场景 | 推荐流程 |
|---|---|
| 需求模糊,不知道从哪里开始 | 先做头脑风暴(brainstorming),问清楚再动手 |
| 遇到 bug 需要排查 | 使用系统化调试(systematic-debugging),而非盲目尝试 |
| 开发新功能 | 先写计划(writing-plans),再用 TDD(test-driven-development),有方案有测试再实现 |
| 修改 UI 界面 | 加载 Vue 最佳实践(vue-best-practices)+ 交给 @designer |
| 改动完成准备收尾 | 运行完成前验证(verification-before-completion),避免遗漏 |
描述需求与验收标准
指令的清晰度直接决定输出质量:
❌ 模糊指令:
"把这个页面改好看点"
✅ 明确指令:
"把按钮间距从 8px 改为 16px,
卡片圆角改为 12px,
标题字号加大到 20px"
给出明确的验收条件后,agent 可以自主迭代到目标,无需反复确认。
如果发现某些指令反复出现,可以考虑将它们写入项目的 CLAUDE.md 或 AGENTS.md 规则文件,例如:“本项目使用 pnpm,不要用 npm”、“修改之前先跑一遍现有测试”。
第二部分:快捷键与操作
OpenCode 的交互主要靠键盘。熟悉以下快捷键后,手不用离开键盘就能完成多数操作。
输入框操作
输入框遵循 Readline/Emacs 编辑风格。最值得记住的是清空输入框(ctrl+c)和快速删除整行(ctrl+shift+d)。
光标移动
| 快捷键 | 作用 |
|---|---|
ctrl+a |
光标移动到行首 |
ctrl+e |
光标移动到行尾 |
ctrl+b 或 left |
左移一个字符 |
ctrl+f 或 right |
右移一个字符 |
alt+b 或 alt+left |
左移一个单词 |
alt+f 或 alt+right |
右移一个单词 |
文本删除
| 快捷键 | 作用 |
|---|---|
ctrl+c |
清空整个输入框 |
ctrl+u |
删除光标到行首 |
ctrl+k |
删除光标到行尾 |
ctrl+shift+d |
删除整行 |
ctrl+w 或 alt+backspace |
删除前一个单词 |
alt+d |
删除后一个单词 |
ctrl+d 或 delete |
删除光标下的字符 |
backspace |
删除光标前的字符 |
编辑与历史
| 快捷键 | 作用 |
|---|---|
ctrl+v |
粘贴 |
ctrl+z 或 cmd+z |
撤销输入 |
ctrl+. 或 cmd+shift+z |
重做输入 |
cmd+a |
全选文本 |
ctrl+t |
交换光标前后两个字符 |
ctrl+g |
取消弹窗 / 中止 AI 响应 |
ctrl+alt+k |
打开按键提示面板(Which-Key) |
up / down |
浏览输入历史 |
shift+left/right/up/down |
选区操作 |
提交与换行
| 快捷键 | 作用 |
|---|---|
Enter |
提交消息 |
shift+enter |
插入换行 |
ctrl+enter / alt+enter / ctrl+j |
换行(备用方式) |
部分终端默认不发送
shift+enter,需要在终端设置中额外配置。
Leader 键体系
OpenCode 使用 Leader 键 避免快捷键与终端冲突。默认 Leader 键为 ctrl+x,操作方式是:先按下 ctrl+x 然后松开,再按第二个键。Leader 键的等待超时默认为 2000 毫秒,可在配置中调整。
以下是完整的 Leader 键映射:
| 快捷键 | 对应命令 | 作用 |
|---|---|---|
ctrl+x n |
/new |
新建一个空白会话 |
ctrl+x l |
/sessions |
列出所有历史会话并切换 |
ctrl+x c |
/compact |
压缩会话上下文(token 接近上限时使用) |
ctrl+x u |
/undo |
撤销上一条消息,文件修改也会自动回滚(需要 Git 仓库) |
ctrl+x r |
/redo |
重做刚才撤销的操作 |
ctrl+x x |
/export |
导出会话为 Markdown,在 $EDITOR 中打开 |
ctrl+x e |
/editor |
用 $EDITOR 编写消息(适合长内容) |
ctrl+x q |
/exit |
退出 OpenCode |
ctrl+x m |
/models |
切换 AI 模型 |
ctrl+x t |
/themes |
切换界面主题 |
ctrl+x a |
— | 查看可用的 Agent 列表 |
ctrl+x s |
— | 查看当前状态 |
ctrl+x b |
— | 切换侧边栏显示 |
ctrl+x y |
— | 复制选中消息的内容 |
ctrl+x g |
— | 打开会话时间线 |
ctrl+x h |
— | 显示帮助 / 提示信息 |
ctrl+x down |
— | 跳转进入子会话 |
全局快捷键
以下快捷键无需 Leader 键,在 TUI 的任何位置都可以直接使用:
| 快捷键 | 作用 |
|---|---|
ctrl+p |
命令面板——最常用的入口,可以搜索并执行各种操作 |
ctrl+t |
循环切换模型 variant(如默认 ↔ 长思考模式) |
escape |
中断 AI 当前响应 / 关闭弹窗 / 从输入框失焦 |
tab |
切换到下一个 Agent |
shift+tab |
切换到上一个 Agent |
f2 |
切换到最近使用过的模型 |
shift+f2 |
反向切换最近使用的模型 |
ctrl+a |
查看 Provider 列表 |
ctrl+r |
重命名当前会话 |
ctrl+d |
删除当前会话(会话列表内) |
ctrl+z |
挂起终端进程(POSIX),Windows 下为撤销输入 |
ctrl+f |
模型选择对话框中添加/取消收藏 |
ctrl+? |
显示当前上下文所有可用快捷键 |
消息区导航:
| 快捷键 | 作用 |
|---|---|
pageup / pagedown |
消息区翻页 |
home / ctrl+g |
跳到消息开头 |
end / ctrl+alt+g |
跳到消息末尾 |
ctrl+alt+u / ctrl+alt+d |
消息区半页滚动 |
ctrl+alt+y / ctrl+alt+e |
消息区逐行滚动 |
子会话导航(当 agent 产生子会话时):
| 快捷键 | 作用 |
|---|---|
left / right |
在多个子会话之间切换 |
up |
回到父会话 |
第三部分:命令系统
Slash 命令
在输入框直接键入 / 加命令名即可执行。多数 Slash 命令都有对应的 Leader 键快捷键。
| 命令 | 别名 | 作用 |
|---|---|---|
/new |
/clear |
新建会话 |
/compact |
/summarize |
压缩当前会话的上下文 |
/undo |
— | 撤销上条消息,自动回滚文件改动(需要 Git 仓库) |
/redo |
— | 重做已撤销的操作 |
/sessions |
/resume, /continue |
列出并切换历史会话 |
/models |
— | 列出可用模型 |
/themes |
— | 切换主题 |
/help |
— | 显示帮助信息 |
/export |
— | 导出当前会话为 Markdown |
/editor |
— | 在外部编辑器编写长消息 |
/thinking |
— | 显示或隐藏模型的思考过程 |
/details |
— | 显示或隐藏工具执行的详细信息 |
/init |
— | 交互式创建或更新 AGENTS.md |
/exit |
/quit, /q |
退出 OpenCode |
/connect |
— | 添加新的 AI Provider |
/share |
— | 分享当前会话 |
/unshare |
— | 取消共享 |
TUI 快捷用法
除了快捷键和命令之外,输入框还支持两种特殊前缀:
| 前缀 | 用法 | 示例 |
|---|---|---|
@ |
模糊搜索并引用项目中的文件,文件内容会自动注入到对话上下文 | @src/utils/auth.ts 这个函数做了什么? |
! |
在输入框开头执行 shell 命令,命令输出会带入上下文 | !ls -la 或 !git diff |
@ 还支持引用配置好的 references(参考目录),用法为 @别名/。
第四部分:CLI 命令行
除了 TUI,OpenCode 也提供了完整的命令行接口,适合脚本化、自动化或快速操作。
启动与运行
# 基本启动
opencode # 在当前目录打开 TUI
opencode /path/to/project # 在指定目录打开 TUI
# 会话恢复
opencode -c # 继续上一次的会话
opencode -s <sessionID> # 恢复指定会话
opencode --fork # 派生会话(配合 -c 或 -s)
# 指定模型和 Agent
opencode -m openai/gpt-4 # 指定模型启动
opencode --agent explorer # 指定 Agent 启动
opencode --prompt "..." # 指定初始提示词
# 特殊模式
opencode --mini # 极简界面
opencode --auto # 自动批准权限(⚠️ 高风险)
opencode --pure # 不加载插件,干净启动
opencode --no-replay # 禁用历史回放
opencode --replay-limit 10 # 限制回放的消息数量
opencode --log-level DEBUG --print-logs # 调试模式
# 单次运行
opencode run "分析这个项目的架构" # 执行一次后退出
会话管理
opencode session list # 列出所有会话
opencode session delete <sessionID> # 删除指定会话
opencode export <sessionID> # 导出为 JSON
opencode import <file> # 从 JSON 或 URL 导入会话
模型与用量
opencode models # 列出所有可用模型
opencode models openai # 列出指定 Provider 的模型
opencode stats # 查看 token 用量和费用
opencode providers # 管理 Provider 和 API 凭证
调试工具
opencode debug config # 查看最终合并的配置
opencode debug info # 版本、系统、插件信息
opencode debug paths # 全局路径(data/config/cache/state)
opencode debug skill # 列出所有可用技能
opencode debug agent fixer # 查看指定 agent 的配置
opencode debug startup # 启动耗时分析
插件与其他
opencode plugin oh-my-opencode-slim # 安装插件
opencode plugin oh-my-opencode-slim -g # 全局安装
opencode plugin <pkg> -f # 强制替换已有版本
opencode completion # 生成 shell 自动补全脚本
opencode upgrade # 升级到最新版
opencode upgrade 1.18.0 # 升级到指定版本
opencode uninstall # 卸载并清理
opencode serve # 启动 headless 服务器
opencode web # 启动服务器并打开 Web 界面
opencode mcp # 管理 MCP 服务器
opencode pr 42 # 拉 GitHub PR 分支并启动
启动选项(服务器模式)
| 选项 | 说明 |
|---|---|
--port 8080 |
指定监听端口 |
--hostname 0.0.0.0 |
指定主机名,默认 127.0.0.1 |
--mdns |
启用 mDNS 服务发现 |
--mdns-domain myapp.local |
自定义 mDNS 域名 |
--cors https://example.com |
添加额外 CORS 域名 |
第五部分:配置与定制
tui.json 配置
TUI 的界面行为通过 ~/.config/opencode/tui.json 控制(也支持 .jsonc 格式)。这个文件独立于 opencode.json(后者控制运行时行为)。keybinds 字段与内置默认值合并,这意味着只需写你要改的项。
{
"$schema": "https://opencode.ai/tui.json",
"theme": "opencode",
"leader_timeout": 2000,
"keybinds": {
"leader": "ctrl+x"
},
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true,
"attention": {
"enabled": true,
"notifications": true,
"sound": true,
"volume": 0.4,
"sound_pack": "opencode.default",
"sounds": {
"error": "./sounds/error.mp3"
}
}
}
各配置项说明
外观
| 配置项 | 说明 |
|---|---|
theme |
界面主题,默认为 "opencode" |
diff_style |
Diff 展示风格。"auto" 自适应宽度,"stacked" 始终单列 |
mouse |
是否启用鼠标捕获。默认 true,设为 false 恢复终端原生选择/滚动 |
快捷键
| 配置项 | 说明 |
|---|---|
keybinds.leader |
修改 Leader 键,默认 ctrl+x |
leader_timeout |
Leader 键后等待第二键的超时时间(毫秒),默认 2000 |
滚动
| 配置项 | 说明 |
|---|---|
scroll_speed |
滚动速度,默认 3,最小值 0.001 |
scroll_acceleration.enabled |
启用 macOS 风格滚动加速。开启后 scroll_speed 被忽略 |
通知与声音
| 配置项 | 说明 |
|---|---|
attention.enabled |
总开关,默认 false |
attention.notifications |
终端失焦时的桌面通知,默认 true |
attention.sound |
播放提示音,默认 true |
attention.volume |
音量 0-1,默认 0.4 |
attention.sound_pack |
音效包 ID,默认 "opencode.default" |
attention.sounds |
按事件覆盖音效文件,支持 default、question、permission、error、done、subagent_done |
快捷键绑定语法
{
"keybinds": {
"action_name": "ctrl+k",
"multi_keys": "ctrl+a,ctrl+b",
"array_keys": ["ctrl+a", "ctrl+b"],
"disable_key": "none",
"advanced": {
"key": "ctrl+v",
"preventDefault": false
}
}
}
- 绑定值可以是字符串(支持逗号分隔多键)、数组或对象(高级用法)
- 设
"none"或false可禁用某个快捷键 <leader>指代当前 Leader 键- macOS 上用
super表示 Cmd 键 - 可通过环境变量
OPENCODE_TUI_CONFIG指定自定义配置文件路径
命令面板中的隐藏设置
通过 ctrl+p 打开命令面板后,可以搜索并切换一些界面设置,这些设置会自动持久化:
- 搜索
username或hide username:切换聊天消息中用户名的显示
编辑器集成
ctrl+x e(外部编辑)和 ctrl+x x(导出)会调用系统配置的 EDITOR。在 ~/.zshrc 或 ~/.bashrc 中添加:
export EDITOR="code --wait" # VS Code
export EDITOR="nvim" # Neovim
export EDITOR="vim" # Vim
export EDITOR="nano" # Nano
export EDITOR="subl --wait" # Sublime Text
GUI 编辑器需要
--wait参数,表示进程会一直阻塞直到窗口关闭。
第六部分:进阶功能
Agent 体系 [oh-my-opencode-slim]
⚠️ orchestrator 是 OpenCode 原生 agent;explorer、librarian、fixer、oracle、designer、observer 由 oh-my-opencode-slim 插件提供;councillor 由 superpowers 插件提供。
tab/shift+tab切换 agent 是内置功能,但可用列表依赖插件配置。
| Agent | 来源 | 角色定位 |
|---|---|---|
| orchestrator | OpenCode 原生 | 默认调度者,负责任务分析、分发和协调。它不是执行者,而是管理者。 |
| explorer | oh-my-opencode-slim | 代码库搜索专家。快速定位文件、符号和代码模式,只返回摘要而非原始内容。 |
| librarian | oh-my-opencode-slim | 外部知识专家。获取第三方库的最新文档、API 参考和 GitHub 实例。 |
| fixer | oh-my-opencode-slim | 快速执行专家。接收明确的任务规格,高效完成代码编辑工作。 |
| oracle | oh-my-opencode-slim | 高级架构顾问。处理架构决策、复杂调试、代码审查和简化建议。 |
| designer | oh-my-opencode-slim | UI/UX 设计专家。负责视觉层次、响应式布局、动画效果和交互体验。 |
| observer | oh-my-opencode-slim | 视觉分析专家。解析图片、截图、PDF 和图表,提取结构化描述。 |
| councillor | superpowers | 只读架构咨询,属于 oracle 体系的一部分。 |
通知与声音
当 attention.enabled 设为 true 后:
- 声音提醒:所有内置事件(完成、报错、请求权限等)都会播放音效。
- 桌面通知:非子 agent 事件(权限请求、会话完成、错误)在终端失焦时会发送系统通知。
- 事件类型:
default、question、permission、error、done、subagent_done,每种事件的音效均可单独覆盖。