From f14390a69cd441efcc39f49dafc4b3170f140d70 Mon Sep 17 00:00:00 2001 From: cocos02 Date: Tue, 16 Jun 2026 16:00:15 +0800 Subject: [PATCH] chore: add debug logging for AI plugin in dev server --- vite.config.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index 2aa9044..92f2f29 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -82,6 +82,7 @@ function apiSavePlugin() { ? `当前项目根目录: ${__dirname}\n代码模式:直接修改 src/ 下的源码文件并保存。需求:` : `当前项目根目录: ${__dirname}\nJSON模式:直接修改 JSON 配置文件并保存,用自然语言回复修改了什么。需求:` const fullMessage = modePrefix + userMessage + console.log(`\n[AI] ${mode === 'json' ? 'JSON' : '代码'}模式 | session=${sessionId || '新会话'} | prompt: ${userMessage.substring(0, 120)}${userMessage.length > 120 ? '...' : ''}`) const args = ['run', '--model', 'deepseek/deepseek-v4-pro', '--format', 'json'] if (sessionId) args.push('--session', sessionId) @@ -110,6 +111,7 @@ function apiSavePlugin() { if (responded) return responded = true if (code !== 0) { + console.log(`[AI] 错误: ${code === null ? '超时' : 'exit code ' + code}${stderr ? ' stderr: ' + stderr.substring(0, 200) : ''}`) res.writeHead(500) res.end(JSON.stringify({ error: code === null ? 'opencode 超时,请重试或简化需求' : 'opencode exited with code ' + code, stderr })) return @@ -124,12 +126,19 @@ function apiSavePlugin() { try { const event = JSON.parse(line) if (!resolvedSessionId && event.sessionID) resolvedSessionId = event.sessionID - if (event.type === 'text' && event.part?.text) { + if (event.type === 'step_start') { + console.log(`[AI] 思考中...`) + } else if (event.type === 'text' && event.part?.text) { aiText += event.part.text + } else if (event.type === 'step_finish') { + const tokens = event.part?.tokens + if (tokens) console.log(`[AI] tokens: in=${tokens.input} out=${tokens.output} cost=$${tokens.cost?.toFixed(6)}`) } } catch { continue } } + console.log(`[AI] 响应 | sessions=${resolvedSessionId || ''} | ${aiText.length} chars | ${aiText.substring(0, 300)}${aiText.length > 300 ? '...' : ''}`) + if (mode === 'json') { res.writeHead(200, { 'Content-Type': 'application/json' }) res.end(JSON.stringify({ result: aiText || 'done', sessionId: resolvedSessionId || '' }))