在 AI Agent 进入企业系统时,真正难的不是让模型回答问题,而是让它在一个受控的软件环境里执行任务。Dev.to AI 的一篇技术文章以 Spring AI 为例,展示了一个简单的订单支持 Agent:客户询问“我的订单 #123 在哪里?如果迟到,我想退款”。这个例子虽然小,却把 Java 生态构建 Agent 的核心问题摆了出来:模型负责什么,代码框架负责什么。
Agent Harness:模型之外的执行框架
文章中的关键词是 Agent Harness。它不是模型本身,而是围绕模型的一层工程结构。在 Spring AI 示例里,一个 OrderTools 组件通过 @Tool 注解暴露两个能力:根据订单 ID 查询状态,以及为订单发起退款。退款金额如果超过 100,会返回“需要经理审批”。
这里有一个重要边界:模型不会直接运行这些 Java 方法。它只能根据工具名称提出调用请求,真正执行方法的是 Harness。工具描述同样重要,因为它相当于写给模型看的说明书,决定模型何时选择该工具。
在配置层,Spring AI 将系统提示、工具注册、会话记忆和日志组件组合成一个 ChatClient。示例使用 MessageWindowChatMemory,并将最大消息数设为 20;控制器层通过 sessionId 区分不同用户的对话。也就是说,所谓智能客服并不是一次孤立的模型调用,而是由记忆、工具、日志和会话隔离组成的工程对象。
Loop 编排:模型决定下一步,框架负责执行
第一类编排方式是 loop,也就是工具调用循环。素材给出的流程是:Harness 把用户问题和工具列表发给模型;模型判断需要先调用 getOrderStatus(123);Harness 执行该方法,得到“已发货,今天送达”;随后把结果交回模型;模型不再请求工具,直接生成面向用户的回答;Harness 检测到没有工具调用,循环结束。
在这个过程中,只有模型提出工具请求和最终生成回答属于模型行为,其余步骤都由 Harness 完成。Spring AI 默认把这个循环隐藏在 .call() 方法里,开发者可以用很少代码完成调用。
但文章也展示了另一种做法:通过 ToolCallingChatOptions 关闭内部工具执行,自己维护 while 循环。只要模型仍然请求工具,开发者就调用工具执行管理器,处理对话历史,再重新请求模型。这样做的好处是,原本被封装起来的 Agent 运行过程变得可见,工程团队可以在循环中加入自己的控制逻辑,也为后续补充错误处理等工程能力保留了位置。
- 模型决定下一步要调用哪个工具。
- Java 代码负责真实执行工具并返回结果。
- 显式循环让工具调用、历史传递和停止条件更容易被检查。
Graph 编排:代码决定路径,模型只负责表达
第二类编排方式是 graph。并不是所有业务都适合让模型自主决定下一步。例如退款这样的敏感操作,企业可能不希望模型拥有最终决策权。文章给出的做法并不复杂:Spring AI 本身没有内置图引擎,但一个简单的图可以用普通 Java 实现,由代码判断路径,模型只承担文本生成任务。
在示例中,系统先查询订单。如果订单没有迟到,模型只生成一段友好的物流更新;如果订单迟到,模型起草一段礼貌的退款说明,但随后由 approvalService 发起经理审批,最终返回“退款请求正在等待经理审批”。这个流程没有注册退款工具,因此模型无法直接触发退款,它只能写消息。
这类编排的价值在于确定性。业务分支、审批节点和人工介入由代码控制,模型被限制在表达层。对于需要保存状态、检查点和暂停恢复能力的更复杂图,素材建议引入 LangGraph4j 等图库,或者使用企业已有的工作流引擎。
对 Java 企业应用的意义
这个 Spring AI 示例虽然只是一个订单客服场景,但覆盖了 Agent 落地时常见的几个工程问题:
- 工具调用:通过 @Tool 将 Java 方法暴露给模型,同时由框架执行实际调用。
- 状态管理:通过 ChatMemory、maxMessages(20) 和 sessionId 维护对话上下文。
- 权限边界:模型可以请求工具,但不能直接访问数据库或绕过审批逻辑。
- 企业系统接入:订单查询、退款服务和审批服务仍然来自既有 Java 业务系统。
从开发者角度看,Spring AI 提供了一条较低门槛的路径:默认封装可以让 Agent 快速运行;当业务要求更严格时,开发者又可以打开循环,用 Java 代码重新掌握执行顺序。这种方式没有把 Agent 神秘化,而是把它还原成一个普通的后端工程问题。
当 AI Agent 开始承担客服、订单处理或内部助手任务时,决定可用性的往往不是模型能否生成流畅文本,而是外围框架能否清晰管理工具、记忆、路径和责任边界。Spring AI 的示例说明,Java 生态进入 Agent 领域的优势,正来自这些长期存在的企业工程能力。
原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/ba-ai-agent-na-ru-java-ye-wu-liu-cheng-spring-ai-gei-chu-de