当 Andrej Karpathy 在 2025 年初提出「vibe coding」概念时,他描述的是一种人与 AI 之间的新型协作模式:开发者用自然语言表达意图,AI 生成代码,人仅在关键节点介入检查。这种方式极大地降低了编程的门槛,让创意能够快速转化为可运行的原型。然而,随着 Claude Code 这类具备自主任务执行能力的 AI 工具成熟,业界开始意识到,单纯依赖 vibe coding 模式在面对复杂系统时会遇到瓶颈 —— 代码质量难以保证、上下文碎片化、重复工作无法复用。正是在这一背景下,从 vibe coding 向 agentic engineering 的方法论转变成为值得深入探讨的工程实践议题。
两种范式的本质差异
理解这一转变,首先需要明确两种范式在控制权与自主性上的根本区别。Vibe coding 本质上是一种 human-in-the-loop 的工作流:开发者给出提示词,AI 逐段生成代码,人在每一轮交互中评估输出并决定下一步方向。这种模式的优势在于高度灵活,开发者可以随时调整方向,适用于探索性编码和快速原型验证。但其局限也很明显:当任务规模扩大时,人工逐段确认的效率急剧下降,且生成的代码缺乏统一的架构约束,容易产生碎片化的实现。
Agentic engineering 则将控制权重新分配:开发者定义目标和约束条件,AI 代理自主完成从规划到执行的全流程,仅在预设的检查点向人汇报或请求确认。GitLab 在其技术路线图中对此有清晰的阐述:vibe coding 适合 ideation 和 POC 阶段,而 agentic engineering 则是生产级项目的更有力保障。两者的混合模式被认为是最具前景的方向 —— 用 vibe 的自然语言交互处理需求澄清和监督,用 agentic 的自动化能力处理大规模实现。
工作流架构:从命令到技能到子代理
Claude Code 提供了三个核心的扩展机制来支撑 agentic engineering:命令、子代理和技能。理解这三者的适用场景是实现范式转变的关键。
命令(Commands)是最轻量的封装形式,本质上是预定义的提示词模板,存放在.claude/commands/目录下。当开发者执行/weather-orchestrator这样的命令时,Claude Code 将模板内容注入当前上下文,启动一个结构化的工作流。最佳实践建议将每天使用超过一次的工作流程封装为命令 —— 无论是代码评审、构建验证还是部署检查。这一原则源于一个简单的效率计算:重复 prompting 的时间成本远高于一次性编写命令模板的成本。
技能(Skills)则提供了更深的知识注入能力。不同于命令的简单模板,技能是一个完整的文件夹,包含主引导文件SKILL.md以及可选的参考资料、脚本和示例。技能在 Claude Code 初始化时被加载到上下文中,具备触发式自动执行的能力。社区实践表明,为技能编写「Gotchas」章节是最高效的做法 —— 记录模型在此类任务中最容易失败的地方,这些信息对模型的实际产出有显著提升作用。同时,技能的描述字段应被设计为「触发器」而非「总结」,即明确告知模型在什么情况下应该启用该技能。
子代理(Subagents)代表了最高的自主性层级。每个子代理拥有独立的上下文窗口、专属工具集和可配置的模型选择。这意味着开发者可以将不同的任务分配给不同的代理并行处理。例如,使用一个子代理进行实现的同时,另一个子代理运行测试验证,二者共享最终结果但不共享中间过程,从而避免上下文污染。Anthropic 的官方文档将这种模式称为 test-time compute—— 同一个模型在不同的上下文窗口中可以分别担任实现者和审查者的角色,且由于隔离性,审查者不会被实现者的思路所影响。
所有这些机制的编排遵循一个通用模式:Research → Plan → Execute → Review → Ship。这五步构成了 agentic engineering 的标准工作流框架。研究者可以在此基础上进行裁剪 —— 例如在小型任务中省略独立的 Review 阶段,或在大型项目中增加额外的验证关卡。
可操作的工作流改进参数
将上述抽象原则落实到日常工程实践中,需要一系列可量化的参数和阈值。以下参数组合经过社区大量验证,可作为从 vibe coding 向 agentic engineering 迁移的起点。
CLAUDE.md 管理阈值:项目级说明文件应控制在 200 行以内,超出此长度后应使用.claude/rules/目录进行拆分。行数控制的依据是,当上下文超过一定规模后,模型对远端指令的遵循率显著下降。若必须写入长文本,应使用<important if="...">标签包裹关键规则,强制模型在特定条件下关注这些指令。
上下文压缩时机:Claude Code 提供/compact命令用于压缩上下文。当上下文使用率超过 50% 时,建议主动执行压缩而非等待自动触发。对于切换到完全不相关任务的情况,直接使用/clear重置上下文比压缩更为高效。这一参数的设计逻辑与人类认知负荷类似 —— 当工作记忆超过阈值时,切换到新任务的成本会高于重新开始的成本。
模型选择策略:建议在计划和评审阶段使用 Opus 模型,在常规编码阶段使用 Sonnet 模型。这一分工基于成本效益分析:Opus 在复杂推理和架构设计任务上表现显著优于 Sonnet,但其 token 消耗也更高。将高推理需求与高吞吐量需求分别分配给对应模型,可以在保证质量的同时控制成本。此外,使用 thinking 模式和 Explanatory 输出风格可以帮助开发者理解决策过程,便于及时发现模型推理中的偏差。
PR 规模控制:来自生产环境的数据显示,Claude Code 协助下的 PR 中位规模为 118 行修改。建议将每个 PR 控制在 200 行以内,遵循单一职责原则 —— 一个 PR 对应一个功能或一组紧密相关的修改。这一规模限制不仅便于审查和回滚,也为后续的 git bisect 提供清晰的定位粒度。同时,优先使用 squash merge 保持线性提交历史。
技能与命令的创建阈值:如果某个工作流每天执行超过一次,应将其封装为命令或技能。这一阈值的设计基于工程经济学原理 —— 封装成本(编写模板的时间)低于长期累积的重复 prompting 成本。对于更具通用性的技能,可进一步打包为插件形式,实现跨项目的复用。
权限与沙箱配置:使用通配符语法(如Bash(npm run *))配置权限,避免为每个命令单独授权。对于高风险操作,可通过/sandbox启用文件和网络隔离的沙箱模式。Anthropic 内部数据显示,沙箱模式可减少约 84% 的权限提示,同时保持安全性。
工程方法论的深层转变
超越具体参数,从 vibe coding 到 agentic engineering 的转变本质上是一种工程方法论的升级。Vibe coding 强调的是「想法到代码」的即时转化,开发者与 AI 之间的交互是探索式的、非结构化的。这种方式在早期非常高效,因为它消除了传统软件开发中需求文档、架构设计等前置环节的不确定性。然而,当系统复杂度超过某个临界点时,缺乏结构化的工作流会导致不可维护的代码、无法追溯的决策、以及重复的技术债务。
Agentic engineering 并不是要否定 vibe coding 的价值,而是为其找到一个合适的位置。在这一新的方法论中,vibe coding 被重新定位为需求澄清和创意探索阶段的工具,而结构化的规划、执行、验证和部署则交由 agentic 工作流负责。这种分层设计的核心理念是:用自然语言处理模糊性和不确定性,用自动化处理确定性和规模性。
Claude Code 官方也给出了类似的建议:使用 plan 模式启动任务,让模型先给出完整的计划再执行。这一设计选择背后的逻辑是,计划阶段的思考成本远低于实现阶段的返工成本。在计划模式中,开发者可以要求模型提供多套方案、评估每种方案的 trade-off,并在执行前确认架构方向。
监控与迭代
任何工作流改进都需要反馈闭环来验证效果。针对 agentic engineering 工作流,建议监控以下指标:上下文压缩频率(过高意味着任务粒度可能需要调整)、命令和技能的使用频率(识别未被充分利用的自动化能力)、PR 从创建到合并的平均周期(反映工作流效率)、以及模型遵循 CLAUDE.md 规则的成功率。这些指标可以帮助团队持续优化工作流配置,而非一次性设定参数后不再调整。
从 vibe coding 过渡到 agentic engineering 不是一个非此即彼的选择,而是一个渐进的过程。团队可以根据自身项目的复杂度、团队规模和质量要求,逐步引入更多的结构化和自动化机制。最终的目标是建立一个能够随任务复杂度自动伸缩的工作流 —— 小任务保持 vibe coding 的灵活性,大任务则调用 agentic 的自动化能力,中间无需人工频繁切换。