打开网易新闻 查看精彩图片

去年Q3,Storytel的工程师团队做了个实验:让AI接手一个中等复杂度的微服务重构。结果代码交付速度提升40%,但3个月后维护工单暴涨217%。

负责AI落地的Staff Engineer Tobias Sandelius在复盘时发现,AI生成的代码像一份没有配料表的预制菜——你知道它能吃,但不知道里面放了什么,更不敢随意加热。

这个发现直接催生了DLD(Decision-Linked Development),一个试图把「决策痕迹」焊进代码里的开源框架。

从「氛围编程」到决策考古

从「氛围编程」到决策考古

Sandelius的实验路径很有代表性。2024年初,他和多数开发者一样,从「vibe coding」(氛围编程)入手——描述需求,让AI自由发挥,人类负责鼓掌。

这种模式在原型阶段确实爽快。他内部记录的一个案例:用Claude 3.5 Sonnet花4小时搭完一个推荐系统的MVP,同等工作量过去需要3天。

但快感在代码交接时戛然而止。

接手项目的后端工程师在Slack里吐槽:「这坨代码能跑,但我不知道它为什么这样跑。改一行可能崩,不改又满足不了新需求。」Sandelius把这类反馈归类为「决策真空」——AI写代码时做了无数微观选择,但这些选择的上下文在提交(commit)瞬间就被抹掉了。

他试过强制要求团队写详细注释,但很快发现这是和人类本性作对。另一个极端是spec-driven开发:先写冗长规格文档,再让AI按图施工。结果文档撰写时间吞噬了AI节省的工时,「像为了用洗碗机先手洗一遍碗」。

打开网易新闻 查看精彩图片

DLD的核心设计:把「为什么」写进语法树

DLD的核心设计:把「为什么」写进语法树

DLD的解法不是让AI多说话,而是让代码结构本身携带决策信息。

框架要求每个代码变更必须绑定三类元数据:决策动机(为什么改)、约束条件(当时不能做什么)、替代方案(考虑过但放弃的路径)。这些信息以结构化格式嵌入代码仓库,而非游离在外的文档。

Sandelius打了个比方:传统注释是便利贴,可能掉、可能过时;DLD是把决策刻进代码的「分子结构」里,改代码必须先读到之前的「分子式」。

技术实现上,DLD用Git的notes机制和自定义的AST(抽象语法树)标注层。AI agent在修改代码前,框架强制它先解析关联的决策链。如果某段代码的决策依据是「当时Redis集群不稳定,所以用本地缓存兜底」,agent读到这条就不会在没有确认基础设施变化的情况下贸然回退方案。

关键约束:DLD不试图记录所有信息,只捕捉「如果缺失会导致误操作」的决策点。

Sandelius在文档里强调,过度记录会重蹈spec-driven的覆辙。框架内置了一套启发式规则,自动标记高风险变更区域——比如涉及并发控制、数据一致性、或依赖外部服务的代码块。

3个月实测:速度换可维护性的账怎么算

3个月实测:速度换可维护性的账怎么算

2024年Q4,Storytel的一个8人后端团队在真实项目中试点DLD。

打开网易新闻 查看精彩图片

数据呈现有趣的 trade-off:首次开发周期比纯AI模式慢15-20%,但代码审查时间缩短35%,后续迭代的速度在第二、第三次修改时反超对照组。更关键的是,因「误改历史决策」导致的生产事故归零。

Sandelius在内部汇报中引用了团队的原话:「现在改代码像看聊天记录,知道对面(之前的开发者或AI)当时在想什么,而不是对着一堵墙猜。」

但他也坦承局限。DLD对「探索性编码」——即连人类都还没想清楚的混沌阶段——帮助有限。框架的价值在代码进入「需要长期维护」状态时释放,这恰好是多数AI生成代码的薄弱环节。

另一个意外发现:DLD让人类开发者的角色发生了微妙位移。他们花更多时间定义决策边界和约束,而非直接编写实现代码。一位参与试点的工程师形容:「以前我是写手,现在我是编辑兼事实核查员。」

开源后的反馈与未解问题

开源后的反馈与未解问题

DLD在2025年1月开源后,GitHub两周内收获1,200星。Sandelius梳理的issue和讨论里,有两类声音最集中。

一类是工具链整合诉求:希望DLD能嵌入Cursor、Windsurf等主流AI IDE的agent工作流,而非作为独立框架存在。另一类是质疑决策记录的权威性——如果最初的决策就是错的,DLD会不会让错误传承得更牢固?

Sandelius的回应很直接:「DLD不负责判断决策质量,只负责防止无意识覆盖。错误的决策至少应该被有意识地修改,而不是在无知中撞毁。」

他目前正在探索的下一步,是让AI agent在读取决策链时,能主动标记「此决策的前提条件可能已变化」的预警。这需要框架与运行时监控、基础设施状态打通,复杂度跃升一个量级。

Storytel内部还有一个未公开的实验:把DLD的决策记录喂给专门训练的模型,试图让AI不仅能读取历史决策,还能评估其当前有效性。早期结果参差——模型对技术约束的判断准确率约70%,但对业务逻辑的时效性判断经常翻车。

如果AI coding agent的终极形态是「能独立维护长期项目」,那么决策链的可解析性可能是比代码生成能力更基础的瓶颈。DLD的实验至少证明了一点:在让AI写更多代码之前,我们可能需要先教会它阅读代码的「记忆」。