OpenCode 入门:在终端里用开源 agent 写代码

2026-06-30

AI coding agent 这个品类已经过了"又一个代码助手"的阶段。现在的问题是:能不能不依赖某个公司的客户端,用开源的、跑在自己终端里的 agent 来替代?

OpenCode 是我用来回答这个问题的工具。181k GitHub stars,MIT 协议,维护团队是 Anomaly。它不存代码、不限制模型、不用 Electron——一个终端 TUI、一个 npm 包、一个桌面客户端,三个形态共享同一个后端。

我的日常开发已经完全切到 OpenCode:本博客的所有文章、herdr 的配置、Waza 技能的安装和应用,都在 OpenCode 里完成。这篇文章就是 opencode 帮我写的——从资料收集、结构设计到草稿生成,我负责审阅和调整。

OpenCode 终端界面(opencode 主题)

安装

一行命令:

curl -fsSL https://opencode.ai/install | bash

也支持包管理器:

平台命令
npmnpm i -g opencode-ai
Homebrewbrew install anomalyco/tap/opencode
Archsudo pacman -S opencodeparu -S opencode-bin
Windows (WSL)推荐 WSL + 以上任意方式
Windows (原生)scoop install opencode / choco install opencode
misemise use -g opencode
nixnix run nixpkgs#opencode
Dockerdocker 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 KeyAnthropic、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 的工作流:

  1. 按 Tab 切换到 Plan 模式
  2. 描述需求,给足上下文:
当用户删除一条笔记时,需要把这条笔记标记为已删除,而不是物理删除。
然后做一个"最近删除"页面,列出已删除的笔记。
从那里可以恢复或永久删除。
  1. agent 给出方案后,审阅并给反馈:
用这张截图作为设计参考 [拖入图片]
  1. 审阅通过,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)
permissionsopencode.json权限规则(文件/命令)
keybindsopencode.json快捷键
themesopencode.json终端主题
formattersopencode.json代码格式化
mcp serversopencode.jsonMCP 服务配置

主题可以在 /docs/themes 里浏览和复制。快捷键支持自定义绑定。MCP 服务器让 agent 连接外部工具(数据库、API、浏览器等)。

总结

OpenCode 的定位很明确:开源的、终端里的 AI coding agent。不绑定模型、不存储代码、不强迫换编辑器。

我在日常开发中的实际使用方式:

  • 新功能:Plan → 审阅方案 → Build
  • 修 bug:直接 Build 模式,让 agent 先读代码再修
  • 探索陌生仓库:Plan 模式,/init 后逐个模块问
  • 重构:Build 模式下逐段迁移,每段 /undo 检查后再继续

对于已经习惯终端开发流程的工程师,OpenCode 是参与 AI coding agent 这个方向的最低门槛工具。


参考

https://blog.logfun.xyz/blog/feed.xml