Community연구 & 데이터 분석github.com

5219rayhsu/open-book-is-good-skill

開卷有益・方法層:教 AI agent 從官方開放試題以 clean-room 方式復刻一套考古題自學系統的 Claude skill。

open-book-is-good-skill란 무엇인가요?

open-book-is-good-skill is a Claude Code agent skill that 開卷有益・方法層:教 AI agent 從官方開放試題以 clean-room 方式復刻一套考古題自學系統的 Claude skill。.

지원 대상Claude CodeCodex CLI~Cursor
npx skills add 5219rayhsu/open-book-is-good-skill

Installed? Explore more 연구 & 데이터 분석 skills: obra/superpowers, affaan-m/quarkus-verification, affaan-m/uspto-database · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

開卷有益 Open-Book-Is-Good:考古題自學系統復刻手冊

官方開放試題資料長成一套「考古題自學系統」的判斷式復刻手冊。給載入此 skill 的 AI agent 執行:偵察資料源 → 下載轉檔 → 判斷式解析 → 題庫 → 答案配對全驗(必跑)→ 裁圖 → 詳解(含查證紀律)→ 詳解紅隊(必跑,問使用者全跑或抽查)→ build 單檔/網站。已在國考跑通, 方法正延伸嘗試臺灣升學(學測 GSAT/會考 CAP)等其他公開試題。

兩道不可略過的必跑門(與「品質門檻」表一致):

  1. 答案配對全驗 —— 解析出的每題答案,逐題對官方標準答案核對,全跑、不抽樣。 這道擋的是解析時的整體錯位(例如某題答案套到下一題),結構檢查(答案落在 A–D 範圍)擋不到。
  2. 詳解紅隊 —— AI 生成選擇題與申論題解析後,一定要反駁式紅隊查核;執行前 詢問使用者要「全跑」(逐題查)還是「抽查」(統計停止規則),不得跳過。

何時用這個 skill

  • 手上有官方公布、可自由重製的試題(依著作權法 §9,見 §9),想把它變成可練習的題庫。
  • 要復刻或擴充「開卷有益」這類考古題自學系統:新增一個科目、一個年度,或一整套新考試 (換國家、換考別)。
  • 需要把 PDF 試題轉成結構化題庫、裁出圖式題的圖、生成 clean-room 詳解、打包成離線單檔 或網站。

不適用:受著作權保護的商業題本(出版商編排、詳解);非公開、需授權的試題。


核心哲學:judgment 式,不是死腳本

這套流程的靈魂是一句話:先查真實資料再選策略,並內建品質門檻。

  • judgment 式、不是死腳本:每一卷的版面、題型、答案鍵格式都不同。解析器要先「偵測 這卷的實況」(有沒有題組?幾選一?有沒有多選/非選?答案鍵長怎樣?圖多不多?), 再選對應策略 —— 而不是硬套一支萬用腳本。學測較複雜(5 選項、多選、非選、混合題並存, 每科結構差很多),會考較單純(全 4 選一單選)。所以幾乎每科一個 parser
  • 內建品質門檻:judgment 不是隨意,而是把維護者的判斷固化成每次都遵守、不漂移 的門檻(見 §4)。寧可漏、不可錯:規則分情況(圖片題 vs 文字題、題組 vs 獨立題), 不一刀切。
  • 先查實際資料再下判斷:抓到官方答案後用 len(answer) 推題型,比從題幹文字猜可靠; 用官方答案表當權威題號清單,過濾掉附錄被誤判的孤立數字。判斷依據是真實資料,不是規格 或假設。

7 phase 流程概覽

偵察 → 下載轉檔 → 判斷式解析 → 題庫 →【答案配對全驗・必跑】→ 裁圖 → 詳解
  →【詳解紅隊・必跑(全跑或抽查,問使用者)】→ build

每個 phase 都有對應的 references/ 深入文件,agent 執行時載入對應檔。

Phase 1:偵察資料源 → references/data-sources.md

找到官方試題與標準答案的實際所在。兩個已驗證的資料源模式:

  • 伺服器渲染(學測走大考中心 ceec.edu.tw):列表頁是靜態 HTML,curl -A Mozilla 直接抓得到,用 python 正則從 HTML 直取 file_pool/*.pdf 連結。curl + python 優於 WebFetch(WebFetch 會摘要、可能漏改連結)。
  • JS 渲染(會考走心測中心 cap.rcpet.edu.tw):主頁前端渲染,curl 抓不到連結。 突破點是 examination.htmliframe 載入靜態頁 exam/{年}/{年}exam.html,該頁才 列出指向 Google Drive 的 file id。整理成 cap_drive_ids.json,由 fetch_cap.py 下載(已處理 Drive 大檔的病毒掃描確認頁、_is_pdf() 合法性檢查、冪等跳過)。

碰到新資料源時,第一步永遠是偵察它的渲染方式,再決定 curl 直取或走 iframe/API。

⚠️ 政府/考試開放資料的檔名、編碼、版面年年漂移,是髒資料。 抓檔分類絕不要 exact-match—— ceec 113 數A 的試題檔名少了一個「學」字(數a 而非 數學a),exact-match 直接漏抓整科整年、還 exit 0 不報錯。比對前一律 unicodedata.normalize('NFKC', s)、用別名集合寬鬆比對、零筆即 sys.exit(1) 別覆蓋好資料。完整原則+ceec 教學案例+攝取前自檢清單見 references/dirty-data-robustness.md, Phase 1~3 都適用。

Phase 2:下載轉檔 → references/parsing.md §1

PDF 先用 markitdown 轉 markdown:

markitdown data/raw/{年}_{科}_試題.pdf -o data/raw/{年}_{科}_試題.md

markitdown 有版面理解,散文(題幹、題組引文 passage)閱讀序乾淨,這是 raw pymupdf 做不到 的。但 markitdown 不是萬靈丹:多欄並排選項、複雜統計表、特殊版面(會考英語)會翻車, 這時改用 pymupdf 座標序(get_text("dict")(page, y, x) 排序)。判斷哪邊可靠正是 judgment 的一部分。答案 PDF 不轉 md,走 pymupdf find_tables() 直接解析表格。

Phase 3:判斷式解析 → references/parsing.md

先偵測「這卷長怎樣」(§2 的偵測表),再選策略。落實到程式的具體手法:

  • 題型由答案推斷len(answer) > 1 → 多選;單字母 → 單選;空且無選項 → 非選。
  • 答案表是權威題號清單:用它過濾誤判的孤立數字。
  • 題組跨度合理性檢查:標頭抓到 (a, b) 要求 a <= b、跨度不過大。
  • 選項殘缺 → fallback:答案是某字母但只解析到 < 4 選項 → 版面被打碎,改 pymupdf 座標 重抓該題。
  • 選項圈號組合本身塌縮,不是解析器的錯:部分年度官方 PDF 的字型 ToUnicode 對映本身壞掉, 自製 parser/第三方 API/pdftotext 三條管線會複製同一種毀損,交叉比對抓不出來;偵測判準、 排序題豁免、vision 復原的硬門見 references/dirty-data-robustness.md「官方 PDF 文字層本身 會壞」一節。
  • 題組作答政策分類(承上題判斷,給平臺拆題用):這是「題目分類」要在解析時一次標好的關鍵一項。讀每個子題 stem 判斷它能否「單獨出現」:引用同組兄弟題者(承上題依前題根據第 N 小題同上題條件利用前小題的結果)→ 標 standalone=false(平臺須整組一起出,≥2 題同時作答);其餘 → standalone=true(可單獨出,但自帶共用 passage/圖)。關鍵分辨:「上述/如圖」指的是共用材料(passage/圖 → 仍可單獨)還是前一子題的內容/答案(→ 不可單獨)。判斷式、解析時定(落欄見 Phase 4)。

每科一個 parserparse_gsat.pyparse_eng.pyparse_soc.pyparse_cap_*.py), 共用同一份 schema 與 qid-keyed 冪等 merge(重跑某科只覆蓋該科)。逐字忠實:絕不改寫、 摘要、翻譯;跳過卷首測驗說明;題組 group_idpassage 綁定、絕不拆散。

Phase 4:題庫 bank.json → references/data-sources.md §5

純文字題庫,每題一物件。核心欄位:qid(全域唯一鍵)、examyearsubjectnogroup_idpassagestemoptionsanswer(可多選)、typeneeds_figurefigure只存檔名)。圖只存檔名、永不存影像,讓題庫可 lint、可 diff、git 可 delta。

  • 題組欄位(共用材料+作答政策)group_id 綁同組(解析時建、絕不拆散)。新增 standalone(bool,預設 true)=該子題能否單獨出現;承上題類標 false → 平臺在模擬題/單題/錯題/弱點等模式必須整組一起出、不拆true 者可單獨抽出。共用圖與 passage 必須寫進該組「每一個」子題(每子題都帶自己的 figurepassage,即使共用同一張),否則一個 standalone 子題被單獨抽出時會缺圖、缺材料而變廢題。分類在 Phase 3 判斷、此處落欄;圖的 group propagation 見 Phase 5。這兩欄落地後,前端引擎怎麼在不同作答表面顯示題組情境(原文完整引入、只引題幹、鏈式堆疊、各表面分工),見 references/frontend-engine-rules.md §1。
  • 轉寫題幹要留定位錨點stem 預設逐字忠實;但數學等題若把題幹轉成 LaTeX 或清洗後顯示,轉寫過的 stem 已對不上原卷 PDF 文字層,裁圖(Phase 5)靠 stem 比對定位就會失敗或抓錯區塊。凡會改寫 stem,就另存一條 PDF 忠實的定位錨點(建議欄 locate_anchor:題號+第一個數學符號前的純散文前綴、要求頁內唯一),定位走它、永不顯示。為何不能用 ASCII 化整段救:PDF 的數學符號文字層本身常是 PUA 造字/壞 ToUnicode/根本沒編碼,匹配不到不存在的字。詳見 exam-pdf-asset-extractor「Locating the Question」。

必跑門 A:答案配對全驗(每題逐一,不抽樣)

這是不可略過的步驟,每次都要跑、而且是全跑。

題庫成形後、進詳解前,把每一題的 answer 逐題對官方標準答案核對,列出所有對不上的題(mismatch),修到 0 mismatch 才往下走。(只管選擇題;申論/計算題無官方標準答案,不適用此門,改靠 Phase 7 的申論紅隊角度。)

  • 為什麼非跑不可:答案來自官方標準答案 PDF 不代表「對到正確題號」。PDF 解析常見整體錯位(某題答案套到下一題),這種錯結構檢查擋不到(答案還是落在 A–D 範圍、看起來正常),只有逐題比對抓得出來。
  • 全跑、不抽樣:答案配對是「對或錯」的硬事實,抽樣只能給信心區間、給不出「哪幾題錯」。所以這道門逐題全驗,與下面詳解紅隊的「可抽查」不同。
  • 方法:獨立重新解析官方標準答案來源(PDF find_tables / 答案表),與 bank.jsonanswer 逐題 diff;用官方答案表當權威題號清單對齊。輸出只印計數與 mismatch 清單(qid、bank 答案、官方答案)。
  • 國考護理師即用此門全驗 600 題、0 mismatch;舊建的考試若未跑過,補跑這道門。

Phase 5:裁圖 → references/figures.md

圖式題缺圖等於廢題,所以裁切原卷版面區塊 render 成 PNG,忠實重現、不簡化重排。

  • 不靠 page.get_images():地圖/統計圖多為矢量繪製,抓不到內嵌點陣,或會漏掉向量層。 改用 pymupdf 整塊 render(raster + vector 一起點陣化,zoom 2.2)。
  • 定位題目:學測用 stem/題組標記的文字前綴(長前綴優先 + 要求唯一);會考用題號行 (左邊界穩定)。題組圖放 passage 區、獨立題圖放題幹後。
  • 題組共用圖 → 寫進全組子題:一張題組共用圖只裁一次(放在實際出現的子題位置),但 figure 欄要 propagate 到該 group_id 的每一個子題。偵測器只給「圖 → 所在題號」這一筆,group 補齊是 wire 進 bank 這步用 group_id(偵測器不知道分組)。不補的話,可單獨出的子題(Phase 4 standalone=true)在模擬/單題/錯題/弱點被單獨抽出時就缺圖。
  • 圖→題對應隨考試家族變,別套同一管線:數學圖在題幹下方(對最近上方題號);非數學圖常是題號上方的共用材料或相鄰單題共用無 group → 用「caption-anchored(讀圖的 圖N caption 對應引用該標籤的題)」優先,無標籤(如會考多為指示詞)退「position(圖在頁頂→給下方首題)」。needs_figure 非數學雙向都會錯:漏抓(寬圖被濾、頁頂圖丟)要回收、假旗標(純文字題/\dfrac 公式題)要降旗。每個(考試家族×科)先抽 1-3 卷判 needs_figure 是否整批盲標、有無 圖N 標籤、圖在題上或題下,再選方法。完整見 exam-pdf-asset-extractor「Mapping figures to questions」+「What varies per exam family」。
  • 轉寫過的題幹定位會失敗(數學最慘):LaTeX/清洗過的 stem 對不上 PDF 文字層,會出現「stem 無法定位」或抓到純文字假圖(band 偏矮 = 抓錯區塊的警訊,與裁切到圖同一類,commit 前一起複查)。定位錨點改用題號+符號前的純散文前綴(或 Phase 4 的 locate_anchor),別比對整段 LaTeX stem;圖不一定在題幹與選項之間(數學常在 stem 上方或題組共用區),真圖改用 image/drawing-rect 錨點。
  • 裁數學圖前先看站上的渲染能力:若部署端已用 KaTeX/MathJax 渲染 LaTeX,許多數學 needs_figure=true 是舊離線單檔版「把公式截成圖」的遺留——重審後降旗、交給渲染器畫,只有真幾何圖(多面體、座標圖、電路/結構圖)才裁。對每個數學 needs_figure 硬裁只會產生純文字假圖。
  • 假圖訊號(答題說明/劃記 boilerplate):升學試卷 Q1 前常有獨立的「選填題答案卡劃記說明」頁(網格+劃記範例),對任何墨偵測都像圖、是強假陽性(每份學測數學 p0 都有);國考考選部試題 PDF 則乾淨(直接從第 1 題起、答案卡另份)。第一道防線=跳過無題號頁+圖必對應某題,即可濾掉。詳見 exam-pdf-asset-extractor「Known False-Figure Signals」+「Erase-Text Figure Detection」。
  • band 邊界:上界留 padding 不過頁眉;下界取下一題起點當硬上限;圖底保護band_image_bottom)確保不切半張圖。寬度一律整頁寬單欄(不依文字 x0 切欄,否則 「文字左圖右」的並排圖會被切掉)。
  • 保真不壓縮:不用 pngquant、不降 DPI(地圖失真影響判讀);只做無損最佳化(如 oxipng)。

腳本:extract_figures.py(學測 S/G 命名)、extract_figures_cap.py(會考 C 命名), 皆有 --dry-run 先驗 band。

Phase 6:詳解(含查證紀律) → references/explanations-redteam.md

clean-room 自行生成詳解,絕不抄出版商。 輸入只有「題幹 + 選項 + 官方標準答案鍵」, 不把出版商詳解寫法餵進 prompt。每則詳解兩個欄位 {t, c}t 是詳解本文,c 是把握度 (highmedlow),讓使用者一眼看出這是「AI 整理」而非權威定論。正本 explanations.jsonmeta.note 固定寫明須查證。詳解以 qid 為鍵、冪等 merge (merge_stage3.py 是唯一寫入者)。

詳解涵蓋 AI 生成的選擇題詳解與申論題解析。凡是 AI 生成的解析(含申論/短答/中譯英參考要點), 一律走下面 Phase 7 的必跑紅隊;官方分級樣卷不是 AI 生成物,不在此列。

t 不是想寫多長就寫多長:三段固定結構(正解/逐一選項辨析/本題考點,段間空行)、 同因選項的合併解析規則、字數上限(概念型 600 字、計算題不受限),見 references/explanations-redteam.md §1.4/§1.5。量產詳解的模型要趨近強模型下筆的水準, 靠金樣 few-shot、結構 lint 零 token 硬門、檢索錨定、分級路由、審計回饋圈五個機制, 見 §2.1。

Phase 7:詳解紅隊(必跑)+ build → references/explanations-redteam.md §3、references/build-deploy.md

  • 必跑、不可跳過:AI 生成選擇題與申論題解析後,一定要紅隊查核才能進 build。
  • 執行前先問使用者:要 全跑(逐題查)還是 抽查(統計停止規則)?由使用者拍板,agent 不自作主張跳過或默認。
    • 全跑 —— 每則解析逐題反駁式查核(題量小、求穩、或答案爭議多時)。
    • 抽查 —— 抽樣真錯k ≥ 4/40(Wilson CI 下界 ≥ 4%)才升級該科到更強模型重做;否則續用現模型。動態停,邊抽邊看。
  • 反駁式紅隊(選擇題):用最強模型主動找碴(正解寫反?措辭誤導?事實過時?把握度標太高?),不是覆述。
  • 申論/無官方答案題:錨點不同(沒有官方答案可對),改用 references/explanations-redteam.md §3.4 的六角度(計算重算/準則法條/題意覆蓋/時效/捏造引用/把握度),計算題務必獨立重算。
  • 節制門:只修確認的錯,不為改而改;改完重 lint、重驗。
  • buildbuild_app.py 純標準庫、確定性。一場考試一份自足單檔(不出合併版),外加 repo 根 index.html 索引。圖在此步才 base64 內嵌進 window.__FIGS__。前端 ES5、el()textContent(杜絕 XSS)、檔 < 800 行。網站版(PWA)走 Service Worker cache-first + 圖隨選快取;改 shell 必把 CACHE 版號 +1。每次改 build/前端後跑 preview smoke (0 console error 才算過)。

build 出來的引擎本身還有一層互動邏輯要顧:單題練習下一題怎麼挑(弱項 Laplace 加權+ 指紋冷卻+定期回鍋複習)、「標記」與「儲存」兩個相似按鈕怎麼分工(作答內記號+回顧介面 折角 vs 收進獨立頁的專練集合),見 references/frontend-engine-rules.md §2、§3。

完整端到端範例見 examples/walkthrough.md(學測社會 111,最難啃的一科)。


品質門檻(每次都遵守、不漂移)

門檻規則
答案配對全驗(必跑)每題 answer 逐題對官方標準答案核對、全跑不抽樣,修到 0 mismatch 才往下;擋解析整體錯位(結構檢查擋不到)。
詳解紅隊(必跑)AI 生成選擇題與申論題解析後一定要反駁式紅隊;執行前問使用者全跑或抽查。抽查時真錯達 k≥4、n≈40(Wilson CI 下界 ≥ 4%)才升級該科到更強模型;否則續用。
全形 lint中文段落不可混半形標點;CI 一道門(lint.py + lint.yml)。修正用 CJK 前綴規則(CJK 字後緊接的半形子句標點才轉),寧可漏轉、不可誤轉(保住比值 3:1、數字後標點)。
詳解須查證每則標把握度 c + meta.note 寫明「AI 整理,非官方標準答案,須查證」。
節制門只修確認的錯(判定寫反、事實錯、把握度明顯標錯),不為純措辭改;改完重 lint、重驗,最小變動面。
逐字忠實解析絕不改寫/摘要/翻譯;題組絕不拆散;自驗把「忠實」變可檢查條件。

模型路由

依成本守則分三檔,把錢花在真正需要推理的地方,並避免「便宜生成 → 昂貴查核」的成本倒置

工作模型
解析生成(選擇+申論;文字/事實/計算皆是)Opus 或 Codex 大模型(部分或全部,看使用者)
紅隊查核Opus 或 Codex(往上查,見原則 1)
機械化(答案配對核對、下載/轉檔/檔案搬移、結構/全形 lint)Sonnet/Haiku

兩條原則:

  1. 紅隊往上查(reviewer ≥ generator):查核者須 ≥ 被查者,否則漏抓真錯又亂標假錯。Sonnet 不當內容紅隊,只做機械化與結構 lint。
  2. 避免成本倒置:便宜模型生成、被強模型大量重寫=付兩次。解析直接上強模型一次到位、紅隊只需輕度確認,整體更省。

實測校準(會計師,2026-06):Sonnet 計算 ~67% 錯、文字 ~20% 錯;Codex 計算 ~8% 錯。

查核固定用最強模型。詳解紅隊本身必跑、不可省;但全跑或抽查由使用者決定——抽查時靠統計 停止規則決定要不要升級,不逐題重判。升學分支實測(國文/英文/社會):Sonnet 生成 + Opus 抽驗, 真錯率遠低於升級門檻,故各科續用 Sonnet。(答案配對全驗例外:那道門一律全跑、不抽樣。


§9 著作權與 clean-room

法律依據:著作權法 §9.1.5

依法令舉行之各類考試試題及其備用試題,不得為著作權之標的。

因此官方試題與標準答案可自由重製,不需授權、不付費。標準答案作為權威答案鍵使用。

clean-room 紀律(受保護的不能碰)

§9 解放的是「試題」本身,不解放出版商加值的部分:

  • ❌ 不抄出版商的編排(分類、難度標註、章節對應、選文導讀)。
  • ❌ 不抄出版商的詳解;出版商答案/詳解寫法不餵進任何生成 prompt。
  • ✅ 詳解由我們自行生成(只看官方試題與官方答案),全標「AI 整理,需查證」並附把握度, 經 lint + 必跑紅隊(全跑或抽查)。
  • ✅ 作文採官方分級樣卷(最高分→低分),不 AI 代寫完整作文;英文短答/中譯英近乎有標準 答案,可由 AI 整理參考答案並標明須查證。

授權:方法與程式碼(scripts、引擎)採 MIT;題目資料依 §9 屬公共所有;作文範本屬官方機關 依其授權提供。理由(見產物 docs/DECISIONS.md):norms over laws,與其用 copyleft 強制衍生 開源,不如把 fork/改作/商用的自由給滿,讓「開放比封閉更好用」自己長出規範。


三層文件(別混為一談)

復刻時要寫三份對象不同的文件,剛起步的開源專案最常漏掉第三層:

文件對象內容
SKILL.md(+ references/AI agent復刻手冊本體,給 agent 載入執行(即本檔)。
skill repo 的 README.md逛 GitHub 的人門面:這 skill 是什麼、怎麼裝、怎麼用、授權。
產物/專案 README.md大眾/貢獻者理念 + 如何貢獻 —— 對社群參與最重要,但最常被漏掉。

base64 安全鐵則(最高優先)

把任何 base64 字串塞進對話/終端/工具輸出,會觸發 Anthropic AUP 內容過濾器、kill 掉 session —— 這是專案鐵則,整套圖架構就是為了讓 base64 全程不進那些通道。

資料流三段、職責清楚(只描述架構,永不貼任何 base64 內容):

原卷 PDF ──extract_figures──► data/figures/{檔名}.png   (獨立二進位 PNG)
                                      │
bank.json 只寫 figure="{檔名}.png"     │  (純文字、可 lint、可 git delta)
                                      ▼
build_app.py 建置時:PNG ──► base64 ──► 內嵌進 window.__FIGS__(輸出 HTML 內)

鐵則細項(agent/貢獻者務必遵守):

  • 絕不把任何 base64 字串放進對話、終端輸出、工具參數、Read 結果。
  • 裁圖/批次腳本只 print 計數與大小(張數/位元組/檔名/座標/缺檔清單);要看圖就 用 Read 開 PNG 檔,不 cat、不 head、不把 bytes 餵進 prompt。
  • bank.json/staging JSON 只存檔名;base64 只活在 build_app.pyfigures_block() 內部與最終 HTML。
  • js_safe_json() 把資料裡的 </ 轉成 <\/,避免內容裡萬一出現 </script> 提早關閉標籤。

範圍是對象決策,不是技術決策

收哪些年度/課綱/考別,由維護者依服務對象拍板(升學分支:只收新課綱 111–115)。換對象 (收舊課綱、另一國家的考試)時自行調整收錄範圍,其餘流程(偵察→下載→解析→題庫→裁圖→ 詳解→build)不變。學測與會考同平臺、考試選擇器切換、預設不跨考混題;國考各考試對使用者 各自獨立呈現。

但國考端有「共用槓桿」:不同考試常共用基礎科目(如臨床/諮商心理師共用變態心理學、 心理衡鑑等)。開一套新考試前先做「科目重疊矩陣」,共用科目建一次、用 exams 陣列標 歸屬、題庫層去重(同一份官方卷才併),省工又保證兩考試一致 —— 見 references/shared-question-banks.md

混卷模擬考跨年跨卷抽題時還有另一層去重:組卷前的內容指紋去重(題幹+排序選項), 與「題幹相同、選項全異」的跨年孿生題絕不可 stem-only 誤刪,同場互斥改靠獨立的 題幹指紋+萬用題幹豁免——同樣見 references/shared-question-banks.md


references 索引

主題
references/data-sources.md資料源偵察、下載、著作權 §9、clean-room、bank.json schema
references/parsing.mdjudgment 式解析、markitdown vs pymupdf、每科 parser、冪等 merge、自驗
references/figures.md裁圖(整塊 render)、定位、band 邊界、base64 安全架構、保真
references/explanations-redteam.mdclean-room 詳解、三段固定結構+合併解析規則、品質拉齊五機制、模型路由、反駁式紅隊、Wilson 停止規則、節制門、lint、作文政策
references/build-deploy.mdbuild 單檔/網站、PWA/Service Worker、體積永續、產物層收斂決策
references/dirty-data-robustness.md政府/考試開放資料的命名/編碼/版面髒點:NFKC 正規化、寬鬆匹配、零筆即報、不吞錯、原子寫入、官方 PDF 文字層 ToUnicode 塌縮的偵測與 vision 復原硬門;含 ceec「數a 少學字」教學案例+攝取前自檢清單
references/shared-question-banks.md跨考試共用題庫(國考用):科目重疊矩陣、共用科目建一次、exams 陣列多考試標記、同一份官方卷才併的去重紀律、混卷模擬考內容指紋去重、跨年孿生題不可 stem-only 去重
references/frontend-engine-rules.md前端作答引擎:題組/承上題情境引入規則(各作答表面分工)、出題演算法(弱項加權、指紋冷卻、回鍋複習)、標記與儲存的職責分工
examples/walkthrough.md端到端範例:學測社會 111(最難啃的一科)
examples/sample-output/真實產出切片:學測社會 111 題組(passage+小題+圖+詳解 JSON),看管線跑完長什麼樣
scripts/各 phase 的參考實作(model 腳本:scrape/parse/裁圖/merge/build);judgment 式、需依自身資料調整,見 scripts/README.md

관련 스킬