Vibe Coding记录:AI开发魔方小程序

原文首发于微信公众号 Laird Notes,转载时排版略有调整。

氛围编程(vibe coding)已出现一年有余。在工作中常用LLM生成脚本,或用Copilot实现函数、文件级重构,但还未用于过个人兴趣项目。

我一直想尝试开发小程序,可是(过气C++码农)懒得学习JavaScript,微信官方教程好几次看完简介就搁置了。

过去的这个周末,有充足的时间和放松的心情。周六晚上灵机一动:为什么不跳过前置知识,直接开始动手做呢?

于是在接下来六小时里,从简单提示词开始,用AI工具逐步迭代生成魔方求解小程序。全程没有人工写一行代码。

Cube Solver 小程序

工具和提示词

工欲善其事,必先利其器。第一步,开发工具的选择很快就确定了。

  • 编程代理:OpenCode,开源、切换模型简单,名字也好听~
  • 模型:Kimi K2.6,agent编码能力出色,喜欢的国产模型
  • IDE: 微信开发者工具,用于小程序编译、调试和真机预览

起初的提示词非常简单,仅描述了所需功能和算法,交给Kimi细化后得到完整Spec。

帮我设计提示词,向OpenCode准确描述需求:开发一个微信小程序,对3阶魔方6个面拍照后,用Kociemba算法计算还原步骤公式。可选加上3D动画展示功能。

OpenCode-提示词Spec

将完整的提示词规格输入OpenCode,等待几分钟顺便喝杯茶,回来发现项目文件和代码已经神奇地生成好了。

然后把项目文件夹导入微信开发者工具,自动编译完成后,点击小程序界面的各个按钮,貌似可以正常工作:-)

微信开发者工具-调试预览

遇到的问题

接下来转到真机测试时,先后遇到三个性能或可用性问题,debug捉虫花去不少时间,所幸AI都帮忙解决了。

初始化太慢 - JSCore性能

第一个问题:小程序在电脑模拟器上运行流畅,但在iPhone上测试时,卡在求解前的初始化阶段,几分钟无响应。

Kimi分析指出,这是因为iOS运行环境JSCore对第三方应用禁用JIT,而Kociemba算法求解前需要密集计算查找表。

为了避免超时、提高UI响应性,Kimi提出分步计算12个表并在界面显示进度条。算是治标不治本地解决了问题。

Kimi-初始化慢的原因

摄像头报错 - camera组件

第二个问题:小程序始终无法调用手机摄像头拍照,有时静默黑屏、有时提示insertCamera:fail。

Kimi努力推测原因、反复修改代码,然而真机测试一直失败。这时我想到试试新出的DeepSeek-V4。

DS4一针见血指出,微信camera组件在iOS极不稳定,建议改用wx.chooseImage调用系统原生相机。

DeepSeek-摄像头组件

颜色识别不准 - 工程妥协

第三个问题:对魔方六个面拍照后,需要识别每个色块的颜色。如下图所示,标问号的块表示程序无法确定。

CubeSolver-颜色识别

对人眼来说轻而易举的事——区分六种颜色,对机器程序并不简单。拍照角度、光照、背景都会造成干扰。

反复和不同AI模型探讨改进方向,真机测试却发现准确率没有提升。豆包一改就错,常犯明显的逻辑错误。

GLM-5.1则经过长时间思考给出复杂方案,代码实现里暗藏逻辑缺陷,被用户发现后承认自己过度工程化。

直到我读到一篇魔方机器人的技术报告,发现使用OpenCV库,在不同光照环境下识别准确率平均只有70%。

瞬间感到释然,决定妥协接受现状。纯JS代码实现,室内光照下54个块识别错3-6个够用了,可以人工修正。

最终采用方案:HSV颜色空间、截尾均值采样、中心块参考色、加权距离分类、全局约束、人工修正未知。

时间与成本

整个魔方小程序的开发前后花了6小时。前2小时用于配置工具、准备提示词、生成MVP原型。

分析JS性能问题和修复摄像头错误各耗时约1小时。最后2小时专注于优化颜色识别准确率。

模型成本方面,Kimi、豆包、GLM通过字节Coding Plan使用,对token消耗量不敏感。

DeepSeek-V4通过官方API调用,据观察修复单个bug消耗2M token,价值¥1.5。

四格漫画-模型对比

开源代码

项目代码已推送至 GitHub: https://github.com/moiLaird/CubeSolver-WeChat

Linus曾说:Talk is cheap, show me the code.

如今AI agent能快速生成大量代码,编码本身似乎不再是瓶颈。

准确定义问题、清晰思考、有效沟通的能力,变得越来越重要。

毕竟真正产生价值的是解决问题,而不是写计算机代码。

写代码只是人与机器沟通的一种方式。