对话档案 D04 · 概率论闯关游戏(10-12)
一句话:把近三年考研数学概率论选择题做成一个可玩的网页闯关游戏(金币、道具、关卡、Boss、教学关、AI 助教、局外养成),37 小时内跑完 8 条真实指令、429 次工具调用、5307 万 token,功能全部落地,但公式渲染修了三轮仍未彻底收敛。
一、这段对话怎么走的
| 阶段 | 用户要求 | 产出 | 卡点 |
|---|---|---|---|
| 1. 立骨架 | 搜集近三年概率论选择题,按易到难设关卡,配"概率学工具",答题得金币买工具解锁关卡,最终 Boss 是真题;要可视化、互动、留扩展接口、重要知识点高星多次出现 | 关卡地图、金币与道具系统、题库结构、Boss 关 | 题目来源与知识点归属没有先定结构,全靠模型中途归类 |
| 2. 修错配 | 「题目使用全概率卷轴的时候,知识点有的并不匹配」;「公式上标混乱,而且公式不美观」;同时加局外养成与冒险手册 | 知识点提示修复、公式样式调整、养成系统 | 知识点是渲染时临时推断的,没有作为题目字段存下来 |
| 3. AI 助教 | 「在做完题目后,可以问ai问题…使用直观美观的网页结构,然后呈现在页面中」 | 答题后追问面板,AI 回答以结构化网页呈现 | 模型输出带 \{ 等转义,前端解析失败 |
| 4. 修格式 | 「助教给的答复格式不准确,html解析会出现许多{等格式你做几次测试」 | 提示词与解析器双改 | 只修了解析,没建可复跑的用例,同类问题换个题面又出现 |
| 5. 助教进库 | 「给AI助教也纳入数据库…每次询问时,带上历史记录作为上下文」 | 问答历史表 + 上下文拼接 | 历史变长后,早期题目上下文被挤掉 |
| 6. 补教学 | 「现在这个版本只有题目,没有教学.要在关卡中先插入教学关,然后解锁了某个知识点之后才会出现相应的题目」 | 教学关(图表、例子、动画)+ 知识点解锁门禁 | 顺序反了:先做题目后补教学,等于重排关卡依赖 |
| 7. 再修公式 | 「还是会有有关$\displaystyle 和$$$的未识别公式」;「第三关的这里还是这样的」 | 第三轮公式修复 | 仍有余留,属于定界符混用 + 转义叠加 |
时间线:2026-10-12 20:02 起,2026-10-14 08:58 结束,约 37 小时。单段会话,1 个 jsonl,无合并;15 条用户消息里有 6 条是自动上下文摘要,真实指令 8 条。
二、用户的关键原话
原话:「搜集近三年考研数学有关概率论的选择题,然后根据所涉及的知识,按从易到难,设置闯关任务,排列好可用的概率论学工具…通过答对题目获得金币购买新的概率学工具,然后解锁更多关卡,最终boss就是之前搜集的考研数学概率学选择题题目。」
这条开场把"学习"翻译成了游戏机制:金币、道具、解锁、Boss。它好在给了完整的循环(答题→金币→道具→解锁→Boss),坏在把"知识点"当成渲染时能算出来的东西——结果第 2 轮就出现"知识点并不匹配"。如果第一句就要求"每道题必须带 knowledgePoint 字段",后面这一整轮修复可以省掉。
原话:「任务复杂,每部分要提前设计,然后单独一点点处理,给自己安排好分步走的策略,将项目更加完善。」
用户已经意识到上下文会漂,主动要求"先设计再分步"。这是两个月里少见的元指令。实际执行中它起了一半作用:功能确实分批做了,但没有落成可勾选的计划表,所以到第 6 轮还是出现"只有题目没有教学"的结构性缺口。
原话:「助教给的答复格式不准确,html解析会出现许多{等格式你做几次测试,然后修复格式问题,或者修复提示词让ai给出合适的格式也行。」
这句话给出了两条修法(改解析或改提示词),也点明了"做几次测试"。问题在于测试是临时的:修完当下那题就好了,没有沉淀成固定用例,于是第 7 轮又出现 $$ 与 $$$$ 混用未被识别。
原话:「还是会有有关$\displaystyle 和$$$的未识别公式。」
十四个字,第三轮同类问题。它说明前两轮修的是症状——补一个正则、加一个 replace——而不是统一公式的输入规范。同一个坑踩三次,账要记在"没有回归用例"上。
三、成本与效率
| 指标 | 数值 |
|---|---|
| token 总量 | 5307 万(0.531 亿) |
| 其中输入 / 输出 | 5261 万 / 46.1 万 |
| 用户消息数 | 15 条(统计口径;其中真实指令 8 条,自动摘要 6 条) |
| 工具调用 | 429 次 |
| API 调用 | 368 次 |
| 每条消息平均 token | 354 万(真实指令口径 663 万) |
| 平均每次工具调用 token | 12.4 万 |
单一模型 deepseek-v4-pro 全程跑完,没有换模型。输出 46.1 万 token 是五段里最高的,说明这段确实在大量"写代码 + 写题目解析",而不是反复读文件。429 次工具、368 次 API,平均每次 API 1.17 个动作,仍是碎步模式。真实指令只有 8 条却花了 5307 万,意味着平均一条指令要烧 663 万 token——这是"一条长指令、几十轮自主实现"的典型成本结构。
四、曲折点与评判
- 公式渲染修了三轮。 第一次是"公式上标混乱、不美观",第二次是助教回答里的
\{转义,第三次是$$与$$$$混用未识别。根因是只验证一半:每次只修用户截图里那一处,没有把"行内/独立公式各 10 例"做成回归集。这类问题一次修干净的成本远低于三次。 - 知识点与题目脱钩。 "全概率卷轴"给出的提示对不上题,根因是把知识点当成推理产物而不是数据字段。题目入库时就该写死
knowledgePoint,提示只是查表,不该临场判断。 - 教学关后补,等于重排关卡。 用户第 6 轮才提"要先教学再解锁题目",此前的关卡依赖是按"只有题"设计的,补教学关必须回头改解锁链。根因是需求演进,但也暴露了首轮没有先确认"学习闭环"包含哪几段。
曲折度:★★★★(无推倒重来,但同类问题反复,属于"慢性返工")
五、提示词与流程改进
-
反例:「公式要美观,不要混乱。」 正例:「所有公式只用一种定界符:行内
$…$,独立$$…$$;渲染前先把$$$$归一为$$;交付前跑 10 道含分式/矩阵/上下标的样例题,全部正常才算出货。」 把"美观"换成"归一规则 + 回归样例",一次收敛。 -
反例:「题目使用卷轴时知识点要匹配。」 正例:「每道题入库必须带
knowledgePoint与difficulty两个字段;卷轴提示只允许从该字段读取,禁止模型临场推断。」 把"要求正确"换成"从数据结构上不可能错"。 -
反例:「任务复杂,要一步步做。」 正例:「先只交三样东西给我确认:关卡表(含知识点依赖)、题目数据结构、页面组件清单;确认后再写第一行代码。」 "分步"必须落成可确认的中间产物,否则只是口号。
六、可复用结论
- 内容型游戏先定内容模型(题目—知识点—关卡三元组),再写界面;知识点必须是字段,不能是推理结果。
- 公式、编码、转义这类"修了还会回来"的问题,必须配一组固定回归样例,否则永远在修症状。
- 用户说"要分步"时,直接把分步翻译成"先交哪三份中间产物",比口头答应有效得多。