快速结论:当 LiteLLM 代理调用 OpenCode Go 托管推理接口时,若出站请求缺少 x-opencode-session 头,OpenCode 侧会直接拒绝请求。优先确认 LiteLLM 版本是否已包含会话头自动转发,未包含时可用请求级 extra_headers 临时补头。
适用环境:Issue 中确认的环境为 LiteLLM(用户侧 UA 为 litellm/1.98.0)调用 OpenCode Go 托管推理 API;未提供操作系统、Python、CUDA 或显卡信息。
最快修复方案:升级到包含 PR #48121 的 LiteLLM 版本(Issue 中已写明 Fixed and merged,稳定会话 ID 会在三类路由上自动转发);无法立即升级时,先在模型配置中通过 extra_headers 传入一个固定 UUID 作为临时规避。
注意事项:固定 UUID 只是一个静态值,不等同于“每次对话的稳定会话 ID”,可能影响 OpenCode 的路由与优化效果;回调自动注入的方式在评论中被反馈在健康检查场景下不生效。自动转发是否覆盖你使用的具体路由,需以实际版本和运行日志为准。
问题场景
用户通过 LiteLLM 的代理/网关调用 OpenCode Go 托管推理 API,正常发起 LLM 推理请求。OpenCode 从 09/05 起强制要求出站请求携带 x-opencode-session 头,用于按会话路由和优化,而 LiteLLM 在该时间点的版本中未发送此头,导致推理请求被判为无法路由并报错。评论中多位用户反馈因此无法继续使用 LiteLLM,并分别提交了 PR 或使用临时 header 方案。
报错原文
Error during LLM inference:
litellm.BadRequestError:
OpenAIException -
{
"type": "error",
"error": {
"type": "MissingSessionID",
"message": "Error from provider (Console Go): Request is missing x-opencode-session and cannot be routed efficiently. Please see https://opencode.ai/docs/go/#where-can-i-use-it"
}
}
对应需求表述为:Send x-opencode-session header on API requests (required by OpenCode Go from 09/05)。
原因分析
最可能的原因是 LiteLLM 向 OpenCode Go 发出的推理 HTTP 请求中没有携带 x-opencode-session 头。OpenCode 侧已将该头作为强制校验项,缺失时返回 MissingSessionID 并拒绝路由。Issue 明确指出 LiteLLM 在发帖时所见的所有版本都未发送该头,因此这不是模型参数或鉴权问题,而是请求头构造问题。
环境排查
- 确认当前 LiteLLM 版本:Issue 中用户报错时出现
litellm/1.98.0,需核对你实际运行的版本。 - 确认所使用的 LiteLLM 路由方式(Issue 提到修复后覆盖“三类路由”,应核对你的调用路径是否在覆盖范围内)。
- 确认是否已升级到包含 PR #48121 的构建;仅看到 PR 合并不代表你的部署已生效。
- 确认模型配置中是否已有自定义
extra_headers,避免与实际请求头冲突。 - Issue 未提供操作系统、Python、CUDA、PyTorch、显卡信息,这些项目暂不作为本次排错依据。
解决步骤
- 首选:升级 LiteLLM 到包含 PR #48121 的版本。Issue 中维护者确认该 PR 已修复并合并,稳定会话 ID 会在三类路由上自动转发。
- 若暂时无法升级,采用评论中已验证可用的临时规避:在模型配置中加入
extra_headers,传入一个固定 UUID,例如extra_headers = '{"x-opencode-session": "123e4567-e89b-12d3-a456-426614174000", "User-Agent": "my-agent/1.0"}'。可优先尝试,但这是静态值而非按会话生成的 ID。 - 不建议依赖“回调自动注入 extra headers”的方案:评论反馈在健康检查场景下该方式不生效,且未得到维护者确认。
- 完成配置后重启 LiteLLM 服务,使配置或新版本生效。
- 升级后如需进一步优化,可向 OpenCode 方确认其遥测是否已收到会话头,Issue 中对方表示构建发布后愿意从遥测侧确认。
验证方法
再次发起同样的推理请求,确认不再出现 MissingSessionID 与 litellm.BadRequestError,且能正常返回模型输出。如条件允许,抓取或记录出站请求头,确认其中包含 x-opencode-session;升级到修复版本后,还应确认该值随对话变化,而不是固定 UUID。
参考来源
相关 PR:BerriAI/litellm #48121(Issue 中确认已合并)
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[BUG] Bedrock file constraints swap the image and document size limits](https://www.chat-gpts.plus/wp-content/uploads/2026/10/8158-6c8f5022-768x403.jpg)
![[Bug]: Bedrock /v1/messages: claude-opus-5-5 rejects thinking.type=enabled, no adaptive translation and output_config is stripped](https://www.chat-gpts.plus/wp-content/uploads/2026/10/47382-4fdc15ce-768x403.jpg)
