OpenCode上手使用和进阶:从安装到Agent工作流
OpenCode 上手使用和进阶:从安装到 Agent 工作流
如果你已经用过 Cursor、Claude Code、Copilot 这类 AI 编程工具,再看 OpenCode,第一感受可能不是“更好上手”,而是“更开放”。
它不是一个被封装好的聊天窗口,而是一个运行在终端里的开源 AI 编程 Agent。你可以自己选择模型、配置工具权限、沉淀项目规则、调用不同 Agent,甚至把它扩展成一个小型的 AI 开发团队。
所以这篇文章不只讲“怎么装”,也讲“怎么真正用起来”。
我会按这个路径展开:
- OpenCode 是什么,适合谁
- Windows 环境下如何安装
- 第一次启动后应该做什么
- 日常开发中最常用的命令和输入方式
AGENTS.md为什么重要- 如何理解主 Agent、子 Agent 和 oh-my-opencode
- 从新手到进阶的几套实际工作流
一、OpenCode 到底是什么?
OpenCode 是一个开源的 AI 编程 Agent,主要运行在终端中。
它和普通 AI 聊天工具最大的区别,不是“能不能写代码”,而是它更接近一个能接入项目、调用工具、修改文件、执行命令、维护上下文的开发协作者。
你可以把它理解成三层能力:
- 第一层:终端里的 AI 编程助手,可以问问题、读代码、改文件。
- 第二层:可配置的 Agent 框架,可以指定模型、权限、角色和项目规则。
- 第三层:可编排的开发工作流,可以让不同 Agent 做搜索、规划、实现、审查、验证。
如果只想让 AI 偶尔补几行代码,Cursor 或 Copilot 可能已经够用。OpenCode 更适合下面这类人:
- 习惯使用终端和 Git。
- 想把 AI 接入真实项目,而不是只做问答。
- 希望自己掌控模型、配置、权限和上下文。
- 经常做代码审查、重构、Bug 分析、文档生成。
- 想把 AI 从“聊天助手”升级成“执行型 Agent”。
一句话总结:OpenCode 不是最傻瓜的 AI 编程工具,但它的上限很高。
二、Windows 上安装 OpenCode
Windows 上最简单的方式,是先安装 Node.js,再通过 npm 全局安装 OpenCode。
1. 安装 Node.js
先进入 Node.js 官网:
https://nodejs.org/en
下载适合 Windows 的安装包,按默认选项一路安装即可。
安装完成后,打开 cmd、PowerShell 或 Windows Terminal,执行:
node --version
npm --version
如果能看到版本号,说明 Node.js 和 npm 已经可用。
2. 安装 OpenCode
继续在终端里执行:
npm install -g opencode-ai
安装完成后检查版本:
opencode --version
如果返回版本号,就说明安装成功。
3. 启动 OpenCode
进入你想让 AI 工作的项目目录,然后执行:
opencode
也可以指定项目路径启动:
opencode path/to/your-project
这里有一个新手很容易忽略的点:OpenCode 会以当前目录作为工作区。也就是说,你在哪个目录启动,它就默认在哪个目录理解项目、读取文件、生成内容和执行命令。
所以不要随便在桌面、下载目录或者无关文件夹里启动。更好的习惯是:先进入项目根目录,再运行 opencode。
三、第一次启动:先连接模型,再初始化项目
安装只是开始。OpenCode 真正好不好用,取决于第一次配置是否做对。
1. 连接模型提供商
首次进入 OpenCode 的 TUI 后,可以使用:
/connect
它会引导你配置模型提供商。根据你使用的服务不同,可能需要填写 API Key、Base URL、模型名称等信息。
如果你习惯用环境变量,也可以通过类似方式配置:
set ANTHROPIC_API_KEY=your-api-key
PowerShell 中可以这样写:
$env:ANTHROPIC_API_KEY="your-api-key"
如果你用的是中转站或兼容 OpenAI 格式的服务,通常还要确认三件事:
- API Key 是否正确。
- Base URL 是否填对。
- 模型名称是否和服务商后台一致。
很多“连不上模型”的问题,本质上不是 OpenCode 的问题,而是 Key、地址、模型名三者有一个没对上。
2. 初始化项目记忆
连接模型之后,建议立刻在项目里执行:
/init
OpenCode 会分析当前项目结构,并生成一个 AGENTS.md 文件。
这个文件非常重要。它不是临时说明,也不是普通 README,而是 AI 在这个项目里的工作说明书。
建议你把 AGENTS.md 提交到 Git。因为它会让团队里的每一次 AI 协作都更稳定:知道项目结构、知道测试命令、知道代码风格、知道哪些事不能做。
四、日常使用里最常用的几个动作
OpenCode 的 TUI 里功能不少,但真正高频的其实就几类。
1. 直接提需求
最普通的用法就是直接输入任务:
帮我解释一下这个项目的目录结构。
或者:
给用户列表接口增加分页参数,并补充对应测试。
但如果是改代码类任务,建议尽量说清楚边界:
- 要改哪里。
- 不要改哪里。
- 参考哪个现有实现。
- 验证命令是什么。
- 是否允许它直接写文件。
提示词越接近真实任务单,AI 越不容易跑偏。
2. 用 @ 精准引用文件
OpenCode 里 @ 很常用。第一种用法是引用文件或目录。
例如:
帮我检查这个鉴权中间件有没有安全问题:@src/middleware/auth.ts
或者:
分析 @src/api/ 目录下接口的分层是否一致。
这比一句“帮我看看鉴权有没有问题”要好得多。因为你把上下文范围明确给了 AI,它就不会在整个项目里乱猜。
3. 用 ! 执行命令
在 TUI 里可以直接用 ! 执行 Shell 命令,例如:
!git status
!npm test
!npm run build
这样做的好处是,命令输出会直接进入当前对话上下文。AI 可以根据测试失败、构建报错、Git diff 继续推理,而你不用在终端和聊天窗口之间来回复制。
4. 用 /session 找回会话
如果你不小心关掉了 OpenCode,可以重新进入项目目录,运行:
opencode
然后在 TUI 中使用:
/session
选择之前的会话继续。
对于多轮调试或长任务,这个功能很实用。
5. 用 /compact 压缩上下文
长时间对话后,上下文会越来越重。这个时候不要硬聊,可以执行:
/compact
它会把当前会话压缩,把重要信息留下来,减少上下文负担。
适合这些场景:
- 长时间调试一个 Bug。
- 多轮实现一个功能。
- 已经读了大量文件。
- 对话开始变慢或回答变散。
6. 用 /undo 和 /redo 控制改动
如果 AI 改了代码,但你发现方向错了,可以使用:
/undo
/redo
这类能力通常依赖 Git 变更管理。所以在真实项目里用 OpenCode,一个基础前提是:项目必须放在 Git 仓库里,并且你要经常看 git status 和 git diff。
AI 可以很快,但 Git 是安全带。
五、AGENTS.md 是 OpenCode 的核心配置资产
很多人装完 OpenCode 就开始提需求,然后发现 AI 经常写出“能跑但不符合项目习惯”的代码。
常见问题包括:
- 用错 ORM。
- 写错目录。
- 绕过已有封装。
- 生成和团队风格不一致的代码。
- 忘记测试命令。
- 不知道哪些文件不能动。
根本原因通常不是模型能力差,而是你没有把项目规则告诉它。
AGENTS.md 就是为了解决这个问题。
一份实用的 AGENTS.md 至少应该写清楚:
- 项目技术栈。
- 常用开发命令。
- 测试和构建命令。
- 目录结构说明。
- 代码风格要求。
- 分层架构约束。
- 常见实现参考。
- 禁止事项。
比如:
# Project Rules
## Commands
- Install: `npm install`
- Dev: `npm run dev`
- Test: `npm test`
- Build: `npm run build`
## Architecture
- API routes live in `src/api`.
- Business logic lives in `src/services`.
- Data access must go through `src/repositories`.
- Controllers should not access the database directly.
## Code Style
- Prefer small changes over large rewrites.
- Follow existing naming and folder conventions.
- Add tests for behavior changes.
- Do not introduce new dependencies without asking first.
这类规则越具体,AI 的表现越稳定。
你不应该每次都在提示词里重复“不要乱加依赖”“先跑测试”“参考现有写法”。这些应该沉淀到 AGENTS.md 里。
六、理解 Agent:别把 OpenCode 只当聊天框
OpenCode 的一个关键概念是 Agent。
如果你只把它当成“终端版 ChatGPT”,那就只用到了表层能力。真正值得用的是它的角色分工。
1. 主 Agent:当前与你对话的执行者
主 Agent 可以理解为当前接手任务的人。
常见的默认角色包括:
Build:适合直接开发,能读写文件、执行命令。Plan:适合先规划方案,更审慎,不急着动代码。
很多人以为这是“模式切换”。更准确地说,这是“角色切换”。
例如,一个稳妥的功能开发流程是:
先切到 Plan,让它只分析方案,不改文件。
确认方案后,再切回 Build:
按刚才的方案执行,改完后运行测试。
这比一开始就让 AI 大改项目更安全。
2. 子 Agent:专项任务助手
子 Agent 更像团队里的专业成员。
例如常见的 @explore 就适合做只读搜索:
@explore 找出所有调用 sendEmail 的地方,并按调用链分组说明。
子 Agent 的价值在于分工。你不必让一个 Agent 同时负责搜索、决策、写代码、审查。复杂任务里,先让只读 Agent 做探索,再让主 Agent 做实现,效果通常更稳。
七、oh-my-opencode:把单个助手扩成多角色团队
如果说 OpenCode 是地基,那么 oh-my-opencode 更像是一套增强工作流。
安装方式通常是:
npx oh-my-opencode install
有些环境也会使用:
bunx oh-my-opencode install
安装过程中,它可能会询问 Claude、Gemini、OpenAI 或其他模型服务的账号和 API 配置。有就填,没有也可以先跳过,后续再配置。
oh-my-opencode 的价值不只是“多几个角色名”,而是把 OpenCode 的使用方式推向团队协作:
- 有的 Agent 负责需求澄清。
- 有的 Agent 负责计划审查。
- 有的 Agent 负责代码搜索。
- 有的 Agent 负责质量把关。
- 有的 Agent 负责执行长任务。
进阶使用里,最值得先记住的是 ulw。
ulw 通常表示 ultrawork。当你在任务里带上它时,Agent 会更倾向于自主推进:主动搜索项目、拆分任务、调用子 Agent、执行验证,直到得到可交付结果。
例如:
ulw 给 /api/orders 接口增加分页能力,参考 /api/products 的实现方式,完成后运行测试。
或者:
ulw 找出项目里所有 N+1 查询风险,先列出问题清单,再逐个修复并验证。
但 ulw 不是万能按钮。
适合用 ulw 的场景:
- 任务目标明确。
- 涉及多个文件。
- 有可参考的现有实现。
- 你希望 AI 自主推进。
- 最终可以通过测试或构建验证。
不适合一上来就用 ulw 的场景:
- 需求边界还不清楚。
- 涉及关键架构取舍。
- 业务规则还没定。
- 你只想先看方案,不想改代码。
这种情况下,先规划,再执行。
八、几套真正好用的工作流
下面是我认为最容易落地的几种用法。
工作流 1:快速读懂陌生项目
进入项目根目录,启动 OpenCode:
opencode
然后先初始化:
/init
接着让它梳理项目:
@explore 分析这个项目的目录结构、主要入口、核心业务模块和测试命令,输出一份新人 onboarding 笔记。
这个场景里,不建议一开始就让 AI 改代码。先让它读懂项目,生成地图。
工作流 2:做一个中等复杂度功能
比如你要给订单列表增加分页、筛选和排序。
比较稳的做法是:
先不要改文件。请分析现有订单接口和商品列表接口,给出订单列表增加分页、筛选、排序的实现方案。
方案确认后再执行:
按刚才方案实现。要求参考商品列表接口的写法,不引入新依赖,完成后运行测试。
如果你装了 oh-my-opencode,也可以在目标明确后使用:
ulw 按已确认方案实现订单列表分页、筛选和排序,参考商品列表接口,完成后运行测试。
工作流 3:只做代码审查,不改文件
OpenCode 很适合做预审。
例如:
只读分析,不要修改文件。审查 @src/payment/ 目录,重点看幂等性、并发安全、异常处理和权限边界。
或者:
@explore 扫描所有 API 入口,列出可能缺少鉴权校验的接口,并说明判断依据。
这里的关键是明确告诉它“只读分析,不要修改文件”。
工作流 4:追一个复杂 Bug
不要只贴一句“这里报错了”。更好的输入是:
这是测试失败日志。请从报错位置开始追踪调用链,找出根因。先给分析,不要直接改代码。
然后把日志贴进去,或者让它直接跑命令:
!npm test
确认根因后再说:
按最小改动修复这个问题,并补充能覆盖该问题的测试。
复杂 Bug 最忌讳让 AI 直接猜修复。先定位根因,再动代码。
工作流 5:大范围重构
例如你要重构支付模块,但对外接口不能变。
不要直接说:
帮我重构支付模块。
这太宽泛。
更好的说法是:
先分析 @src/payment/ 的现有结构,找出重复逻辑、外部依赖、对外接口和测试覆盖情况。只输出重构计划,不要改文件。
计划确认后,再分阶段执行:
按计划执行第一阶段,只抽取重复逻辑,不改变对外接口。完成后运行支付模块相关测试。
大范围重构一定要分阶段。AI 可以跑得很快,但你要控制节奏。
九、新手最容易踩的坑
1. 在错误目录启动
OpenCode 会围绕当前目录工作。目录错了,后续上下文和文件输出都会错。
启动前先确认:
pwd
git status
Windows 的 cmd 可以用:
cd
git status
2. 没有 Git 就让 AI 改代码
这是高风险用法。
建议真实项目必须先有 Git,并且在大任务前看一眼:
git status
改完后看:
git diff
不要把 AI 当成不可回退的自动脚本。Git 是你和 AI 协作的保险。
3. 不写项目规则
没有 AGENTS.md,AI 只能靠猜。
它可能能猜对技术栈,但猜不出你们团队的偏好、禁忌和历史包袱。
4. 小任务过度编排,大任务一句话梭哈
正确姿势是:
- 小任务:直接让它改。
- 中等任务:先方案,再实现。
- 大任务:计划文件、分阶段执行、持续验证。
5. 只关心生成代码,不关心验证
AI 写完代码不等于任务完成。
你至少要让它跑:
!npm test
!npm run build
具体命令按项目而定。关键是把验证变成工作流的一部分。
十、我建议照抄的提示词模板
1. 项目理解
@explore 分析这个项目的整体结构,说明入口文件、核心模块、数据流、测试命令和最重要的开发约定。只读分析,不要修改文件。
2. 功能规划
先不要改文件。请基于当前项目结构,为「这里写需求」设计实现方案。要求说明需要改哪些文件、为什么这么改、潜在风险、测试策略。
3. 功能实现
按刚才确认的方案实现,保持最小改动,遵循 AGENTS.md。完成后运行相关测试,并总结改了哪些文件。
4. Bug 定位
先定位根因,不要直接修。请根据下面的错误日志追踪调用链,说明问题出现的条件、根本原因和最小修复方案。
5. 代码审查
只读审查,不要修改文件。请审查 @目标文件或目录,重点关注正确性、安全性、边界条件、性能问题和缺失测试。按严重程度排序输出。
6. 进阶自主执行
ulw 按以下目标完成任务:目标是「这里写目标」。约束:不引入新依赖;参考现有实现;保持最小改动;完成后运行测试并汇总结果。
十一、结语:OpenCode 的价值是组织软件开发过程
很多人评价 AI 编程工具,只看它能不能生成代码。
但在真实开发里,最耗时间的往往不是写那几十行代码,而是:
- 读懂项目。
- 找到相关文件。
- 理清调用链。
- 拆分任务。
- 对齐项目规则。
- 控制改动范围。
- 跑测试和验证。
- 复盘变更影响。
OpenCode 的价值就在这里。
它不是把 AI 包装成一个更漂亮的聊天窗口,而是把 AI 放进终端、文件系统、Git、Shell 和项目规则里,让它更接近真实研发流程。
如果你刚开始用,先把安装、/connect、/init、@文件引用、!命令执行 这几件事用熟。
如果你已经用顺了,再去折腾 AGENTS.md、子 Agent、oh-my-opencode、ulw 和分阶段执行工作流。
OpenCode 不是越“自动”越好,而是越“可控”越好。
当你能把任务边界、项目规则、执行权限和验证方式都说清楚,它就不只是一个 AI 助手,而会逐渐变成你日常开发流程里稳定的一环。
浙公网安备 33010602011771号