天天AI
教程 登录 免费注册

首页 / 教程

OpenCode + oh-my-opencode 保姆级安装

安装 OpenCode 与 oh-my-openagent 插件,配置模型与角色用法,并用天天AI接入节省Token。

想在终端里用 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 编排插件:主编排 + 专家分工。

为什么要组合? 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

官方插件安装说明:https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/docs/guide/installation.md

三、配置(先跑通最小闭环)

这一步的目标很简单:让 OpenCode 能连上模型开始干活。
官方那套「登录 Anthropic / OpenAI 订阅」又贵又绕,新手直接跳过。本文用 天天AI 一把配好。

关于官方登录
OpenCode 官网「Configure」写明:要用模型前,默认流程是在界面里输入 /connect,选提供商、填 API Key / 登录(见 https://opencode.ai/docs/)。
没配好时,界面也会显示类似 Connect a provider(连接提供商)的提示。

本文不走这条。 按下面把天天AI 写进配置文件即可,不用 /connect 去登 Claude / ChatGPT。

正确做法:

  1. 先写好下面两份配置(OpenCode + 插件各一份)
  2. 再启动 opencode
  3. 输入 /models,选 天天AI

总之一句话:官方默认是 /connect;我们改成写配置文件,跳过官方登录。

1. 先拿到天天AI 的密钥

  1. 打开 https://ai.ttshuli.com 注册并登录
  2. 进控制台,创建一个 API 密钥(一般长这样:sk-mt-...)
  3. 复制保存好,后面要贴进配置文件;别发到群里、别截图露出来

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 之后常会踩四个坑:

  1. 子代理模型对不上。
    可临时注释掉 "plugin" 那一行做对比:关掉插件时,上面结构基本能聊;一开插件,任务做到一半可能报错——因为部分子代理仍走其它软件预设的模型,而你这边根本访问不了。

  2. 缺少只读角色。
    开了插件后,常用的几个角色都能改文件。有时只想问问题、不想动任何文件,就需要单独做一个只读角色(禁止 edit / bash)。

  3. 没声明推理能力(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 时也带上努力度)

  4. 图片附件需要同时声明能力和配置平台路由。
    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……

看清楚当前名字再说话。切错人,干的活就不对。

三个角色分别干什么

  1. Sisyphus(西西弗斯)——默认入口,日常跟它聊
    打开后默认就是它。你说需求,它自己想步骤、叫专家、把活推完。
    小改、日常开发:待在 Sisyphus,不用切人。

  2. Prometheus(普罗米修斯)——只写计划,不动手改代码
    大改、不敢直接干、想先谈清楚范围时用。
    按 Tab 切到它,告诉它要做什么;它问清楚后,把计划写到 .omo/plans/。

  3. Atlas(阿特拉斯)——按计划改代码的那个执行者
    计划写好、你点头同意之后,才轮到它。
    平时别跟它闲聊。

计划写好了怎么开工?

两种做法,效果一样:都是让 Atlas 按计划开干。

做法 A(推荐,少打字)——直接输入:

/start-work

它会自动去找 .omo/plans/ 里的计划;有多个会问你选哪个,然后开干。

做法 B——按 Tab 切到 Atlas,再跟它说一句,例如:

按计划执行

或:

执行刚才那份计划

记住:切到 Atlas 之后要说一句「执行 / 开干」,它才开始干;光切过去不说话,它不会自己动。
/start-work 就是帮你省掉「先切人再喊一声」这两步,一键干同样的事。

完整顺序:

  1. Tab 切到 Prometheus → 写计划
  2. 你自己看一眼,觉得行
  3. /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 常用

文档:https://opencode.ai/docs/

  • opencode → 进入当前项目
  • opencode --auto 进入当前项目, 并自动批准权限, 不想总是手动确认权限时用
  • opencode --auto -c 进入当前项目, 并自动批准权限, 不想总是手动确认权限且打开后继续上一次会话
  • /init → 生成 AGENTS.md
  • Tab → 切换当前角色(Sisyphus / Prometheus / Atlas 等)
  • /undo / /redo → 撤销 / 重做
  • @文件名 → 塞进上下文

插件捷径速查

  • ultrawork 或 ulw → 提示词里加关键词,拉满自主执行
  • /ulw-loop <目标> → 按大目标循环拆解并推进
  • /start-work → 按计划开工(和「Tab 到 Atlas + 说一句执行计划」效果一样,这个更省事)

五、Token 很贵?怎么办

你前面已经用天天AI 接好了,比官方订阅通常便宜一截。再用三条习惯继续省:

  1. 小事先别开 ultrawork / /ulw-loop,直接跟 Sisyphus 说清楚改哪
  2. 真正复杂、怕返工的活,再走「先规划再 /start-work」
  3. 选对模型:简单活别用最贵的那档; 推荐全部 auto, 让服务器自动选

密钥丢了或要换一把:回 https://ai.ttshuli.com 控制台新建,再改 opencode.jsonc 里的 apiKey。若换模型名,opencode.jsonc 和 oh-my-openagent.json 里的 tiantian/auto 要一起改。

官网速查

装完先跑:写好 opencode.jsonc + oh-my-openagent.json → opencode → /models 选天天AI → 跟 Sisyphus 丢一个小任务;复杂再试 ulw;需要书面计划时:Tab 切 Prometheus → 确认后 /start-work。