From 462fe69d80d905db83daeac453e7b129f0b63ab8 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sat, 4 Apr 2026 16:37:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20openai=20=E7=9A=84?= =?UTF-8?q?=20cost=20=E8=AE=A1=E7=AE=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/api/openai/index.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/services/api/openai/index.ts b/src/services/api/openai/index.ts index 9195b3d5b..53734b214 100644 --- a/src/services/api/openai/index.ts +++ b/src/services/api/openai/index.ts @@ -11,6 +11,8 @@ import { normalizeMessagesForAPI } from '../../../utils/messages.js' import { toolToAPISchema } from '../../../utils/api.js' import { getEmptyToolPermissionContext } from '../../../Tool.js' import { logForDebugging } from '../../../utils/debug.js' +import { addToTotalSessionCost } from '../../../cost-tracker.js' +import { calculateUSDCost } from '../../../utils/modelCost.js' import type { Options } from '../claude.js' import { randomUUID } from 'crypto' import { @@ -189,6 +191,12 @@ export async function* queryModelOpenAI( break } + // Track cost and token usage (matching the Anthropic path in claude.ts) + if (event.type === 'message_stop' && usage.input_tokens + usage.output_tokens > 0) { + const costUSD = calculateUSDCost(openaiModel, usage as any) + addToTotalSessionCost(costUSD, usage as any, options.model) + } + // Also yield as StreamEvent for real-time display (matching Anthropic path) yield { type: 'stream_event',