不套框架的 Agent 实现
P10 AI Agent 工程 · 共 10 篇 · 按阅读顺序倒叙排列
-
拼回同一份循环:一次 run 的全生命周期
前面几篇各加了一层:schema、压缩、记忆、计划、检查、护栏、并发、超时、审计。这篇不加新东西,只把它们接回同一个 while,按固定顺序跑完西安那次订房,从进循环到停住等确认,再到续跑下单。
-
上线实战:轮内并发、超时、续跑与审计
调度循环不改。一轮内多个 tool_calls 并发执行,回灌仍按请求顺序配对。工具超时必须回灌;写操作超时先查再订,携带幂等键防重。每轮按 run_id 落盘 messages,确认之后续跑,事后能再跑检查。
-
检查通过仍会打转:护栏拦截与累计 Token
调度循环不改。误差按业务工具步数串行连乘。护栏卡在 dispatch 之前:同一工具同一参数即触发终止,未确认的写操作一律不执行。确认后用同一份 messages 再进循环。累计 token 按每轮重发加总,而非单轮度量。
-
评测一个 Agent:轨迹级校验,而非答案级
调度循环不改。从 messages 中抽出 tool_calls 作为执行轨迹,检查逻辑全部写成代码:有没有跳步、hotel_id 从哪来、房型是否按天气分流。对照轨迹不调模型;真跑一次 run 再用同一套检查复用。
-
用 MCP 接入外部工具:list_tools 与 call_tool 的挂载
循环、记忆、计划三层架构都不改。将 search_location 和 get_weather 挪到 MCP Server:启动时 list_tools 拉取 schema,dispatch 里 call_tool 透传调用。只转发外部工具白名单,回灌结果不可信,必须兜底校验。
-
让 Agent 先规划再执行:把计划写进记忆
调度循环每轮只决定下一个工具,多步任务极易跳步或重复调用。计划是一份存放在记忆里的步骤列表,每轮写进 system。set_plan 写入或替换计划,mark_step 推进步骤状态。参数错了就地重试,步骤做不到则触发重规划。
-
对抗失忆与噪声:上下文裁剪与记忆挂载
模型每轮只能看到本次请求里的 messages 和 tools。messages 只增不减、整段重发,过期的工具返回就退化为废话;一刀切掉目标和试错记录,又变成失忆。解法是:旧 tool 结果只改 content,核心结论抽离到循环外的记忆,每轮写进 system 重新挂载。
-
工具 Schema 怎么写:模型眼里只有 JSON
调度循环跑通后,真正的差距在 schema。description 决定模型何时想起这个工具,enum 与 required 约束参数怎么填,校验失败必须回灌重试。一条铁律:hotel_id 只能来自本次 search_hotels 的产出,绝不接受凭空捏造。
-
从零手搓 Agent:带出口的 while 调度循环
不套框架,只用几十行 Python 裸调 openai SDK 写出能查天气的调度循环。模型只负责声明「我想调这个工具」,真正执行的是你的代码。逐轮追踪 messages 的增长链路,三个出口缺一不可:能改参数的走回灌,不能改的触发终止。
-
AI Agent 是什么:拆解模型、工具、记忆与调度循环
能自主调度工具、把事情办完的才是 Agent。本文将其拆解为模型、工具、记忆、循环四块核心组件。普通聊天只给步骤清单,Agent 则自行执行、回灌,直到终答或触发终止——这是两者最本质的分野。