vercel-ai-sdk — 本课题摘录
读了哪几篇: 02-generate-text-loop(多步工具循环)、03-tools(工具系统)。
其余三篇(provider 抽象、流式与 UI、结构化输出)本轮没读——属换厂商与界面圈。
这是我们最可能直接拿来用的那一套,而且是 TypeScript。
它对本课题回答了什么
决定四:什么时候停 —— 把停止条件抽成纯函数谓词
最值得抄的一条。 停止逻辑不是散在循环里的 if,而是一个只看"已经跑过哪些步"的函数,返回真 就停。
停止条件 = (已跑过的步) => 真 / 假
内置两个现成的:"跑满 N 步就停"、"模型一旦调了某个指定工具就停"。多个条件里任一为真即停。 (依据:前沿库 · Vercel AI SDK · generateText 多步工具循环 —— StopCondition 是只接收 steps 数组返回布尔的纯函数,isStepCount 与 hasToolCall 是内置实现,多个条件由 isStopConditionMet 评估、任一为真即停)
好处: 想自定义"什么时候停",写个函数即可,不必碰循环正文。这跟 cline 的"完成是工具的一个属性"是同一种思路的两种落法——都在把停止从循环里挪出去。
决定四补充:循环的主出口是"模型不再要工具"
它的循环继续条件写得很直白:这一步确实调了客户端工具,而且全都执行完(或被拒绝)了,才继续。 模型这一步纯文本回答 → 条件为假 → 退出。 (依据: