96SEO 2026-08-14 19:13 4
在上一篇中我们把 Agent 变成了一个聊天接口,能记住对话历史并把事件转发给上层。其实,但现实中使用者常遇到的痛点是:当模型返回工具调用时Agent 并不会真正执行工具。也不会把结果回馈给模型,从而导致对话卡在“未完成”的状态。为了解决这个痛点,需要实现完整的工具调用闭环。
模型只能返回一个结构化的调用意图:

{ type: "tool_call"。id: "call-123",name: "echo",arguments: { value: "hello" } }
但这只是意图,真正的执行必须由本地 Agent 完成。若 Agent 不做处理。使用者会看到“无法读取文件”或“命令执行失败”等错误,却不知道为何。
ToolResultMessage 并追加到消息历史。传统纯文本 Agent 的一次 prompt 对应一次模型请求,但加入工具后一次 prompt 可能产生多次 “turn”。话说回来,
User 提问
-> 模型决定调用工具
-> Agent 执行
-> 将结果追加到历史
->
请求模型
-> 给出最终回答
ToolDefinition
{ name: string;description: string;parameters: Schema;}
AgentTool
{ name,description,parameters。execute: Promise }
User 在使用时只需要传入可用的 AgentTool;其实,AgentLoop 会从中提取三字段传递给 Provider。
Add tools to context:
{ systemPrompt?,messages,tools?话说回来,: readonly AgentTool }
Add events for tool execution:
{ type:"tool_execution_start" | "tool_execution_end" | ... }
);}
// message.content 示例: // getToolCalls 返回包含 call-1 的对象。javascript getToolCalls.id // => "call-1" ` ` ` ` ` ` ` ` ` `循环处理多条 Tool Call 的 while 循环结构 typescript while{ const assistant = await streamAssistantResponse;messages.push;
const calls = getToolCalls;if { // Final answer or error → finish loop. break;按理说,} const results=;for{ const res=await executeToolCall;messages.push;results.push;if break,怎么说呢,} // 如果取消则安全结束。}
场景一的观点是,最终回答
如果
stopReason!== 'tool_use',则直接结束循环,发送agent_end.再看场景二,需要进一步调用工具
按顺序逐个执行。并在每个
turn_end时记录已完成的tools.至于场景三,取消
立即停止剩余工具,避免后续请求,并插入一个特殊
abortedAssistant 消息,使上层能正常收尾。
测试闭环成功
使用 Faux Provider 可预置两轮响应:
- 第一次返回
{"role":"assistant","content":};- 第二次返回最终文本
"done"。创建最简单 echo 工具并验证:
ts const echoParams = Type.Object});const echo:{...} satisfies AgentTool
; const agent=new Agent({ provider:faux.provider。model:faux.model,tools:,now=>Date.now });话说回来,
const assistant=await agent.prompt;expect.toMatchObject({ stopReason:'stop',content: });
从验证日志来看,
| 场景 | 验证目标 |
|---|---|
| 未注册工具 | 输出 "Unknown tool \"missing\"" |
| 参数非法 | 返回错误信息且不触发 execute |
| 工具内部抛错 | 包装成 isError:true 并显示 "failed" |
| 执行期间取消 | 确认后续工具未启动。最终状态为 "aborted" |
execute。这样,你的 Coding Agent 就能做到「提出行动 → 本地执行 → 模型观察」完整循环。
通过以下六步,你实现了真正的工具调用闭环:
1️⃣ 把 提供给 Provider。2️⃣ 从 Assistant 回复中提取所有 调用。3️⃣ 按名称定位本地实现并校验参数。4️⃣ 捕获异常、未知或非法参数统一包装成 消息。5️⃣ 将 添加到消息历史,请求模型。6️⃣ 当无新调用或被取消时安全结束。
现在你可以在此基础上继续 例如集成文件程序读写、shell 命令等实际副作用,并通过 CLI 或 Web UI 为使用者提供直观体验。
祝你编码愉快 🚀
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback