-
Notifications
You must be signed in to change notification settings - Fork 270
Description
和AI聊天第一句是ok的。当它接收到一个任务,例如:"分析BTC现在行情" 后,可以返回正常的分析结果。但再接着问它问题,就会这样:
web: unhandled error: MissingToolResultsError [AI_MissingToolResultsError]: Tool results are missing for tool calls tooluse_FGaIcngPrz2jJ7hvhSMuEZ, tooluse_2t0u86jpO64tRsh5omvmz0, tooluse_AYrcsdjrdKqxI9NBwZyDrz, tooluse_NXQFD8FJeO4Dd6pRgttrle.
at convertToLanguageModelPrompt (/home/ai/project/OpenAlice/node_modules/.pnpm/ai@6.0.86_zod@4.3.6/node_modules/ai/src/prompt/convert-to-language-model-prompt.ts:140:17)
at async fn (/home/ai/project/OpenAlice/node_modules/.pnpm/ai@6.0.86_zod@4.3.6/node_modules/ai/src/generate-text/generate-text.ts:531:36)
at async <anonymous> (/home/ai/project/OpenAlice/node_modules/.pnpm/ai@6.0.86_zod@4.3.6/node_modules/ai/src/telemetry/record-span.ts:32:24)
at async generateText (/home/ai/project/OpenAlice/node_modules/.pnpm/ai@6.0.86_zod@4.3.6/node_modules/ai/src/generate-text/generate-text.ts:375:12) {
cause: undefined,
toolCallIds: [
'tooluse_FGaIcngPrz2jJ7hvhSMuEZ',
'tooluse_2t0u86jpO64tRsh5omvmz0',
'tooluse_AYrcsdjrdKqxI9NBwZyDrz',
'tooluse_NXQFD8FJeO4Dd6pRgttrle'
],
Symbol(vercel.ai.error): true,
Symbol(vercel.ai.error.AI_MissingToolResultsError): true
我在deepwiki里问ai的时候,它这么回答:
_
MissingToolResultsError 诊断
这个错误表明 AI 模型发起了工具调用,但系统没有收到对应的工具执行结果。错误显示有 8 个工具调用缺少结果。错误原因分析
在 OpenAlice 的会话系统中,工具调用和结果通过 ContentBlock 数组存储 session.ts:28-56 :tool_use 块:AI 调用工具的请求
tool_result 块:工具执行的结果
当 toModelMessages() 转换会话条目到 Vercel AI SDK 格式时,它会查找匹配的 tool_result 块 session.ts:205-272 。如果找不到对应的结果,就会抛出 MissingToolResultsError。可能的原因
工具执行失败:工具调用后没有正确追加结果到会话
会话数据损坏:tool_result 条目丢失或格式错误
异步执行问题:工具结果还未写入就开始下一次转换
调试步骤
检查会话文件:查看最新的会话条目
tail -n 20 data/sessions/{sessionId}.jsonl | jq .
验证工具结果格式:
确认 tool_result 块包含正确的 tool_use_id:{
"type": "tool_result",
"tool_use_id": "tooluse_G3EPgAoSYF15sJQIPJtPyw",
"content": "执行结果"
}
检查工具执行日志:
查看是否有工具执行错误:grep -i "error|failed" data/events/eventlog.jsonl | tail -n 10
修复建议
重启应用:清除内存中的临时状态
检查工具配置:确认所有工具都正确注册并可用 tool-center.ts:17-25
手动清理会话:如果会话文件损坏,可以删除有问题的条目或整个会话文件
预防措施
确保工具执行函数总是返回结果
添加错误处理,即使工具失败也要追加错误结果
考虑在 toModelMessages() 中添加容错逻辑
Notes
这个错误通常出现在使用 Vercel AI SDK 作为 AI 提供者时
Claude Code 提供者使用不同的格式转换逻辑,可能不会遇到此问题
会话文件采用 JSONL 格式,每行都是一个完整的 JSON 对象 session.ts:1-18
_