跳到主要内容

2025年规范驱动开发:工业级工具、框架与最佳实践

· 阅读需 24 分钟
马老师 Marvin
软件工程师 & 开源爱好者

引言:AI辅助开发的工业革命

Y Combinator 2025届创业公司中,25%的团队已在交付95%由AI生成的代码库。成功者与陷入技术债务泥潭者的区别在哪?规范(Specifications)。所谓"氛围编码"(vibe coding)——即临时性的、基于提示词的AI开发方式——或许能产出令人印象深刻的演示,却在生产规模上分崩离析。上下文丢失、架构漂移、可维护性噩梦,困扰着那些将AI助手当作增强版搜索引擎的团队。

2025年标志着转折点的到来。曾经的实验性工具已成熟为生产就绪的框架,背后既有开源动力,也有企业重金投入。GitHub的Spec Kit已成为开源SDD采用的事实标准。亚马逊推出Kiro,一个将SDD融入核心的IDE。由Snyk创始人创立的Tessl以5亿美元估值融资1.25亿美元,力推"规范即源码"开发模式。业界信号明确:系统化的规范驱动开发(Specification-Driven Development,SDD)不再可有可无——它正成为AI增强工程的基本要求。

如果你是一位正在评估如何在不牺牲代码质量的前提下利用AI开发的技术负责人,这份综合指南将为你绘制整个SDD生态图景。你将理解6大工具和框架构成的生态系统,学习来自真实生产部署的行业最佳实践,获得基于团队具体情况选择和实施正确方案的可操作框架。

相关阅读

关于理论基础和SDD方法论要点,请参阅规范驱动开发:应对复杂功能的系统化方法。本文聚焦于工业格局和实践落地。

AI 时代的领导力技能:超越传统管理

· 阅读需 15 分钟
马老师 Marvin
软件工程师 & 开源爱好者

第一次,AI 系统对我的架构决策提出了不同意见,结果证明它是对的——那一刻,我意识到某些根本性的东西变了。变的不是 AI 本身,而是"领导力"这个词的含义。这不是关于技术升级的故事,而是关于领导者角色如何进化的故事。那些曾让我成功领导团队的技能并没有失效,但在 AI 参与的环境中,它们需要重新调整。

也许你作为技术领导者,也感受到了这种张力。研究表明,AI 确实能提升生产力,但效果因人而异——它绝非包治百病的灵丹妙药。你懂得那些经典的领导技能:技术深度、业务洞察、人际沟通、组织政治,它们依然重要。但 AI 带来了全新的维度,要求这些技能延展和适应。你的角色不再只是领导团队成员或使用工具,而是要协调一个混合生态——人的判断、管理智慧与 AI 能力,三者需要和谐共生。

代码的物理学:理解计算中的基本限制(第二部分)

· 阅读需 19 分钟
马老师 Marvin
软件工程师 & 开源爱好者

引言:从理论走向实践

本系列的第一部分中,我们打下了计算限制的概念基础:基本限制与工程限制的区别、四层计算层次结构、形式化复杂性测量,以及智力-可计算性悖论。我们探讨了为何一些看似简单的问题(如停机问题)在数学上无解,而看似需要复杂智力的问题(如机器翻译)却是可判定的。

第二部分,我们从抽象理论走向实际应用。 本文探讨这些基本限制如何体现在日常工程决策中,考察历史如何揭示:理解约束反而能释放创新,并将计算限制与关于逻辑、数学和意识的深刻哲学问题联系起来。最后,我们会提供一个实用框架,帮你立即分类问题并做出更好的工程决策。

系列文章

这是两部分系列的第二部分第一部分涵盖限制的本质、计算层次结构、复杂性测量和智力-可计算性悖论。第二部分探讨实际应用、历史教训和哲学基础。

代码的物理学:理解计算中的基本限制(第一部分)

· 阅读需 30 分钟
马老师 Marvin
软件工程师 & 开源爱好者

引言:代码的宇宙速度限制

1905年,阿尔伯特·爱因斯坦(Albert Einstein)证明了一个革命性的结论:没有任何东西能够超越光速。这不是更好的技术可以克服的工程限制,而是时空本身的基本属性,编码在现实的结构中。三十年后的1936年,艾伦·图灵(Alan Turing)为计算证明了一个同样深刻的结果:没有任何算法能够确定一个任意程序是否会停机(称为停机问题(Halting Problem))。与爱因斯坦的光速屏障一样,这不是当前计算机或编程语言的限制。这是一个数学确定性,无论我们的机器变得多么强大,或者我们的算法变得多么聪明,它都将永远为真。

现代软件工程在这些基本限制的阴影下运作,尽管大多数工程师将它们体验为令人沮丧的工具限制,而不是数学确定性。你可能经历过这样的情况:静态分析工具错过了明显的错误,测试框架尽管有100%的覆盖率却无法保证正确性,AI助手生成的代码需要仔细的人工审查。当营销材料承诺"完整的自动化验证"或"有保证的错误检测"时,你可能会感觉有些不对劲——这些声明听起来太好了,不像是真的。

