Skip to main content

OpenCode 常用命令

· 5 min read

OpenCode 命令体系 纯 markdown 驱动,工作流可沉淀成可复用命令——零代码扩展,迁过来上手成本低。

  1. 核心命令 4 条/init / /compact / /clear / /undo,覆盖会话生命周期。
  2. 自定义命令.opencode/command/*.md 放 markdown 即生效,业务团队也能贡献
  3. 高频工作流:新项目 /init → 改 AGENTS.md → 写专属命令;改 Bug 走 /undo 兜底。
  4. 更新机制:默认启动自检;手动 opencode upgrade,跨大版本前看 CHANGELOG。
  5. 选型标准多 provider 切选 OpenCode,只用 Claude 选 Claude Code。

OpenCode 经常被拿来和 Claude Code 比,两者定位其实不一样

Claude Code 是 Anthropic 自家产品的命令行前端,而 OpenCode 是真正意义上的开源 AI Agent——模型、provider、UI 都可以换。对经常要在不同模型之间切来切去的人来说,OpenCode 更灵活。

但灵活也意味着学习成本:命令体系、配置文件、扩展方式都和 Claude Code 不一样。这篇整理我用得最多的几条命令,省得每次都去翻文档。

核心命令:让 OpenCode 跑起来

/init 启动项目

新项目接入 OpenCode 的第一步:

/init

它会扫描项目结构,生成 AGENTS.md(也有版本叫 CLAUDE.md),把项目的技术栈、目录结构、约定写进去。下次再让 OpenCode 改代码,它就知道这是 Vue 项目还是 Next.js,不用每次都解释一遍。

最佳实践:生成完 AGENTS.md人工检查一遍,把 OpenCode 没识别出来的部分手动补上(部署流程、CI 命令、测试约定),别全信它自己写的。

/compact 压缩上下文

对话变长之后,token 消耗会指数级上升。这时候:

/compact

OpenCode 会调用模型把当前对话历史压缩成一段摘要,塞回上下文,腾出 token 空间

注意:压缩会丢失细节。如果当前对话里有什么特别重要的中间结论,先复制出来再压缩,否则后面再问起来 OpenCode 可能一脸茫然。

/clear 清空上下文

/clear

直接清空当前会话。和 /compact 不一样——这个不保留任何东西。

我一般两种用法:

  • 同一个项目切不同任务时,先 /clear 再开新对话,避免上下文污染
  • /compact 之后发现还是太乱,直接 /clear 推倒重来

/undo 回滚修改

OpenCode 改文件之后反悔了:

/undo

它会回退到上一次的状态。注意这个只回退 OpenCode 自己改的文件,不会回退你手动改的东西。

自定义命令:让 OpenCode 适配你的工作流

OpenCode 支持自定义命令,在项目根目录的 .opencode/command/ 下放 markdown 文件:

<!-- .opencode/command/deploy.md -->

部署当前项目到测试环境。

执行步骤:
1. 运行 `pnpm build`
2. 运行 `pnpm test`
3. 部署到测试服务器

之后在 OpenCode 里输入 /deploy 就会触发。

关键点:自定义命令就是普通的 markdown,不写代码也能扩展。这是 OpenCode 比很多同类工具更顺手的地方——业务团队也能贡献命令,不用碰 TypeScript。

全局命令可以放在 ~/.config/opencode/command/,对所有项目生效。

文件引用(@path)和 Shell 调用(!cmd)是两个最高频的快捷语法,详细用法见 OpenCode 文件引用与 Shell 调用

我的常用组合

  1. 新项目接入/init → 改 AGENTS.md → 写 .opencode/command/ 下的项目专属命令
  2. 改 Bug 流程!git status 看当前改了什么 → 直接描述问题 → 改完用 /undo 兜底
  3. 长对话维护:发现 OpenCode 开始"忘事"就 /compact,实在不行 /clear 重来

怎么选 OpenCode 还是 Claude Code

简单粗暴的判断标准:

  • 只用 Anthropic 模型 + 想要最丝滑的体验:选 Claude Code
  • 要在多个 provider 之间切换 + 需要自定义扩展:选 OpenCode
  • 团队项目 + 需要写业务专属命令:选 OpenCode
  • 个人项目 + 不想折腾配置:选 Claude Code

两者命令体系很相似(/init/compact/clear 这些都有),但配置文件、扩展方式、provider 切换这些底层逻辑差异很大。混用之前先看一遍 OpenCode 的官方文档,别直接拿 Claude Code 的经验套。

说白了,工具只是手段,真正决定效率的是你能不能把工作流沉淀成可复用的命令。OpenCode 在这点上做得比多数同类工具都开放。

怎么更新 OpenCode

OpenCode 默认启动时自动检查更新。要禁用设 OPENCODE_DISABLE_AUTOUPDATE=true 即可。

手动更新走 OpenCode 自带的 upgrade 命令,记得用 -m 告诉它当初是怎么装的:

opencode upgrade # 升到最新版
opencode upgrade v0.1.48 # 升到指定版本
opencode upgrade -m brew # 指定安装方式:curl / npm / pnpm / bun / brew

如果当初装的时候没走 opencode upgrade(比如直接用包管理器),各家的命令分别是:

brew upgrade anomalyco/tap/opencode # Homebrew
npm i -g opencode-ai@latest # npm
pnpm add -g opencode-ai@latest # pnpm
mise use -g opencode@latest # mise

提醒:跨大版本(比如 0.1.x → 0.2.x)之前看一眼 CHANGELOG,配置结构偶尔会动。升完发现 opencode.json 报 schema 错误别慌,删几个废弃字段就行。

References

  1. OpenCode 官方文档 —— OpenCode Team
  2. OpenCode GitHub Repository —— SST
  3. OpenCode Config Schema —— 主配置 JSON Schema
  4. OpenCode Keybinds 文档 —— 默认快捷键全表