Skills 的工程学:把经典软件工程搬进一个概率型运行时
引子:一个容易被讲浅的概念如果只把 Skills 理解成给 Agent 预置一些提示词模板,那就错过了它真正有意思的地方。Skills 和子智能体一样,是一个全新的概念;但它的核心本质,是将软件工程中历经验证的经典智慧,迁移并适配到 AI Agent 的知识架构之中。用一句更工程化的话说:Skill 是面向 LLM 运行时的函数/模块——你用名字调用它,不关心内部实现;它的description与输出契约是接口,body 是实现。但迁移这个词有陷阱。它不是把 C 语言的头文件复制到 Python 里那种平移。真正的关键洞察是:当这些经典原则迁移到 Skills 世界时,被优化的目标函数换了。要看懂 Skills,先得看懂这个目标函数换成了什么。这也是全文的主线。一、一条主线:软件工程管理的,始终是稀缺资源每一条软件工程原则,追问它到底为什么存在,最后都会落到某一种稀缺资源上。而在经典世界里,稀缺资源只有两种。其一,人的认知负荷。人脑工作记忆有限。绝大多数整洁代码原则,优化的根本不是机器,而是未来读代码那个人的脑子:起好变量名、拆分函数、写注释、单一职责、避免深层嵌套——这些机器全都不在乎。编译器会把你精心命名的变量压成寄存器编号,把你拆的函数内联回去。它们唯一的服务对象,是一个认知预算有限的人类读者。其二,机器资源(CPU / 内存 / 网络)。这是物理上真实有限的东西。优化它的是另一套原则:算法复杂度、缓存、分页、连接池、索引、压缩、惰性加载。几乎所有经典 SE 决策,都是在这两种资源之间做权衡——一个清晰的三重循环(照顾人脑)与一行看不懂的向量化写法(照顾 CPU),你必须取舍。而 Skills 引入了第三种、且是真正全新的稀缺资源:LLM 的注意力 / 上下文。为什么说它全新,而不是内存换个名字?因为它两头稀缺:硬上限:上下文窗口就那么多 token,装满就装不下——这一点像内存。软退化:更要命的是,就算没装满,你塞得越多,模型对每一条的注意力就越差(context rot / lost-in-the-middle)。信息会互相稀释。第二点在经典计算里根本不存在。打个比方:经典内存是你往 RAM 里多放东西,只是占了空间;而上下文是你每往里多放一个字节,CPU 的思考质量都会略微下降、略微变糊涂。天下没有这种内存。更进一步,承载这一切的执行器也变了:CPU 是确定性的(同样输入永远同样输出),而 LLM 是概率型执行器——同一段 body,换个上下文、换次采样,行为都可能不同。所以一句话概括 Skills 的处境:你正在用一套为确定性机器 人脑打磨了几十年的工程智慧,去经营一个概率型机器 全新的注意力资源的环境。记住这把尺子,再看下面五条原则的迁移,就能分清哪些是干净平移、哪些发生了变形。二、五条经典原则的迁移1. 关注点分离:严禁把一切塞进 CLAUDE.md核心理念是授人以鱼,不如授人以渔——Skills 把解决问题的方法、步骤与经验沉淀为可复用的结构化资产,而非一次性答案。这让 Agent 从依赖临时灵感转变为能稳定复现高质量工作流。由此形成三层职责划分:CLAUDE.md:全局规则(项目背景、通用规范)。Skills:专业工作流(特定领域的复杂逻辑封装)。子智能体:任务执行(动态规划与实时操作)。工程师警示:严禁把所有逻辑塞进 CLAUDE.md。这如同把所有代码写进main函数——上下文冗余、难以维护、无法扩展。而且在 Skills 语境下,后果更严重:CLAUDE.md 是常驻上下文,你往里塞的每一行都在持续消耗上面说的那种双重稀缺资源,不仅占空间,还稀释模型注意力。值得补一句:这三层不只是职责不同,更是上下文作用域与生命周期不同——CLAUDE.md 像全局配置常驻,Skills 像库按需载入,子智能体则拥有自己独立的上下文窗口(类似进程隔离)。分层的本质,是对稀缺注意力的分级管理。2. 依赖倒置:成立,但请认清它弱在哪核心机制是面向接口编程,而非面向实现编程。Claude 不直接依赖某个 Skill 的脚本或 Prompt 细节,而是依赖它的抽象接口(description 输出契约)。只要契约不变,开发者可以随时替换、重构、升级内部逻辑,而对调用方透明——耦合度因此大幅降低。这个映射是对的,但作为一篇诚实的技术文章,必须点出它与经典依赖倒置的本质差距:经典 DIP 的接口由编译器 / 类型系统强制——违约就编译不过。而 Skill 的契约是自然语言,没有任何东西强制 body 真的遵守 description。所以这是约定式依赖倒置(by convention),而非构造式(by construction)。后果很具体:可替换性是真的(你确实能重构 body 而调用方无感),但接口不变 ⇒ 行为不变这个不变式是弱的——因为行为是概率性的。解耦的价值在,解耦的保证却比代码低了一档。用它,但别误以为它和写代码一样稳。3. 惰性加载:渐进式披露,以及一处比 Web 更极端的地方“渐进式披露 按需加载”,这是典型的惰性加载(Lazy Loading)策略:系统不在启动时预载全部知识,而在首次需要某技能时才加载相关资源。这与 Web 的代码分割(Code Splitting)、数据库的延迟加载异曲同工——在正确的时间加载正确的资源,最小化初始开销。但要补两点,才算讲透:成本性质不同:Web 的代码分割省的是带宽和包体积,代价基本可逆;Skills 省的是上下文 token,而上下文过载不只是变慢,还会劣化推理质量。所以往惰性加载走的压力,比 Web更大,不是异曲同工而是更极端。它是三级披露,不是两级:description(常驻,便宜)→body(调用时载入)→ 引用文件 / 脚本(真用到才读)。这层结构本身就是一套精心设计的、面向注意力预算的取舍机制。4. 最小权限:allowed-tools不止是好习惯,更是安全边界仅授予 Skill 完成职责所恰好足够的权限,不多不少——如同 Linux 的chmod精确控制读写执行、AWS 的 IAM Policy 精细限定访问范围。明确不能做什么,往往比定义能做什么更能保障系统安全。在 AI 语境下,它还多防一层经典系统里没有的东西:混淆代理 / 提示注入(confused deputy / prompt injection)。当一个 Skill 处理不可信输入(网页、文件内容、他人消息)时,输入本身可能携带指令去劫持它。此时allowed-tools限制的是爆炸半径——即便被劫持,它也做不了越权的事。这让最小权限从卫生习惯升级为对抗注入的真正安全边界,精神上更接近能力安全(capability-based security),而不只是文件权限位。5. 开放标准:声明式、自包含、知识本位Anthropic 将 Skills 作为 Agent Skills 的开放标准推广,并在越来越多的 Agent 平台上获得原生支持。其成功建立在三个本质属性上:声明式(Declarative):纯 Markdown,任何大模型都能读懂,没有黑盒二进制。自包含(Self-contained):一个文件夹即包含全部所需,复制即安装,无需复杂依赖管理。知识本位(Knowledge-Centric):核心价值在内容本身而非特定格式,不绑定单一平台。正是这三点,让一次编写、到处运行从口号变为可能——你在 Claude Code 里精心设计的 Skill,理论上可无缝迁移到任何支持该标准的平台。这不再只是一个产品特性的故事,而是一个行业标准的故事:你学到的不是如何配置某项功能,而是如何为 AI Agent 生态构建标准化的知识包。(一处治学上的诚实:关于具体的发布日期、支持平台数量与名单等数字,建议以官方最新公开信息为准再行引用;本文只对上述设计哲学背书,它才是真正持久的洞察。)三、被忽略的下半场:Skill 的生命周期以上五条把 Skills 的静态架构讲透了。但从软件工程视角,还有一整个动态治理的下半场常被忽略:一个 Skill 怎么测试?怎么做回归?怎么观测它有没有被正确触发?其中有一个经典 SE 里没有干净对应物的新失效模式,尤其值得警惕:模型升级导致的行为漂移。Body 一字未改,底层模型换代,Skill 的行为就可能变。这相当于依赖版本 bump 把你搞崩了——但这次的依赖是解释器本身。你无法 pin 住它,也很难像 mock 一个函数那样把它隔离出来单测。这是概率型运行时带来的、最反直觉的治理难题。它的直接推论是:在这个世界里,行为测试不是可选项。没有编译器替你兜底,唯一能验证 Skill 是否仍然正确的方式,就是跑一遍看行为。Skill 越多、组合越深(比如一个 Skill 调用另一个),回归成本越高,这套测试与可观测性就越不能省。结语:一把判断迁移的尺子回到开头那句被讲浅的定位。Skills 的价值,从来不是又多了一种写提示词的方式,而是它把抽象、模块化、复用、组合、惰性加载、命名空间、最小权限这些经典软件工程原则,完整地带进了 Agent 领域。但迁移不是复制。因为运行时从确定性机器 人脑换成了概率型机器 全新的注意力资源,这些原则平移过来时会分成三类——而这正是本文想留给你的那把尺子:原则原本服务的资源迁移到 Skills 后的命运人的认知负荷部分平移:但读者从人换成了模型,衡量标准从人脑能装几行变成token 成本、在上下文中的位置机器资源(缓存、惰性加载)以类比平移:但成本函数变了——省的不再只是延迟,而是避免推理质量退化(经典世界没有的)必须新增:执行器是概率型的,你得补上经典 SE 不需要的东西——行为测试、对漂移的容忍、接缝处的冗余校验一句话收束:Skills 让软件工程的经典智慧在 AI 时代重新变得锋利;但要把它用好,你既要认得出哪些原则能平移、哪些会变形,也别忘了给这个概率型运行时补上软件工程的下半场——测试、版本与可观测性。抽象设计得再干净,少了回归保障,概率型运行时迟早会让你还债。因为归根结底,写一个 Skill,就是为一个会读自然语言的解释器写库。