确实如此。你遇到的限制不是等待更好工具的临时工程挑战,而是基本数学不可能性的表现,就像光速或绝对零度一样不可改变。 理解这些限制从约束转变为竞争优势:知道什么是不可能的,可以让你将精力集中在可实现的事情上,就像物理学家利用相对论实现了GPS卫星和粒子物理学,而不是浪费资源试图超越光速。

如果你是一名开发人员,曾经想知道为什么尽管经过数十年的工具开发,某些问题仍然存在,或者如果你是一名技术领导者,正在评估关于革命性测试或验证技术的声明,这篇文章提供了关键的背景。理解计算限制不是失败主义,而是工程成熟的基础。 最好的工程师不会忽视这些边界;他们深入理解这些边界,并在其中出色地工作。

这段旅程探讨了计算限制如何反映物理定律,为什么"困难"问题与"不可能"问题有根本性的不同,以及这些知识如何赋能更好的工程决策。我们将从舒适的物理类比穿越到抽象的计算理论,然后回到你明天就可以应用的实用框架。在这个过程中,你会发现为什么了解游戏规则会让你在游戏中更有效,以及为什么计算历史上的每一次突破性创新都不是通过忽视限制,而是通过深入理解限制而出现的。

系列文章

这是探索计算基本限制的两部分系列的第一部分。第一部分涵盖限制的本质、计算层次结构、复杂性测量和智力-可计算性悖论。第二部分探讨实际工程影响、历史教训和哲学基础。

抱歉,AI救不了测试:莱斯定理告诉你为什么

· 阅读需 23 分钟
马老师 Marvin
软件工程师 & 开源爱好者

引言:完美测试的不可能之梦

"测试只能证明错误的存在,而不能证明错误的不存在。"荷兰计算机科学家艾兹格·迪杰斯特拉(Edsger Dijkstra)在1970年提出这一观点时,他阐明了软件测试的一个基本真理,这个真理至今依然适用。然而尽管有这样的智慧,软件行业仍在追求一个难以实现的目标:能够保证软件正确性的全面自动化测试。

如果你是一名开发者,曾经疑惑为什么达到100%的测试覆盖率仍然无法保证代码无bug,或者为什么精心设计的测试套件偶尔还是会漏掉关键问题,那么你正在面对一个更深层的现实。自动化测试的局限性不仅仅是工程挑战,它根植于数学上的不可能性

当前的AI驱动测试工具浪潮承诺将彻底改变质量保证。营销材料宣传智能测试生成、自主bug检测和前所未有的覆盖率。虽然这些工具确实带来了真正的改进,但它们无法逃脱七十多年前数学家亨利·戈登·莱斯(Henry Gordon Rice)建立的理论约束。他的定理证明,关于程序行为的某些问题根本无法通过算法来回答,无论计算能力或独创性如何。

这不是悲观的观点,而是现实的观点。理解为什么完全的测试自动化在数学上不可能,有助于我们更好地决策测试投入的方向,以及如何有效利用现代工具。与其追求无法实现的完美自动化目标,我们可以采用务实的方法,在承认这些限制的同时最大化实际效果。

莱斯定理如何影响软件测试?这正是本文要探讨的核心问题。我们会深入分析这个数学结果究竟证明了什么,理解它如何约束自动化测试,以及如何将形式化规格说明(Formal Specification)与 AI 驱动的测试生成结合起来,走出一条实用的道路。认清可能性的边界,反而能让你成为更有效的工程师,而不是被理论束缚。

让我们从理论出发,一步步走向日常开发实践,看看这些深层原理如何指导更好的工程决策。无论你是在编写单元测试、设计测试策略,还是评估新测试工具,掌握这些基础都能提升你的判断力、改善实际效果。

从聊天机器人到智能代理:构建企业级LLM应用

· 阅读需 23 分钟
马老师 Marvin
软件工程师 & 开源爱好者

想象一个再熟悉不过的场景:周一上午,你又坐在会议室里复盘,为什么公司的 LLM 应用始终冲不出展示环境。团队已经搭了一个看起来很“聪明”的、由 GPT-4o 驱动的智能代理:能理解复杂客户咨询、通过函数调用串起内部系统,甚至还能看似自主地编排多步骤流程。那时领导层一度热情高涨,预算批得很快,Roadmap 也写得漂亮。可六个月过去,项目仍困在资深从业者口中的 demo hell(“演示炼狱”)——永远在演示,始终不上真正可承压的生产。

如果你瞬间代入,这不是偶然共鸣——而是当今企业的常态。如果这个场景听起来很熟悉,你并不孤单。无论组织是使用托管API(如GPT-4o、Claude Sonnet 4和Gemini 2.5 Pro)构建,还是部署自托管模型(如DeepSeek-R1、QwQ、Gemma 3和Phi 4),绝大多数都难以超越实验性试点项目。正如我在AI生产力研究分析中探讨的,AI的生产力效益高度依赖于具体情境,结构化方法显著优于临时性使用。瓶颈不在于你的LLM集成的复杂性、托管与自托管模型的选择,或者你的AI开发团队的才能。而在于更根本的东西:LLM应用底层的数据基础。

