问题: devin-2api 把"并行工具调用"的历史消息转换成 Devin 格式时搞错了——Devin 要求同一次发出的多个工具调用放在一条消息里,但适配器拆成了多条消息发过去,Devin 直接拒绝
具体过程:
- 模型一轮里要同时调 2 个工具(ToolSearch_1 + Bash_2)
- pi-desktop 走 OpenAI Responses 协议,协议里每个 function_call 是独立条目,客户端如实传回:
assistant: 调用 ToolSearch_1
assistant: 调用 Bash_2
tool: ToolSearch_1 的结果
tool: Bash_2 的结果
- devin-2api 原样转成两条 Devin 的 SYSTEM 消息,每条只带 1 个 toolCall
- Devin 看到"两条 assistant 消息各带一个调用,后面跟两个结果"这种序列,认为是非法格式 → invalid_argument
Devin 实际要求的格式:
assistant: 调用 [ToolSearch_1, Bash_2] ← 一条消息,toolCalls 数组放两个
tool: ToolSearch_1 的结果
tool: Bash_2 的结果
问题: devin-2api 把"并行工具调用"的历史消息转换成 Devin 格式时搞错了——Devin 要求同一次发出的多个工具调用放在一条消息里,但适配器拆成了多条消息发过去,Devin 直接拒绝
具体过程:
assistant: 调用 ToolSearch_1
assistant: 调用 Bash_2
tool: ToolSearch_1 的结果
tool: Bash_2 的结果
Devin 实际要求的格式:
assistant: 调用 [ToolSearch_1, Bash_2] ← 一条消息,toolCalls 数组放两个
tool: ToolSearch_1 的结果
tool: Bash_2 的结果