https://api.acedata.cloud/v1,并以 acedatacloud/<model> 的形式选择模型(模型提供方 ID 可以自定义,本文统一使用 acedatacloud,与 MCP 系列文档一致)。
申请流程
要使用 OpenCode,首先可以到 Ace Data Cloud 控制台,获取您的 API Token,留作备用。
如果你尚未登录或注册,会自动跳转到登录页面邀请您来注册和登录,登录注册之后会自动返回当前页面。
在首次申请时会有免费额度赠送,可以免费体验 OpenCode 服务。
一份 Token 同时可以用于 OpenCode 接入 AceData 的 11 个 MCP 服务,统一计费。Token 仅保存在你本机配置或环境变量里,不要提交到公开仓库。
安装 OpenCode
OpenCode 支持 macOS、Linux、Windows 和 WSL。可以用官方一键脚本,也可以用 Homebrew 或 npm 安装。官方脚本安装(推荐)
macOS、Linux、WSL 可以运行:Homebrew 安装(macOS / Linux)
npm 安装
如果你已经安装了 Node.js 18+,可以通过 npm 安装:Windows winget 安装
检查安装
安装完成后,重新打开终端,然后检查命令是否可用:command not found,通常是当前终端还没有加载新的 PATH,请关闭并重新打开终端。macOS Homebrew 安装路径是 /opt/homebrew/bin/opencode,可用 which opencode 查看。
配置 OpenCode
OpenCode 用opencode.json 作为配置文件。根据 OpenCode 官方配置文档,启动时按以下顺序加载,后者覆盖前者:
- 全局配置:
~/.config/opencode/opencode.json(也支持opencode.jsonc同目录变体写带注释配置) OPENCODE_CONFIG环境变量:指向任意自定义配置文件路径- 项目配置:项目根目录下的
opencode.json(向上查找到 Git root 为止)
- 全局配置:
~/.config/opencode/opencode.json,对所有项目生效。 - 项目级配置:项目根目录下的
opencode.json,仅对当前项目生效,会覆盖全局。
acedatacloud 的自定义模型提供方。
第一步:导出 API Token 到环境变量
推荐把 API Token 写入 Shell 配置文件,例如~/.zshrc、~/.bashrc 或 ~/.bash_profile:
{token} 替换为您在 Ace Data Cloud 控制台复制的 API Token。
配置后重新打开终端,或执行对应的 source 命令让配置立即生效:
⚠️ 如果你把 Token 放在的是单独的OpenCode 配置文件里使用.env文件里,而且文件中是ACEDATACLOUD_API_KEY=...(没有export前缀),那么普通source .env只会设置 shell 变量不会导出到子进程,OpenCode 启动时读不到。请改用:生效后opencode debug config里看到"Authorization": "Bearer <你的Token>"才算成功;如果看到"Bearer "(后面是空)说明占位符没被解析。
{env:ACEDATACLOUD_API_KEY} 占位符引用这个环境变量,避免把真实 Token 直接写入文件。
第二步:编辑全局配置
如果该文件不存在,可以新建它:~/.config/opencode/opencode.json:
models 里只列你需要的模型即可,后续想增删模型时编辑这一段就行,不需要重启系统。
💡 也可以使用opencode.jsonc后缀写带注释的配置,文件位置与opencode.json相同,OpenCode 会按 JSONC 解析。
第三步:验证模型提供方已经注册
回到终端,运行:acedatacloud/...,说明配置文件没有被读取。可以加 --print-logs --log-level INFO 再跑一次,确认 service=config path=... loading 是否扫到了你的配置文件。
第四步:发起第一个会话
进入你的项目目录,然后直接启动 TUI:/models 选择 acedatacloud/claude-haiku-4-5-20251001(或任何你喜欢的模型),就可以开始对话。
也可以用一次性命令让 OpenCode 完成单个任务:
工作原理
OpenCode 通过 Vercel AI SDK 的@ai-sdk/openai-compatible 适配器请求兼容 OpenAI Chat Completions 协议的服务。Ace Data Cloud 在 https://api.acedata.cloud/v1/chat/completions 提供该兼容代理,因此 OpenCode 不需要本地代理程序,也不需要任何插件。
工作流程如下:
- OpenCode 启动时按 官方文档 顺序读取
~/.config/opencode/opencode.json(全局)→$OPENCODE_CONFIG(自定义路径)→ 项目根目录下的opencode.json,后者字段覆盖前者。 - 当请求
acedatacloud/<model>时,OpenCode 加载provider.acedatacloud配置块,解析options.apiKey中的{env:ACEDATACLOUD_API_KEY}占位符。 - 请求被构造成 OpenAI Chat Completions 格式,加上
Authorization: Bearer <token>,POST 到https://api.acedata.cloud/v1/chat/completions。 - Ace Data Cloud 校验 Token、检查额度,转发到对应模型的目标模型服务,并将响应(流式或非流式)按原协议透传回 OpenCode。
- 请求完成后,平台根据实际使用量记录用量并扣减额度。
opencode 命令和 TUI 体验,只是把底层模型服务切换为 Ace Data Cloud。
配置模型
MODEL_ID 必须来自 Coding 选择器中 opencode-cli-provider 的当前 allowlist。不要把本文历史实测模型或 /v1/models 的全部返回值直接当成 OpenCode tool-loop 已验证清单。
可在 TUI 中使用 /models 切换已写入 provider.acedatacloud.models 的 exact model。
与 MCP 工具一起用
OpenCode 同样支持 Model Context Protocol (MCP),可以在同一个opencode.json 中追加 mcp 段,让 Agent 在写代码之余顺手生图、写歌、做视频、搜网页、压短链。AceData 提供了 11 个开箱即用的远程 MCP Server(实测共 119 个工具),详见 OpenCode MCP 总览。
⚠️ 重要提示(实测结论):当opencode.json中同时配置了大量 MCP 工具时,建议优先选择 OpenAI 系列模型(如gpt-5、gpt-5-mini)作为对话模型。Claude 系列模型对 MCP 工具 JSON Schema 的校验更严格,在工具数量较多时容易在服务返回Improperly formed request(实测:acedatacloud/claude-haiku-4-5-20251001、acedatacloud/claude-sonnet-4-6在挂载全部 11 个 MCP 时均报这个错)。只做对话、不调用 MCP 工具时,Claude 系列模型可以正常使用(本文上面的Hello from AceData via OpenCode.实测即用claude-sonnet-4-6)。
故障排查
Model not found: acedatacloud/...:模型 ID 拼写错了,或没在provider.acedatacloud.models里登记。打开~/.config/opencode/opencode.json检查 key。401 Unauthorized/ 鉴权失败:通常是ACEDATACLOUD_API_KEY未导出到当前终端。执行echo $ACEDATACLOUD_API_KEY看看是否有值,没有就重新source ~/.zshrc。如果是.env文件没有export前缀,请用set -a && source .env && set +a。Improperly formed request:目标服务模型拒绝了请求。如果当前会话挂载了 MCP 工具且选择的是 Claude 模型,可切换到acedatacloud/gpt-5-mini重试;或者临时禁用相关 MCP(把enabled改为false)再发请求。opencode mcp list报 401 /SSE error: Non-200 status code (401):检查 MCP 配置是否加了"oauth": false。AceData MCP 走 Bearer Token 鉴权,不走 OAuth,必须显式关闭 OAuth 才能调用成功。- 配置文件改了不生效:OpenCode 启动时一次性读取配置,修改后请退出 TUI 重新启动
opencode。如需调试,可加--print-logs --log-level INFO查看配置加载路径和顶部会看到的service=config path=... loading日志。

