1. 为什么我要把 OpenCode 和 oh-my-opencode 装在一起

OpenCode 是一个跑在终端里的 AI 编码助手,你可以把它理解成「开源版的 Claude Code」:在项目目录里敲 opencode,它就能读你的代码、改文件、跑命令。而 oh-my-opencode(后面简称 OMO)是它的增强框架,装完之后会多出一批分工明确的子代理,比如专门做架构推理的、专门查资料的、专门做代码审查的,还能按任务类型自动挑模型。

这套组合适合谁?适合想在自己电脑上长期用 AI 写代码、又不想被单一模型绑死的人。你可以今天用这个模型写业务逻辑,明天换另一个模型做重构,配置全在自己手里。

但真正装的时候,坑往往不在 OpenCode 本身,而在「模型接入」这一步:每个模型厂商一个 Key、一个 baseURL、一套模型名,配置文件改到崩溃。这篇教程的做法是:用 TaoToken 的统一 Key 作为唯一入口,OpenCode 和 OMO 都指向它,配置文件只写一份,模型名按需切换。下面从零开始,一步步跑到能对话为止。

2. 装之前先把 TaoToken 的 Key 和地址准备好

TaoToken 在这里扮演的角色是「统一模型入口」:你只需要一个 API Key,就能在 OpenCode 和 OMO 里调用不同厂商的模型,不用为每个模型单独注册、单独配 baseURL。对本地编码工具来说,这能省掉大量重复配置。

第一步,打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册账号。注册流程很常规,邮箱加密码即可。

第二步,进控制台创建 API Key。地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在「API Keys」页面点新建,复制出来的 Key 形如 sk-xxxxxxxx。这个 Key 只显示一次,先粘到记事本里。

第三步,记住两个地址,后面配置要用:

用途地址
API 基础地址(baseURL)https://taotoken.net/api
模型列表 / 文档https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

注意:baseURL 填 https://taotoken.net/api,不要自己加 /v1,OpenCode 的 provider 配置会自动补路径。加了反而容易 404。

如果你还没决定用哪个模型,可以先到模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 试几句,确认 Key 能用、模型有响应,再往下装工具。这一步能帮你把「Key 问题」和「工具问题」分开排查。

3. 安装 OpenCode 与 oh-my-opencode

3.1 环境准备

先确认 Node.js 版本,OMO 要求 OpenCode ≥ 1.0.150,Node 建议 18 以上:

node -v
npm -v

如果版本太低,用 nvm 切一个 20.x 的版本。用 nvm 的同学建议先把 npm 全局目录固定下来,避免切版本后全局包丢失:

npm config set prefix ~/.npm-global
npm config set cache ~/.npm-cache
export PATH=~/.npm-global/bin:$PATH

国内下载慢的话换镜像:

npm config set registry https://registry.npmmirror.com

3.2 安装 OpenCode

三种方式选一种。官方脚本最省事:

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

Node 用户推荐全局安装:

npm install -g opencode-ai

装完验证:

opencode --version

能打印出版本号(比如 1.0.15x)就说明 OpenCode 本体没问题。如果提示 command not found,八成是全局 bin 目录没进 PATH,回到 3.1 检查 npm config get prefix 的输出,把它的 bin 子目录加进 PATH。

3.3 安装 oh-my-opencode

OMO 依赖 OpenCode 已装好。推荐用交互式安装,它会引导你选模型、填 Key:

npx oh-my-opencode install

Bun 用户可以用 bunx oh-my-opencode install,速度更快。安装过程中会问你要接哪个模型,这里先随便选一个跳过也行,因为下一步我们会直接用配置文件覆盖成 TaoToken 的统一入口。

装完验证两件事:

omo --version
opencode --omo status

第一条打印 OMO 版本,第二条打印 OMO 与 OpenCode 的连接状态。两条都正常,说明框架层通了。

