从“提示词工程”到“技能工程”:Comate 创建Agent Skills 实战

导读: 随着企业级应用向更复杂的智能体工作流演进,单纯依赖超长系统提示词的 **"提示词工程"已经暴露出上下文污染、指令漂移以及复用性极差等瓶颈。 **在此背景下,Anthropic推出的Agent Skills正成为破局的核心趋势

本文核心价值:无论你是渴望突破AI编程效率瓶颈的极客开发者,还是致力于沉淀团队研发SOP的技术管理者,本文都将为你提供 *从理论认知到工具落地的全链路指南**。通过本文,你将收获:

  • 底层机制揭秘:深度剖析 Agent Skills 的渐进式披露核心机制;
  • 10大实战原则:系统拆解创建高效Agent Skills 的十大黄金原则;
  • 研发效能飙升:直击真实开发痛点,展示Comate结合Agent Skills 的颠覆性表现------例如将接口模块封装耗时从 20 分钟骤降至 2 分钟等。

接下来,让我们一起踏上****从"提示词工程"到"技能工程"** **的进阶之旅。

01从"提示词工程"到"技能工程"

传统模式的弊端开始显现 :在大模型爆发初期,开发者控制模型行为主要依赖于 **"提示词工程"(Prompt Engineering) **,即将复杂的业务规则、知识库和操作指令全部写入系统提示(System Prompt)或对话上下文中。然而,随着企业级应用向工作流(Agentic Workflow)演进,这种模式的瓶颈日益凸显:

  • 上下文污染与指令漂移:为了覆盖所有边界情况,提示词往往长达数万Token,导致模型注意力分散,产生"指令漂移",即在长对话中遗忘或混淆初始指令
  • 复用性与维护性极差:复杂的业务逻辑被硬编码在对话历史中,难以实现跨项目或跨团队的迁移,同时版本控制成本较高。任何细微的流程修改都需要重新测试整个庞大的提示词系统,成本高昂。

与此同时,旨在连接外部工具和数据的模型上下文协议(Model Context Protocol,MCP)虽然解决了"连接性"问题,但暴露了新的挑战:当MCP服务器暴露数十上百个工具的完整JSON Schema时,会造成 上下文爆炸****,占用大量Token窗口, 从而出现上下文爆炸、成本飙升、推理能力下降;并且,拥有工具连接能力并不等于智能体"知道如何正确使用"这些工具 ,存在显著的能力鸿沟

新模式的诞生 :Anthropic于2025年10月推出了Agent Skills ,旨在解决编码场景的工具调用问题,并于2025年12月18日被确立为开放标准 ,这标志着AI智能体开发从"提示词工程"迈入了 **"技能工程" ** 的新阶段。其核心设计理念是将连接性与能力分离 :**MCP专注于提供标准化的工具访问接口,而Skills则专注于封装领域专业知识和工作流程, **教导智能体"如何组合使用这些工具"。

02**重新定义AI工作流:什么是Agent Skills?

2.1、渐进式披露:破解上下文困境

Agent Skills最核心的创新是渐进式披露(Progressive Disclosure) 机制。这种机制将技能信息分为三个层次, 智能体按需逐步加载, 既确保必要时不遗漏细节, 又避免一次性将过多内容塞入上下文窗口。

2.2、沙箱与代码执行器(Code Execution Tool):提升确定性

Agent Skills的强大之处在于其与Code Execution Tool的无缝集成 。模型不再试图通过概率最大的文本生成来解决复杂的数学运算或数据处理问题 (这是 LLM 的弱点) ,而是**通过编写或者执行Python代码来获得确定性的结果****。

这种设计有两个关键优势:

1.无限的知识容量:通过脚本和外部文件,技能可以"携带"远超上下文限制的知识。

2.确定性执行:复杂的计算、数据转换、格式解析等任务交给代码执行,避免了 LLM 生成过程中的不确定性和幻觉问题。

2.3、Agent Skills vs MCP

