chore: add debug logging for AI plugin in dev server

This commit is contained in:
2026-06-16 16:00:15 +08:00
parent a21652b1ca
commit f14390a69c

View File

@@ -82,6 +82,7 @@ function apiSavePlugin() {
? `当前项目根目录: ${__dirname}\n代码模式直接修改 src/ 下的源码文件并保存。需求:` ? `当前项目根目录: ${__dirname}\n代码模式直接修改 src/ 下的源码文件并保存。需求:`
: `当前项目根目录: ${__dirname}\nJSON模式直接修改 JSON 配置文件并保存,用自然语言回复修改了什么。需求:` : `当前项目根目录: ${__dirname}\nJSON模式直接修改 JSON 配置文件并保存,用自然语言回复修改了什么。需求:`
const fullMessage = modePrefix + userMessage 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'] const args = ['run', '--model', 'deepseek/deepseek-v4-pro', '--format', 'json']
if (sessionId) args.push('--session', sessionId) if (sessionId) args.push('--session', sessionId)
@@ -110,6 +111,7 @@ function apiSavePlugin() {
if (responded) return if (responded) return
responded = true responded = true
if (code !== 0) { if (code !== 0) {
console.log(`[AI] 错误: ${code === null ? '超时' : 'exit code ' + code}${stderr ? ' stderr: ' + stderr.substring(0, 200) : ''}`)
res.writeHead(500) res.writeHead(500)
res.end(JSON.stringify({ error: code === null ? 'opencode 超时,请重试或简化需求' : 'opencode exited with code ' + code, stderr })) res.end(JSON.stringify({ error: code === null ? 'opencode 超时,请重试或简化需求' : 'opencode exited with code ' + code, stderr }))
return return
@@ -124,12 +126,19 @@ function apiSavePlugin() {
try { try {
const event = JSON.parse(line) const event = JSON.parse(line)
if (!resolvedSessionId && event.sessionID) resolvedSessionId = event.sessionID 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 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 } } catch { continue }
} }
console.log(`[AI] 响应 | sessions=${resolvedSessionId || ''} | ${aiText.length} chars | ${aiText.substring(0, 300)}${aiText.length > 300 ? '...' : ''}`)
if (mode === 'json') { if (mode === 'json') {
res.writeHead(200, { 'Content-Type': 'application/json' }) res.writeHead(200, { 'Content-Type': 'application/json' })
res.end(JSON.stringify({ result: aiText || 'done', sessionId: resolvedSessionId || '' })) res.end(JSON.stringify({ result: aiText || 'done', sessionId: resolvedSessionId || '' }))