From 72d08ddffbbf70d73db8d223aac20937f662560f Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sat, 27 Jun 2026 17:35:39 +0900 Subject: fix(vision-handoff): omit temperature on vision transcription call (Kimi rejects temperature: 0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The vision handoff hardcoded temperature: 0 for the transcription sub-call, but the Moonshot/Kimi vision model only allows temperature: 1 (or omitted), causing an HTTP 400 "invalid temperature: only 1 is allowed for this model" that blocked the entire image analysis for non-vision models like GLM 5.2. Fix: omit temperature entirely so each vision provider uses its own default — the truly universal, provider-agnostic approach (different providers have different temperature constraints). --- packages/vision-handoff/src/service.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/vision-handoff/src/service.ts b/packages/vision-handoff/src/service.ts index 5e6ad70..3f8462a 100644 --- a/packages/vision-handoff/src/service.ts +++ b/packages/vision-handoff/src/service.ts @@ -167,8 +167,11 @@ export function createVisionHandoffService(deps: VisionHandoffDeps): VisionHando }; const providerOpts: ProviderStreamOptions = { model: vision.model, - // Low temperature for faithful transcription. - temperature: 0, + // NOTE: temperature is deliberately OMITTED. Different vision providers + // have different constraints (e.g. Moonshot/Kimi only allows temperature: + // 1; others allow 0–2). Hardcoding any value risks an HTTP 400 from a + // provider that rejects it. Omitting lets each provider use its own + // default — the truly universal, provider-agnostic choice. // A short system prompt keeps the vision model focused on describing. systemPrompt: "You are a vision assistant. Describe images faithfully and thoroughly for a developer who cannot see them.", -- cgit v1.2.3