海外访问:www.kdjingpai.com
Ctrl + D 收藏本站
当前位置:首页 » AI实操教程

OpenCode + oh-my-opencode 最佳实践指南

2026-04-18 28

 

OpenCode + oh-my-opencode 最佳实践指南

面向有 AI 编程助手使用经验的开发者,聚焦实战,基于官方最新文档(2026-04)整理。


一、OpenCode 是什么


OpenCode 是运行在终端里的开源 AI 编程 Agent,支持 Claude、GPT、Gemini 等 75+ 模型,提供 TUI / IDE 插件 / 桌面应用三种形态。

与 Claude Code 最大区别:不锁定模型,完全开源,Agent 体系可深度扩展。


二、安装与配置

# 方式一:官方安装脚本(推荐)
curl -fsSL <https://opencode.ai/install> | bash

# 方式二:Homebrew(最新版本)

brew install anomalyco/tap/opencode

# 方式三:Node.js

npm install -g opencode-ai

配置 API Key:

export ANTHROPIC_API_KEY="sk-ant-..."
# 或在 TUI 里运行 /connect,按提示授权

三、OpenCode 核心概念:Agent 体系

这是理解 OpenCode 的关键,与 Claude Code 的单一 Agent 模式不同。

3.1 两类 Agent

OpenCode 的 Agent 分两种:

Primary Agent(主 Agent):你直接对话的对象,用 Tab 键在它们之间切换。

内置主 Agent
特点
Build

(默认)
全工具权限:读写文件、执行 bash,日常开发主力
Plan
受限权限:文件写入和 bash 命令均需确认,用于安全规划

Subagent(子 Agent):主 Agent 自动调度,或你手动 @mention 调用的专用助手。

内置子 Agent
特点
General
通用子任务,有完整工具权限(无 todo),适合并行多工
Explore
只读、快速代码库搜索,不能修改文件

安装 oh-my-opencode 后,主 Agent 和子 Agent 均大幅扩展,见第五节。


3.2 @ 的两种用法

@ 是 TUI 里最重要的输入符号,有两种完全不同的用途:

① 引用文件(模糊搜索)

这段鉴权逻辑有没有问题?@src/middleware/auth.ts

触发模糊文件搜索,选中后文件内容自动注入上下文。

② @mention 子 Agent(直接调用)

@explore 找出所有调用了 sendEmail 的地方
@general 帮我并行处理这三个模块的文档生成

主 Agent 也可以在执行过程中自动 @mention 子 Agent 完成专项任务。

两者可以在同一条消息里混用:

@explore 分析 @src/api/ 目录下所有接口的结构

3.3 Tab 键:切换主 Agent

Tab 键在所有主 Agent(Primary Agent) 之间轮换,Shift+Tab 反向切换。

Tab          # 切换主 Agent(Build → Plan → 自定义 Agent → ...)
Shift+Tab    # 反向切换

⚠️ 常见误解:Tab 不是”切换 Plan/Build 模式”,而是切换两个独立的主 Agent。

Plan Agent 的本质是”文件写入和 bash 命令默认要求人工确认”的受限 Agent。

典型用法:

# 先切到 Plan Agent 规划,只提方案不改代码
Tab  →  描述需求,拿到方案后审查

# 方案确认后切回 Build Agent 执行
Tab  →  好,按计划执行。

3.4 快捷键速查

