受到Simon Willison利用Claude将遗留库带到网络上的成功启发,作者尝试对Graph::Easy(一个用于生成ASCII流程图的Perl库)做同样的事情。最初的目标是创建一个Web应用,使用WebPerl展示该库迷人且可移植的图表——结果出乎意料地成功。
然而,作者随后追求了一个更雄心勃勃,但最终未能实现的目标:使用大型语言模型(LLM)将Graph::Easy移植到TypeScript。尽管最初充满乐观,但多次尝试——包括各种提示策略、测试驱动开发,甚至将任务分解到多个LLM“代理”——都无法准确地复现原始Perl的输出。
核心问题在于该库根深蒂固的复杂性,历经数十年的积累,以及LLM无法掌握生成正确ASCII艺术所必需的空间推理能力。作者得出结论,用编码代理复制多年精心开发既是对该工艺的不尊重,也是在根本上不现实的,凸显了当前LLM在处理细微且成熟的代码库方面的局限性。
## “迷你框架”的问题
作者在一家大型科技公司工作四年,观察到一种反复出现的模式导致开发者痛苦:创建“迷你框架”——小型、团队构建的框架,构建在现有共享技术栈*之上*。这些框架源于对核心技术栈的不满,旨在简化任务或提高性能,并以引入新概念和声称“神奇地”解决问题为特征。
然而,作者认为这些迷你框架是有害的。它们通常缺乏完整性,与原始框架的演进发生冲突(违反“更容易更改”原则),反映了创建者的主观思维模型,并导致技术栈碎片化。至关重要的是,由于所有权掌握在少数人手中,它们通常缺乏长期维护。
作者不主张构建迷你框架,而是提倡创建*库*——不引入新概念的扩展。如果框架确实是必要的,应该从头开始构建,与具体的业务需求相关联,并将其视为一项重大工作,而不仅仅是“另一个抽象”。核心信息是,在向代码库添加复杂性和新概念之前,要仔细考虑其影响,因为这些看似有帮助的层通常会造成比它们解决的问题更多。