這份教學示範怎麼用現成的 skill 重建線上測驗系統,並示範一個小技巧:套用 build-exam-server skill 產生線上測驗系統時,輸出資料夾預設會取名叫 server/;如果你希望改個名字(例如想跟專案裡其他資料夾命名習慣一致),只要在提示語裡直接指定「我要叫它 app/」就好,不需要先建好再手動搬移或改名。
repo/ 放六組各 10 題的練習題庫:115 專業科目(一)A/B、115 專業科目(二)A/B、115 數學 A-A/B。app/(注意,這裡刻意不叫 server/)放可以直接執行的伺服器成品,已經依這六組題庫設定完成;可以直接跳到「啟動伺服器」查看現成範例,或重新套用一句話指令練習整個流程。
做完這份教學,你應該能夠:
build-exam-server skill 預設會把伺服器放在題庫資料夾旁邊、取名叫 server/,也知道怎麼在提示語裡明確指定別的資料夾名稱(例如 app/)。repo/ 這樣的題庫資料夾(每題一張 *.png 圖片,加上一份 JSON 答案檔)。本教學直接使用專案內建的六組練習包;每組各有 10 張題目圖片與一份 115keys.json。如果你的專案裡已經有 .agents/skills/build-exam-server/ 這個工具,請在提示語中講清楚它的位置,讓 Codex 能讀取並依說明執行;如果還沒有,把需求講清楚就好,讓 Codex 自己判斷要不要另外寫一支小工具。
先確認 Python 3 已經裝好:打開 PowerShell,輸入python --version(找不到就再試python3 --version)。如果出現版本號(例如Python 3.12.4)就代表已經裝好,可以跳過這一步。如果出現錯誤訊息,或跳出「你要開啟市集嗎」的視窗,代表電腦還沒有能執行的 Python:到 Windows 的 Microsoft Store 搜尋「Python 3.12」,點取得安裝即可(不需要系統管理員權限,也不用另外設定 PATH)。安裝完成後,請關閉並重新打開一個新的 PowerShell 視窗再試一次python --version。
照 skill 的預設行為,伺服器會自動產生在題庫資料夾旁邊、取名 server/。如果你希望改個名字——例如想跟專案裡其他資料夾的命名習慣一致——只要在提示語裡直接講清楚要放在哪裡、叫什麼名字,Codex 就會照你指定的位置產生,不會照預設值:
建置一個線上測驗系統,包含學生作答頁與教師即時監考儀表板,
把產出的應用程式放在 ./app 目錄。Codex 會依 skill 的說明分析 repo/ 底下的六組題庫,在 app/ 產生或更新伺服器程式、學生作答頁、教師儀表板頁與設定檔——跟預設流程唯一的差別就是資料夾名字換成你指定的那個。由於 app/ 已經是這一步驟跑完的成品,重新套用時應視為更新:保留既有設定與 data/sessions.json 的作答紀錄,不要在未確認前清除它。
這個「明確指定輸出位置」的技巧不是只能用在資料夾名稱上:路徑要放深一點(例如 tools/exam-app)、或是想沿用某個既有資料夾當設定檔位置,都可以直接在提示語裡講清楚,Codex 會照做,而不是每次都套用同一個預設值。
跟雙擊 HTML 開啟的網頁不一樣,這裡需要在 PowerShell 打一行指令,並且讓這個黑色視窗維持開啟,直到考試結束:
cd app
python server.py如果打 python 出現「不是內部或外部命令」之類的錯誤,改打 python3 server.py 試試看;兩個都不行,代表 Python 還沒裝好,回到上面「先備條件」處理。
指令執行後,畫面應該會停在類似這樣的內容,而且不會自動結束(這是正常的,代表伺服器正在執行):
Student page: http://192.168.1.23:8000/
Dashboard page: http://192.168.1.23:8000/dashboard
(this machine) http://localhost:8000/
Press Ctrl+C to stop.
192.168.1.23 只是範例,每台電腦、每個 Wi-Fi 環境印出來的數字都不一樣,請以自己電腦實際印出來的那組為準,不要照抄這裡的範例。Student page 那一行是要交給學生的網址;Dashboard page(多了 /dashboard)是老師自己看的監考頁面,兩個不要給錯對象。
第一次執行可能會跳出防火牆詢問:Windows 可能會跳出「Windows Defender 防火牆已封鎖此應用程式的部分功能」視窗,請勾選「私人網路」並按允許存取;如果按了取消或忽略,學生的裝置會連不上。
Student page 那個網址(例如 http://192.168.1.23:8000/)用投影片、白板或口頭方式交給學生,讓他們在自己的手機、平板或筆電瀏覽器打開。打開 Dashboard page 那個網址(網址結尾是 /dashboard),畫面每 3 秒會自動更新一次,每位已經打開學生作答頁的人會各自出現一張卡片:
| 卡片狀態 | 顏色 | 代表意義 |
|---|---|---|
| 已加入 | 灰色 | 學生已輸入姓名進入測驗,但還沒開始選答案 |
| 作答中 | 藍色 | 已經選了至少一題答案,進度條顯示目前答了幾題 |
| 已交卷 | 綠色 | 已按下交卷,卡片會直接顯示這次的分數 |
| 連線中斷? | 紅色提示 | 超過約 25 秒沒有動靜(沒換題、沒選答案),可能是該學生已離開頁面或網路不穩,值得走過去看一下 |
畫面上方有一個依考科篩選的下拉選單,以及整班的統計(已加入/作答中/已交卷人數、平均得分率)。右上角的「清除名單」按鈕會清空目前畫面上的作答紀錄,換下一班上課、或是想重新測試時再使用,平常上課中不要誤按。
Ctrl+C,或直接把視窗關掉即可。app/data/sessions.json 這個檔案裡,下次重新執行 python server.py 時會自動接續,不會不見。app/data/sessions.json 這個檔案。app/ 目前已經把六組練習包都設定好了。之後如果有新的一份題庫(例如下一次段考的考古題),準備方式一樣:每題一張 PNG 圖片,加上一份題號與正確答案相符的 JSON 答案檔,放進 repo/<新資料夾名稱>/,再用下方提示加進既有的伺服器設定。
repo 裡新增了一組完整題庫,包含每題圖片與 JSON 答案檔,
把它加進線上測驗系統,不要動到原本六組的設定。完成後,重新啟動伺服器(Ctrl+C 停掉舊的,再重新執行 python server.py),新科目應該會出現在學生作答頁的下拉選單裡,原本六組練習包維持不變。建議自己先用另一台裝置走一次完整流程再讓學生使用。