Agent Skills

别再给Agent写if-else了!Anthropic Skills + Spring AI才是Java开发者的正确姿势

搞了半年AI Agent,我最大的感触是:大部分人把Agent做复杂了。恨不得把所有逻辑都塞进一个类里,if-else套if-else,跟2015年写Servlet有啥区别?

直到上个月Anthropic发布了Agent Skills规范,Spring AI紧跟着推出Agentic Patterns系列,我才反应过来------Agent的能力不该靠代码逻辑驱动,应该靠文件驱动

先说问题:你的Agent为什么越做越乱

很多人做Agent的路径是这样的:

  1. 写个ChatService,调大模型API
  2. 觉得不够用,加Function Calling
  3. 函数越来越多,开始写if-else判断该调哪个
  4. 加MCP协议,连接外部工具
  5. 发现MCP连接的工具也需要编排,继续加代码
  6. 最后代码变成屎山,改一个功能牵一发动全身

说白了,你在用OOP的思维做Agent,但Agent需要的是声明式的能力描述

Anthropic Skills:文件夹就是技能

Anthropic对Skills的定义极其简洁:一个Skill就是一个文件夹,核心只有一个SKILL.md文件

复制代码
code-review/
  SKILL.md          # 必需:元数据 + 操作指南
  references/       # 可选:参考资料
  scripts/          # 可选:执行脚本
  examples/         # 可选:示例

看起来简单对吧?但这里有个范式转移------代码不再是Agent的全部,Markdown才是

SKILL.md里面写什么?写的是AI执行这个技能的完整指南。比如一个代码审查Skill,SKILL.md里会写:

  • 这个Skill做什么(审查Java代码)
  • 审查哪些维度(安全、性能、可维护性)
  • 输出格式是什么(Markdown报告)
  • 参考规范(放在references/目录)

Agent运行时,读取SKILL.md,理解任务要求,调用scripts/下的脚本执行操作,然后按格式输出结果。整个过程,Agent不需要你硬编码任何逻辑

Spring AI怎么接上这趟车

Spring AI在2026年初推出了Agentic Patterns,直接把Anthropic的Skills规范融入了Spring生态。这对Java开发者来说太重要了。

核心思路是:用Spring的方式管理Skill生命周期

java 复制代码
@Service
public class CodeReviewSkill implements AgentSkill {

    @Override
    public String getName() { return "code-review"; }

    @Override
    public String getDescription() { return "审查Java代码的安全性和性能"; }

    @Override
    public SkillResult execute(SkillContext context) {
        // Agent自动读取SKILL.md并执行
        // 你只需要提供执行环境和数据
        return skillExecutor.run(this, context);
    }
}

不过说实话,我觉得最香的不是代码层面,而是Skill的即插即用。你的同事写了个自动生成周报的Skill?扔个文件夹过来就能用。线上需要加个Bug分析Skill?加个目录、写个SKILL.md,重启都不用。

Skills和MCP、A2A的关系

这块很多人搞混,我理一下:

  • MCP:Agent连工具的管道。比如Agent要查数据库、调API,走MCP协议
  • A2A:Agent之间对话的协议。Google推的,让不同Agent能互相发现、协作
  • Skills:Agent能力的描述和执行方式。一个Skill可以调用MCP连接的工具,也可以通过A2A委派任务给其他Agent

划重点:MCP是手,A2A是嘴,Skills是脑子

一个完整的Agent架构应该是这样的:Skill告诉Agent该干什么,MCP提供干活的工具,A2A让Agent能在搞不定时找帮手。

踩坑:三个我走过的弯路

坑1:把Skill当微服务写

一开始我给每个Skill写了完整的Controller、Service、Repository,部署到独立端口。结果Skill之间通信比微服务还复杂。后来发现,Skill就是一个文件夹,Agent运行时直接读文件就行,别搞那么重。

坑2:SKILL.md写得太抽象

"请审查代码质量"------这种描述Agent根本不知道该做什么。要具体:"检查SQL注入风险、空指针异常、线程安全问题,输出Markdown格式的审查报告"。越具体,Agent执行越靠谱。

坑3:忽略Skill的版本管理

Skill改了逻辑但没记录版本,线上Agent行为突然变了还找不到原因。建议SKILL.md里加版本号,用Git管理Skill文件夹。

写在最后

2026年做AI Agent,别再从零搭框架了。Anthropic的Skills规范 + Spring AI的Agentic Patterns,已经给出了一条清晰的路径:

声明式定义能力,文件驱动执行,Spring管理生命周期。

如果你还在给Agent写if-else,建议花一个下午看看Spring AI的Skill实现。就算不用Spring AI,Anthropic的Skills设计思路也值得借鉴。

有问题评论区聊~


相关链接

相关推荐
爱码小白1 小时前
MySQL索引与SQL优化
大数据·数据库·python
2303_821287381 小时前
MySQL行锁和表锁如何区分_通过explain查看锁等待机制.txt
jvm·数据库·python
kexnjdcncnxjs2 小时前
如何在Navicat中创建基础数据表_可视化图形界面操作指南
jvm·数据库·python
m0_740796362 小时前
CSS如何兼容新旧方案结合响应式容器查询
jvm·数据库·python
故事和你912 小时前
洛谷-【图论2-1】树4
开发语言·数据结构·c++·算法·动态规划·图论
zmsofts2 小时前
Maven核心能力深度解析:从项目管理到扩展机制
java·python·maven
故事和你912 小时前
洛谷-【图论2-1】树1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
段ヤシ.2 小时前
回顾Java知识点,面试题汇总Day5(持续更新)
java·开发语言
不会C语言的男孩2 小时前
C++ SLTL编程
java·开发语言·c++