OpenCode 接入第三方模型教程:2026 年配置方法与常见报错

简介: OpenCode 接第三方模型易踩坑:API Key ≠ 模型就绪!需严格对齐凭据、提供商 ID、API 协议(如 `/v1/chat/completions`)与真实模型 ID。内置厂商一键接入;自定义平台须手动配 `opencode.json`,选对 `npm` SDK 包是关键。

最近我在整理 AI 编程工具的模型接入方式,发现 OpenCode 有个地方很容易把人绕进去:它虽然支持大量模型提供商,但“填进 API Key”和“把模型配置出来”其实是两件事。

不少人执行完 /connect,以为模型就算接好了,结果打开 /models 什么也没有;还有人照着 OpenAI 的配置抄了一遍,接口一直报 404。

问题通常不在 Key,而在提供商 ID、API 协议和模型 ID 没对齐。

这篇不展开讲 OpenCode 怎么安装,只说第三方模型怎么接。以下配置依据 OpenCode 官方文档截至 2026 年 9 月的版本整理。

先判断你的模型属于哪一种

OpenCode 接入第三方模型,基本分为两类。

第一类是它已经内置的提供商,比如 OpenAI、Anthropic、DeepSeek、OpenRouter、Moonshot AI、MiniMax、Groq、Ollama 等。

这类最省事,通常只要在 OpenCode 的 TUI 中执行:

/connect

选择对应提供商,填入 API Key,再执行:

/models

选中模型即可。

第二类是 OpenCode 列表里没有,但提供 OpenAI 兼容接口的服务。比如公司内部部署的模型网关、自建推理服务,或者某个只给了 baseURL、API Key 和模型 ID 的聚合平台。

这种情况除了保存凭据,还需要手动配置 opencode.json

我一般先问接口方三个问题:

  • 请求走的是 /v1/chat/completions,还是 /v1/responses
  • 实际模型 ID 是什么;
  • 是否完整支持流式输出和 tool calling。

这三个问题没确认,后面很容易出现“能聊天,但不能改代码”的半接通状态。

内置提供商这样接

先启动 OpenCode:

opencode

进入界面后输入:

/connect

找到对应提供商,按提示完成登录或填写 API Key。随后输入:

/models

选择要使用的模型。

如果希望每次进入项目都默认使用它,可以在项目根目录创建 opencode.json

{
   
  "$schema": "https://opencode.ai/config.json",
  "model": "deepseek/deepseek-chat"
}

这里的模型名称只是格式示例,实际值要以 /models 中显示的 ID 为准。

OpenCode 使用的完整模型 ID 格式是:

provider_id/model_id

前半段是提供商 ID,后半段才是接口真正使用的模型 ID。两者不要混在一起猜。

未收录的第三方平台这样接

假设我拿到了一组信息:

Base URL:https://api.example.com/v1
API Key:sk-xxxxxxxx
模型 ID:example-coder

先在 OpenCode 中执行:

/connect

向下找到 Other,然后输入一个自定义提供商 ID,比如:

example

接着填入 API Key。

这里有个细节:/connect 只负责保存凭据,并不会自动知道这个平台有哪些模型、接口地址是什么。因此还要在项目根目录创建 opencode.json

{
   
  "$schema": "https://opencode.ai/config.json",
  "provider": {
   
    "example": {
   
      "npm": "@ai-sdk/openai-compatible",
      "name": "Example AI",
      "options": {
   
        "baseURL": "https://api.example.com/v1"
      },
      "models": {
   
        "example-coder": {
   
          "name": "Example Coder"
        }
      }
    }
  },
  "model": "example/example-coder"
}

配置中的几个名字分别代表:

  • example:自定义提供商 ID,必须与 /connect 时填写的一致;
  • npm:OpenCode 调用该接口使用的 AI SDK 包;
  • baseURL:模型服务的 API 地址;
  • example-coder:服务端认可的真实模型 ID;
  • name:OpenCode 界面里的显示名称,可以自定义;
  • model:启动时默认使用的完整模型 ID。

保存后重新进入 OpenCode,再执行 /models,正常情况下就能看到刚才添加的模型。

npm 这一行不要随便抄

这是我认为最容易配错的地方。

如果第三方平台使用传统的 OpenAI 兼容接口:

POST /v1/chat/completions

配置一般写:

"npm": "@ai-sdk/openai-compatible"

如果平台明确使用 OpenAI Responses API:

POST /v1/responses

则应使用:

"npm": "@ai-sdk/openai"

接口协议选错后,常见表现是 Base URL 和 Key 看着都对,但请求仍然报 404、参数不兼容,或者流式输出异常。

所以我现在接新平台时,不会只问一句“是不是 OpenAI 兼容”。我会直接确认它兼容的是哪个端点。这个细节能省掉不少排查时间。

API Key 不要直接写进项目配置

OpenCode 允许在 options 中直接配置 apiKey,但如果 opencode.json 会提交到 Git,我不建议把明文密钥放进去。

可以改成环境变量:

{
   
  "$schema": "https://opencode.ai/config.json",
  "provider": {
   
    "example": {
   
      "npm": "@ai-sdk/openai-compatible",
      "name": "Example AI",
      "options": {
   
        "baseURL": "https://api.example.com/v1",
        "apiKey": "{env:EXAMPLE_API_KEY}"
      },
      "models": {
   
        "example-coder": {
   
          "name": "Example Coder"
        }
      }
    }
  },
  "model": "example/example-coder"
}

启动前设置环境变量:

export EXAMPLE_API_KEY="sk-xxxxxxxx"
opencode

