一招解决opus接入opencode无法上传图片的问题!
- 内容介绍
- 文章标签
- 相关推荐
如果你想把opus 接入到opencode,你会发现它不能直接支持上传图片了,通过摸索,发现需要修改配置文件增加相关字段,以下是我让ai整理的教程,你把下面的内容直接发给你的ai,让它阅读并给你配置就可以了。
注意!
1、此方法只适合于使用第三方中转站提供的opus接入opencode后无法发图片的问题。
2、官方opus接入opencode需要做桥接,不在本帖讨论范围。
============================================
OpenCode Opus 图片支持配置教程
说明
文中的占位写法都可以按你自己的实际环境替换。
核心结论
如果你想让 OpenCode 里的某个 Claude 模型支持图片输入,关键不是只把模型名写进去,而是要在模型定义里显式声明:
"attachment": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
其中:
attachment: true表示允许附件输入modalities.input里包含"image"表示支持图片输入modalities.input里包含"pdf"表示顺手也支持 PDF 输入modalities.output一般保持["text"]
推荐配置模板
下面是一版适合公开分享的通用模板,你只需要把占位内容替换成自己的值:
{
"$schema": "https://opencode.ai/config.json",
"model": "你的主provider/你的稳定模型",
"provider": {
"你的主provider": {
"name": "你的主provider",
"npm": "@ai-sdk/openai-compatible",
"models": {
"你的稳定模型": {
"name": "你的稳定模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
},
"你的目标模型": {
"name": "你的目标模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
}
},
"options": {
"baseURL": "你的兼容接口地址/v1"
}
}
}
}
这份模板解决的是什么问题
它主要解决两类问题:
- OpenCode 不认为你的模型支持图片输入。
- 你的模型实际上支持图片,但 OpenCode 因为缺少能力声明,不让你上传图片。
最容易漏掉的 3 个点
1. baseURL 要写到正确接口层级
如果你用的是 OpenAI 兼容接口,通常不要只写根域名,往往要写到类似下面这种层级:
"baseURL": "你的兼容接口地址/v1"
如果少了 /v1,有时会出现模型列表能通、实际调用不稳定,或者能力识别异常。
2. provider ID 和认证配置必须完全一致
这是很容易翻车的一点。
如果你的配置文件里写的是:
"provider": {
"主线路": { ... }
}
那么认证文件里也必须是:
{
"主线路": {
"type": "api",
"key": "你的密钥"
}
}
不能配置里叫一个名字,认证里又叫另一个名字。
OpenCode 是按 provider ID 精确取认证的,不会自动帮你猜。
3. 不要给同一个后端配太多重复别名
如果同一个后端被你配成两三个 provider 名称,表面看起来灵活,实际上很容易出现:
- 模型选择串台
- 认证取错
- 某个会话走 A,另一个会话走 B
- 你以为改的是同一个配置,实际上改的是两套
公开教程里更推荐:
- 一个后端只保留一个主 provider
- 先把图片能力跑通
- 再考虑要不要做多别名或多线路
如果你想让 Opus 成为默认模型
把这行:
"model": "你的主provider/你的稳定模型"
改成:
"model": "你的主provider/你的目标模型"
然后完全重启 OpenCode。
推荐排查顺序
如果你既想支持图片,又想保证模型回复稳定,建议按下面顺序排查:
- 先挑一个你已经确认文本对话稳定的模型。
- 给这个模型补上
attachment和modalities.input。 - 先测试图片能不能上传。
- 图片上传正常后,再切换到你真正想用的目标模型。
- 如果目标模型能收图,但回复为空,那通常已经不是图片能力配置问题,而是上游接口兼容或流式返回问题。
一句话总结
要让 OpenCode 里的 Opus 支持图片,最关键的不是“模型本身支不支持”,而是“你有没有在配置里把它声明成支持图片输入的模型”。
方法很简单:
- 给模型加
attachment: true - 给
modalities.input加上"image" - 保证
baseURL正确 - 保证 provider ID 和认证配置完全一致
把这几步整明白,基本就八九不离十了。
网友解答:--【壹】--:
如果你想把opus 接入到opencode,你会发现它不能直接支持上传图片了,通过摸索,发现需要修改配置文件增加相关字段,以下是我让ai整理的教程,你把下面的内容直接发给你的ai,让它阅读并给你配置就可以了。
注意!
1、此方法只适合于使用第三方中转站提供的opus接入opencode后无法发图片的问题。
2、官方opus接入opencode需要做桥接,不在本帖讨论范围。
============================================
OpenCode Opus 图片支持配置教程
说明
文中的占位写法都可以按你自己的实际环境替换。
核心结论
如果你想让 OpenCode 里的某个 Claude 模型支持图片输入,关键不是只把模型名写进去,而是要在模型定义里显式声明:
"attachment": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
其中:
attachment: true表示允许附件输入modalities.input里包含"image"表示支持图片输入modalities.input里包含"pdf"表示顺手也支持 PDF 输入modalities.output一般保持["text"]
推荐配置模板
下面是一版适合公开分享的通用模板,你只需要把占位内容替换成自己的值:
{
"$schema": "https://opencode.ai/config.json",
"model": "你的主provider/你的稳定模型",
"provider": {
"你的主provider": {
"name": "你的主provider",
"npm": "@ai-sdk/openai-compatible",
"models": {
"你的稳定模型": {
"name": "你的稳定模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
},
"你的目标模型": {
"name": "你的目标模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
}
},
"options": {
"baseURL": "你的兼容接口地址/v1"
}
}
}
}
这份模板解决的是什么问题
它主要解决两类问题:
- OpenCode 不认为你的模型支持图片输入。
- 你的模型实际上支持图片,但 OpenCode 因为缺少能力声明,不让你上传图片。
最容易漏掉的 3 个点
1. baseURL 要写到正确接口层级
如果你用的是 OpenAI 兼容接口,通常不要只写根域名,往往要写到类似下面这种层级:
"baseURL": "你的兼容接口地址/v1"
如果少了 /v1,有时会出现模型列表能通、实际调用不稳定,或者能力识别异常。
2. provider ID 和认证配置必须完全一致
这是很容易翻车的一点。
如果你的配置文件里写的是:
"provider": {
"主线路": { ... }
}
那么认证文件里也必须是:
{
"主线路": {
"type": "api",
"key": "你的密钥"
}
}
不能配置里叫一个名字,认证里又叫另一个名字。
OpenCode 是按 provider ID 精确取认证的,不会自动帮你猜。
3. 不要给同一个后端配太多重复别名
如果同一个后端被你配成两三个 provider 名称,表面看起来灵活,实际上很容易出现:
- 模型选择串台
- 认证取错
- 某个会话走 A,另一个会话走 B
- 你以为改的是同一个配置,实际上改的是两套
公开教程里更推荐:
- 一个后端只保留一个主 provider
- 先把图片能力跑通
- 再考虑要不要做多别名或多线路
如果你想让 Opus 成为默认模型
把这行:
"model": "你的主provider/你的稳定模型"
改成:
"model": "你的主provider/你的目标模型"
然后完全重启 OpenCode。
推荐排查顺序
如果你既想支持图片,又想保证模型回复稳定,建议按下面顺序排查:
- 先挑一个你已经确认文本对话稳定的模型。
- 给这个模型补上
attachment和modalities.input。 - 先测试图片能不能上传。
- 图片上传正常后,再切换到你真正想用的目标模型。
- 如果目标模型能收图,但回复为空,那通常已经不是图片能力配置问题,而是上游接口兼容或流式返回问题。
一句话总结
要让 OpenCode 里的 Opus 支持图片,最关键的不是“模型本身支不支持”,而是“你有没有在配置里把它声明成支持图片输入的模型”。
方法很简单:
- 给模型加
attachment: true - 给
modalities.input加上"image" - 保证
baseURL正确 - 保证 provider ID 和认证配置完全一致
把这几步整明白,基本就八九不离十了。
如果你想把opus 接入到opencode,你会发现它不能直接支持上传图片了,通过摸索,发现需要修改配置文件增加相关字段,以下是我让ai整理的教程,你把下面的内容直接发给你的ai,让它阅读并给你配置就可以了。
注意!
1、此方法只适合于使用第三方中转站提供的opus接入opencode后无法发图片的问题。
2、官方opus接入opencode需要做桥接,不在本帖讨论范围。
============================================
OpenCode Opus 图片支持配置教程
说明
文中的占位写法都可以按你自己的实际环境替换。
核心结论
如果你想让 OpenCode 里的某个 Claude 模型支持图片输入,关键不是只把模型名写进去,而是要在模型定义里显式声明:
"attachment": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
其中:
attachment: true表示允许附件输入modalities.input里包含"image"表示支持图片输入modalities.input里包含"pdf"表示顺手也支持 PDF 输入modalities.output一般保持["text"]
推荐配置模板
下面是一版适合公开分享的通用模板,你只需要把占位内容替换成自己的值:
{
"$schema": "https://opencode.ai/config.json",
"model": "你的主provider/你的稳定模型",
"provider": {
"你的主provider": {
"name": "你的主provider",
"npm": "@ai-sdk/openai-compatible",
"models": {
"你的稳定模型": {
"name": "你的稳定模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
},
"你的目标模型": {
"name": "你的目标模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
}
},
"options": {
"baseURL": "你的兼容接口地址/v1"
}
}
}
}
这份模板解决的是什么问题
它主要解决两类问题:
- OpenCode 不认为你的模型支持图片输入。
- 你的模型实际上支持图片,但 OpenCode 因为缺少能力声明,不让你上传图片。
最容易漏掉的 3 个点
1. baseURL 要写到正确接口层级
如果你用的是 OpenAI 兼容接口,通常不要只写根域名,往往要写到类似下面这种层级:
"baseURL": "你的兼容接口地址/v1"
如果少了 /v1,有时会出现模型列表能通、实际调用不稳定,或者能力识别异常。
2. provider ID 和认证配置必须完全一致
这是很容易翻车的一点。
如果你的配置文件里写的是:
"provider": {
"主线路": { ... }
}
那么认证文件里也必须是:
{
"主线路": {
"type": "api",
"key": "你的密钥"
}
}
不能配置里叫一个名字,认证里又叫另一个名字。
OpenCode 是按 provider ID 精确取认证的,不会自动帮你猜。
3. 不要给同一个后端配太多重复别名
如果同一个后端被你配成两三个 provider 名称,表面看起来灵活,实际上很容易出现:
- 模型选择串台
- 认证取错
- 某个会话走 A,另一个会话走 B
- 你以为改的是同一个配置,实际上改的是两套
公开教程里更推荐:
- 一个后端只保留一个主 provider
- 先把图片能力跑通
- 再考虑要不要做多别名或多线路
如果你想让 Opus 成为默认模型
把这行:
"model": "你的主provider/你的稳定模型"
改成:
"model": "你的主provider/你的目标模型"
然后完全重启 OpenCode。
推荐排查顺序
如果你既想支持图片,又想保证模型回复稳定,建议按下面顺序排查:
- 先挑一个你已经确认文本对话稳定的模型。
- 给这个模型补上
attachment和modalities.input。 - 先测试图片能不能上传。
- 图片上传正常后,再切换到你真正想用的目标模型。
- 如果目标模型能收图,但回复为空,那通常已经不是图片能力配置问题,而是上游接口兼容或流式返回问题。
一句话总结
要让 OpenCode 里的 Opus 支持图片,最关键的不是“模型本身支不支持”,而是“你有没有在配置里把它声明成支持图片输入的模型”。
方法很简单:
- 给模型加
attachment: true - 给
modalities.input加上"image" - 保证
baseURL正确 - 保证 provider ID 和认证配置完全一致
把这几步整明白,基本就八九不离十了。
网友解答:--【壹】--:
如果你想把opus 接入到opencode,你会发现它不能直接支持上传图片了,通过摸索,发现需要修改配置文件增加相关字段,以下是我让ai整理的教程,你把下面的内容直接发给你的ai,让它阅读并给你配置就可以了。
注意!
1、此方法只适合于使用第三方中转站提供的opus接入opencode后无法发图片的问题。
2、官方opus接入opencode需要做桥接,不在本帖讨论范围。
============================================
OpenCode Opus 图片支持配置教程
说明
文中的占位写法都可以按你自己的实际环境替换。
核心结论
如果你想让 OpenCode 里的某个 Claude 模型支持图片输入,关键不是只把模型名写进去,而是要在模型定义里显式声明:
"attachment": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
其中:
attachment: true表示允许附件输入modalities.input里包含"image"表示支持图片输入modalities.input里包含"pdf"表示顺手也支持 PDF 输入modalities.output一般保持["text"]
推荐配置模板
下面是一版适合公开分享的通用模板,你只需要把占位内容替换成自己的值:
{
"$schema": "https://opencode.ai/config.json",
"model": "你的主provider/你的稳定模型",
"provider": {
"你的主provider": {
"name": "你的主provider",
"npm": "@ai-sdk/openai-compatible",
"models": {
"你的稳定模型": {
"name": "你的稳定模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
},
"你的目标模型": {
"name": "你的目标模型显示名",
"attachment": true,
"reasoning": true,
"tool_call": true,
"modalities": {
"input": ["text", "image", "pdf"],
"output": ["text"]
}
}
},
"options": {
"baseURL": "你的兼容接口地址/v1"
}
}
}
}
这份模板解决的是什么问题
它主要解决两类问题:
- OpenCode 不认为你的模型支持图片输入。
- 你的模型实际上支持图片,但 OpenCode 因为缺少能力声明,不让你上传图片。
最容易漏掉的 3 个点
1. baseURL 要写到正确接口层级
如果你用的是 OpenAI 兼容接口,通常不要只写根域名,往往要写到类似下面这种层级:
"baseURL": "你的兼容接口地址/v1"
如果少了 /v1,有时会出现模型列表能通、实际调用不稳定,或者能力识别异常。
2. provider ID 和认证配置必须完全一致
这是很容易翻车的一点。
如果你的配置文件里写的是:
"provider": {
"主线路": { ... }
}
那么认证文件里也必须是:
{
"主线路": {
"type": "api",
"key": "你的密钥"
}
}
不能配置里叫一个名字,认证里又叫另一个名字。
OpenCode 是按 provider ID 精确取认证的,不会自动帮你猜。
3. 不要给同一个后端配太多重复别名
如果同一个后端被你配成两三个 provider 名称,表面看起来灵活,实际上很容易出现:
- 模型选择串台
- 认证取错
- 某个会话走 A,另一个会话走 B
- 你以为改的是同一个配置,实际上改的是两套
公开教程里更推荐:
- 一个后端只保留一个主 provider
- 先把图片能力跑通
- 再考虑要不要做多别名或多线路
如果你想让 Opus 成为默认模型
把这行:
"model": "你的主provider/你的稳定模型"
改成:
"model": "你的主provider/你的目标模型"
然后完全重启 OpenCode。
推荐排查顺序
如果你既想支持图片,又想保证模型回复稳定,建议按下面顺序排查:
- 先挑一个你已经确认文本对话稳定的模型。
- 给这个模型补上
attachment和modalities.input。 - 先测试图片能不能上传。
- 图片上传正常后,再切换到你真正想用的目标模型。
- 如果目标模型能收图,但回复为空,那通常已经不是图片能力配置问题,而是上游接口兼容或流式返回问题。
一句话总结
要让 OpenCode 里的 Opus 支持图片,最关键的不是“模型本身支不支持”,而是“你有没有在配置里把它声明成支持图片输入的模型”。
方法很简单:
- 给模型加
attachment: true - 给
modalities.input加上"image" - 保证
baseURL正确 - 保证 provider ID 和认证配置完全一致
把这几步整明白,基本就八九不离十了。

