~/niansia / notesEN繁简

研究笔记

Taiwan Exam 设计笔记:让模型出题,让程序只负责检查

一个让 AI 出原创学测仿真考的 Agent Skill,为什么刻意不让程序替题目品质背书,以及那些检查、锁定与套版是怎么设计的。

2 分钟阅读Agent SkillLLM系统设计

Taiwan Exam 让 AI 出一份原创的学测仿真考,最后交付题本和详解两份 PDF。它的内核分工只有一句话:模型负责出题,程序只负责排版、检查和套版,而且程序永远不替题目品质背书。

为什么要这样分工

LLM 很会写题目,但它也很会「说自己写得很好」。如果让同一个模型出题、自评、再宣布完成,品质问题就会被一句「已检查」盖过去。所以这套工具的设计原则是:

主要的流程脚本在说明里写得很直接:它「从不出题,也从不核准审查」。

流程

  1. 读取知识、预检。 只读这一科需要的数据,每段不超过 12,000 字;检查 PyMuPDF 版本、30 份原始模板的哈希值、答对率校准快照、字体,以及图片能不能下载。
  2. 命题蓝图。 先排出整份考卷:题号、配分、四个难度带、答案分布、需要几张图、总作答时间。难度用大考中心 111–115 年的官方答对率校准,例如数学是「中偏难+难 ≥ 70 分、难 ≥ 30 分、手算 80–92 分钟」。
  3. 分批命题。 每次只写 2~4 题并存盘。格式不对会直接拒收:LaTeX、$ 符号、不成对的标签、哈希对不上的图、分辨率太低的图片。
  4. 盲审解题。 产生一份不含答案的题目包,从印出来的题目重新解一次,再估计答对率、归入难度带。
  5. 内容锁定。 题目与答案写进锁定档之后,才能开始正式组版;要改题就得重新锁定并写下理由。
  6. 套用原始模板。 题目本体是透明的一页,用 PyMuPDF 叠印到大考中心的原始模板上,只有年份、页码和封面标题是动态字段。页眉页脚的像素在叠印前后必须完全相同,否则直接中止。
  7. 逐页检查,然后交付。 每一页和每一题的截屏都要写下观察、标记通过或不通过;最终检查通过才输出两份 PDF。

检查长什么样子

让它能在一般人的 AI 里跑

老师和学生多半不会用终端机,所以同一套规则有三种交付方式:可以直接上传到 Claude 或 ChatGPT 的 Skill ZIP(Claude 的上传上限是 200 个文件,所以要打包成资源包)、给 Gemini 和项目用的知识档,以及给 Codex、Claude Code 的本机版。完整考卷常常要两三轮对话才做完,所以每一步都会存盘,用户回一句「继续」就能接着做。

诚实的限制

原代码与安装方式:github.com/niansia/taiwan-exam。也可以看 80 秒的前导片。

其他笔记

LumiGrid 研究笔记:一个亮度曲线网格,实际上学到了什么从 16.48 dB 的课堂作法到 24.57 dB:LumiGrid 的设计、消融实验、两个失败案例,以及一个对自己方法不太有利的发现。把 LumiGrid 搬进浏览器:一个只在 WebGPU 出错的 6 信道卷积两个神经网络加上一段自己写的 WebGL 着色器,逐像素对照 PyTorch 验证;以及一个让 WebGPU 版本只剩 28.75 dB 的错,是怎么一步步二分找出来的。
研究笔记回到作品集