用外卖小哥讲懂 AI Agent:Java 项目里接入 MCP,一键发 CSDN 再微信通知
一个有趣的开场故事
朋友点外卖:他在 App 下单(想吃麻辣烫),平台派单给商家,商家开火做饭,骑手取餐配送,用户收到“已送达”的通知。整个流程顺滑到让人忘了它的复杂。
AI Agent 到底是什么
AI Agent 不是“会聊天的搜索框”,而是能拆解任务、选择工具、调用外部系统并闭环完成目标的智能体。大模型负责“脑力”,工具负责“体力”,两者协作才有生产力。
用外卖流程类比 Agent 工具调用
- 用户点外卖 → 用户输入需求
- 平台派单 → 大模型理解任务并规划步骤
- 商家接单做饭 → Agent 判断需要调用哪些工具
- 平台查可接单商家 → 通过 ToolCallbackProvider 找到可用工具(菜单)
- 骑手取餐配送 → 通过 MCP 调用外部工具执行
- 餐做好送达 → 工具返回结果
- 给用户发“已送达” → Agent 汇总结果并回复用户
为什么要工具?因为大模型天生“不会下锅炒菜”。它需要“锅铲”——发布文章、发通知、查数据库等外部能力。
Java 项目里的实现思路
- ChatClient:像“任务调度入口”,把用户意图交给大模型,并接收工具回调。
- ToolCallbackProvider:像“工具菜单”,告诉 Agent 什么能点(saveArticle、weixinNotice)。
- MCP:像“统一外卖配送接口”,屏蔽不同工具差异,让调用方式一致。
- saveArticle:像“发布文章服务”,把生成内容上架到 CSDN。
- 微信通知工具:像“订单完成通知”,把结果推送给订阅用户。
一个简短代码片段
@SpringBootTest
class AgentMcpDemoTest {
@Autowired ChatClient chatClient; // 任务调度入口
@Autowired ToolCallbackProvider toolProvider; // 工具菜单
@Test
void publishAndNotify() {
String userGoal = "生成技术文章并发布到CSDN,然后发送微信通知";
ChatResponse resp = chatClient
.withToolCallbacks(toolProvider) // MCP 注册的 saveArticle、weixinNotice
.prompt(userGoal);
// Agent 内部:规划→选工具→MCP 调 saveArticle→取返回URL→再调 weixinNotice
System.out.println(resp.getResult());
}
}
测试过程中可能遇到的问题
- 工具未注册:ToolCallbackProvider 未暴露方法名,Agent 找不到“商家”。
- 权限/秘钥错误:MCP 连接或第三方 API 鉴权失败。
- 超时与幂等:发布后重试要检查是否已有文章;通知失败需记录补发。
- 内容校验:标题/描述长度、标签格式、Markdown 语法。
总结
AI Agent 是“会规划的调度中枢”,MCP 是“统一配送接口”,ChatClient 是“入口收单员”,ToolCallbackProvider 是“菜单栏”,saveArticle 是“上架服务”,微信通知是“已送达”。把这套流程跑通,你就从“会问”进阶到“会做”。


被折叠的 条评论
为什么被折叠?



