摘要
在 Reasonix 中選用 opencode zen 端點(OpenAI-compatible gateway)的任何模型時,請求被網關拒絕:
Malformed request (HTTP 400): the request body was rejected.
Error from provider (Console): Upstream request failed: [invalid_request_error]
46 request validation errors: Missing required input field: 'tools[0].function.name';
Missing required input field: 'tools[1].function.name'; ...
同一台機器改用 opencode go 端點(同樣的模型、同樣的 tools)則正常,證明問題出在 Reasonix 對這類 OpenAI-compatible 網關的工具序列化格式,而非模型或 key。
環境
- Reasonix:Desktop v1.19.7(revision 295b3f7)
- OS:Windows 11 / amd64
- Node:v24.16.0
- 端點:
opencode zen(OpenAI-compatible /v1/chat/completions)
- 對照組:
opencode go(同網關同模型,正常)
重現步驟
- 在 Reasonix 新增/選用 provider = opencode zen,模型 = 任意(如 deepseek-v4-flash / deepseek-v4 / minimax)。
- 送出任何會觸發工具呼叫的對話(本會話 tools 共 46 個)。
- 收到 HTTP 400,錯誤如上;46 個 tools 全部回報缺
function.name。
根因分析(供維護者參考)
Reasonix 內部工具結構為(docs/SPEC.md §4):
type ToolSchema struct {
Name, Description string
Parameters json.RawMessage
}
但在對 OpenAI-compatible 網關序列化時,tools 陣列沒有把 Name 包裝成標準 OpenAI 格式的 function.name:
// 預期(OpenAI 標準)
{"type":"function","function":{"name":"...","description":"...","parameters":{...}}}
// 實際送出(疑似)缺 function.name,導致 400
docs/GUIDE.zh-CN.md「兼容設置」說明 tools 等核心字段由 Reasonix 控制、不接受覆寫,因此用戶端無法繞過。
影響範圍
- opencode zen 端點下所有模型無法使用(blocking)。
- opencode go 端點不受影響(其接受較寬鬆格式)。
- 任何嚴格執行 OpenAI tools schema 驗證的 gateway 都會中招。
期望行為
Reasonix 對 OpenAI-compatible 端點送出標準格式的 tools[{type:"function", function:{name, description, parameters}}],使 opencode zen 等嚴格網關正常運作。
附註
- 錯誤訊息全文 46 條 identical 錯誤,僅
tools[N] 索引不同。
- 若需要實際請求 body 的抓包樣本,我可以再提供(需先開啟 Reasonix 的 debug log)。
摘要
在 Reasonix 中選用 opencode zen 端點(OpenAI-compatible gateway)的任何模型時,請求被網關拒絕:
同一台機器改用 opencode go 端點(同樣的模型、同樣的 tools)則正常,證明問題出在 Reasonix 對這類 OpenAI-compatible 網關的工具序列化格式,而非模型或 key。
環境
opencode zen(OpenAI-compatible/v1/chat/completions)opencode go(同網關同模型,正常)重現步驟
function.name。根因分析(供維護者參考)
Reasonix 內部工具結構為(
docs/SPEC.md§4):但在對 OpenAI-compatible 網關序列化時,
tools陣列沒有把Name包裝成標準 OpenAI 格式的function.name:docs/GUIDE.zh-CN.md「兼容設置」說明tools等核心字段由 Reasonix 控制、不接受覆寫,因此用戶端無法繞過。影響範圍
期望行為
Reasonix 對 OpenAI-compatible 端點送出標準格式的
tools[{type:"function", function:{name, description, parameters}}],使 opencode zen 等嚴格網關正常運作。附註
tools[N]索引不同。