Vibe Coding 48小时:做几何可视化的踩坑记录

Vibe Coding 48小时:做几何可视化的踩坑记录

48 小时,尝试用 Claude Code + Gemini + Codex 做了一个几何可视化的小工具:

  • 上传高中几何题图片 → AI 识别 → 生成可交互 3D 模型
  • 自动生成讲解动画,带字幕,能导出 MP4
  • 技术栈:React + Three.js + WebCodecs

Demo:https://mathviz3d.pages.dev/

说实话做得很粗糙,但过程中踩了不少坑,记录一下,希望对同样在摸索 AI 辅助开发的朋友有点参考价值。

大佬轻喷,欢迎指正。


最终效果

先放几张截图,让大家有个概念(别期待太高,真的很 MVP)。

交互模式:

左边上传题目,AI 识别后显示几何体类型、关键点、参数。右边是个能拖拽旋转的 3D 正方体,滑块控制动点位置。

视频模式:

左边是分步讲解大纲,底部有字幕。

视频导出:

用 Mediabunny + WebCodecs 在浏览器端编码,不依赖服务器。这个是现成轮子,我就是调用了一下。


第一个坑:8 小时白干

项目开始时我有点急。48 小时嘛,想快点出活。

写了一个「总方案文档」1200 多行,涵盖项目目标、AI 架构、前端布局、技术栈选型。自我感觉良好,直接让 Claude Code 开干。

结果翻车了:

  • 基建层各种对不上,AI 输出的 JSON 格式和渲染引擎期望的格式不匹配
  • 坐标计算有奇怪的依赖问题
  • 想加个功能发现处处要改
  • 8 小时过去,能用的东西约等于零

01-29 晚上决定推倒重来。

问题出在哪

回头看方案文档,问题是粒度不够细

问题 文档写了什么 缺了什么
AI 输出 “AI 输出语义化定义” JSON Schema 具体长什么样?点的类型有哪些?动点怎么表示?
模块接口 “坐标计算模块负责转换” 输入输出类型?动点参数怎么传递?
UX 流程 “有交互模式和视频模式” 上传状态怎么显示?失败了怎么提示?

AI 执行的时候只能自己脑补,脑补的结果和其他模块对不上。

确实对文档的要求理解深入些了。

第二版:把文档拆细

换了策略:不是一个文档,是一组文档。

文档 内容 行数
系统架构 总纲、模块边界、数据流 2060 行
AI 设计 三个 Agent 的输入输出 JSON Schema -
基建设计 各模块接口定义 -
UX 设计 布局、配色、交互流程、状态流转 1280 行
测试设计 15 个测试图片、验收标准 -

核心思路:把细节都定义清楚,减少 AI 脑补的空间。

比如动点定义:

{
  "id": "P",
  "type": "onSegment",
  "from": "B",
  "to": "E",
  "param": "p"
}

必须指定 from(起点)、to(终点)、param(参数名),还要在 params 数组里定义对应参数。

多家 AI 交叉验证

文档拆细之后需要更多的验证确保方案稳定

用的方法是让多家 AI 互相挑错(这个思路是从刘小排老师的一篇付费文章学的):

  1. Claude Code 出方案
  2. 把方案发给 Gemini,让它挑错
  3. 把方案发给 Codex,让它挑错
  4. 汇总问题,让 Claude Code 改
  5. 重复

当三家的反馈变成「建议加个注释」这种锦上添花的意见,而不是「这里有逻辑矛盾」,就可以开始写代码了。


调研:搜索词很重要

在写方案之前做了点调研。发现搜索词选对了效率差很多。

错误示范:

  • 搜「AI 生成视频」「AI 动画」
  • 得到:Sora、Runway、Pika(生成式视频,不是我要的)

后来的做法:

  • 先搜索术语和黑话
  • 得到:程序化视频(Programmatic Video)数学可视化(Math Visualization)

用这两个词搜索,找到了一些有用的项目:

项目 来源 借鉴点
Code2Video NeurIPS 2025 三 Agent 架构
Remotion 开源 20k stars useCurrentFrame() 纯函数设计
Mediabunny 开源 WebCodecs 硬件加速编码

把调研结果喂给 AI,让它参考这些设计出方案,算是站在巨人肩膀上吧。


AI 分工

这个项目用了三家 AI,说说我的体感,仅供参考:

Claude Code

用来讨论方案、写文档、调试。长文本和推理感觉还行。

Gemini

前端设计给我惊喜,很有灵气,甚至可以考虑到UX的设计。

但不适合写正式代码。 滑块注意力是纯shit,上下文长了会漏信息,前面定义的变量后面忘了。

Codex(xhigh)

用来写核心模块。慢但稳定,第一版基本能跑。


提示词迭代

提示词需要迭代,我的办法类似机器学习的办法:

