最近掘金热榜有个挺有意思的争论——「你给 AI 用的 Agent Skills 可能毫无作用,甚至还拖后腿」。
说实话,看到标题的时候我第一反应是:终于有人说了。
但仔细想想,作为一个用 Claude Code + Agent Skills 干了不少活的人,我的体感好像又不太一样。Skills 在我这确实有用啊,代码审查、自动化部署,都比裸跑 prompt 好不少。
于是我做了个实验:用同一个 Agent Skill,分别跑在 3 个不同的模型上,看看到底是 Skill 的问题还是模型的问题。
实验设计
Skill 选的是一个比较典型的「代码审查」场景:给一段 Python 代码,让 AI 找 bug、提优化建议、输出结构化报告。
测试代码故意埋了 3 个问题:
- 一个明显的空指针异常
- 一个 SQL 注入漏洞
- 一个性能问题(N+1 查询)
def get_user_orders(user_id):
user = db.query(f"SELECT * FROM users WHERE id = {user_id}")
orders = []
for order_id in user.order_ids:
order = db.query(f"SELECT * FROM orders WHERE id = {order_id}")
orders.append(order)
return {"user": user.name, "orders": orders}
三个模型:Claude Opus 4.6、GPT-4o、DeepSeek V4。Skill 定义完全一样,走的是标准的 system prompt + 结构化输出格式。
结果:差距大到离谱
Claude Opus 4.6
3 个问题全部命中,而且给的修复方案非常完整:
- 空指针:建议加
if not user: return None - SQL 注入:直接改成参数化查询
db.query("SELECT * FROM users WHERE id = ?", [user_id]) - N+1 问题:建议用 JOIN 一次查出来,甚至给了 SQLAlchemy 的
joinedload写法
结构化输出格式完美符合 Skill 定义的 schema。整体感觉就是——它不只是在"完成任务",而是真的理解了你想干嘛。
GPT-4o
找到了 2 个问题(SQL 注入和空指针),漏掉了 N+1。
更尴尬的是,输出格式跟 Skill 定义的 schema 有偏差——它自己加了一些字段,少了一些字段。如果你的下游程序依赖这个 schema 做解析,直接就挂了。
不过公平地说,它找到的那两个问题,分析质量还是不错的。
DeepSeek V4
只找到了 1 个问题(SQL 注入),空指针和 N+1 都没提。输出格式倒是基本符合 schema,但内容太简略,修复建议就一句话。
胜在速度快、价格便宜。如果是简单的 lint 级别检查,够用了。
同一个 Skill,为什么结果天差地别?
这其实揭示了一个很多人忽略的问题:Agent Skill 的效果,至少一半取决于底层模型的能力。
Skill 本质上是一套结构化的 prompt + 约束。它能不能发挥作用,取决于模型能不能:
- 准确理解 Skill 定义的任务和约束
- 严格遵循 输出格式(这对 Agent 工作流至关重要)
- 具备足够的领域知识 来完成具体任务
所以"Agent Skills 没用"这个结论太武断了。更准确的说法应该是:用错模型的 Agent Skills 没用。
实际开发中怎么选模型?
如果你在做 AI Agent 开发,我的经验是这样的:
第一步:先用最强模型验证 Skill 设计。 如果 Opus 4.6 都搞不定,那大概率是 Skill 本身设计有问题,别赖模型。
第二步:用中等模型测试鲁棒性。 如果 GPT-4o 能完成 80% 以上的任务,说明你的 Skill 定义够清晰。
第三步:看成本和速度。 有些简单任务用 DeepSeek 或 GPT-4o-mini 就够了,没必要全上最贵的。
这就带来一个很现实的需求:你需要能快速在不同模型之间切换测试。
我自己的做法是用一个支持多模型的 API 服务,代码里改一个 model 参数就能切换,不用为每个模型单独申请 key、处理不同的 SDK 格式。比如我现在用的方案,走 OpenAI 兼容格式,一个 base_url 搞定:
from openai import OpenAI
# 一个接口,多个模型随便切
client = OpenAI(
api_key="your-key",
base_url="https://api.ofox.ai/v1"
)
models = ["claude-opus-4-6", "gpt-4o", "deepseek-chat"]
for model in models:
resp = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": skill_prompt},
{"role": "user", "content": code_to_review}
]
)
print(f"\n=== {model} ===")
print(resp.choices[0].message.content)
跑一遍下来,3 分钟就能对比出哪个模型最适合你的 Skill。比一个个去各家官网注册、配环境、调格式省事太多了。
结论
热榜上那篇说 Agent Skills 拖后腿的文章,观点不完全错——如果你用了不匹配的模型,Skill 不仅没用,确实可能因为强制输出格式反而限制了模型发挥。
但解决方案不是放弃 Skills,而是:
- 为每个 Skill 找到最适合的模型(不同任务,最优模型可能不同)
- Skill 定义要足够清晰,降低模型理解门槛
- 关键环节用强模型,辅助环节用轻量模型,成本和效果都能兼顾
AI Agent 的时代才刚开始,Skill 生态会越来越成熟。现在觉得"不好用",更多是我们还没摸清每个模型的脾气而已。
以上测试基于 2026 年 2 月各模型最新版本,实际效果与 prompt 设计、模型更新有关。如果你也在做 Agent 开发,欢迎评论区聊聊你的踩坑经验。