快捷键
功能
Tab
切换主 Agent(前向)
Shift+Tab
切换主 Agent(后向)
Ctrl+T
循环切换模型变体(如开关 Extended Thinking)
Ctrl+P
打开命令列表(所有 / 命令)
Ctrl+X A
打开 Agent 列表
Ctrl+X M
打开模型列表
Ctrl+X C
压缩当前会话上下文
Ctrl+X U
撤销(等同 /undo
Ctrl+X R
重做(等同 /redo
Ctrl+X N
新建会话
Ctrl+X L
会话列表 / 切换历史会话
Ctrl+X E
在外部编辑器中编辑当前消息
Ctrl+X Down
进入子 Agent 会话
Right / Left
在子 Agent 会话间切换
Up
返回父会话

Leader 键默认是 Ctrl+X,可在 tui.json 中修改。


四、TUI 常用操作

4.1 初始化项目

cd /path/to/project
opencode

TUI 内运行:

/init

分析项目结构,在根目录生成 AGENTS.md——务必提交到 Git,这是 Agent 的项目记忆。


4.2 执行 Shell 命令

消息以 ! 开头,直接运行 shell 命令,输出作为工具结果注入上下文:

!git log --oneline -20
!npm test -- --coverage
!cat package.json

4.3 撤销 / 重做

/undo    # 撤销最近一次修改(含文件变更),可多次执行
/redo    # 重新应用已撤销的修改

依赖 Git 管理文件变更,项目必须是 Git 仓库


4.4 上下文管理

/compact    # 压缩当前会话,保留关键上下文,释放 token(alias: /summarize)
/new        # 开启新会话(alias: /clear)
/sessions   # 查看并切换历史会话(alias: /resume)

4.5 其他常用命令

/share      # 生成会话分享链接(复制到剪贴板)
/unshare    # 取消分享
/export     # 导出会话为 Markdown,用外部编辑器打开
/thinking   # 切换是否显示 Extended Thinking 内容
/models     # 列出可用模型
/themes     # 切换主题

五、AGENTS.md 与自定义扩展

5.1 三个生效位置

位置
作用域
<project_root>/AGENTS.md
当前项目,提交 Git 与团队共享
~/.config/opencode/AGENTS.md
全局,所有项目生效,存放个人偏好
子目录 AGENTS.md
oh-my-opencode 增强:读文件时自动向上收集所有层级

OpenCode 还兼容 Claude Code 的 CLAUDE.md 格式(迁移时开箱即用)。


5.2 AGENTS.md 写什么

# 项目名称

## 技术栈

-
 后端:Java 21 + Spring Boot 3.x
-
 数据库:PostgreSQL(ORM 用 jOOQ,禁止使用 Hibernate)
-
 API 风格:RESTful,响应统一用 Result<T> 包装

## 构建与测试

-
 构建:`mvn clean package`
-
 单元测试:`mvn test`
-
 集成测试:`mvn verify -P integration`

## 代码规范

-
 所有 public 方法必须有 Javadoc
-
 禁止在循环内执行数据库查询
-
 异常统一通过 GlobalExceptionHandler 处理

## 架构说明

-
 请求链路:Controller → Service → Repository → DB
-
 跨模块只能通过 service 层调用,不能跨层调用 repository

5.3 自定义 Agent

在 .opencode/agents/ 或 ~/.config/opencode/agents/ 创建 .md 文件:

---
description: 安全审计,检查代码安全漏洞
mode: subagent
model: anthropic/claude-opus-4-6
temperature: 0.1
tools:
  write: false
  edit: false
  bash: false
---


你是一名安全专家,专注以下方面的代码审计:
-
 SQL 注入、XSS、CSRF 漏洞
-
 不安全的反序列化
-
 硬编码的密钥或密码
-
 权限校验缺失

只提供分析报告,不直接修改代码。

文件名即为 Agent 名(如 security-auditor.md → @security-auditor),mode: subagent 表示可被 @mention 调用。


5.4 自定义命令

在 .opencode/commands/ 或 ~/.config/opencode/commands/ 创建命令文件:

---
description: Code Review,重点关注安全和性能
agent: build
---


请对以下代码进行 Code Review,重点关注:
1.
 安全漏洞(注入、权限、加密)
2.
 性能问题(N+1 查询、内存泄漏)
3.
 边界条件和异常处理
4.
 命名和可读性

文件:$ARGUMENTS

使用:/code-review src/api/OrderController.java

命令支持 $ARGUMENTS(所有参数)或 $1$2(位置参数),frontmatter 中可指定 agentmodel


六、oh-my-opencode:把 OpenCode 变成开发团队

oh-my-opencode(现更名为 oh-my-openagent,npm 包名仍为 oh-my-opencode)是目前最强的 OpenCode 插件。

核心能力:11 个专业 Agent + 并行子 Agent + ulw 一键全自动 + LSP/AST-Grep 工具 + 自动上下文管理。

6.1 安装

bunx oh-my-opencode install

验证安装:

cat ~/.config/opencode/opencode.json
# plugins 数组中应包含 "oh-my-opencode"

6.2 ulw:最重要的一个词

ulw(ultrawork 的缩写)是 oh-my-opencode 的核心关键词。

提示词里只要包含 ulw 或 ultrawork,插件自动触发”最强模式”:

  • • 自主探索代码库,研究实现模式
  • • 调度多个专业 Agent 并行工作
  • • 持续执行直到完成,中途不停下来等确认
  • • 自动诊断验证结果

用法极简:

ulw 给 /api/orders 接口增加分页功能,参考 /api/products 的实现方式
ulw 找出所有 N+1 查询问题并修复
ulw 将整个项目的错误处理统一改为 Result 模式
ulw 重构 src/payment/ 为策略模式,现有支付方式三种,对外接口不变

原则:遇到大型任务、不知从哪下手时,直接 ulw,让系统自己决策。

关键词触发的其他模式:

关键词
触发模式
ulw

 / ultrawork
最强全自动,并行执行
search

 / find
并行探索模式
analyze

 / investigate
深度分析模式
ultrathink

 / think deeply
自动激活 Extended Thinking

6.3 11 个专业 Agent

安装后,Tab 键在这些主 Agent 间切换(按优先级):

主 Agent(Tab 切换):

Agent
角色
典型场景
Sisyphus

(默认)
编排器,调度子 Agent 并行执行
日常开发入口,ulw 的执行核心
Hephaestus
深度独立执行,端对端不打断
复杂架构任务,无需手把手
Prometheus
战略规划师,面试式需求梳理
大型功能开始前的规划
Atlas
任务编排执行
配合 /start-work 执行计划

子 Agent(@mention 调用):

Agent
角色
@oracle
只读架构顾问,代码审查,逻辑推理
@metis
检查 Prometheus 计划的遗漏点
@momus
对计划进行严苛质量把关
@explore
快速代码库 grep,模式查找
@librarian
查 API 文档,OSS 最佳实践(含 websearch)
@multimodal-looker
截图分析,UI 视觉还原
@sisyphus-junior
轻量子任务,由 Sisyphus 委派

大多数场景不需要手动选 Agent,ulw 会自动调度。


6.4 /start-work:大型功能开发工作流

适用于跨模块、有架构决策的大型功能。流程如下:

第一步:Tab 切换到 Prometheus,描述需求

Prometheus 像真实工程师一样反问细节。回答完后:

好,生成计划。

计划文件保存在 .sisyphus/plans/*.md,可以预览和修改。

第二步:确认计划后运行

/start-work

Atlas 接管,按计划自动执行,中途断开也能自动恢复(状态存在 boulder.json)。

⚠️ Prometheus 和 Atlas 必须配对使用,勿直接切换到 Atlas 执行。

何时用 ulw,何时用 /start-work?

场景
推荐方式
思路清晰的单一功能
ulw
需求有模糊点,想先确认方案再动手
Tab → Prometheus → /start-work
复杂架构任务,需要深度独立执行
Tab → Hephaestus

七、典型场景实战

场景一:快速理解陌生代码库

@explore 找出所有 API 入口点,列出路由和对应的 Handler
ulw 分析这个项目的整体架构,重点是请求的完整链路,
输出一份给新人的 onboarding 文档

场景二:新功能开发

小功能(1-2 个文件):直接 Build Agent

在 @src/user/UserService.java 增加手机号登录方法,
参考邮箱登录 @src/user/EmailLoginStrategy.java

中等功能(多文件联动):Plan → Build

Tab(切换到 Plan Agent)

给删除订单功能加软删除:deleted_at 标记删除时间,
新增回收站页面支持恢复和彻底删除

(审查方案)

Tab(切回 Build Agent)
好,按计划执行。

大型功能(跨模块):ulw 或 /start-work

ulw 实现完整的优惠券系统:
固定金额/百分比两种折扣,限制使用次数和有效期,与购物车集成

场景三:代码审查(不修改代码)

@explore 全量扫描 src/api/ 目录,找出所有没有做权限校验的接口
@oracle 对 @src/payment/PaymentService.java 做架构审查,
重点:并发安全、幂等性、异常边界

场景四:调试复杂 Bug

ulw 追踪这个 NPE 的根本原因,从堆栈顶部到数据来源全链路分析,
找到根因后给出修复方案。堆栈:

java.lang.NullPointerException
    at com.example.OrderService.process(OrderService.java:142)
    ...

场景五:大范围重构

ulw 将 src/payment/ 模块重构为策略模式,
现有支付方式:支付宝、微信、信用卡,
要求:对外接口不变,所有现有测试继续通过

场景六:UI 还原(设计稿)

拖拽截图到终端后:

@multimodal-looker 分析这张设计稿的布局和样式
按照图中的设计实现 @src/components/Dashboard.tsx

场景七:生成文档

ulw 为 src/api/ 下所有公开接口生成 OpenAPI 3.0 规范,
输出到 docs/openapi.yaml,参考 @docs/openapi-sample.yaml 的格式

八、配置速查

8.1 opencode.json

{
  "$schema"
: "<https://opencode.ai/config.json>",
  "model"
: "anthropic/claude-opus-4-6",
  "autoshare"
: false,
  "plugins"
: ["oh-my-opencode"]
}

8.2 oh-my-opencode Agent 配置

~/.config/opencode/oh-my-opencode.json

{
  "agents"
: {
    "sisyphus"
: {
      "model"
: "anthropic/claude-opus-4-6"
    },
    "oracle"
: {
      "thinking"
: {
        "type"
: "enabled",
        "budgetTokens"
: 200000
      }
    },
    "explore"
: {
      "textVerbosity"
: "low"
    }
  }
}

8.3 内置 Skills(oh-my-opencode)

Skill
功能
playwright
浏览器自动化测试
git-master
原子提交、rebase 整理
frontend-ui-ux
设计优先的 UI 实现

自定义 Skill 路径:

.opencode/skills/my-skill/SKILL.md
~/.config/opencode/skills/my-skill/SKILL.md

九、常见问题

Q:@ 引用文件和 @mention Agent 如何区分?

两者共用 @ 符号,区分逻辑:输入 @ 后如果匹配的是文件路径则注入文件内容;如果输入的是已注册的 Agent 名(如 @explore),则触发子 Agent 调用。

Q:Tab 切换 Agent 和 Ctrl+T 切换模型变体有什么区别?

Tab 切换主 Agent(角色切换,连带切换该 Agent 的专属模型和工具权限);Ctrl+T 切换当前 Agent 的模型变体(如同一模型的标准版 vs Extended Thinking 版)。

Q:ulw 和直接描述需求有什么区别?

直接描述时,Sisyphus 单线程执行,遇到不确定的地方可能停下来问。加 ulw 后触发全自动并行模式:多个子 Agent 同时工作,自主探索代码库,不中途等确认,完成后持续验证直到彻底完成。

Q:/start-work 中断了怎么办?

重新运行 /start-work,系统从 boulder.json 恢复进度,继续未完成的任务。

Q:上下文快满了怎么办?

运行 /compact 压缩当前会话,关键上下文会被保留。大型任务优先使用 /start-work 工作流,子 Agent 分散上下文压力。


参考资料

  • • OpenCode 官方文档
  • • OpenCode Agents 文档
  • • OpenCode Keybinds 文档
  • • oh-my-opencode GitHub
  • • awesome-opencode 插件合集

 


本篇文章来源于微信公众号: 玄熵智能

相关推荐

找不到AI工具?在这试试!

输入关键词,无障碍访问必应搜索,快速找到本站 AI 工具。

回顶部