4. 用 TaoToken 统一 Key 配置 OpenCode 与 OMO

这一步是整篇的核心。OpenCode 和 OMO 各有一个配置文件,我们把两者都指向 TaoToken。

4.1 配置 OpenCode

配置文件位置:~/.config/opencode/opencode.json(Windows 在 %USERPROFILE%\.config\opencode\opencode.json)。没有就新建。完整骨架如下:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "taotoken/claude-sonnet-4-5",
  "provider": {
    "taotoken": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "TaoToken",
      "options": {
        "baseURL": "https://taotoken.net/api",
        "apiKey": "{env:TAOTOKEN_API_KEY}"
      },
      "models": {
        "claude-sonnet-4-5": {
          "name": "Claude Sonnet 4.5",
          "limit": { "context": 200000, "output": 16384 }
        },
        "gpt-5-codex": {
          "name": "GPT-5 Codex",
          "limit": { "context": 200000, "output": 16384 }
        },
        "qwen3-coder-plus": {
          "name": "Qwen3 Coder Plus",
          "limit": { "context": 128000, "output": 8192 }
        }
      }
    }
  }
}

几个关键点解释一下。provider 的键名 taotoken 是自定义的,你可以叫任何名字,但 model 字段里的前缀必须和它一致,所以 model 写成了 taotoken/claude-sonnet-4-5。npm 字段指定用 OpenAI 兼容协议,TaoToken 的接口就是这个协议,所以能直接对接。apiKey 用 {env:TAOTOKEN_API_KEY} 从环境变量读,比明文写进文件安全。

设置环境变量:

export TAOTOKEN_API_KEY="sk-你复制的Key"

Windows PowerShell:

$env:TAOTOKEN_API_KEY="sk-你复制的Key"

想永久生效就写进 ~/.bashrc 或 ~/.zshrc。models 里列出的模型名要和 TaoToken 文档里的模型 ID 一致,具体有哪些可以到 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 查,或者直接在模型对话页看可选列表。

4.2 配置 oh-my-opencode

配置文件位置:~/.config/oh-my-opencode/config.json。OMO 的模型名格式是 provider/model,provider 同样用 taotoken:

{
  "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json",
  "agents": {
    "hephaestus": { "model": "taotoken/claude-sonnet-4-5", "temperature": 0.2 },
    "oracle": { "model": "taotoken/gpt-5-codex", "temperature": 0.2 },
    "librarian": { "model": "taotoken/qwen3-coder-plus", "temperature": 0.3 },
    "explore": { "model": "taotoken/qwen3-coder-plus", "temperature": 0.1 },
    "prometheus": { "model": "taotoken/claude-sonnet-4-5", "temperature": 0.3 },
    "momus": { "model": "taotoken/gpt-5-codex", "temperature": 0.1 }
  },
  "categories": {
    "quick": { "model": "taotoken/qwen3-coder-plus", "temperature": 0.1 },
    "deep": { "model": "taotoken/claude-sonnet-4-5", "temperature": 0.3 },
    "writing": { "model": "taotoken/claude-sonnet-4-5", "temperature": 0.4 }
  }
}

这里只列了部分代理和分类,你可以按需增删。原则是:需要强推理的代理(oracle、prometheus)挂能力强的模型,日常快速任务(quick、explore)挂便宜快的模型。改完运行:

opencode --omo reload

让 OMO 重新加载配置。

4.3 让输出默认说中文

在 ~/.config/opencode/AGENTS.md 里加一段全局规则,所有会话都会遵守:

## 交互要求
1. 所有内部推理过程使用中文。
2. 所有回答内容使用中文,仅代码语法关键词保留英文。

这个文件是 OpenCode 的全局指令入口,写进去的规则优先级高于单次对话里的临时要求。

5. 验证:从启动到模型回显

配置写完不算完,得跑一遍确认链路通。按顺序做这四步。

第一步,启动 OpenCode。进任意项目目录:

