一、为什么这类移植一直很难

先交代背景事实,便于没听过 MilkDrop 的读者理解难度量级:

  • MilkDrop 原本是 Winamp 的可视化插件,跑在 DirectX 上,靠 EEL2 脚本引擎驱动,预设文件 .milk 是 INI 格式
  • projectM 是它的开源兼容实现,改用 OpenGL/GLSL 重写;社区精选预设包规模为 9,795 个(GitHub 上的 projectM 移植项目明确写有 9,795 presets)
  • 围绕这套预设生态有一串移植分支:Butterchurn(WebGL 实现)、BeatDrop、NestDrop、projectM 的 Android TV 版等
  • ANGLE 是 Google 开源的兼容层,把 OpenGL ES 调用转译到平台原生 API(Windows 走 DirectX、Apple 平台走 Metal);WebGL 2 本身即建立在 GLES 3 之上。.NET 侧的 Vortice 也可经由 ANGLE 对接 DirectX/Skia

于是”搬进 .NET”这条路的技术选择就清楚了:不是把 HLSL 手翻成 GLSL,而是让 GLES3 成为中间层,用 ANGLE 处理平台差异。

真正可怕的地方不在渲染器,而在9,795 个预设。每个预设里是 EEL2 表达式,它们依赖旧实现的求值顺序、边界行为甚至某些历史怪癖。这是典型的”没有规格说明的系统“:唯一的行为定义,就是老代码本身跑出来的样子。

(说明:那篇博客的具体实现细节我们没能打开原文逐条核对,本文只按标题与其公开技术名词展开讨论,结论是洹拓科技自己的经验判断。)

二、”许愿式移植”这个名字很准确

把 AI 用在移植上,实际工作方式是这样的:给模型一段旧实现代码 + 目标语言的上下文,让它”说出你想要的结果”,它返回一份新实现。省事是真的省事——胶水层、解析器骨架、批量语法转换、B 类样板代码,这些占掉移植工作里最大的一块体力活。

但会留下三类问题,而且它们在时间轴上一定出现:

问题类型 表现 为什么危险
静默偏差 编译通过、能跑,但结果与旧实现差一点(浮点求值顺序、整数截断、空值处理) 没有报错,只有效果不同,肉眼最难发现
怪癖复制 模型按”常识”重写,主动”修正”了旧代码里其实被依赖的奇怪行为 上层内容(这里是预设)恰恰围绕怪癖创作
规模化验证缺口 单条测试通过,上万条输入里没有比对手段 移植的正确性主张变成”我们相信它”

第二类在遗留系统里最常见。老代码的”毛病”往往不是 bug,而是接口:别人已经按它写了东西。

三、让 AI 移植能上线的三件配套

我们的经验是:AI 能替代的是写代码,替代不了的是证明写对了。所以移植项目要做的第一件事不是找模型,而是先造出可比对的判据。

1. 差分测试(differential testing),不是单元测试。
同一份输入同时喂给旧实现和新实现,比对输出。图形场景里比对的是渲染帧的像素差(结构相似性或逐通道容差),数据场景里比对的是序列化结果。这才是能覆盖上万预设的手段——单元测试永远写不到那个数量级。

2. 分层对照,先锁住语义再换渲染。
把”求值/解析”和”绘制”分开:EEL2 表达式的求值结果先用数值快照固定,再去对比渲染输出。两段混在一起调,问题永远定位不到是谁的锅。

3. 建一份”怪癖清单”。
把旧实现里那些反常但被依赖的行为显式记录下来(空纹理怎么处理、超范围的归一化值怎么夹、除零走哪条路),作为提示词的一部分喂给模型,同时作为差分用例的来源。没写进文档的怪癖,是移植项目最大的未知负债。

四、这套方法在本地企业更现实的落点

新乡这边找到我们谈”AI 移植”的,绝大多数不是为了跑可视化插件,而是四类需求,套路完全一致:

场景 常见形态 主要风险
桌面老系统现代化 Delphi / VB6 / PowerBuilder → Web 或 .NET 业务规则埋在窗体事件里,无文档
Excel VBA 转 Web 报价、排产、成本核算模型 公式精度与四舍五入规则不一致
老旧框架升级 ThinkPHP/CI 老项目 → Spring Boot 或新 PHP 框架 加密、签名、会话行为差异
数据库迁移 SQL Server → MySQL / 国产库 隐式类型转换、日期边界、排序规则

四类都满足”AI 写很快,验证最难“的结构。我们给这类项目定的交付口径是一句话:先有差分基线,再动代码。具体做法:

  1. 抓一批真实输入(历史单据、样本数据、界面截图)建立输入集
  2. 在旧系统上跑出结果留档,形成基线
  3. AI 按模块生成新实现,每模块跑差分,超容差即失败
  4. 未通过部分人工介入,同时把暴露出的怪癖补进清单

这样做的第二个好处是责任可界定。客户最担心的是”新系统上线后账算错了谁负责”——有差分报告,责任在数据;没有差分报告,责任在口头。

五、洹拓科技的移植类服务

  • 可行性评估:读旧系统,输出”可自动转换 / 需人工 / 无法判定”的比例与工作量估计
  • 差分测试平台搭建:输入采集、基线留档、结果比对与容差配置
  • AI 辅助迁移实施:按模块推进,含提示词与怪癖清单维护
  • 老系统应急维护:在迁移完成前,先做数据备份、权限收紧与运行环境隔离

有 Delphi、VB6、老 PHP 或 VBA 报表要搬的本地企业,可以先带一份样本数据来找我们做一次差分可行性判断。

遗留代码的 AI 移植与差分验证


事实部分(MilkDrop、projectM、ANGLE、预设规模)依据 Wikipedia 与公开项目仓库核对;博客园原文细节未逐条核验,检索时间 2026-10-24。

新乡洹拓科技有限公司,软件开发 · AI模型研发 · 云服务与部署运维。

咨询热线:400-829-9957
地址:河南省新乡市辉县市金城百货四楼