Agent Skills是一种标准化的程序性知识封装格式。 MCP为智能体提供了"手"来操作工具,而 Skills提供了"操作手册"或"SOP(标准作业程序)",换句话说: Skills是一种新的AI任务执行范式, 教导智能体如何正确使用这些工具 , 它是将原本隐含在Prompt中的「如何工作」, 从模型内部拆解出来, 显式化、结构话、可复用、可组合, 形成一套标准化的执行协议。 **核心要点如下:

  • Skills能力模块与多功能连接平台(MCP)互为补充。 **通过能力模块实现知识共享,借助多功能连接平台(MCP)完成功能扩展,二者协同使用能发挥最佳效果!

  • Skills更像"把 SOP 打包" :流程、清单、产物格式这些东西,装上就能用。

  • MCP更像"统一接口" :把 GitHub、Notion、浏览器、数据库这类外部系统能力接进来。

03创建有效Agent Skills的10大原则 懂了概念,到底怎么写好一个实用的Skills?小编总结了十大黄金原则。在实践中会发现,Comate不仅是你使用Skills的载体,更是你编写、优化Skills设计的绝佳编程伙伴。

  • 原则一:精简为王------只写Agent不知道的事

Comate实战 ** **不要教AI写基础的React,只需把团队私有的约定(如状态管理用zustand不用redux,接口走特定封装)告诉它。在编写 SKILL.md 时,你可以让Comate帮你提炼和精简冗长的团队规范,一键转化为AI易读的指令结构。

css 复制代码
# ❌ 浪费:Agent 自己就知道怎么用 fetchWhen making HTTP requests, you can use the fetch API. The fetch function takes a URL and an options object containing method, headers, and body...# ✅ 有价值:这是你们团队的私有约定All API calls MUST use the project's request wrapper:```tsimport { request } from '@/api/request'// GETconst users = await request.getUser('/api/users')// POSTawait request.post('/api/users', { name: 'Winty' })```Do NOT use raw fetch or axios directly.
  • 原则二:设置合适的自由度- 按风险等级调"管控力度"

Comate实战 ** **高风险任务给精确步骤(严),创造性任务给方向(松)。不知道怎么把控颗粒度?把任务发给Comate,让它为你提供不同管控力度的Skills模版方案。不同任务的风险不同,给 Agent 的"自由空间"也应该不同。我把它分成三档:

管控力度 什么时候用 实际场景
「松」 --- 只给方向 方案灵活、不会出大问题 "帮我 Review 这段代码"
「中」 --- 给模板 有推荐做法、但允许调整 "按团队规范写一个组件"
「严」 --- 给精确步骤 操作敏感、一步都不能错 "执行数据库迁移"

越危险的操作越要"收紧",越创造性的任务越要"放手"。

写一个新的 React 组件, 我会给"中"------提供模板和规范,但具体 JSX 怎么写 Agent 自己判断就好。但如果是修改 Nginx 配置、执行数据库迁移这种,我会给"严"------精确到每一条命令,不留任何发挥空间。

  • 原则三:渐进式披露内容分层加载-内容分层加载, 别一股脑全塞

Comate实战 别把所有规范塞进一个文件。借助Comate的工程理解能力,它可以帮你自动拆分 SKILL.mdreferences/ 目录下的详细规范,构建合理的文件结构。

scss 复制代码
# React Component Skill## Core Rules1. Named exports only2. CSS Modules for styling3. Co-locate tests## Need More Detail?- Naming conventions → see [naming.md](references/naming.md)- State management patterns → see [state.md](references/state.md)- Accessibility checklist → see [a11y.md](references/a11y.md)

当用户只是让 Agent 写个简单组件时,它看Core Rules 就够了。只有涉及无障碍适配时,Agent 才会去读 a11y.md。这样每次执行任务时,上下文窗口里只有"用得着"的内容。

注意一个坑:引用文件只支持一层深度。 不要让 naming.md 里面再引用 naming-detail.md,Agent 大概率不会读到那么深。

  • 原则四:代码示例 > 文字

Comate实战 当你发现自己在写第三段"解释"时,不如换个代码示例。你可以直接让Comate生成一段团队标准写法的代码(比如特定格式的Custom Hook),直接粘贴进Skills文档中,Agent的理解准确率将飙升至100%。

