chore: add debug logging for AI plugin in dev server
This commit is contained in:
@@ -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 || '' }))
|
||||||
|
|||||||
Reference in New Issue
Block a user