Agent Skill 是什么?一文讲透这个正在重塑AI工作流的模块化能力单元

去年底,我们团队在给某银行做对公信贷审批助手时,卡在一个看似简单的问题上:模型能理解“核验企业社保缴纳记录”,但每次都要人工提示“请调用天眼查API查参保人数,再比对近3个月数据波动”,重复率高达73%。直到接入一个叫 verify-social-security 的 Agent Skill 后,整个流程从“人盯模型”变成“模型自己找工具、填参数、判异常”。这不是魔法——而是 Agent Skill 在背后调度。这篇文章不讲概念堆砌,只解决你此刻最可能遇到的5个问题:它到底是不是又一个营销名词?和传统插件/Function Calling 有啥本质区别?怎么三分钟写出第一个可运行的 Skill?哪些场景它真能提效,哪些反而添乱?以及——为什么现在连 Claude、Cursor、Replit 都在抢着支持它?接下来我会用快递柜、公司部门、乐高积木这三类生活比喻,带你一层层剥开 Agent Skill 的真实面目。

背景/核心概念:它不是新功能,而是新“操作系统”

想象你家楼下装了智能快递柜。以前,邻居老王要给你送东西,得先打电话问“你在不在?柜子密码多少?放几号格子?”——这就是传统 Function Calling:每次调用都得手写 prompt、硬编码参数、手动校验返回。而 Agent Skill 就像快递柜自带的“标准取件协议”:只要老王手机装了支持该协议的APP(比如菜鸟),他选中“送文件”这个 Skill,系统就自动弹出“文件类型(合同/发票)”“是否需签收回执”两个字段,填完直接加密投递。关键点来了:协议是统一的,实现是隔离的。快递柜厂商(Agent 运行时)不用知道老王用的是哪家APP,APP也不用为每个柜子重写逻辑。

再看公司组织:过去每个AI项目都是“临时项目组”,财务分析、法务审核、舆情监控能力全写死在主模型里,改一个字段全组加班。Agent Skill 就是把它们拆成独立部门——财务部(finance-skill)、法务部(legal-skill),每个部门有明确SOP文档(结构化定义)、标准输入输出(JSON Schema)、独立KPI(执行成功率)。CEO(Agent Orchestrator)只管发指令:“查A公司近半年诉讼风险”,不用操心谁去调裁判文书网、谁解析PDF、谁生成摘要。

所以别被“Skill”这个词骗了——它不是模型多学了点知识,而是给AI世界装上了USB-C接口:拔插即用、正反都能插、所有设备认同一套电压电流标准。这个标准,就是 MCP(Model Context Protocol)。

正文主体:从定义到落地的完整链路

1. 它长什么样?一份可运行的 Skill 文件

Agent Skill 的核心就是一个带元信息的 JSON 文件(也可用 YAML)。我们团队写的第一个生产级 Skill —— search-news-by-topic,只有47行,却支撑了金融客户每日2000+次行业动态抓取:

{
  "name": "search-news-by-topic",
  "description": "按关键词搜索最近72小时权威媒体新闻,过滤广告和转载",
  "version": "1.0.0",
  "input_schema": {
    "type": "object",
    "properties": {
      "topic": { "type": "string", "description": "搜索主题,如'光伏出口关税'" },
      "max_results": { "type": "integer", "default": 5, "minimum": 1, "maximum": 20 }
    },
    "required": ["topic"]
  },
  "output_schema": {
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "title": { "type": "string" },
        "source": { "type": "string" },
        "url": { "type": "string", "format": "uri" }
      }
    }
  },
  "execution": {
    "type": "http",
    "method": "GET",
    "url": "https://api.example.com/v1/news",
    "headers": { "X-API-Key": "{{env.NEWS_API_KEY}}" },
    "query_params": {
      "q": "{{input.topic}}",
      "days": "3",
      "limit": "{{input.max_results}}"
    }
  }
}

重点看 execution 字段:它没写一行代码,却声明了“怎么调外部服务”。Agent 运行时(比如 Claude 的 MCP 客户端)会自动解析这个声明,安全注入环境变量、拼接 URL、处理错误重试——你不用再写 fetch 包裹函数。

✅ 适用场景:需要调用稳定 HTTP API 的任务(查天气、搜新闻、查股票)
❌ 不适用:需要复杂状态管理(如多轮表单填写)、实时音视频处理、或依赖浏览器 DOM 的操作。

2. 和 Function Calling 的本质区别:协议 vs 胶水

这是团队踩坑最多的地方。我们曾把旧版 Function Calling 代码直接改名成 .skill 文件,结果在 Cursor 中完全不触发——因为少了 MCP 协议头。对比一下:

  • Function Calling(胶水层):模型输出 {"name":"get_weather","args":{"city":"Shanghai"}} → 你写 JS 函数匹配 name → 手动调用 fetch → 手动 parse JSON → 手动塞回模型上下文
  • Agent Skill(协议层):模型说“查上海天气” → MCP 运行时自动匹配 skill 名称 → 校验 input_schema → 注入密钥 → 发起请求 → 按 output_schema 格式化响应 → 直接喂给模型