真正卡住企业级 LLM 应用的,不是“模型选哪个”,而是:能不能在对的时间,把对的数据,以可追溯、可度量、可治理的方式送到模型面前。 你的“智能”代理,其上限只等于你数据基础设施的下限。

如果你尝试把一个惊艳的演示推向生产,结果被碎片化系统、不一致 API、缺失血缘、检索漂移、缓存陈旧这些细碎又顽固的阻力磨掉耐心——这篇文章就是写给你的。我们的基本立场很直接:企业级 LLM 应用的成功,不取决于提示技巧或代理框架炫不炫,而取决于是否有一套为“程序化智能消费”而设计的数据底座。

接下来我们会按层拆开:数据可访问性如何悄悄钳制模型表现;哪些数据与上下文管理模式让工具调用真正可靠;面向 LLM 特有风险的治理如何设计;以及如何把这些理念落成可以扩展、可演进的生产体系。

答案从来不是“多写几个高阶提示”或者“再换个更大模型”——而是重建数据基础。下面先从问题底层结构讲起。

规格驱动开发:复杂功能的系统性方法

· 阅读需 19 分钟
马老师 Marvin
软件工程师 & 开源爱好者

引言:复杂功能开发的挑战

每个开发者都知道那种盯着复杂需求而不知从何开始的感觉。现代软件开发越来越多地涉及构建整合多个服务、处理不同数据格式、协调各种 API 的系统。在初始规格中看似简单的东西,往往会演变成复杂的相互依赖组件网络,每个组件都有自己的约束和边界条件。

这种复杂性在几个常见的开发挑战中显现出来,无论团队的经验水平或技术栈如何,都会面临这些挑战。项目经常因为需求在实现过程中的演变而遭受范围蔓延。开发者花费大量时间向 AI 助手或团队成员解释上下文,经常重复相同的架构约束。技术债务在开发者因压力做出仓促决定时累积,导致系统变得越来越难以维护和扩展。

相关阅读

关于复杂性如何在软件项目中产生和累积的深入探讨,请参见我之前的分析:架构简谈:为什么我们需要在软件项目中考虑复杂性?

上下文工程:AI系统中信息选择的艺术

· 阅读需 15 分钟
马老师 Marvin
软件工程师 & 开源爱好者

"上下文工程是构建动态系统,以正确格式提供正确信息和工具,使LLM能够合理完成任务的方法。"LangChain

如果你使用AI开发应用有一段时间了,你可能已经遇到了简单提示词不再足够的瓶颈。你精心制作的提示在边缘情况下失效,你的AI助手在处理复杂任务时变得混乱,你的应用程序难以维持连贯的对话。这些挫折并非偶然——它们揭示了AI开发中正在发生的根本性转变

像OpenAI、Anthropic、Notion和GitHub这样的公司不仅在构建更好的模型,他们还在开创全新的信息、工具和结构流向AI系统的方法。这就是上下文工程的本质。

无人值守的AI编程:使用GitHub Copilot Agent进行内容迁移的体验

· 阅读需 7 分钟
马老师 Marvin
软件工程师 & 开源爱好者

引言

最近,我使用 GitHub Copilot Agent 成功将所有存档的markdown文章迁移到这个基于Docusaurus的博客,这个体验出乎意料地顺畅高效。最让我印象深刻的不仅是AI处理重复任务的能力,还有我能够引导它自主工作,而我可以专注于更高层次的决策。更令人着迷的是,我甚至可以在通勤或休息时用手机来审查和引导AI代理的工作。这次体验从根本上改变了我对AI辅助开发工作流的看法。

以下是迁移完成后的中英文博客展示:

图1:迁移效果一览(中文)

图2:迁移效果一览(英文)

Vercel AI SDK:加速 AI 应用构建的完整解决方案

· 阅读需 18 分钟
马老师 Marvin
软件工程师 & 开源爱好者

作为一名开发者,如果你想快速构建 AI 驱动的应用,Vercel AI SDK 是一个理想的选择。它是一个开源的 TypeScript 工具包,由 Next.js 的创建者开发而成,旨在简化 AI 集成过程,让你专注于业务逻辑而非底层复杂性。 通过统一的 API、多提供商支持和流式响应等特性,它显著降低了开发门槛,帮助开发者在短时间内从概念到上线。 在这篇技术博客中,我将从概述、核心优势、实际示例、与其他工具的比较、真实世界应用案例、社区反馈、潜在挑战等方面主张:我们应该利用 Vercel AI SDK 来加速 AI 应用的构建。特别值得一提的是,其新推出的 AI Elements 组件库,作为开箱即用的 AI 应用 UI 框架,与 AI SDK 深度集成,提供极高的扩展性和自定义能力,进一步提升了开发效率。