cd your-project
opencode

如果配置有语法错误,启动时会直接报 JSON 解析失败,并指出行号。没有报错就说明配置文件格式没问题。

第二步,检查模型是否被识别。在 OpenCode 交互界面里输入 /models,应该能看到 taotoken 下面挂的那几个模型。看不到的话,多半是 provider 键名和 model 前缀不一致,回去核对 4.1。

第三步,发一句测试。直接输入:

用一句话说明这个项目是做什么的

正常情况会流式返回中文回答。如果卡住不动,先看终端有没有报 401 或 404。401 是 Key 问题,404 是 baseURL 问题。

第四步,验证 OMO 子代理。退出后运行:

opencode --omo agents

会列出所有可用代理。挑一个跑一下,比如让它审查当前目录的一个文件,观察是否正常返回。这一步通了,说明 OMO 的模型配置也生效了。

如果你更想先在网页端确认模型可用性,可以到 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 发同样的问题,对比两边的返回,能快速判断问题出在工具侧还是 Key 侧。

6. 常见报错与排查

报错一:401 Unauthorized。 九成是 Key 没读到。先确认环境变量在当前 shell 里存在:

echo $TAOTOKEN_API_KEY

输出为空说明没 export,或者你 export 的终端和运行 opencode 的终端不是同一个。Windows 下注意 PowerShell 和 CMD 的环境变量不互通。

报错二:404 Not Found 或 model not found。 检查 baseURL 是不是写成了 https://taotoken.net/api/v1。正确写法不带 /v1。另外确认 models 里的模型 ID 拼写和文档一致,大小写敏感。

报错三:OMO 报 unknown provider taotoken。 说明 OMO 没读到 OpenCode 的 provider 定义。OMO 的模型解析依赖 OpenCode 的 provider 配置,确认两个配置文件都在 ~/.config 下,且 OpenCode 的 provider 键名确实是 taotoken。改完记得 opencode --omo reload。

报错四:启动就崩,提示 JSON 解析失败。 用 python -m json.tool ~/.config/opencode/opencode.json 校验一下,它会指出具体哪一行多了逗号或少了括号。JSON 不允许尾随逗号,这是最常见的低级错误。

报错五:能对话但特别慢或超时。 先换一个模型试试,排除是单个模型的问题。如果所有模型都慢,检查本机网络到 taotoken.net 的连通性。另外 OMO 的某些代理默认 temperature 偏高,长任务下会显得慢,可以适当调低。

报错六:opencode --omo status 显示未连接。 通常是 OMO 版本和 OpenCode 版本不匹配。用 omo --version 和 opencode --version 对比,必要时重装 OMO:npx oh-my-opencode install 覆盖安装一次。

排查顺序建议固定成:先 echo $TAOTOKEN_API_KEY 确认 Key,再 curl 一下接口确认网络,最后看配置文件。这样能把问题范围快速缩小到某一层。

7. 接下来怎么用得更顺

装好只是起点。日常使用中,我建议把常用模型的 Key 和地址固定成环境变量,配置文件里只留模型名,换模型时改一行 model 字段就行,不用动 provider。OMO 那边也是同理,把代理和模型的映射关系当成一张「分工表」维护,重推理的活给强模型,格式化的活给快模型,成本和质量都能兼顾。

如果你打算长期在终端里用 AI 编码,可以到 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 管理你的 Key,需要新增或轮换时直接在这里操作。接入过程中遇到配置层面的问题,文档页 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 里有各客户端的对接示例,可以对照检查。想把编码任务跑成长期工作流的话,Coding Plan 页面 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 有更完整的方案说明。

最后留一个实用习惯:每次改完配置文件,先跑 opencode --version 和 opencode --omo status 两条命令,确认工具层没坏,再进交互界面测模型。这样出问题时你能立刻知道是配置改坏了还是模型侧的问题,省下大量来回试的时间。

更多推荐