/v1/responses` rejects `agent_message

该报错通常发生在通过 Ollama 的 POST /v1/responses 端点运行 OpenAI Codex CLI 多智能体(multi-agent)功能时,请求 input 数组中包含 "type": "agent_message" 的输入项,被 Ollama 校验阶段直接拒绝。优先确认 O

快速结论:该报错通常发生在通过 Ollama 的 POST /v1/responses 端点运行 OpenAI Codex CLI 多智能体(multi-agent)功能时,请求 input 数组中包含 "type": "agent_message" 的输入项,被 Ollama 校验阶段直接拒绝。优先确认 Ollama 版本以及 Codex CLI 是否启用了多智能体,并检查是否需要更新到已包含代理修复的版本。

适用环境:Issue 中已确认:Ollama 0.33.3,macOS 26.6.2 arm64(Apple silicon);触发客户端为 OpenAI Codex CLI 0.153.4(启用 multi-agent);端点 POST /v1/responses。模型使用 qwen3.8:27b-mlx,但校验在推理之前失败,模型本身与问题无关。

最快修复方案:Issue 最终状态为 “Fixed with the proxy work!”,即该问题已通过 Codex 代理相关工作(关联 #18244)修复。首选处理方式是升级到包含该代理修复的 Ollama 版本;若暂时无法升级,可使用 Issue 中已验证的代理重写方案作为临时绕过。

注意事项:Issue 中没有给出具体修复版本号或提交哈希,因此无法确认哪个确切版本包含修复,需要以实际发布说明为准。已验证的代理重写方案属于客户端侧或中间代理层规避,不是 Ollama 服务端原生支持;encrypted_content 在该场景中实际承载的是明文,因此可直接拼接使用,但若后续内容真正加密,该绕过方案可能失效。

问题场景

用户在 Ollama 上通过 OpenAI 兼容端点 POST /v1/responses 使用 OpenAI Codex CLI 的多智能体功能。父代理调用 spawn_agent 创建子代理后,会在下一次请求中把子代理的任务以 agent_message 类型的输入项发送给 Ollama。Ollama 在请求校验阶段即返回 400,导致子代理虽然被创建,却永远收不到任务指令。

报错原文

{"error":{"message":"input[1]: unknown input item type: \"agent_message\"","type":"invalid_request_error","param":null,"code":null}}
HTTP 400

实际 Codex 运行中观察到的报错形式为:

ERROR: {"error":{"message":"input[11]: unknown input item type: \"agent_message\"", ...}}

原因分析

最可能的原因是 Ollama 的 openai/responses.go 中对输入项类型使用 switch itemType 处理,已支持 messagefunction_callfunction_call_outputtool_search_calltool_search_outputreasoningweb_search_callcompactioncompaction_trigger 等类型,但没有 agent_message 分支,于是落入 default 并返回 unknown input item type。该请求在推理之前就于校验阶段被拒绝,因此无需加载模型即可复现。

Issue 评论中已通过针对 unmarshalResponsesInputItem 的单元测试在 main(83ed7d99)上复现,确认拒绝来自该类型 switch 的 default 分支。

环境排查

  • 确认 Ollama 版本是否为 0.33.3 或同系列未包含代理修复的版本。
  • 确认操作系统与架构,Issue 环境为 macOS 26.6.2 arm64(Apple silicon)。
  • 确认是否使用 OpenAI Codex CLI,以及是否启用 multi-agent;Issue 环境为 0.153.4。
  • 确认触发端点为 POST /v1/responses,而非其他兼容端点。
  • 确认请求 input 数组中是否出现 "type": "agent_message"
  • 确认是否已部署 Codex 代理层,以及该代理是否包含对 agent_message 的处理。

解决步骤

  1. 先确认问题来自 agent_message 输入项:检查请求体中 input 数组是否包含 "type": "agent_message"
  2. 优先升级 Ollama 到已包含 Codex 代理修复的版本,因为 Issue 最终以 “Fixed with the proxy work!” 关闭,修复与 #18244 的 Codex 桌面代理工作相关。
  3. 若暂时无法升级,可优先尝试在 Codex 与 Ollama 之间加一层代理,把 agent_message 项重写为标准的 message 项,将 input_textencrypted_content 的文本内容拼接后放入单个 user 消息的 input_text 中。Issue 中给出了该重写形式:
{"type": "message", "role": "user",
 "content": [{"type": "input_text",
              "text": "<the input_text text><the encrypted_content text>"}]}

该代理重写方案在原 Issue 中被标记为已验证(known-good workaround),足以让 Codex 客户端正常工作。

验证方法

升级或应用代理重写后,重新运行 Codex multi-agent 流程,确认父代理 spawn_agent 之后的请求不再返回 400 invalid_request_error,且子代理能够收到任务并返回预期结果。也可以直接用 Issue 中的 curl 复现请求验证:若返回不再包含 unknown input item type: "agent_message",说明该输入项已被接受。

参考来源

ollama/ollama #18286

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22709

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注