
先讲一个我最近半年体会特别深的事用 AI 写代码、写文档、整理信息一开始确实有“效率爆炸”的感觉但用久了你会发现一个隐蔽的瓶颈——它在每次对话里都像一个记忆很短的临时工。你上周花半小时把某个任务的背景、规则、输出格式讲清楚这周开一个新窗口又要从头讲一遍。如果你的任务只是偶尔做一次忍忍就算了可如果它是你每周都要重复的工作这种“反复解释”就会变成一种比生成结果慢得多的隐性成本。前两天在 GitHub 上翻热门项目看到 Addy Osmani 出品的 agent skill 仓库已经涨到了 7.9 万 星一个持续更新的热门项目盘点里它排到了本月非常靠前的位置。Addy Osmani 这个名字长期混前端和工程实践社区的人应该不陌生。他在 Google Chrome 团队工作写过很多被开发者广泛阅读的内容也参与过不少开源项目。他来做 agent skill本身就是一个值得琢磨的信号AI Agent 这件事正在从前沿实验进入“经验产品化”的阶段。我的一个基本判断是这个项目真正值得关注的地方不是它多了一个酷炫功能而是它把“一次性 AI 对话”变成了“可复用、可维护的能力单元”。这件事可能是未来很长一段时间里普通人使用 AI 方式的一个重要分水岭。1. 先搞清楚 agent skill 解决的是 AI 协作里最隐蔽的一类低效1.1 你不是不会用 AI你是在重复解释同一件事聊天式 AI 的体验本质上是一种“无状态会话”。你今天告诉它“项目周报需要包含风险说明”它记住了但明天换一个窗口它就忘了。于是很多人会误以为是自己提示词写得不够好或者觉得“AI 还是不够智能”。其实问题不出在模型而出在使用方式上我们一直把 AI 当成一个临时工具来“聊”而不是把它当成一个可以加载固定能力的执行体来“用”。对话里那一段段说明文字用完即焚没有沉淀。agent skill 这个概念瞄准的正是这个缺口。它比 prompt 要重比一个完整软件要轻可以大致理解成“打包好的一套能力单元”。这里面通常包含对任务的描述、输入要求、执行步骤、输出格式甚至还有适用边界和错误处理。对使用者来说它不再需要每次重复交代背景只需要触发这个 skillagent 就会按照既定规则完成一个任务。它不是“让 AI 生成更多文字”而是“让 AI 在规则下稳定完成一件事”。这个差异是理解整个项目的核心。1.2 skill 和 agent 的关系不该含糊很多人在搜索“skill 和 agent 的区别”“agent 和 skill 的关系”说明这两个概念刚开始普及而且很容易被混着用。这里用一个类比来说明agent 像是一个有目标、能决策的执行角色。skill 像是这个角色掌握的某个具体技能。一个司机是 agent驾驶过程里他掌握“侧方停车”“雨天高速”“山路会车”这些具体技能。技能解决的是“具体怎么做”而司机解决的是“现在该用哪个技能、什么时候停下、遇到异常怎么处理”。你说二者谁重要都重要但分工完全不同。放在工程语境里一个 agent 可以挂载多个 skill根据任务需要自动选择合适的能力。一个 skill 也可以被多个 agent 复用只要 agent 框架支持加载它。这里容易出现的误解是把 skill 当成 prompt 的“高级叫法”。实际上一个结构完整的 skill 通常会包含 prompt 之外的东西比如执行步骤、输入约束、输出校验插件、脚本工具依赖等等。而 workflow 又比 skill 更重一些它通常是把多个步骤、多个工具串起来形成一个完整流程skill 可以作为 workflow 的中间环节。概念常见含义粒度复用性典型用途prompt一次性的指令文本细低几乎每次要重写单次问答、零星任务skill可被 agent 调用的能力单元中高可跨 agent 复用固定规则的重复任务agent能自主决策和调用工具的执行体大中需要配置和上下文自主完成多步骤目标workflow多步骤流程编排大中通常绑定特定场景端到端自动化流水线理解了这一层再看 7.9 万星的项目才不会把它简单理解成“一个大牛写的提示词集合”。2. 为什么一个 skill 能拿到 7.9 万星它代表的机制变化值得细看2.1 7.9 万星买的不是“更长的提示词”是“经验可复制”过去我们分享经验靠的是写文章、写博客、录教学视频。这些内容都需要人花时间去读、去理解再手工转化为自己的操作流程。问题是理解有损耗执行有偏差。你觉得你已经照着文章做完了但细节可能完全不一样。skill 的机制创新在于它把经验直接编码成 agent 可以执行的流程。这意味着一旦某个领域的高质量经验被封装成 skill别人不再需要逐字阅读和理解只需要加载并运行它就能得到接近原作者的执行效果。打个比方过去你学一道菜要看菜谱、看视频、自己试错现在你得到的是一个可以自动按配方做菜的机器指令而且这个指令还会告诉你盐没放够时会怎样什么时候该停下来。7.9 万星说明这个需求是真实存在的而且不是小众需求。它背后的关注者不全是前端工程师也不全是 AI 研究者而是大量意识到“我在重复使用 AI”的普通开发者、内容创作者和业务人员。但我也想说一句冷静的话star 数高不等于这 7.9 万人都在生产环境里用起来了。收藏之后真正跑通的人比例通常会低很多。这不是否定项目而是提醒我们看待任何高星项目都要分清“关注热度”和“真实落地”。2.2 一个“生产级”的 skill通常包含哪些东西既然项目名称里带了 production-grade那它和随便一个脚本的差别主要就体现在结构上。一个生产级 skill 通常不是一块纯文本而是一个包含多个部分的包结构。我把它理解为以下几个模块元信息名称、描述、触发条件、适用模型或框架。输入约束需要哪些字段、上下文长度限制、超时处理。执行步骤先做什么、后做什么、按什么规则校验中间结果。输出结构期望格式、错误码、失败提示。边界声明依赖哪些工具、明确不处理什么。一个常见的目录结构可能长这样skill-example/ ├── README.md # 使用说明、适用范围、作者与版本 ├── SKILL.md # 核心技能定义输入、步骤、输出、约束 ├── scripts/ # 可执行脚本或工具调用 ├── samples/ # 示例输入输出 └── tests/ # 简单验证用例需要注意这只是一个示例结构不同项目、不同 agent 框架对 skill 的组织方式会有差异。你在实践时以你选用的项目文档和实际仓库结构为准。“production-grade”这个词之所以重要是因为它意味着这里面的内容不是随便写出来的几段话而是考虑了错误处理、边界情况、可测试性的产物。这恰恰是普通 prompt 和成熟 skill 之间的关键分水岭。2.3 从对话式 AI 到“带技能的 agent”真正变化的不是模型如果只盯着模型参数你可能觉得这两年没什么本质变化。但如果你看使用方式变化其实很大。过去我们在对话窗口里描述一个任务模型的表现高度依赖你的表达能力、上下文长度、甚至当时的心情。它是一场“即兴发挥”。而当你把任务封装进 skill它变成了一场“有预案的执行”。这带来三个直接结果稳定性上升固定流程带来的输出质量比随机发挥更稳定。可维护性上升流程出了问题你改的是 skill 定义而不是每次重新调教。门槛下降使用者不需要成为提示词专家只需要知道什么场景加载哪个 skill。从这个角度看Addy Osmani 这个项目吸引大量关注是有道理的。它不是靠一个炫技的 demo 走红而是踩中了一个真实的工程痛点知识沉淀与流程复用。3. 拿到一个 skill 之后正确顺序不是跑而是先读边界3.1 第一步不急着执行先看元信息和 README很多人在 GitHub 上下载了项目第一反应就是“能不能跑起来”。这个习惯对普通 demo 可以但对一个依赖 agent 框架、模型版本、外部工具链的 skill 来说很危险。我建议的顺序是先读 README再看 SKILL.md最后才动手跑示例。阅读时要关注这些信息它支持哪个 agent 运行环境兼容哪个模型版本。它依赖哪些外部命令、脚本或 API。它的示例输入输出长什么样。它明确声明了哪些不属于它处理的范围。这些信息通常在 README 里会有说明。如果 README 写得不够清楚就先不要跑先去看 issues 或者项目文档确认环境要求。一个生产级 skill 的维护者通常会把边界写得比较清楚。3.2 第二步小样本验证不要一上来就批量跑通一个样例之后先别急着把几十个文件丢进去。先用一两个小样本验证它的行为是否符合预期。重点看这几个维度检查项正常表现异常表现输入识别样例能正确识别并读取路径错误、编码乱码、字段缺失输出稳定性同一输入重复多次结果基本一致每次输出差异巨大失败行为能明确提示哪一步失败、为什么失败吞掉异常、返回空结果依赖可用所需脚本和工具正常调用报 command not found 或权限不足这一步看着简单但非常关键。它直接决定了这个 skill 能不能进入你的日常使用清单。一个输出不稳定的 skill即使单次效果惊艳也无法用于生产。注意不要一上来就把批量数和并发数拉满。先用一条样例确认输入、输出和日志都正常再逐步增加任务量。3.3 第三步按自己的任务调整参数但保持记录通用 skill 的参数在具体任务里不一定都合适。常见需要调整的维度包括输入文件路径和输出目录。任务上下文长度。批量数、并发数。超时时间。是否需要修改提示中的风格或格式要求。我的建议是每次只改一个变量并把结果记录下来。调参不可怕可怕的是同时改了好几个地方结果出了问题不知道是哪一个参数导致的。如果调整之后结果仍然不对先回退到样例参数再考虑是不是这个 skill 与你使用的模型版本不兼容或者你的输入数据不符合它的预期。4. 把个人经验封装成自己的 skill从一个最小场景开始4.1 选一个高频、重复、容易出错的任务看别人的 skill最终目的是建立自己的“技能包”。很多人一上来就想做一个“万能 agent”把所有工作流都塞进去。这个思路大概率会在维护期崩溃。更好的起点是找一个你每周都在做、规则明确、又容易因为忙碌而出错的任务。比如项目周报生成根据 git 提交记录和 TODO 列表生成固定模板周报。日志错误分类把一段日志按错误类型归类。代码评审辅助根据 diff 生成风险点和改进建议。会议纪要格式化把一段对话整理成决议和行动项。这类任务的特点是规则清晰、输出固定、重复频率高非常适合第一次封装 skill。4.2 把流程写成可执行规则而不是凭感觉描述写 skill 的时候最忌讳的是把步骤写成“整理好内容”“生成一个不错的报告”这种模糊描述。一个可执行的 skill每个步骤都应该是可判断、可观测的。先不要在电脑上写先在纸上或者文档里把一次任务完整写下来什么时候触发。例如用户说“生成这周周报”。输入是什么。例如仓库路径、时间范围。步骤是什么。例如读取 git 提交记录按 feature/fix/docs 归类过滤无效提交。输出是什么。例如固定模板的 Markdown 文件。什么情况下停下来。例如本周没有提交需要明确告知而不是生成空模板。当你觉得这个流程已经足够具体再把它转成一个类似这样的 SKILL.md 结构# 技能每周项目周报生成 description: 根据 git 提交记录和 TODO 列表生成格式化周报 agent: 通用对话型 agent trigger: 用户说“生成这周周报”或调度任务传入 weekly_report input: - repo_path: 仓库本地路径 - days: 默认 7 steps: 1. 读取 repo_path 下最近 days 天的提交记录 2. 按类型归类feature / fix / docs / refactor 3. 过滤无效提交如 merge 节点、格式调整 4. 提取关键改动补充 TODO 相关进度 5. 生成固定模板 Markdown 输出 output: format: markdown structure: [本周重点, 代码改动, 问题与风险, 下周计划] guardrails: - 不要虚构提交记录 - 如果最近没有提交明确提示“本周无代码提交”注意这只是一个通用示例不是某个仓库的真实内容。真正的 skill 格式要按照你使用的 agent 框架的要求来写。但核心思路是一样的把模糊经验变成明确规则。不要一开始就追求覆盖所有分支先覆盖主路径。主路径稳定之后再逐步补充边界处理。4.3 参考社区和开源项目但保留自己的场景我见过一些开发者把 GitHub 上热门的 skill 下载下来发现不符合自己的场景然后抱怨“这项目不行”。其实不是项目不行而是场景不匹配。一个高质量 skill 往往是对某种领域经验的权威表达它不是万能模板。你在参考别人的项目时要重点关注三件事作者所在领域和你是否接近。它依赖的 agent 框架和模型版本是否与你的环境匹配。它的输入输出结构是否可以被你的数据承接。最后skill 也要像代码一样迭代。用 git 管理记录每次改动观察使用效果。如果你觉得某个 skill 在工作里已经稳定用了一个月再考虑把它公开分享或者拓展成更复杂的能力。5. 生产级的真正门槛不是写出来而是能长期维护5.1 适合与不适合的边界要分明做一个生产级 skill第一步不是写代码而是确定边界。不是所有任务都适合封装成 skill。任务类型是否适合原因每周项目周报生成适合重复、规则明确、输出格式固定日志错误分类适合标签集合有限、判断规则稳定会议纪要生成行动项较适合有固定结构但需要一定人工判断自由创作小说初稿不适合高度个性化需要作者判断实时股价买卖决策不适合依赖实时数据和复杂决策风险高适合封装成 skill 的任务一般有这三个特征你做过的次数已经足够多说明背后有稳定模式。规则可以被写清楚不需要每回靠灵感发挥。输出结果可以被检查至少人工一眼能看出对错。如果一项任务连你自己都说不清规则那它还不具备封装条件。5.2 最容易出问题的是哪几层一个生产级 skill 在真实环境里出问题通常不会只有一个原因。按照常见经验问题大致分布在四层。输入层文件路径不对、编码不一致、字段缺失、数据格式与预期不符。环境层依赖版本不兼容、权限不足、磁盘空间不够、网络请求被拦截。执行层上下文超长、中间步骤调用失败、某个假设不成立。输出层格式错误、内容幻觉、返回空结果、失败原因被吞掉。排查的时候先看现象再定位是哪一层出的问题。比如先看现象是报错还是跑完但结果不对是卡住了还是速度突然变慢再看输入输入样例是否能稳定复现拆开看每一步输出了什么。再看环境依赖版本、权限、资源占用是否正常。再看参数批量数、超时时间、上下文长度是否超出限制。最后看工具边界这个 skill 本身支持到什么程度哪些情况它明确不处理。排查这类问题先确定是哪一层坏了再决定修哪里。不要一上来就怀疑模型能力或重写整个 skill。5.3 星数不等于可迁移性阅读源码才是最可靠的验证最后一点可能是最容易被忽略的不要因为一个项目有 7.9 万星就下意识认为它下载下来就能用于你的生产环境。星数代表的是关注度和某种信任但每个人的运行环境、业务场景、数据格式都不一样。真正可靠的验证方式只有一个把它放到你自己的真实任务里跑一段时间记录它在不同输入下的表现、失败率和维护成本。这也解释了为什么“生产级”这个词经常被误用。一个仓库的 README 里可以写“production-grade”但只有当你把它接入工作流、经历了几周真实考验、修过几个边界问题之后它对你来说才真正算得上生产级。回到开头那个场景。为什么 agent skill 这个概念突然获得这么多关注因为它踩中的痛点足够普遍我们和 AI 协作时最贵的不是算力也不是 token而是“每次都要重新解释一件事”的重复劳动。Addy Osmani 这个项目拿到 7.9 万星本质上是这种需求的一次集中释放。技术圈每年都会出现新的概念、新的工具、新的热点。但真正能留下来的往往是那些把重复劳动变成可复制资产的东西。agent skill 如果只停在“一个很火的仓库”这个层面意义有限但如果你能从里面学到一种思路——把自己每周都在做的事情一步步封装成 agent 能直接复用的能力单元——那它对你的价值会远超那个 star 数字。不要急着追下一个热门项目。先找出你工作里那件最重复、最规则化、最不值得每次重新花时间的事情从它开始。先跑通再迭代。这可能是这个项目给你带来的最实在的启发。