相关新闻

智慧园区案例:东久创新科技园停车场收费系统改造解决方案

智慧园区案例:东久创新科技园停车场收费系统改造解决方案

一、 背景需求东久创新科技园分为一期、二期 两个园区,园区停车场系统分两期建 设,两个停车场互为独立部署、分别管理,且由于停车场系统缺乏维保,停车场系统处于半瘫痪状态,急需改造升级。改造需求如下:1…

2026/10/15 7:39:20 阅读更多 →
一堆小矩形,为什么拼不出一个完美大矩形?揭秘 Perfect Rectangle 背后的算法智慧

一堆小矩形,为什么拼不出一个完美大矩形?揭秘 Perfect Rectangle 背后的算法智慧

一堆小矩形,为什么拼不出一个完美大矩形?揭秘 Perfect Rectangle 背后的算法智慧 作者:Echo_Wish 方向:算法设计 / LeetCode经典问题 / 数据结构思维 很多算法题,第一眼看起来特别简单。 比如今天这个问题: 给你很多个小矩形,问它们能不能刚好拼成一个大矩形。 听起来是…

2026/10/15 3:29:21 阅读更多 →
Lenovo Legion Toolkit 架构解析:模块化硬件控制系统的技术实现

Lenovo Legion Toolkit 架构解析:模块化硬件控制系统的技术实现