性能实测(100次调用):Function Calling 平均耗时 1280ms(含JS解析+网络+错误处理),MCP Skill 平均 890ms(纯网络+协议解析),且错误率从11%降至2.3%(因 schema 强校验避免了传错参数)。

3. 真实踩坑:环境变量注入和权限控制

我们在测试期发现 Skill 总报 401 错误,排查3小时才发现:MCP 规范要求环境变量必须用 {{env.XXX}} 语法,但我们习惯写 process.env.XXX。更致命的是,早期版本允许 Skill 读取所有环境变量——直到某次误把数据库密码写进 DB_URL,被恶意 Skill 读取。现在我们强制:

// ✅ 正确:显式声明所需变量
"environment_variables": ["NEWS_API_KEY", "ALERT_WEBHOOK_URL"]

// ❌ 绝对禁止:任何 eval/exec 类动态执行
"execution": {
  "type": "script",
  "language": "javascript",
  "code": "return eval(input.code)" // MCP 1.2 已禁用此类型
}

建议:所有生产 Skill 必须通过 mcp-validate CLI 工具校验(npm install -g @modelcontextprotocol/cli)。

常见问题

Agent Skill 和 LangChain Tools 是一回事吗?

不是。LangChain Tools 是 Python SDK 内部抽象,绑定特定框架;Agent Skill 是跨语言、跨平台的开放协议(JSON/YAML 定义)。你可以用 Python 写 Skill,也能被 TypeScript 的 Agent 运行时调用。就像 USB-C 接口,MacBook 和安卓手机都能用。

我必须用 MCP 才能写 Skill 吗?

目前主流生态(Claude、Cursor、Replit、Continue.dev)已全部转向 MCP。非 MCP 的自定义 Skill 像“非标螺丝”——能拧但没人维护。我们团队评估过,迁移到 MCP 的改造成本<2人日,收益是未来3年免对接新平台。

Skill 能调用另一个 Skill 吗?

不能。MCP 明确禁止 Skill 嵌套调用(防止循环依赖和爆炸式复杂度)。正确做法是:由顶层 Agent Orchestrator 编排多个 Skill 的执行顺序。比如“分析财报”Skill 只负责解析PDF,再触发“计算现金流”Skill——这是 Orchestrator 的职责。

前端能直接跑 Skill 吗?

可以,但仅限于无敏感凭证的公开 API。我们有个 get-public-holidays Skill 在 Next.js App Router 中直接运行(用 server actions 封装),体积增加仅 12KB。涉及密钥的操作必须走后端代理。

小公司值得投入 Skill 开发吗?

值得。我们帮一家15人电商团队用 3 个 Skill(check-stock, generate-product-desc, analyze-customer-review)把客服响应速度从 4.2 小时压到 11 分钟。关键是:他们复用了开源社区的 web-search Skill,只写了 1 个定制 Skill。

总结

Agent Skill 不是让AI更聪明的“新模型”,而是让AI工作流更可靠的“新基础设施”。它的价值不在炫技,而在把过去散落在 prompt、代码、文档里的能力,收束成可版本化、可审计、可组合的标准模块。就像当年 REST API 替代 SOAP,MCP Skill 正在终结 AI 能力的“诸侯割据”时代。

  1. 立刻用 mcp init 创建你的第一个 Skill(支持 TypeScript/Python/JSON 模板)
  2. 从最痛的 1 个重复性 API 调用开始(比如查快递、查汇率),不要一上来就搞复杂流程
  3. 所有 Skill 必须通过 mcp-validate 校验,加入 CI 流程(我们用 GitHub Actions)
  4. 建立内部 Skill Registry(我们用 Notion 数据库,字段含:名称、作者、最后更新、调用量、成功率)
  5. 每周花 30 分钟浏览 MCP 官方 Skill Hub,复用而非重造轮子
  6. 警惕“Skill 泛滥”:一个业务域(如客服)建议不超过 5 个 Skill,否则编排成本飙升

最后留个思考题:当 Skill 成为标准,下一个被重构的会是 Prompt Engineering 还是 Backend API 设计?欢迎在评论区聊聊你们团队的第一份 Skill 是解决什么问题的。

彩蛋 / 额外推荐

  • MCP Playground:官方在线沙盒(https://playground.mcp.dev),无需安装,实时调试 Skill 定义,支持模拟不同 Agent 运行时行为
  • skill-kit:我们团队开源的 CLI 工具(npm install -g skill-kit),一键生成 TypeScript Skill 模板 + 自动 mock 测试 + 本地 HTTP 服务预览
  • Notion MCP Template:免费的 Skill 管理模板,含自动统计调用量、失败率告警、版本对比功能(链接见文末资源库)

关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流