摘要:
这不仅仅是一次简单的游戏移植,这是一场关于 RAG(检索增强生成)、APE(自动化提示工程) 与 Model Capability(模型能力边界) 的极限压力测试。我试图一行代码不写,指挥 AI 将 Web 版《华容道》重构为 HarmonyOS 原生应用。结局是:视觉完美还原,交互逻辑崩盘。 本文将剥离表象,深入探讨 AI 在面对“范式转移”时的真实表现。
- 幻觉与现实:构建“外挂大脑”的必要性
在项目启动的最初 3 小时,我犯了所有新手都会犯的错误:直接把通用大模型当成全能专家。
当我直接把 Web 源码丢给 AI 并要求“转成 ArkTS”时,AI 产出的代码充满了“古早味”——它在用 TS 的语法写 Java 的逻辑,甚至捏造了不存在的 API。这是典型的 Context Gap(语境断层)。
我的破局策略:手动构建 RAG 知识库
既然模型没见过 HarmonyOS Next,我就通过 NotebookLM 强行给它“灌顶”。
- 数据清洗(Data Chunking):我没有直接上传几百页的 PDF,而是将官方文档(Gitee 开源仓)按功能切分为 25 个纯文本块(Part1 ~ Part25)。
- 效果验证:这种“物理切分”极大地降低了模型的检索噪声。当我问“如何实现拖拽”时,AI 不再胡编乱造,而是精准定位到了 Part12.txt 中的 PanGesture 手势接口。
🔴 深度洞察:
在垂直领域(如鸿蒙开发),优质的知识库构建能力(Knowledge Engineering)比 Prompt 技巧重要 10 倍。 AI 的上限,取决于你喂给它的“食材”有多纯净。
- 范式转移:AI 无法逾越的“思维高墙”
如果说 UI 适配(px 转 vp)只是“单位换算”的小儿科,那么交互逻辑的迁移就是这次项目的“滑铁卢”。
Web 开发的核心是 DOM 操作(命令式):
“找到这个方块 -> 修改它的 left/top 属性。”
鸿蒙 ArkTS 的核心是 状态驱动(声明式):
“更新数据模型 -> 界面自动响应变化。”
崩溃的 24 小时:
AI 极其擅长“翻译语言”(把 JS 翻译成 TS),但它极其不擅长“翻译思维”。
在实现“棋子拖拽”时,AI 陷入了死循环:它试图在 ArkTS 里模拟 DOM 操作,使用了大量的 event.offsetX 直接赋值,却忘记了触发 @Observed 状态更新。
结果就是:代码逻辑看起来无懈可击,但屏幕上的棋子纹丝不动。
🔴 深度洞察:
AI 目前通过模仿学习(Few-Shot)来写代码。当源语言(Web)和目标语言(ArkTS)的底层编程范式(Paradigm)完全对立时,AI 很难自动完成架构级的重构。它需要人类架构师明确指出:“忘掉 DOM,使用 State!”
- 算力陷阱:主线程的“不可承受之重”
压垮项目的最后一根稻草,是 BFS(广度优先搜索)算法 的移植。
在 Web 端,JS 单线程偶尔卡顿一下无伤大雅。但在原生应用中,主线程阻塞超过 3 秒即由于 ANR (无响应) 被系统强制杀掉。
我指挥 AI 使用 TaskPool(鸿蒙的多线程方案)来剥离计算任务。这时,复杂工程能力的缺失 暴露无遗:
- 序列化灾难:AI 试图把复杂的 Piece 类实例直接传给子线程,但 ArkTS 的线程间通信要求数据必须是可序列化的。类的方法、原型链全部丢失。
- 上下文遗忘:当修复了线程通信后,AI 忘记了如何将算好的结果(Step List)准确地映射回 UI 动画队列。
最终,App 在“计算中...”的 Loading 画面中闪退。
🔴 深度洞察:
AI 能写出完美的“函数”,但写不出完美的“系统”。当代码跨越了文件(Files)、跨越了线程(Threads)、跨越了层级(Layer),AI 对全局上下文的把控力会呈指数级下降。
- 终极反思:人类在 AI 编程时代的生态位
这次“失败”的移植,比成功更有价值。它帮我厘清了 APE(自动化提示工程)模式下,人与 AI 的边界:
- AI 是“超级工兵”:它能帮我把 80px 换算成 90% 宽,能帮我写出标准的 Grid 布局,能帮我查阅 2000 页的文档。
- 人是“架构师”与“裁判”:
- 定义问题:不是问“怎么写”,而是决定“用什么架构写”(如:TaskPool vs Worker)。
- 审核边界:判断 AI 的方案是否违背了系统底线(如:主线程阻塞)。
写在最后:
虽然《华容道》的 AI 自动解题功能暂时搁置,但我看到了未来的雏形。
我们正在从 “Code by Hand” 转向 “Code by Data”。
当有一天,大模型的 Context Window 足够大,推理能力足够强,能理解“范式转移”的深层含义时,我们今天遇到的这些“坑”,都将成为通往新世界的基石。
未来已来,只是分布得还不够均匀。而我们,正在填平这些沟壑。