Module 2 教學帶你把考古題 PDF 變成「一題一張乾淨圖片 + 正確答案」的問題集資料夾。Module 3 接著帶你練習:不套用任何現成工具,自己一句一句跟 Codex 描述想要的學生自我測驗網頁。如果你還沒走完 Module 3、或想跳過「自己描述需求」這個練習,這份教學是給你的快速版:請 Codex 套用工作坊講師事先寫好的 build-quiz-app custom skill(位於專案根目錄的 .agents/skills/,不是 Codex 原生內建功能),一句話把問題集轉成不用架站、雙擊就能打開的學生自我測驗網頁,並額外附上 Module 3 沒有做的教師端成績彙整頁。
本教學對應 module4/ 資料夾,裡面只有 app/ 這個輸出成品;問題集資料本身跟 Module 3 共用同一份,都放在 module3/repo/ 底下,不用另外準備一份。目前 module3/repo/ 有兩組問題集:數學(A) 已經在 module4/app/ 裡有可直接打開的成品;電機與電子群資電類 專業科目(一)(二) 則還沒加入,可作為下一份要加進測驗清單的資料來源。差別只在教學方式:Module 3 讓你練習自己描述需求,這裡示範用一句清楚的需求,直接請 Codex 套用現成工具完成。
| 範例測驗 | 問題集資料夾(輸入,跟 Module 3 共用) | config.json 的 examLabel | 雙擊即用成品(輸出) |
|---|---|---|---|
| 115 學年度 電機與電子群資電類 專業科目(一)(二),共 100 題 | module3/repo/115/ | 由 Codex 新增,且不得與既有名稱重複 | 尚未產生;可依本教學加入既有測驗程式 |
| 115 學年度 數學(A) 共同科目,共 25 題 | module3/repo/math-115a/ | Formative_Assessment_115_MathA | module4/app/dist/Formative_Assessment_115_MathA_quiz.html(目前已有,約 2.5 MB) |
目前 module3/repo/ 沒有額外的原始 PDF。若要再加入第三份測驗,請先依 Module 2 的流程準備好新的問題圖片與答案 JSON,再放入 module3/repo/ 下的新資料夾(跟 Module 3 共用同一份問題集資料,不用在 module4/ 底下另外準備)。
做完這份教學,你應該能夠:
build-quiz-app 內部怎麼運作,只靠一句自然語言指令,把 Module 2 產出的問題集資料夾變成雙擊即可開啟的自我測驗網頁。module3/repo/115 或之後的新問題集加入同一個 app/,並在 Codex 要求確認時選擇保留既有測驗。*.png 圖片 + keys.json」的問題集資料夾。本教學沿用 module3/repo/115、module3/repo/math-115a 這兩組已經做好的資料當範例(跟 Module 3 是同一份資料,不用另外準備)。這份教學刻意不用 Module 3 教的「自己一句一句描述需求」練習方式,而是直接請 Codex 套用工作坊講師寫好的現成工具,把整件事一次做完 你完全不用自己想該怎麼描述、也不用管背後實際發生了什麼。下方提示語會直接講清楚工具位於.agents/skills/build-quiz-app/,讓 Codex 能讀取並依說明執行。由於module4/app/已有數學(A)測驗,skill 會先要求你確認;請選擇「加入既有 app,不覆蓋」。如果專案裡還沒有.agents/資料夾,可以下載 module4-agents-skills.tar,解壓後把.agents/資料夾放到專案根目錄(跟module4/同一層)。如果想練習「不套用現成工具、自己把需求講清楚」這件事,請見 Module 3。
把「找路徑、分析資料夾、寫設定、打包」這一整條流程,濃縮成一句話請 Codex 做:
請對 module3/repo/115 套用本專案內 .agents/skills/build-quiz-app/ 的 skill,
將它加入既有 module4/app/,不要覆蓋現有的數學(A)測驗。Codex 會依 skill 的說明分析問題集、在既有 module4/app/config.json 新增一筆設定,並在 module4/app/dist/ 產生新測驗。因為目前已經有數學(A)測驗,Codex 應先詢問你是否要加入既有 app;確認選擇加入後,再跳到下面「驗收重點」確認結果。
module4/app/dist/ 底下出現一個新的 <examLabel>_quiz.html 檔案,檔案大小大約是問題集圖片總大小的 1.37 倍(base64 編碼會讓檔案膨脹這麼多);明顯小很多通常代表圖片沒被完整塞進去。keys.json 裡的題目數跟畫面上能抽到的題數應該吻合。學生在測驗頁面送出作答後,畫面上有一顆「下載成績單 (CSV)」按鈕,會把這次作答的逐題結果存成一個 CSV 檔。module4/app/report-aggregator.html(跟 Module 3 產出的是同一份引擎)就是給老師用來把全班這些 CSV 檔合併起來看的工具 一樣雙擊即可開啟,不需要架站、不會把資料上傳到網路上。把收到的 CSV 檔拖曳到頁面上的拖放區,就會自動彙整出每位學生的成績、跟每一題全班的答對率。
目前資料夾沒有第三份尚未處理的原始試題。請先依 Module 2 準備一組完整問題集:每題一張 PNG 圖片,加上一份題號與正確答案相符的 keys.json。把它放入 module3/repo/<新資料夾名稱>/(跟 Module 3 共用同一份問題集資料)後,再用下方提示加入既有測驗程式。
module3/repo/<新資料夾名稱> 已經是一組完整問題集,包含每題圖片與 keys.json。
請套用 .agents/skills/build-quiz-app/,將它新增到既有 module4/app/ 的測驗清單,
不要覆蓋已完成的測驗。完成後,module4/app/config.json 應多出一筆 assessments 設定,module4/app/dist/ 也會多一個新的測驗檔案;原有的數學(A)測驗與先前加入的測驗都應維持不變。驗收方式跟上面「驗收重點」一樣:雙擊打開、作答、送出。
大多數情況,這裡的一句話就夠了;但下面這些狀況,回頭看 Module 3:從問題集資料夾產生自主測驗網頁實作教學 會清楚得多:
不管走哪一條路,遇到問題時的處理方式都一樣:把你實際看到的狀況描述給 Codex,請它幫你檢查、修好,不用自己猜是哪裡出了問題。
之後每多一組問題集資料,重複「Module 2 切題清理 → 一句話疊加進 app/」這個循環就好,app/ 引擎本身不需要重建。
正式交給學生前,記得請 Codex 幫你確認清楚兩種產出的差別:dist/*.html 是要交出去的成品,雙擊即用;report-aggregator.html 是另外單獨交給老師的彙整工具,跟學生端的檔案是不同用途。
如果問題集內容是有版權疑慮的考古題(例如技專校院入學測驗中心的試題),交付雙擊即用的 HTML 之前,記得再次確認自己有沒有合法散布這些內容的權利。