如果通过 /connect 保存凭据,OpenCode 会把认证信息放在:

~/.local/share/opencode/auth.json

项目配置里只保留提供商、接口地址和模型信息即可。

本地模型也是同一套逻辑

LM Studio、Ollama、llama.cpp 这类本地推理服务,只要暴露了 OpenAI 兼容接口,也可以按相同方式接入。

以 Ollama 为例:

{
   
  "$schema": "https://opencode.ai/config.json",
  "provider": {
   
    "ollama": {
   
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama Local",
      "options": {
   
        "baseURL": "http://localhost:11434/v1"
      },
      "models": {
   
        "qwen3-coder": {
   
          "name": "Qwen3 Coder"
        }
      }
    }
  },
  "model": "ollama/qwen3-coder"
}

这里最重要的不是显示名称,而是 models 下面的键必须和本地服务返回的模型 ID 对得上。

如果不确定,可以先检查模型列表接口:

curl http://localhost:11434/v1/models

服务端返回什么 ID,配置里就写什么,不要凭模型的商品名猜。

需要自定义请求头时怎么写

有些企业网关除了 API Key,还要求额外的租户 ID、项目 ID或自定义鉴权头,可以放在 options.headers 中:

{
   
  "$schema": "https://opencode.ai/config.json",
  "provider": {
   
    "company-gateway": {
   
      "npm": "@ai-sdk/openai-compatible",
      "name": "Company Gateway",
      "options": {
   
        "baseURL": "https://gateway.example.com/v1",
        "apiKey": "{env:COMPANY_API_KEY}",
        "headers": {
   
          "X-Project-ID": "{env:COMPANY_PROJECT_ID}"
        }
      },
      "models": {
   
        "coder-model": {
   
          "name": "Company Coder"
        }
      }
    }
  }
}

如果网关要求的不是标准 Bearer 鉴权,也可以按平台文档配置对应请求头。不过鉴权信息仍建议走环境变量,不要直接写死。

配完以后,我会做三步验证

第一步,检查 OpenCode 是否识别到了凭据:

opencode auth list

第二步,进入 OpenCode 执行:

/models

确认自定义提供商和模型是否出现。

第三步,不要只问一句“你是谁”。我通常会让模型执行一个很小的代码任务,比如:

读取当前目录结构,找到 package.json,并告诉我项目使用了哪个前端框架。先不要修改文件。

这一步能同时检查:

  • 模型是否能正常返回;
  • 上下文是否传递完整;
  • tool calling 是否可用;
  • 模型能否正确处理工具结果。

有些模型普通对话完全正常,一到读文件、调用终端或者提交修改就失败。这种情况通常不是 OpenCode 没接通,而是模型本身或中转平台没有完整支持工具调用。

常见报错从哪里查

/models 中看不到自定义模型

先检查三个 ID:

  • /connect 时填写的提供商 ID;
  • provider 下的键名;
  • 默认模型中 / 前面的提供商 ID。

这三个必须一致。

请求返回 401

优先检查 API Key 是否有效,以及凭据是否保存到了正确的提供商 ID。不要只反复重新粘贴 Key,先用:

opencode auth list

确认 OpenCode 实际识别到的认证项。

请求返回 404

大多是 baseURL 或接口协议不对。

重点看这两项:

  • Base URL 是否需要包含 /v1
  • 服务走的是 /chat/completions 还是 /responses

如果协议不同,只改 URL 往往不够,npm 对应的 SDK 包也要一起改。

可以聊天,但不会调用工具

这种情况优先怀疑模型能力和中转兼容性。

OpenCode 是编码 Agent,不是普通聊天窗口。模型至少要稳定支持结构化 tool calling,才能完成读取文件、执行命令、修改代码等操作。

如果平台只兼容文本对话,或者在中转过程中丢失了工具调用字段,那么接入成功也只能算“能说话”,不能算真正可用。

长任务做到一半突然丢上下文

自定义模型可以补充上下文和输出限制:

"models": {
   
  "example-coder": {
   
    "name": "Example Coder",
    "limit": {
   
      "context": 128000,
      "output": 32000
    }
  }
}

这两个数字必须来自模型或服务商的真实说明,不能为了显示更大的上下文随便填写。它们会影响 OpenCode 对剩余上下文空间的判断。

写在最后

OpenCode 接第三方模型,表面上是在填一个 API 地址,实际要对齐四层东西:

凭据
→ 提供商 ID
→ API 协议
→ 模型 ID

我自己的排查顺序也是按这四层走。

先确认 Key 是否被识别,再确认 /connect 和配置里的提供商 ID 是否一致,然后核对 /chat/completions/responses,最后才看模型 ID和工具调用能力。

只要这四层能一一对上,大多数 OpenAI 兼容模型都能接入。反过来,如果上来就反复改 JSON,通常只会把问题越改越乱。

还有一点容易被忽略:能返回文字,不等于适合放进 OpenCode。真正决定使用体验的,是模型能不能稳定理解代码上下文、调用工具,并在多轮任务里保持指令一致。

接口接通只是第一步,能把活干完才算接好了。

相关文章
|
5天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1484 0
|
5天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1131 0
|
14天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3779 4
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
5天前
|
人工智能 安全 前端开发
刚刚 GPT-6 Astra 发布,全球最强,AGI 时代到来!
OpenAI 正式推出 GPT-6 Astra 模型,带大家看看这次 GPT 有哪些提升,跟 Claude Fable 5.1 有什么差距?AI 编程能力如何?AGI 真的来了么?
633 0
|
2天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
608 0
|
6天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)