AI 编码代理的执行默认行为是走最短路径:收到任务请求后直接生成代码,声明完成,然后转向下一个任务。这种模式与资深工程师的工作方式形成了鲜明对比 —— 后者的大部分工作实际上并不体现在代码差异中:编写规范文档、撰写测试用例、进行代码审查、保持变更规模可控、拒绝交付无法验证的功能。这些「隐形工作」恰恰是生产级软件与原型代码之间的分水岭。
Addy Osmani 的 agent-skills 项目正是为了填补这一空白而设计。该项目将资深工程师的工作流程封装为可复用的技能模块,让 AI 代理能够遵循与人类工程师同等的工程纪律。从定义需求到最终发布,二十个技能覆盖了完整软件生命周期的每个关键阶段。本文将聚焦其中与生产工程直接相关的核心技能:测试驱动开发、CI/CD 自动化、调试与错误恢复、以及发布与上线流程,为团队落地 AI 辅助开发提供可操作的参考参数。
测试驱动开发:让代理遵循工程纪律
测试驱动开发(Test-Driven Development, TDD)是 agent-skills 中最核心的技能之一,它要求代理在编写任何实现代码之前,先写出失败的测试用例。这一工作流被拆解为可验证的步骤:编写失败的测试、运行并确认失败、编写最小代码使测试通过、运行并确认通过、最后进行重构。每个步骤都有明确的退出标准,代理无法绕过。
该技能嵌入了 Google 工程的两项关键原则。首先是测试金字塔模型,建议单元测试、集成测试、端到端测试的数量配比为 80% : 15% : 5%。这个比例并非硬性规定,而是提醒代理不要将资源过度倾斜到端到端测试 —— 这类测试运行缓慢且难以定位问题。单元测试才是发现回归问题的第一道防线。其次是 Beyoncé 规则:「如果你喜欢它,就应该为它写测试。」这句源自 Google 内部文化的话直指一个常见误区:基础设施变更不需要测试。恰恰相反,任何行为变更都应该有对应的测试覆盖,否则无法证明变更的正确性。
在测试代码的组织上,agent-skills 明确推荐 DAMP 原则(Descriptive And Meaningful Phrases)而非 DRY(Don't Repeat Yourself)。这与常规编码实践形成了有趣的反差。Google 的测试哲学认为,测试代码的可读性优先于抽象程度 —— 测试应该像一份规格说明文档,即使存在少量重复也值得。这一原则直接针对了代理的一个常见行为模式:过度抽象测试代码以追求 DRY,结果导致测试逻辑晦涩难懂,失去了验证意图。
实际落地上,团队应当为代理配置明确的测试文件命名规范(如 *.test.ts 或 *_test.py),并将其写入代理的上下文规则中。代理在实现任何功能前,应被要求先创建对应的测试文件,并运行测试确认失败。只有在测试通过后才允许提交代码。这一流程可以通过 CI 流水线强制执行:任何未包含测试变更的 PR 都应被阻止合并。
CI/CD 自动化:左移与快速反馈
持续集成与持续交付(CI/CD)是生产工程的心脏。agent-skills 中的 ci-cd-and-automation 技能将这一领域的最佳实践编码为代理可执行的工作流,其中两项核心原则值得特别关注:左移(Shift Left) 与 「更快即更安全」(Faster is Safer)。
左移原则指的是将质量门禁尽可能提前到开发流程的早期阶段。传统模式中,安全性检查、性能测试、代码覆盖率分析往往留到预发布阶段才进行,此时发现问题需要大幅返工。代理应当被引导在本地开发阶段就执行这些检查。agent-skills 建议代理在每次提交前运行完整的测试套件,并在代码审查前完成静态分析与安全扫描。这不仅缩短了反馈周期,更重要的是将问题发现的责任回归到代码作者本人 —— 这正是资深工程师的本能反应。
「更快即安全」原则则直指一个反直觉的真相:部署频率越高,每次部署的风险反而越低。原因在于高频部署意味着每次变更的规模更小、审查更迅速、回滚更简单。代理应当被引导将大型变更拆分为一系列小型、可独立部署的增量,而非一次性提交一个数百行的大补丁。agent-skills 建议每个变更的规模控制在约 100 行以内,这与 Google 代码审查文化中的变更大小规范一致。
特性开关(Feature Flags)是该技能中另一个关键实践。代理在实现新功能时,应当使用特性开关将新代码与生产流量隔离。特性开关不仅支持无风险的功能验证,还使得功能发布与代码部署解耦 —— 代码可以随时部署到生产环境,但新功能对用户的可见性由开关状态控制。这一实践为代理提供了安全的实验能力:即使实现有误,也不会影响真实用户。
在工具链层面,团队应当为代理配置完整的质量门禁流水线。典型的 CI 流水线应当包含以下阶段:代码格式化检查(Prettier/ESLint)、类型检查(TypeScript/flow)、单元测试与覆盖率报告、构建产物生成、安全依赖审计(Dependabot 或类似工具)、以及可选的集成测试。代理的每次提交都应当自动触发这一流水线,任何阶段的失败都需要代理主动修复后重新提交。
调试与错误恢复:五步 triage 法
即使遵循了所有工程纪律,生产环境中的问题仍然不可避免。debugging-and-error-recovery 技能将调试工作流编码为可重复的五步流程:复现(Reproduce)、定位(Localize)、简化(Reduce)、修复(Fix)、防护(Guard)。每一步都有明确的验证标准,代理必须产出证据证明该步骤已完成,才能进入下一步。
复现阶段要求代理首先稳定地重现问题。这意味着找到一组输入或条件,能够可靠地触发相同的错误行为。对于 AI 代理而言,这一阶段的常见陷阱是仅根据错误信息猜测原因,而不验证假设。agent-skills 强调代理必须实际运行代码、观察运行时行为,而非仅依赖静态分析。
定位阶段要求代理将问题范围缩小到具体的代码行或组件。这一过程通常涉及二分搜索式的排除 —— 逐一排除可能的根源位置,直到定位到具体模块。代理应当被要求在定位过程中记录每个假设及其验证结果,形成可追溯的调查轨迹。
简化阶段是调试中最容易被跳过的步骤:创建最小复现案例(Minimal Reproduction)。一个包含数千行代码的复杂场景往往掩盖了问题的本质。代理应当被引导提取出问题核心,构建一个仅包含必要元素的简化版本。这一步骤不仅加速了问题理解,还为后续的回归测试提供了理想的候选用例。
修复阶段要求代理在修复代码后立即编写或更新测试用例,确保该问题不会再次出现。这是许多代理容易忽视的环节 —— 修复完成后直接提交,而非思考如何防止回归。
防护阶段则是最后的守门人:代理需要评估修复方案是否引入了新的边界条件问题,是否需要在调用栈的更高层级添加防御性检查。这一阶段的产出应该是一份针对该问题根因的完整防护方案。
发布与上线:可观测性前置
shipping-and-launch 技能关注的是生产发布的最后一道关口。该技能要求代理在发布前完成一系列检查清单,包括:特性开关配置验证、灰度发布策略、回滚预案、以及监控告警确认。其中特别值得强调的是 可观测性的前置要求。
传统开发流程中,监控与告警往往在功能上线后才补充。这意味着上线初期是一段「失明」期 —— 团队无法快速获知新功能的表现是否符合预期。agent-skills 明确要求代理在功能实现阶段就规划好监控指标,包括业务指标(如转化率、响应延迟)和技术指标(如错误率、资源占用)。这些指标的定义应当与功能需求本身同期完成,而非事后补齐。
灰度发布(Staged Rollout)是该技能推荐的默认发布策略。代理应当将新功能首先暴露给一小部分用户(如 1% 或 5% 的流量),观察关键指标是否在预期范围内。只有在确认无异常后才逐步扩大曝光范围。这一策略显著降低了单一变更的爆炸半径 —— 即使出现问题,也只会影响少量用户,且回滚操作的影响范围可控。
回滚预案是该技能中最容易被忽视但最关键的部分。代理在提交发布请求时,必须同时提交回滚计划:如果是配置变更,需要提供回滚命令;如果是代码变更,需要确认回滚后的版本号。每个回滚计划都应该可以在五分钟内执行完成。发布本身不是终点,能够安全地撤销发布才是。
渐进式披露与工程文化的持续改进
值得注意的是,agent-skills 的设计采用了渐进式披露(Progressive Disclosure)策略。项目明确警告不要在会话开始时将全部二十个技能加载到代理的上下文中 —— 这会导致上下文膨胀,性能下降。正确的做法是根据当前任务阶段动态激活相关技能。例如,当代理正在进行代码审查时,才加载 code-review-and-quality 技能;当代理准备发布时,才加载 shipping-and-launch 技能。
这种设计反映了一个深层认知:代理的上下文窗口是稀缺资源,必须精确投放。团队在落地 agent-skills 时,应当根据自身的开发流程优先级,选择最需要强制执行的技能子集。建议从以下四个技能开始:测试驱动开发、CI/CD 自动化、代码审查与质量、以及发布与上线。这四个技能覆盖了从编码到生产的核心路径,是最具投资回报率的起点。
更广泛地看,agent-skills 的真正价值不在于技能本身,而在于它示范了一种系统化的方法来约束 AI 代理的行为边界。代理擅长生成代码,但它默认跳过的是那些「不产生代码」的工作。通过将资深工程师的工作流程编码为可验证的步骤,我们实际上是在为代理构建一种工程本能。这种本能的培养需要持续投入:随着团队遇到新的失败模式,anti-rationalization 表格需要不断扩充;随着技术栈演进,新的验证标准需要及时纳入。
资料来源:本文核心信息来自 Addy Osmani 的 agent-skills GitHub 仓库(https://github.com/addyosmani/agent-skills)及其官方博客文章。该项目采用 MIT 许可证,已获得超过 27,000 颗星标,体现了业界对 AI 代理工程化实践的广泛认可。