matlab 复制代码
## Custom Hook 规范```ts// ✅ 标准写法 --- 直接照这个格式来export function useUserList(params: UseUserListParams) {  const [users, setUsers] = useStateUser([])  const [loading, setLoading] = useState(false)  const fetch = useCallback(async () => {    setLoading(true)    try {      const data = await request.getUser('/api/users', { params })      setUsers(data)    } finally {      setLoading(false)    }  }, [params])  useEffect(() => { fetch() }, [fetch])  return { users, loading, refresh: fetch }}```Naming: `use` + resource name, e.g. `useOrderDetail`, `useCartItems`Return: always return an object (not array), include a `refresh` method
  • 原则五&六:设定清晰边界与清单模式

**Comate实战:告诉AI什么不能碰,多步任务用编号清单"锁死"顺序( **编号清单给了 Agent 两样东西:「明确的先后顺序」「可追踪的进度」)。在迭代Skills时,Comate能帮你审查逻辑漏洞,自动补全决策树和防御性指令。

css 复制代码
## 操作边界✅ **放手做:**- 在 `src/components/` 下新建文件- 在 `src/hooks/` 下新建 custom hook- 修改当前任务相关的组件和样式⚠️ **先问我:**- 要改 `src/shared/` 或 `src/utils/` 里的公共代码- 要新加一个 npm 依赖- 要改路由配置或全局状态🚫 **绝对不要:**- 动任何 config 文件(webpack/vite/tsconfig/eslint)- 删除或修改已有的测试用例- 在代码里硬编码环境变量或密钥
  • 原则七&八:脚本封装操作与确认节点

Comate实战 繁琐操作用确定性脚本搞定,交付前设一道"质检门"(如检查 console.log 和 TypeScript报错)。在写这些单一功能的CLI脚本时,Comate是直接生产力,几秒钟即可输出无bug的Python或Node.js脚本。

go 复制代码
## 创建新组件不要手动创建文件。运行脚手架脚本:```bashnode scripts/create-component.js UserCard```脚本会自动完成:- 创建 `src/components/UserCard/` 目录- 生成 index.tsx(含 Props interface 模板)- 生成 UserCard.module.css(含基础类名)- 生成 UserCard.test.tsx(含 render 基础用例)- 在 `src/components/index.ts` 中追加 export查看所有选项:`node scripts/create-component.js --help`
  • 原则九: 用参数让 Skills "一鱼多吃"

用参数化设计,一个 Skills 就能通吃所有组件的生成。

Comate实战 ** **把可变的部分抽成参数,固定的部分写成规则。

go 复制代码
## 输入参数| 参数 | 必填 | 默认值 | 说明 ||-----|------|-------|------|| 组件名称 | 是 | - | PascalCase,如 UserCard || 样式方案 | 否 | css-modules | 可选 css-modules / tailwind || 是否生成测试 | 否 | 是 | 设为"否"可跳过测试文件 || 是否生成 Story | 否 | 否 | Storybook 文件 |## 输出文件根据参数生成以下文件:-`src/components/{组件名称}/index.tsx` ← 始终生成-`src/components/{组件名称}/{组件名称}.module.css` ← 样式方案为 css-modules 时-`src/components/{组件名称}/{组件名称}.test.tsx` ← 开启测试时-`src/components/{组件名称}/{组件名称}.stories.tsx` ← 开启 Story 时
  • 原则十:告诉Agent你的项目有哪些"趁手工具"

大多数成熟项目都有一堆好用的 npm scripts 和 CLI 工具,但 Agent 完全不知道它们的存在。

Comate实战 告诉Agent你的项目有哪些npm scripts和CLI工具,避免它自己"手搓"。在Skills里「列出项目已有的工具清单」****,相当于给 Agent 发了一套"装备":

go 复制代码
## 项目工具箱本项目提供了以下开发工具,请优先使用:| 命令 | 用途 | 什么时候用 ||-----|------|-----------|| `npx plop component` | 创建组件脚手架 | 新建任何 React 组件时 || `npm run codegen` | 从 OpenAPI 生成 API 类型 | 后端接口有更新时 || `npm run analyze` | 分析打包体积 | 添加新依赖或大改动后 || `npm run lint:fix` | 自动修复 lint 问题 | 代码写完后 || `npm run test:visual` | 跑视觉回归测试 | 改了 UI 样式后 |## 什么时候用工具 vs 手写-**用工具**:脚手架搭建、代码生成、构建部署、格式化-**手写**:业务逻辑、自定义 Hook、复杂交互组件创建新组件时,**始终**优先用 `npx plop component` 而不是手动建文件。