Lenovo Legion Toolkit 架构解析:模块化硬件控制系统的技术实现 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit …

2026/10/9 4:59:13 阅读更多 →

最新新闻

基于集群划分的分布式光伏配电网电压协调控制与Matlab实现

基于集群划分的分布式光伏配电网电压协调控制与Matlab实现

分布式光伏一多起来,配电网最先暴露问题的往往是电压。光照一强、负荷又轻的时候,馈线末端电压能一路冲到1.06甚至1.07标幺值,逆变器要么降出力、要么直接脱网保护,好好的发电量白白丢了。传统的变电站有载调压和固定电容器组又反…

2026/10/15 7:39:00 阅读更多 →
MEDS:基于Docker Compose的本地开发环境标准化方案

MEDS:基于Docker Compose的本地开发环境标准化方案

1. 项目概述:MEDS不是医疗系统,而是开发者私藏的“效率加速器”最近在几个技术社区里频繁刷到“MEDS”这个词,有人问“MEDS开源项目值不值得学”,也有人发帖说“搭完MEDS后本地开发流速翻倍”。但翻遍GitHub热门榜单和主流技术媒体…

2026/10/15 7:39:00 阅读更多 →
多Agent系统面试攻略:4种经典架构详解与避坑指南

多Agent系统面试攻略:4种经典架构详解与避坑指南

多 Agent 系统面试怎么答?我总结了 4 种经典架构这两年只要面试 AI 应用岗位,十个里面有八个会被问到“多 Agent 系统怎么设计”。我作为经常端坐在对面的人,说实话最怕听到的回答是:“这个简单,用 LangGraph 编排几个…

2026/10/15 7:39:00 阅读更多 →
MEDS:面向开发者的模块化本地工作台与服务编排工具

MEDS:面向开发者的模块化本地工作台与服务编排工具

1. 项目概述:MEDS不是医疗系统,而是开发者日常提效的“数字工作台”最近在几个技术社区和开源协作平台刷到一个叫MEDS的项目,标题里带“开源项目推荐”,但点进去发现它既不卖药也不做电子病历,和医院信息系统&#xff…

2026/10/15 7:39:00 阅读更多 →
Excel一键生成炫彩二维码:IMAGE函数与VBA实战教程

Excel一键生成炫彩二维码:IMAGE函数与VBA实战教程

上个月帮朋友准备展板物料,需求看着不复杂:几十个二维码,每个对应不同链接,但每个都得配合当天的主题色来展示,不能清一色黑乎乎。他那边既没有Python环境,也不方便一个个打开在线生成器,最后发…

2026/10/15 7:39:00 阅读更多 →
CentOS 7.6搭建DNS正向解析服务:BIND配置实战

CentOS 7.6搭建DNS正向解析服务:BIND配置实战

平时做运维的朋友肯定都有过这种经历:公司内部新起了一套系统,IP地址越来越多,今天要连这个、明天要连那个,总不能天天翻Excel表格。更尴尬的是,内网服务想用一个好记的域名访问,结果发现公共DNS根本不认识…

2026/10/15 7:37:59 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →