想在终端里用 AI 写代码,又不想只会「一问一答」?
试试这套组合:
- OpenCode = 底座(终端 AI Coding Agent)
- oh-my-opencode = 插件(多角色编排:规划、执行、分工)
装完之后,日常跟默认的 Sisyphus 说话就行:它会自己规划、找帮手、把活做完。怎么选角色、怎么用 ulw,看后面「四、怎么用」。
关于文中的链接: 文中会挂不少官网 / GitHub 链接,主要是给想深入了解、改配置、或事后备忘用的。按本文步骤照做一般就够了,不必把每个链接都点开看一遍。
小提示:项目已更名为 oh-my-openagent,网上还常搜「oh-my-opencode」。下面安装命令以官网为准,新旧包名都写清楚。
一、它们分别是什么
1)OpenCode
开源终端 AI Coding Agent,也能用桌面端 / IDE 扩展, 建议直接用CLi命令行工具。
官网文档:https://opencode.ai/docs/
2)oh-my-opencode(现名 oh-my-openagent)
挂在 OpenCode 上的多 Agent 编排插件:主编排 + 专家分工。
- GitHub:https://github.com/code-yeongyu/oh-my-openagent
- 安装指南:https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/docs/guide/installation.md
- 编排说明:https://github.com/code-yeongyu/oh-my-openagent/blob/HEAD/docs/guide/orchestration.md
为什么要组合? OpenCode 负责「能跑 Agent」;插件负责「主编排 + 专家分工」(Sisyphus 委派 Oracle / Librarian / Explore 等)。单装底座也能聊;想要多角色编排和 ulw,就装插件。
二、安装
先在终端敲一句:
node -v
能打出版本号 → 走 情况一;提示找不到命令 → 走 情况二。
两种情况最后都能装好,任选符合你电脑的那条。
情况一:已有 Node.js(用 npm 这一套)
若你想走这套、但还没装 Node:打开 https://nodejs.org/ 下载 LTS,装完新开终端,确认 node -v / npm -v 有版本号。
① 用 npm 装 Bun
npm install -g bun
确认:bun -v
② 装 OpenCode
npm install -g opencode-ai
确认:opencode --version
(也可用官方脚本:curl -fsSL https://opencode.ai/install | bash,效果一样。)
③ 装插件
bunx oh-my-openagent install
情况二:没有 Node.js(直接装 Bun)
① 装 Bun(官网:https://bun.sh/)
macOS / Linux:
curl -fsSL https://bun.com/install | bash
Windows(PowerShell):
powershell -c "irm bun.sh/install.ps1|iex"
确认:bun -v
② 装 OpenCode
curl -fsSL https://opencode.ai/install | bash
确认:opencode --version
Windows 建议走 WSL:https://opencode.ai/docs/windows-wsl/
③ 装插件
bunx oh-my-openagent install
三、配置(先跑通最小闭环)
这一步的目标很简单:让 OpenCode 能连上模型开始干活。
官方那套「登录 Anthropic / OpenAI 订阅」又贵又绕,新手直接跳过。本文用 天天AI 一把配好。
关于官方登录
OpenCode 官网「Configure」写明:要用模型前,默认流程是在界面里输入 /connect,选提供商、填 API Key / 登录(见 https://opencode.ai/docs/)。
没配好时,界面也会显示类似 Connect a provider(连接提供商)的提示。
本文不走这条。 按下面把天天AI 写进配置文件即可,不用 /connect 去登 Claude / ChatGPT。
正确做法:
- 先写好下面两份配置(OpenCode + 插件各一份)
- 再启动
opencode - 输入
/models,选 天天AI
总之一句话:官方默认是 /connect;我们改成写配置文件,跳过官方登录。
1. 先拿到天天AI 的密钥
- 打开 https://ai.ttshuli.com 注册并登录
- 进控制台,创建一个 API 密钥(一般长这样:
sk-mt-...) - 复制保存好,后面要贴进配置文件;别发到群里、别截图露出来
2. 写两份配置文件(OpenCode + 插件)
目录都在这里(没有就新建):
- macOS / Linux:
~/.config/opencode/ - Windows:
C:\Users\你的用户名\.config\opencode\
① OpenCode:opencode.jsonc
推荐 .jsonc(可写注释;也支持老的 .json)。
先看一份「最小结构」——只配天天AI、加载插件。它还不完整,原因见下面避坑;完整可用版紧随其后。
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["oh-my-openagent@latest"],
"model": "tiantian/auto",
"enabled_providers": ["tiantian"],
"provider": {
"tiantian": {
"npm": "@ai-sdk/openai-compatible",
"name": "天天AI",
"options": {
"baseURL": "https://ai.ttshuli.com/v1",
"apiKey": "这里换成你的密钥"
},
"models": {
"auto": {
"name": "auto(推荐)",
"reasoning": true,
"limit": { "context": 180000, "output": 32000 },
"interleaved": { "field": "reasoning_content" },
"modalities": { "input": ["text", "image"], "output": ["text"] },
"options": { "reasoningEffort": "medium" },
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" },
"max": { "reasoningEffort": "max" }
}
}
}
}
}
}
完整配置
上面这份最小配置,开了 oh-my-openagent 之后常会踩四个坑:
-
子代理模型对不上。
可临时注释掉"plugin"那一行做对比:关掉插件时,上面结构基本能聊;一开插件,任务做到一半可能报错——因为部分子代理仍走其它软件预设的模型,而你这边根本访问不了。 -
缺少只读角色。
开了插件后,常用的几个角色都能改文件。有时只想问问题、不想动任何文件,就需要单独做一个只读角色(禁止 edit / bash)。 -
没声明推理能力(OpenCode 1.19 尤其要命)。
自定义渠道不会继承官方目录标记。模型块只写"name"时界面显示 No reasoning,插件编排几乎不可用。
- 必写"interleaved": { "field": "reasoning_content" }(解析上游推理流)
- 必写"variants"(1.19 TUI 用variants.length > 0判断「有没有推理」;只写"reasoning": true不够)
- 写了"limit"就必须同时有"context"和"output";只写一边会校验失败。不写整段则按 180000 / 32000 兜底。平台最大上下文窗口按context: 180000 广告,OpenCode 据此做自动压缩,不会从/v1/models读窗口。
- 建议写"options": { "reasoningEffort": "medium" }(没选 variant 时也带上努力度) -
图片附件需要同时声明能力和配置平台路由。
OpenCode 默认把自定义模型当作纯文本;若auto未声明图片输入能力,带截图的请求会在本地被拦下。auto应声明"modalities": { "input": ["text", "image"], "output": ["text"] }。如果已经声明后仍看到No available auto route covers required modalities: ['image', 'text'],说明请求已到天天AI,但平台当前没有启用、可用且覆盖text+image的 auto 路由,需要检查对应路由是否启用、是否被标记不可用,以及其能力列表是否包含image。显式模型只应声明它真实支持的能力。
所以请直接用下面这份完整 opencode.jsonc(把 apiKey 换成你自己的密钥;其它可按控制台模型列表增删):
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["oh-my-openagent@latest"],
"model": "tiantian/auto",
"small_model": "tiantian/auto",
"enabled_providers": ["tiantian"],
"lsp": true,
"agent": {
"build": { "model": "tiantian/auto" },
"plan": { "model": "tiantian/auto" },
"general": { "model": "tiantian/auto" },
"explore": { "model": "tiantian/auto" },
"title": { "model": "tiantian/auto" },
"summary": { "model": "tiantian/auto" },
"compaction": { "model": "tiantian/auto" },
"Sisyphus-Junior": { "model": "tiantian/auto" },
"oracle": { "model": "tiantian/auto" },
"librarian": { "model": "tiantian/auto" },
"multimodal-looker": { "model": "tiantian/auto" },
"readonly": {
"model": "tiantian/auto",
"mode": "primary",
"description": "只读分析模式",
"permission": {
"edit": "deny",
"bash": "deny"
}
}
},
"provider": {
"tiantian": {
"npm": "@ai-sdk/openai-compatible",
"name": "天天AI",
"options": {
"baseURL": "https://ai.ttshuli.com/v1",
"apiKey": "这里换成你的密钥"
},
"models": {
"auto": {
"name": "auto",
"reasoning": true,
"limit": { "context": 180000, "output": 32000 },
"interleaved": { "field": "reasoning_content" },
"modalities": { "input": ["text", "image"], "output": ["text"] },
// 无 variant 时也带上努力度;超长会话上游偶发返回字面量 "No reasoning available."
"options": { "reasoningEffort": "medium" },
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" },
"max": { "reasoningEffort": "max" }
}
}
}
}
}
}
要点:
agent里把常用角色都指到tiantian/auto;另有一个readonly,只问不改。只读时用Tab切到它即可。models就是/models里能看到的模型列表,可按天天AI最新名单改这里。列表会定期更新,日常还是推荐选auto,让系统自己挑最优模型。interleaved+variants不要省:1.19 靠variants显示「支持推理」;少了就会 No reasoning,插件编排基本废掉。limit要成对写:"limit": { "context": 180000, "output": 32000 }。只写context会直接校验失败。auto要声明图片能力:"modalities": { "input": ["text", "image"], "output": ["text"] }。若未声明,OpenCode 可能在本地拦下图片请求;若已声明仍报No available auto route covers required modalities: ['image', 'text'],则请求已到平台,请检查是否有启用、可用且支持图片的 auto 路由(例如nemotron-3.5-super-vl)。
② 插件:oh-my-openagent.json
光有上面那份还不够。 Sisyphus / Prometheus / Atlas 等角色各自用哪个模型,写在插件配置里。没有它,角色常会去找官方默认模型,结果用不了。
同目录新建 oh-my-openagent.json,粘贴:
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json",
"agents": {
"sisyphus": { "model": "tiantian/auto" },
"hephaestus": { "model": "tiantian/auto" },
"oracle": { "model": "tiantian/auto" },
"explore": { "model": "tiantian/auto" },
"librarian": { "model": "tiantian/auto" },
"multimodal-looker": { "model": "tiantian/auto" },
"prometheus": { "model": "tiantian/auto" },
"metis": { "model": "tiantian/auto" },
"momus": { "model": "tiantian/auto" },
"atlas": { "model": "tiantian/auto" },
"sisyphus-junior": { "model": "tiantian/auto" }
},
"categories": {
"visual-engineering": { "model": "tiantian/auto" },
"ultrabrain": { "model": "tiantian/auto" },
"deep": { "model": "tiantian/auto" },
"artistry": { "model": "tiantian/auto" },
"quick": { "model": "tiantian/auto" },
"unspecified-low": { "model": "tiantian/auto" },
"unspecified-high": { "model": "tiantian/auto" },
"writing": { "model": "tiantian/auto" }
}
}
作用:把插件里的角色 / 任务类别,全部指到 tiantian/auto。
两份都保存好。模型名以控制台实际列表为准;不会选就先用 auto。
(若安装器生成的是旧名 oh-my-opencode.json,内容按上面同样改即可。)
3. 打开 OpenCode,选模型
进到你的项目目录,启动:
cd /你的项目路径
opencode
进去之后,输入:
/models
在列表里选 天天AI → auto(或你控制台里看到的其它模型名)。选完就可以直接打字跟它说话了。
(可选)想让 OpenCode 更懂这个项目:再输入 /init,它会生成一份 AGENTS.md(项目说明)。有的话建议提交到 Git;没有也不妨碍先试用。
四、怎么用(角色 + 常用命令)
装完你会遇到三个主要角色。平时只用第一个就够;后两个是「要先写计划再开干」时才用的。
先学会怎么切换角色:按 Tab
打开 opencode 后,界面底部附近会显示你当前在跟谁说话。
反复按键盘上的 Tab 键,在这三个角色之间切换:
Sisyphus(西西弗斯) → Prometheus(普罗米修斯) → Atlas(阿特拉斯) → 再回到 Sisyphus……
看清楚当前名字再说话。切错人,干的活就不对。
三个角色分别干什么
-
Sisyphus(西西弗斯)——默认入口,日常跟它聊
打开后默认就是它。你说需求,它自己想步骤、叫专家、把活推完。
小改、日常开发:待在 Sisyphus,不用切人。 -
Prometheus(普罗米修斯)——只写计划,不动手改代码
大改、不敢直接干、想先谈清楚范围时用。
按Tab切到它,告诉它要做什么;它问清楚后,把计划写到.omo/plans/。 -
Atlas(阿特拉斯)——按计划改代码的那个执行者
计划写好、你点头同意之后,才轮到它。
平时别跟它闲聊。
计划写好了怎么开工?
两种做法,效果一样:都是让 Atlas 按计划开干。
做法 A(推荐,少打字)——直接输入:
/start-work
它会自动去找 .omo/plans/ 里的计划;有多个会问你选哪个,然后开干。
做法 B——按 Tab 切到 Atlas,再跟它说一句,例如:
按计划执行
或:
执行刚才那份计划
记住:切到 Atlas 之后要说一句「执行 / 开干」,它才开始干;光切过去不说话,它不会自己动。
/start-work 就是帮你省掉「先切人再喊一声」这两步,一键干同样的事。
完整顺序:
Tab切到 Prometheus → 写计划- 你自己看一眼,觉得行
/start-work,或Tab到 Atlas 再说一句「按计划执行」
怎么选路线(一张表)
| 你想怎样 | 怎么做 |
|---|---|
| 小改 / 日常开发 | 待在 Sisyphus,直接说 |
| 复杂,懒得把上下文交代清楚 | 仍在 Sisyphus,话里加 ulw |
| 要先写计划再动手 | Tab → Prometheus 写计划 → 确认后 /start-work(或 Tab 到 Atlas 说「按计划执行」) |
Prometheus / Atlas 不是每次必做,只有「要书面计划」时才走。
ulw 怎么用(举例)
ulw 是 ultrawork 的缩写:在提示词里加上这两个词之一,就会进入「拉满自主」模式——先读代码、再规划、边做边验收,少问你。
适合:事情不小,但你懒得把背景、文件、约束一条条写清楚。
例子——在对话里直接输入:
ulw 给用户列表页加上按昵称搜索和分页,复用现有表格组件,别改接口协议
或写成:
ultrawork 修一下登录超时后没跳回登录页的问题
注意:小事先别开 ulw,直接跟 Sisyphus 说清楚改哪更省 Token。
/ulw-loop 怎么用
/ulw-loop 是更「长跑」的用法:把一个大目标拆成多步,按目标推进、留检查点、用可验证的结果当完成证据。
比单独打 ulw 更系统,适合跨多文件、要分阶段、怕做到一半断掉的活。
用法:输入斜杠命令,后面跟你的目标,例如:
/ulw-loop 把注册流程改成手机号 + 验证码,旧邮箱注册要兼容,写完跑通关键路径
和 ulw 的粗分:
ulw:一句话塞进提示词,立刻自主干(短中任务常用)/ulw-loop:按大目标循环拆解、检查、再继续(长任务 / 要里程碑时用)
新手可以先只用「跟 Sisyphus 聊」和偶尔的 ulw;等熟了再试 /ulw-loop,以及「Tab 切 Prometheus → /start-work」。
其它角色(多数不用手动切)
多由 Sisyphus 自己委派:Oracle(架构咨询)、Librarian(查文档 / 开源资料)、Explore(翻代码)、Hephaestus(偏深挖执行)等。完整名单以官网为准。
编排说明:https://github.com/code-yeongyu/oh-my-openagent/blob/HEAD/docs/guide/orchestration.md
README:https://github.com/code-yeongyu/oh-my-openagent
OpenCode 常用
opencode→ 进入当前项目opencode --auto进入当前项目, 并自动批准权限, 不想总是手动确认权限时用opencode --auto -c进入当前项目, 并自动批准权限, 不想总是手动确认权限且打开后继续上一次会话/init→ 生成AGENTS.mdTab→ 切换当前角色(Sisyphus / Prometheus / Atlas 等)/undo//redo→ 撤销 / 重做@文件名→ 塞进上下文
插件捷径速查
ultrawork或ulw→ 提示词里加关键词,拉满自主执行/ulw-loop <目标>→ 按大目标循环拆解并推进/start-work→ 按计划开工(和「Tab到 Atlas + 说一句执行计划」效果一样,这个更省事)
五、Token 很贵?怎么办
你前面已经用天天AI 接好了,比官方订阅通常便宜一截。再用三条习惯继续省:
- 小事先别开
ultrawork//ulw-loop,直接跟 Sisyphus 说清楚改哪 - 真正复杂、怕返工的活,再走「先规划再
/start-work」 - 选对模型:简单活别用最贵的那档; 推荐全部
auto, 让服务器自动选
密钥丢了或要换一把:回 https://ai.ttshuli.com 控制台新建,再改 opencode.jsonc 里的 apiKey。若换模型名,opencode.jsonc 和 oh-my-openagent.json 里的 tiantian/auto 要一起改。
官网速查
- OpenCode 文档:https://opencode.ai/docs/
- OpenCode 安装脚本:https://opencode.ai/install
- OpenCode Providers:https://opencode.ai/docs/providers/
- Node.js:https://nodejs.org/
- Bun:https://bun.sh/
- oh-my-openagent:https://github.com/code-yeongyu/oh-my-openagent
- 插件安装指南:https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/docs/guide/installation.md
- 编排指南:https://github.com/code-yeongyu/oh-my-openagent/blob/HEAD/docs/guide/orchestration.md
- 天天AI:https://ai.ttshuli.com
装完先跑:写好 opencode.jsonc + oh-my-openagent.json → opencode → /models 选天天AI → 跟 Sisyphus 丢一个小任务;复杂再试 ulw;需要书面计划时:Tab 切 Prometheus → 确认后 /start-work。