OpenCode 入门:在终端里用开源 agent 写代码
AI coding agent 这个品类已经过了"又一个代码助手"的阶段。现在的问题是:能不能不依赖某个公司的客户端,用开源的、跑在自己终端里的 agent 来替代?
OpenCode 是我用来回答这个问题的工具。181k GitHub stars,MIT 协议,维护团队是 Anomaly。它不存代码、不限制模型、不用 Electron——一个终端 TUI、一个 npm 包、一个桌面客户端,三个形态共享同一个后端。
我的日常开发已经完全切到 OpenCode:本博客的所有文章、herdr 的配置、Waza 技能的安装和应用,都在 OpenCode 里完成。这篇文章就是 opencode 帮我写的——从资料收集、结构设计到草稿生成,我负责审阅和调整。

安装
一行命令:
curl -fsSL https://opencode.ai/install | bash
也支持包管理器:
| 平台 | 命令 |
|---|---|
| npm | npm i -g opencode-ai |
| Homebrew | brew install anomalyco/tap/opencode |
| Arch | sudo pacman -S opencode 或 paru -S opencode-bin |
| Windows (WSL) | 推荐 WSL + 以上任意方式 |
| Windows (原生) | scoop install opencode / choco install opencode |
| mise | mise use -g opencode |
| nix | nix run nixpkgs#opencode |
| Docker | docker run -it --rm ghcr.io/anomalyco/opencode |
桌面客户端(beta)从 releases 页面 下载,支持 macOS、Windows、Linux。IDE 扩展在 VS Code 和 Zed 中可用。
安装路径优先级:$OPENCODE_INSTALL_DIR > $XDG_BIN_DIR > $HOME/bin > $HOME/.opencode/bin。
配置模型
OpenCode 不绑定任何模型。启动后运行 /connect,从 75+ 提供商中选择。
/connect
选项包括:
| 来源 | 说明 |
|---|---|
| GitHub Copilot | 登录 GitHub 直接用 Copilot 额度 |
| ChatGPT Plus/Pro | 登录 OpenAI 用 Plus/Pro 额度 |
| OpenCode Zen | 团队精选的编码模型,需要注册并充值 |
| 任意 API Key | Anthropic、OpenAI、OpenRouter、DeepSeek 等 |
Zen 的定位是省心的选择——不关心哪个模型最好、不用管提供商稳定性,OpenCode 团队已经测试过。模型列表包含 Claude、GPT、Gemini 等主流模型。
API key 保存在本地,OpenCode 记录声明不存储任何代码或上下文数据。
初始化项目
进入项目目录,启动 opencode:
cd /path/to/project
opencode
首次使用建议运行 /init,OpenCode 会自动分析项目结构,生成 AGENTS.md。这个文件告诉 agent 项目的技术栈、构建命令、代码规范——建议提交到 Git,后续每次 agent 启动都会读取它。
两个 agent 模式
OpenCode 内置两个 agent,按 Tab 切换。左下角会显示当前模式。
Build 模式(默认)
完全权限,可以读写文件、执行命令、安装依赖。日常开发的主力模式。
Plan 模式
只读模式。默认禁止修改文件,执行命令前会询问确认。适合:
- 探索不熟悉的代码库
- 让 agent 先出方案再动手
- 审核 agent 提出的改动计划
Tab 切换是交互核心:先在 Plan 模式里让 agent 分析,确认方案没问题,切到 Build 模式让它执行。
还有一个 general 子 agent,用于复杂搜索和多步骤任务,内部通过 @general 调用。
日常用法
理解代码
用 @ 模糊搜索文件,然后直接问:
How is authentication handled in @packages/functions/src/api/index.ts
OpenCode 会自动加载相关文件,结合 LSP 提供的信息,给出有上下文的解答。不需要手动打开文件再复制粘贴。
添加功能
先 Plan 后 Build 的工作流:
- 按 Tab 切换到 Plan 模式
- 描述需求,给足上下文:
当用户删除一条笔记时,需要把这条笔记标记为已删除,而不是物理删除。
然后做一个"最近删除"页面,列出已删除的笔记。
从那里可以恢复或永久删除。
- agent 给出方案后,审阅并给反馈:
用这张截图作为设计参考 [拖入图片]
- 审阅通过,Tab 切回 Build 模式:
方案没问题,开始改。修改代码
直接给指令:
给 /settings 路由加上认证逻辑。参考 @packages/functions/src/notes.ts 里对 /notes 的做法,
在 @packages/functions/src/settings.ts 里实现。
OpenCode 读取引用文件理解模式,再应用到目标文件。LSP 确保改动符合项目已有的 API 和类型。
撤销和重做
/undo # 撤销上一步
/redo # 重做被撤销的步骤
/undo 可以连续执行多次,回退多步。回到之前的状态后可以修改提示词再试。
关键功能
Session 分享
/share
生成会话链接并复制到剪贴板。接收方看到完整的对话记录和改动清单。不分享代码本身,只分享对话。适合:
- 让同事看 agent 的改动方案
- 调试 agent 行为
- 记录复杂任务的过程
图片输入
拖拽图片到终端即可添加到提示词。OpenCode 读取图片内容并融入上下文。适合 UI 改动时提供设计稿作为参考。
LSP 支持
OpenCode 自动检测项目语言并加载对应的 LSP(Language Server Protocol)。agent 依赖 LSP 获取类型信息、查找定义、理解调用关系——不用手动描述代码结构。
自定义
OpenCode 的扩展点全部开放,都在项目目录的 .opencode/ 下:
| 扩展 | 文件 | 说明 |
|---|---|---|
| rules | .opencode/rules/ | 编码规则,全局生效 |
| commands | .opencode/commands/ | 自定义 / 命令 |
| agents | .opencode/agents/ | 自定义 agent |
| skills | .opencode/skills/ | 技能定义(SKILL.md) |
| permissions | opencode.json | 权限规则(文件/命令) |
| keybinds | opencode.json | 快捷键 |
| themes | opencode.json | 终端主题 |
| formatters | opencode.json | 代码格式化 |
| mcp servers | opencode.json | MCP 服务配置 |
主题可以在 /docs/themes 里浏览和复制。快捷键支持自定义绑定。MCP 服务器让 agent 连接外部工具(数据库、API、浏览器等)。
总结
OpenCode 的定位很明确:开源的、终端里的 AI coding agent。不绑定模型、不存储代码、不强迫换编辑器。
我在日常开发中的实际使用方式:
- 新功能:Plan → 审阅方案 → Build
- 修 bug:直接 Build 模式,让 agent 先读代码再修
- 探索陌生仓库:Plan 模式,
/init后逐个模块问 - 重构:Build 模式下逐段迁移,每段
/undo检查后再继续
对于已经习惯终端开发流程的工程师,OpenCode 是参与 AI coding agent 这个方向的最低门槛工具。
参考