~/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 的錯,是怎麼一步步二分找出來的。
研究筆記回到作品集