乐于分享
好东西不私藏

Anthropic最新实践:软件工程正在进入“技能时代”

Anthropic最新实践:软件工程正在进入“技能时代”

当 AI Agent 展现出越来越强的自主能力时,很多开发者容易产生一种错觉:

只要提示词写得足够好,AI 就能自动完成复杂任务。

但真正做过 Agent 落地的人都知道,现实远比这复杂。一个能够稳定运行的 Agent 系统,决定成败的往往不是提示词本身,而是它所处的环境。

最近,Anthropic 分享了他们在内部构建数百个 Claude Code Skills(技能)过程中的经验。这些实践揭示了一个重要趋势:AI 工程正在从 Prompt Engineering(提示工程)转向 Context Engineering(上下文工程)。

而这,或许才是 Agent 时代真正的工程学。

从提示词到环境设计:技能并不只是 Markdown

很多人第一次接触 Claude Code Skills 时,会把它理解成一份增强版提示词文档。

事实上,这种理解并不准确。

在 Claude Code 的设计里,一个 Skill 本质上是一个完整的资源目录,而不仅仅是一段文本。

一个典型的技能目录中,往往包含:

  • 指令文档
  • 自动化脚本
  • 测试工具
  • 静态资源
  • 参考数据
  • 动态 Hooks

这种设计带来的变化非常关键。

传统 Prompt 更像是在给 AI 发指令,而 Skill 则是在为 AI 搭建工作环境。

Agent 不再只是阅读文字,而是能够像工程师一样浏览目录、调用脚本、访问数据,并根据任务需要动态寻找资源。

尤其是 Hook 机制的引入,使 Agent 可以实时感知环境变化并作出响应。

这意味着,技能已经不再是一份说明书,而是一套可执行的工作系统。

Anthropic 将这种方式称为 Context Engineering——通过设计上下文环境,而非堆砌提示词,来提升模型能力。

为什么验证能力是最高投资回报率的技能

Anthropic 在内部对技能进行了多个类别划分。

其中,对结果质量提升最明显的一类,是验证技能(Verification Skills)。

简单来说,这类技能专门负责回答一个问题:

你怎么知道自己真的做对了?

很多 Agent 最大的问题并不是不会执行,而是不知道如何验证结果。

Claude 可能认为自己已经完成了支付流程,但实际上后台数据并未写入。

它可能认为测试通过了,但真实用户场景仍然存在漏洞。

因此,Anthropic 花了大量精力为 Agent 构建自动验证体系。

他们引入了:

  • Playwright
  • Tmux
  • 自动化断言脚本
  • 支付测试工具
  • 视频录制系统

例如在支付链路验证中,仅仅看到接口返回 200 并不足够。

Claude 必须进一步检查数据库中的 payment_events 表,确认业务事件真实发生。

甚至在部分场景下,系统还会要求 Agent 录制完整操作视频,供工程师后续复核。

这种思路非常值得借鉴。

真正可靠的 Agent,不是相信自己的判断,而是不断寻找证据证明自己是正确的。

验证能力,本质上是在降低 AI 的幻觉风险。

而这往往比提升模型本身更有效。

AI 是文档的第一用户

Anthropic 还提出了一个有趣的概念:

除了关注开发者体验(DX),我们还需要关注模型体验(MX)。

过去写文档,是为了让人阅读。

未来写文档,很大程度上是在为模型服务。

因此,许多传统文档写作原则需要重新审视。

其中最重要的一条就是:

不要写显而易见的内容。

Claude 本身已经具备极强的代码理解能力。

重复描述代码逻辑,不仅不会增加价值,反而会浪费上下文窗口。

真正高价值的信息,是那些代码中看不出来的经验知识。

Anthropic 将这类内容称为 Gotchas(坑点)。

例如:

  • subscriptions 表采用 Append-Only 模式,必须读取最新 version,而非最新时间戳;
  • Stripe Webhook 在未真正处理时也可能返回 200;
  • API 网关中的 request_id 与计费系统中的 trace_id 实际是同一个字段。

这些经验无法通过静态阅读代码获得,却经常决定任务成败。

对于 Agent 来说,它们的价值远高于一百行常规说明。

未来最重要的工程文档,可能不再是架构图,而是一份高质量的踩坑记录。

技能描述的真正作用:触发模型记忆

Anthropic 还分享了一个非常反直觉的经验。

很多开发者会把 Skill 的 Description 字段写成功能介绍。

但实际上,这个字段最重要的作用并不是介绍功能。

而是触发模型。

Claude 在启动时会扫描所有技能描述,并决定哪些技能需要加载。

因此,Description 的本质是激活词(Trigger)。

举个例子。

如果一个技能负责长期监控 Pull Request。

与其写:

“用于持续监控代码仓库状态并自动执行重试任务……”

不如直接写:

“Babysit PRs”。

对于大模型而言,“Babysit”这个词背后天然关联着:

  • 持续观察
  • 异常处理
  • 状态维护
  • 长时间跟踪

这些语义会比冗长说明更容易激活正确技能。

这是一种典型的面向模型编程思维。

未来的文档不再只是给人看的语言,而会越来越像模型检索系统中的关键词设计。

动态加载上下文,让 Agent 像人一样查资料

随着技能数量增加,一个新的问题出现了:

如何避免一次性给模型塞入太多信息?

Anthropic 的解决方案是渐进式披露(Progressive Disclosure)。

Skill 的主文档并不包含全部内容。

它更像一个导航目录。

只有当任务触发特定场景时,Claude 才会继续打开对应子文件。

例如:

当检测到任务积压时,

才去读取:

  • stuck-jobs.md

当检测到支付问题时,

才去读取:

  • payment-debugging.md

这种按需加载机制与人类工程师的工作方式高度相似。

没有人会把整个 Wiki 背下来。

大家都是遇到问题再查资料。

Agent 同样如此。

合理的信息组织结构,往往比更多的信息本身更重要。

让技能拥有记忆

更进一步,Anthropic 还尝试让技能具备跨会话记忆能力。

实现方式并不复杂。

通过持久化目录或日志文件即可完成。

例如:

  • standups.log
  • task_history.log
  • deployment_notes.log

下一次运行时,Claude 可以读取历史记录。

于是它能够知道:

昨天做了什么;

今天发生了哪些变化;

哪些任务已经完成;

哪些问题仍然悬而未决。

这意味着 Agent 开始具备真正意义上的连续性。

它不再是一次性工具,而是在逐渐成长为长期协作者。

从软件工程师到“技能架构师”

Anthropic 的这些实践透露出一个越来越清晰的趋势:

未来最重要的能力,可能不再是写代码。

而是设计让 AI 写代码的系统。

Skill 的演化过程,本质上是一套持续迭代的知识沉淀机制:

发现问题;

记录坑点;

补充验证;

增加工具;

优化触发条件;

积累长期记忆。

经过一次又一次迭代之后,原本简单的提示词最终会成长为一套完整的工程能力体系。

在这个过程中,工程师的角色也正在发生变化。

过去,我们编写程序。

未来,我们设计能够自主工作的 Agent 环境。

过去,我们关注代码逻辑。

未来,我们关注上下文结构。

过去,我们是开发者。

未来,我们更像是 AI 团队的组织者和架构师。

或许在不远的将来,“首席技能架构师(Principal Skill Architect)”将成为软件行业最重要的新岗位之一。

因为当代码越来越容易生成时,真正稀缺的,将是那些能够构建 AI 能力生态的人。

参考链接:https://claude.com/blog/lessons-from-building-claude-code-how-we-use-skills