04Comate创建Agent Skills实战

看看在真实的开发场景中,Comate结合Agent Skills如何重塑生产力:

场景一:接口模块Actions极速封装
未使用
  • 痛点:前后端联调时,手动统计路由、整理文档、编写出入参类型定义并封装接口,每个接口大概需要耗时20分钟;

  • Comate + Skills方案:利用定制的Skills获取项目ID等授权信息,结合MCP提供的数据接口,一键生成接口路由文件、TypeScript参数类型定义以及封装代码文件;

  • 效果 :耗时从 20分钟/接口 骤降至 2分钟/接口,且全自动处理Swagger数据变化,类型定义100%精准对应。

未使用Skills:

处理流程:

初版版本:

1、人工编写接口封装公共信息

2、人工统计接口路由

3、人工整理接口文档, 手动输出接口出入参数类型定义

4、人工根据接口路由与接口出入参数类型定义, 进行手动出入接口封装

联调阶段:

1、前后端沟通对齐, 再人工更新接口封装信息

**耗时: ** 预估20分钟/每个接口

使用Skills:

处理流程:

初版版本:

1、人工编写接口封装公共信息

2、获取iapi授权信息、ID等信息, 并放入指定目录中

3、使用xxx技能, 生成接口路由文件、接口出入参数类型定义、接口封装文件

联调阶段:

1、前后端沟通对齐, 再使用xxx技能直接更新接口封装信息

**耗时: **预估2分钟/每个接口

  • fetch.ts公共信息编写:
typescript 复制代码
import {createFactory, Options} from 'axios-interface';import {toast} from 'acud';import {get} from 'lodash';const CODE_MESSAGE: any = {    400: '400:发出的请求有错误,服务器没有进行新建或修改数据的操作。',    401: '401:用户没有权限(令牌、用户名、密码错误)。',    403: '403:用户得到授权,但是访问是被禁止的。',    404: '404:发出的请求针对的是不存在的记录,服务器没有进行操作。',    406: '406:请求的格式不可得。',    410: '410:请求的资源被永久删除,且不会再得到的。',    422: '422:当创建一个对象时,发生一个验证错误。',    500: '500:服务器发生错误,请检查服务器。',    502: '502:网关错误。',    503: '503:服务不可用,服务器暂时过载或维护。',    504: '504:网关超时。'};const DEFAULT_CONFIG = {    timeout: 1000 * 60};export const apiBaseUrl = '/api/agent/version';export const options: Options = {    baseURL: apiBaseUrl,    ...DEFAULT_CONFIG,    validateStatus: () => true,    onResolve(response) {        const {status, statusText, config, data} = response;        if (status > 400 || status < 200) {            const error = new Error(                `API ${config.url} status is ${status} (${statusText})`            );            return Promise.reject(error);        }        if (data.code && data.code !== 0) {            return Promise.reject(new Error(                typeof data?.message === 'object' ? (data.message?.global || '请求出错')                    : (data?.message || '请求出错!')            ));        }        if (response.status >= 300) {            throw new Error(String(response.status));        }        return data;    },    onReject(error) {        const errorCode = get(error, 'response.status');        const errorMessage = (errorCode && CODE_MESSAGE[errorCode]) ? CODE_MESSAGE[errorCode] : error.message;        toast.error({            message: '报错提示',            description: errorMessage,            duration: 5        });    }};export const createInterface = createFactory(options).createInterface;
  • 接口路由统计 - api.ts 生成:
  • 接口出入参数类型定义 - index.model.ts生成:
  • 接口封装 - index.api.ts生成:
  • 联调阶段- 接口文档更新:

如: 文件上传从单文件到多文件

场景二:蓝图前端版本查询及流水线分支确认
  • 痛点:查询某个环境的前端包版本,再跳转CI/CD系统找对应的流水线、分支和Commit记录,跨系统跳转极其繁琐,耗时起码5分钟,且学习成本高;

  • Comate + Skills方案 :将蓝图版本查询、流水线信息查询、Git分支切换封装为三个组合Skills。在Comate对话框内,直接用自然语言输入:"查度小满科技云bcc的完整发布信息"。Comate即可自上而下通过脚本与MCP调度,直接返回当前版本号、状态、发布时间、甚至一键执行 git stash & checkout 切到对应分支;

  • 效果 :链路耗时从 5分钟 压缩至 1分钟以内,零门槛上手。

未使用Skills:

处理流程:

查询蓝图平台客户环境前端版本链路:

进入蓝图平台=>点击客户项目=>点击软件服务=>点击前端包=>找到对应的前 端服务的版本号

查询产品对应版本号的流水线链路:

进入蓝图平台=>点击包管理=>点击组件CI发布记录=>查询对应的产品版本号 信息=>跳转版本号对应的流水线

查询流水线对应的分支以及Commit

找到流水线=>找到对应的分支以及提交记录

弊端:

繁琐:整个链路需要各个平台跳转查询,操作很繁琐。

耗时:查询过程链路比较长,也很耗时。

学习成本高:学习前端查询链路还是有一定成本的,需要梳理文档供大家学 习。

耗时: 预估5分钟

使用Skills:

处理流程:

初版版本:

1、封装查询蓝图版本的Skills+MCP

2、查询完产品对应的版本号之后封装跳转到对应流水线的Skills+MCP

3、基于流水线查询对应分支以及Commit的Skills+MCP

编排:

基于这三个Skills可以按照从上到下的链路获取到版本对应的完整信息。

优势:

快速便捷:可以直接在Comate平台就能完成整个链路的查询,便捷快速,查询准确,不需要各个平台来回跳转查询。

学习成本较低:只需要通过自然语言的方式沟通就能获取到用户想要的信息。

**耗时: ** 预估1分钟

  • 查询蓝图产品版本号:



  • 查询产品对应的流水线、分支以及Commit:



  • 三个Skills编排查询:
  • 把当前产品自动切换到项目对应的分支进行问题或者需求的开发:

05

总结

目前在开发者社区中,关于代码审查、组件重构、API生成等领域的优秀Skills已经层出不穷。Agent Skills的出现,让我们不再是重复得调教大模型,而是真正将团队的"隐性知识、开发规范、业务工作流"沉淀为可复用的数字资产 。而在这一过程中,文心快码(Comate)既是这些优质Skills的执行引擎,更是帮你从零到一构建、编写、纠错和迭代Skills的最佳拍档

**立刻打开文心快码(Comate),开始编写你的Agent Skills吧! **欢迎在评论区分享你的奇思妙想与实践案例。

更新途径一: 百度搜索"文心快码",官网下载Comate AI IDE最新版;

更新途径二: Comate AI IDE 界面点击 "重启以更新";

更新途径三: VS Code 或者 Jetbrains 系列 IDE 搜索文心快码插件,点击"安装"或"更新"。

相关推荐
星栈1 小时前
MCP 从 stdio 迁到 SSE,踩了 5 个传输层坑
人工智能·后端·架构
金斗潼关1 小时前
使用MLP神经网络模型预测质数
人工智能·深度学习·神经网络
吴佳浩2 小时前
一文讲透AI算力单位:TFLOPS、PFLOPS、TOPS、稀疏算力,到底怎么算、怎么比?
人工智能·ai编程·gpu
guoyuhan2 小时前
用 OpenAI SDK 一行代码接入国产大模型:DeepSeek/Qwen/GLM 实战指南
人工智能
维基框架2 小时前
GitHub重构漏洞赏金计划 向AI批量报告说不
人工智能·重构·github
不加辣椒2 小时前
第5章:智能检索系统——从 Naive RAG 到 Agentic RAG
人工智能
程序员cxuan2 小时前
白嫖 Claude Max 20x 漏洞完整事件始末
人工智能·后端·程序员
猫头虎2 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作
用户874033739142 小时前
在 Ubuntu 22.04 最小化安装上部署与调优 Ollama 集群
人工智能