本课目标

把前九讲组装成一个能自主规划、多步执行的 Agent,并补齐生产化所需的观测与治理。


你问模型"今天天气怎么样",它回答。这是对话。

你问模型"帮我调研三家竞品的定价策略并输出报告",它自己做规划、调搜索工具、对比数据、生成报告——这是 Agent。

区别不在于模型本身,在于你给它装了工具、给了预算、搭了循环。前九讲学的是零件,本讲教你把零件装成一台能跑的机器。最后,告诉你这台机器推到生产线上还需要加什么。

核心内容

Agent 的本质:一个有目的的循环

单轮问答 + 工具调用已经能解决很多问题。但真正的 Agent 多了一步:自己拆解任务。用户不需要说"先搜 A、再搜 B、然后对比"——Agent 自己决定先做什么、做到什么程度算完。

核心循环(ReAct 简化版):

while (steps < MAX_STEPS) {
    ChatResponse response = chatClient.prompt()
        .system(SYSTEM + "可用工具见下,逐步完成任务,完成时输出 FINAL:")
        .messages(history)
        .tools(allTools)
        .call().chatResponse();

    if (hasToolCalls(response)) {
        history.addAll(executeAndCollect(response));
        steps++;
    } else {
        return extractFinal(response);
    }
}

好消息:Spring AI 的 ChatClient 内部已经实现了这个循环(默认最多 10 跳)。多数场景下你不需要手写循环。手写循环的价值在于控制:自定义终止条件、步骤预算、中间状态观测。

多模型路由:好钢用在刀刃上

Agent 不一定要全程用最贵的模型。任务规划、多步推理——旗舰模型。工具结果摘要、用户回复润色——小模型。通过多个 ChatModel Bean 按场景注入,成本能降一个数量级。

这不是"抠门",是工程的基本素养——把资源放在对质量影响最大的环节上。

上生产前必查的六项

以下都是灵枢 OS 落地过程中真踩过的坑,排名分先后:

  1. 步骤预算MAX_STEPS 硬上限。没有预算的 Agent 是一个没有刹车的高速列车——迟早把 token 额度烧光。
  2. 可观测:每次模型调用、每次工具执行都记 trace,串联成完整轨迹。出问题时唯一能救你的就是日志。在 Advisor 层统一实现。
  3. 超时与降级:单步超时 30s、整体任务超时 5min、模型故障自动切换备用。用户不会等你调完 Bug。
  4. 成本核算:按租户/会话统计 token 消耗。一个失控的循环一晚能烧掉几千块。
  5. 人工介入点:付费操作、数据变更——Agent 挂起等确认,不要让它自己拍板。
  6. 评估回归:留 20 条关键场景的测试集,每次改提示词或换模型后必跑。没有评估的 Agent 迭代是在蒙眼开车。

回顾十讲:你搭了什么

对话 → 提示词 → 结构化 → 工具 → 记忆 → RAG → 流式 → Advisor → 多模态 → 自主循环。

每一层都是下一层的基础。从一行 chatClient.prompt().call().content() 开始,到一台能自主规划、多步推理、有观测体系的 Agent 结束。框架帮你跑通循环,工程能力决定它能不能上生产。

AI 应用 = 10% 的 Prompt 设计 + 30% 的工程架构 + 60% 的评估与迭代。别把 90% 的时间花在那 10% 上。

动手练习

  1. 手写一个 ReAct 循环,完成"查三个城市的天气并给出穿衣建议"
  2. 给循环加上步骤预算限制(最多 5 步)和 trace 日志,观察 Agent 的决策轨迹