Skip to content

v0.2.8 — Gemini 报错修复 + 闲聊话题展开

Choose a tag to compare

@lshhhhhhh lshhhhhhh released this 24 May 06:22

Gemini 报错 + 闲聊话题踢回去 两个修复

1. Gemini:"function call turn comes immediately after a user turn..."

如果你的 AI 选的是 Gemini(gemini-2.0-flash / 2.5 等),在某些多步工具调用(看邮件→读邮件→总结)的时候,会偶发性蹦出这个红字报错。

根因是 Vercel AI SDK 把 assistant {一段话 + 工具调用} 翻译给 Gemini 时,会拆成两个连续的 model turn(先纯文字、再纯 functionCall),Gemini 拒收。OpenAI/Anthropic 宽松,所以一直没事,Gemini 是严格派。

修:在发给 Gemini 之前,把 assistant 消息里同时含工具调用和文字的,把文字部分剥掉,只保留工具调用。等于让 maid 在调工具前不说话——本来 system prompt 就是这么要求的,所以损失基本为零。

万一边缘 case 还触发,错误提示会换成"Gemini 拒绝了消息序列…可以临时换 GLM/Qwen/Doubao"的友好版,不会再看到一行裸的 API 报错。

2. 说"随便聊聊"她不接茬

之前如果你说"跟我随便聊聊吧",maid 会回"好的,您想聊什么尽管告诉我"——把球踢回来,等于没聊。这是 LLM 默认的"礼貌助理"反射。

修:renderer 加了一个 macro 表,几个常见闲聊触发短语("随便聊聊"、"跟我聊聊"、"陪我聊会儿"、"跟我随便聊聊吧")在发给模型前会偷偷展开成"你先开个话题——聊看到的、想到的、或者好奇问我点什么"的明确指令。

你聊天框里看到的还是你输入的短句,model 那边收到的是完整指令。下次再敲"随便聊聊",她应该会主动起话题,而不是干等。

要加新的 macro(比如"夸夸我"、"测试一下"),编辑 src/renderer/src/App.tsxUSER_MACROS 表即可,不污染 system prompt。