prompts/
├── versions/
│   ├── v001-chinese-baseline/
│   └── v002-english-full/
├── test-runs/
│   └── ...
└── current -> versions/v002-english-full

准备了 15 张测试图片,跑一轮记录通过率,分析失败原因,改提示词,再跑。

最后英文版 75%,中文版 72%。说实话这个通过率不高,还有很多优化空间。48小时实验时间是不太够的,目前先这样。

主要失败原因是 Coder 引用了 Understander 没定义的点。加了个检查清单后有所改善,但没根本解决。


AI 做不好的事

有些事 AI 做不好,比如 LaTeX 转义。AI 有时会混用单反斜杠和双反斜杠:

"L \in [\frac{3\sqrt{2}}{4}, \frac{\sqrt{5}}{2}]"
                                  ↑ 单反斜杠(错误)

提示词里写规则没用,AI 经常忘。

最后用正则在前端兜底:

function fixLatexEscapes(raw: string): string {
  const latexCommands = ['frac', 'sqrt', 'vec', 'sin', 'cos', ...]
  const pattern = new RegExp(
    `(?<!\\\\)\\\\(${latexCommands.join('|')})\\b`, 'g'
  )
  return raw.replace(pattern, '\\\\$1')
}

没做完的事

48 小时太短,很多想做的没做:

想法 状态
COT 输出 没做
外挂几何公式库 没做
Critic Agent 审查渲染结果 没做
添加完整组件供AI调用 没做

MVP 先跑通,后面慢慢加吧。


小结

记录几点个人体会:

  1. 方案要写细 - 粒度细到 AI 没有脑补空间,不然容易翻车
  2. 多家 AI 交叉验证 - 对新手挺有用,能发现自己看不出来的问题
  3. 搜索词选对 - 专业术语搜出来的东西质量高很多
  4. AI 做不好的事用代码兜底 - 不要死磕提示词

最后

这是 48 小时搓出来的 MVP,很粗糙,AI 识别不太稳定,bug 肯定不少。

欢迎试用吐槽:https://mathviz3d.pages.dev/

有经验的大佬如果有建议,非常欢迎指点。


24 个赞

前排观摩,感觉不少中小学老师会需要这种东西。

2 个赞

随便写的公司黑客松项目,算是命题作文,模型测试用的gemini3-pro,已经离经济很远了;整体主要是记录下整个开发的复盘,感觉应该先用codex出第一版,然后后面claude code调bug,应该时间内能做更多东西


潜水多年,我离Level2原来只差一个发布帖子吗!感谢CCTV,感谢各种TV :face_savoring_food:

3 个赞

个人觉得 gpt-5.2 要比 5.2-codex 要强,方案规划好后,用 gpt5.2-xhigh 跑第一版,基本一遍通,然后用 claude-opus 修 bug 优化功能,逻辑关联性强的功能/bug 依然用 xhigh 实现

1 个赞

codex 速度快了,但能明显感觉到一些在场景也变笨了

是的,我一直用的5.2和xhigh

主要的点就是确实慢,黑客松这种极端场景确实耽误事,以后感觉都是gemini出UIUX,然后第一版codex写,claude code后续修改

时间不是制约的话执行者我永远用gpt5.2 xhigh,整体时效和性价比都爆表

这个确实可以啊,很创新的思路

没,实际上都是大佬们讨论烂的,我的工作流都是杂糅的东学一点西学一点,感觉未来vibe coding的工作流肯定是每个人适配每个人风格的

现在vibe coding做项目难道降低了些,但最主要项目还是要有思路和想法才好做,能有这样的创新思路很不错了

1 个赞

佬这个确实可以,感觉对很多中学数学老师来说很需要

1 个赞

受教了。
最近也在想如何把vibe coding融入生活,大概要点就是,方案细节、严格定义接口、强调扩展性、复用性、帮AI思考一些边界工况,提前讲好节省时间。

AI 做不好的事用代码兜底 - 不要死磕提示词

这句我是深有体会了,前两天就想一行代码不写,坚决用提示词让ai写,后来放弃了,要是自己能简单写个规则兜底,还是写了得了,毕竟目标是省心省力。再死磕要脑溢血了。

应该要归纳一个适合自己的工作流,我是想让像方案写文档这种活也交给AI agent来搞,这样以后就真的可以有个idea让一串ai去搞定了

1 个赞

是的,我是觉得如果要求是稳定输出的话,AI是需要搭配大量正则和限制的,这种也可以降低使用的AI的级别,我是觉得后面这一套东西是可以降级,不用gemini-3-pro,换成qwen大概也行的;不过黑客松肯定图的是演示效果 :face_savoring_food:

感谢佬的肯定 :smiling_face:

很强啊!

1 个赞

感谢感谢 :smiling_face: