Skip to content

thc1006/ipas-net-zero-quiz

Repository files navigation

淨零碳規劃管理師備考神器 | iPAS 淨零碳規劃管理師考古題

Deploy Quiz App to GitHub Pages Quiz App CI codecov

線上測驗:https://thc1006.github.io/ipas-net-zero-quiz/

題庫

題數 說明
主題庫 775 題 考科一 433 + 考科二 342。其中 159 題由來源 PDF 分欄重建
加強練習池(選用) 154 題 54 題公開模擬題 + 100 題 AI 產題。預設關閉,需於設定頁 opt-in

考科歸屬依官方「iPAS 能力鑑定簡章」§2.5 評鑑內容(L11 / L12)劃分: CBAM、ISO 14068-1 屬科目一科目二只涵蓋 ISO 14064-1 與 ISO 14067

考科範圍

考科一:淨零碳規劃管理基礎概論

  • 淨零排放國際發展與政策趨勢、CBAM、Paris Article 6
  • 永續發展與碳中和目標、PAS 2060 / ISO 14068-1
  • 溫室氣體基礎知識、IPCC GWP(AR5 / AR6)
  • 碳管理策略與工具、SBTi、ISSB IFRS S1/S2

考科二:淨零碳盤查規範與程序概要

  • ISO 14064-1:2018 六分類(Cat 1–6)盤查範疇
  • 組織碳盤查邊界(營運/財務/股權控制法)
  • 排放係數與計算方法、AR5 GWP(環境部 113/2/5 公告)
  • 碳盤查報告與查證、CFP-PCR、產品碳足跡(ISO 14067)

功能

  • 練習 / 考試兩種模式,可依考科與題數出卷
  • AI 解析(Puter.js,免 API key)
  • 無障礙:高對比、色覺辨認(CVD)模式、字級調整、深色模式
  • 成績與錯題匯出
  • AI 產題依 EU AI Act Art.50(2026-08-02 起)揭露,UI 顯示警示徽章

這份題庫可不可信

我們把「可不可信」做成可以自己驗證的東西,而不是一句宣稱 —— 包括老實說出哪些地方還做不到:

  • 先講最重要的一件事:「引用被驗過」不等於「答案是對的」

    這個專案過去所有的檢查,查的都是引用(那一頁上有沒有這句話)。 沒有一道在查答案本身。 32 個錯答案全部是靠人一題一題挖出來的。

    而 iPAS 公版教材的範例題 PDF 是直接印答案卡的。 我們把題庫的答案拿去跟官方答案卡逐題交叉比對 —— 這是本專案 第一個能機械驗證「答案」而非「引用」的檢查

    121 題的答案已與官方答案卡逐題對過tools/answer_key_crosscheck.py)。 這些答案被釘死在資料裡:任何人改動它們,CI 就紅。

    比對必須按「文字」,不能按「字母」 —— 題庫把選項順序打散、文字也改寫過。 我親手踩過:教材答案卡印 (D)、題庫標 (A),我差點宣告那是錯答案 —— 但教材的 (D) 就是題庫的 (A)。字母是排版,文字才是內容。

    後來我們把全庫(當時 927 題)的答案都走過一遍語意複核。 除了少數純算術題(靠 CALC 回歸表逐題重算)與已撤答案(排除計分),其餘每一題都有可追溯的 驗證訊號 —— 官方答案卡逐題對照、逐字引文機械比對、或語意釘定審查其一,其中 121 題以答案卡逐題核對。 複核途中又挖出幾個實質錯答案並修好(多產品分攤法、碳交所啟用日誤植、ISO 14067 答案卡誤置等)。

    界線還在,我們不假裝「都複核過」等於「絕對零錯」:語意複核是「代理判定+人逐批抽樣+ 逐一複核所有非直接命中的題」,不是每一題親手重讀;一批概念題/否定題只能以概念與排除法確認、 沒有單一逐字釘句;還有一份官方答案卡 PDF 抓不到,該卷的題目無法對卡。

    這支新工具報出的唯一一個「錯答案」,是它自己不懂規矩。

    S_CHU_06-q094「什麼是溫室氣體盤查的基線年?」—— 答案卡印 (D) 以上皆非,題庫標 (C)。 我查了命題依據(公版教材裡「基年」16 次、「基年」0 次), 認定那是術語陷阱,動手把答案改成了 D

    然後既有的 gate 把我攔了下來:restoration-manifest早就登記著 answer_key: "D", 外加一筆 2026-07-13、寫明一手依據answer_override —— 前一輪的人知道答案卡是 D, 而刻意採 C,理由是 ISO 14064-1:2018 對 base year 的定義與選項 C 逐字相符。

    那不是漏網之魚,是一個有記錄的決定。而我沒讀記錄就把它推翻了。 那道 gate 的註解早就寫著:「隨便推翻它,整條證據鏈就沒有意義了 —— 『這題我覺得應該是 C』不是理由。」「我覺得應該是 D」也不是。

    已回復為 C。真正的病是:我的新工具完全不知道 answer_override 這套機制存在 —— 兩個互不知道的系統一定會漂。現在它會讀那份 manifest,並把這類偏離 報成 DOCUMENTED_OVERRIDE 而不是「錯答案」。 同時把反面證據(教材裡「基線年」0 次)寫進那筆 override —— 一個刻意的判斷, 就該把最強的反駁記在它旁邊,而不是藏起來。

  • 一半的題目沒有解析 —— 而補解析的過程,證明了很多「已驗證的引文」是空的

    主題庫 775 題裡,原本有 420 題完全沒有解析:使用者答錯了,看不到任何說明。 這不是「答錯」,是「學不到東西」,而後者才是這個工具存在的理由。

    其中 387 題身上已經有一段經機械驗證的逐字引文,所以解析可以只用那段引文寫成 —— 不引入任何引文以外的條號、標準編號、附錄、百分比、年份或數量。

    這條約束不是自律,是程式強制的tools/explanation_guard.py)。 違反者一律退件、不寫入。它在這一批裡當場攔下 3 則憑空生出條號的解析

    為什麼要這麼嚴?因為我們剛剛才在 AI 產題上抓到這個病: 「年報準則 §10-4」(該準則沒有這一條)、「IFRS S2 之 Appendix B」(該附錄沒有這個條款)。 大方向對,細節捏造。 放手讓 AI 寫 387 則解析,就是開 387 個捏造條號的機會。

    結果:沒有解析的題目從 420 降到 18(其餘 41 題,要嘛答案是多重正解已排除, 要嘛引文釘不住而正在補一手來源)。

    而最後 14 題,我們誠實地交還給人: 9 題完全沒有來源(社群共筆考古題)、 5 題的來源是無效的iso.org/standard/*.html 是購買頁、vocus.cc 是部落格)。 這些沒有可驗證的一手依據,所以我們沒有替它們寫解析,也沒有動答案 —— 憑印象寫解析/改答案,正是這個專案最不能接受的事。 它們整理在 NEEDS-SOURCING.md,逐題列出題幹、選項、現行答案,等人親自補來源。 「找不到來源」寫成一份可操作的清單,好過假裝有來源。

    但真正重要的發現是另外 41 題 —— 它們的「已驗證引文」其實什麼也沒證明。

    這些引文逐字為真(來源頁面上真的有這句話),但:

    • 多數只是把題目和四個選項原樣抄一遍,沒抓到答案卡 —— 引文等於題目本身。 它證明「這題存在於來源」,卻沒有證明「哪個選項是對的」。
    • gist[472]:引文顯示國外減量額度「經認可後得扣除」—— 引文反而是答案的反證
    • gist[495]:引文是燃料熱值表,與題幹給的排放係數毫無關係

    這推翻了「① 逐字引文」這個等級的一部分保證力(也是現在這一級不再宣稱「抓回來逐字確認」的原因)。 「引文逐字存在」與「引文釘得住答案」是兩件事 —— 過去只驗了前者。

    原本 41 筆指控,逐筆追完了,每一筆都由我們自己抓一手來源複核

    • 24 筆是「我抓得太短」,不是資料錯 —— 引文被截斷、或漏抓了答案卡。重抓即可。 而第一版的自動修復差點洗白:判準寫成「答案的文字在新引文裡的覆蓋率」, 而那是子序列比對 —— 把窗口拉夠長,答案的每個字都能在裡面「找到」, 就算它們散落在不相干的句子裡。已改成逐字連續比對,gist[80]gist[123] 立刻掉回「撐不住」。那不是證據,那是洗白。
    • 一度誤判 gist[80] 答案是錯的 —— 因為只讀了碳費收費辦法 §9(國內): 「定期檢討第一項國內減量額度扣除收費排放量之上限及比率」,於是以為 (A)「國內」是錯的。 但後續(回報 #94)複核發現漏看了 §10:「定期檢討前項國外減量額度扣除收費排放量之上限」。 國內(上限及比率)+國外(上限)皆定期檢討,選項 (A)「國內外…上限及比率」成立。 已還原為 A、重回計分 —— 先前撤答案是漏看 §10 的誤判。(教訓:撤答案前要把整部法規讀完。)
    • 其餘 17 題答案都是對的,錯的只是引文 —— 引文引錯文件、只抄了題目、或被截斷。 每一題都補上了真正釘得住答案的一手來源:gist[139] 換成 IPCC AR6 綜合報告 (「the largest share … in CO2 from fossil fuels combustion」,而非教材的「能源部門占比」); gist[123] 換成 ETS 指令「From 2034, no CBAM factor shall apply」; gist[472] 換成碳費收費辦法 §10(國際自願碳權 ≠ 認可之減量額度)。
    • 其中一題是「代理過度指控,而我差點跟著走」gist[36](鋁製家具不納管)—— 代理說答案錯,我抓回 CBAM 附件一鋁類完整清單複核後發現:代理才是錯的 (家具是 HS 第 94 章,不在 CBAM 的第 76 章鋁類清單,其稅則 9403 在全法 0 次)。 每一筆代理的判決都自己複核,正是為了這個。
  • 練習池的 AI 產題:不用會,選最長的就能考 65 分

    一個備考工具最糟糕的失敗,不是「答案錯了」,而是 使用者靠著出題的破綻答對,然後以為自己會了。

    我們量了「無腦選最長」這個策略 —— 完全不看題目、每題直接挑最長的選項:

    題目來源 「無腦選最長」得分率 (亂猜 = 25%)
    練習池 AI 產題 65%
    主題庫 重建題(來源 PDF) 58.8%
    主題庫 gist(社群考古題) 45.9%
    練習池 公開模擬題 43.4%

    更露骨的指標:「正解比每一個誘答都長 2.2 倍以上」的比例 —— AI 產題 30.3%,而社群考古題只有 0.2%150 倍。這是生成時的指紋,不是統計波動。

    我們沒有修它。 用同一個 AI 去把誘答補長,很可能生出「第二個正解」—— 那比現在更糟。所以做的是:把數字釘死在資料上(CI 會驗),不准它變得更爛, 也不准 README 少說。

    這 100 題身上有一個 verify_verdict: CONFIRMED 的標記(99/100 都是)—— 那個標記毫無保證力:先前在這批題目裡找到的 13 個缺陷,13 個全部被標成 CONFIRMED; 這一輪新證實的 4 個缺陷,也是 4 個全部被標成 CONFIRMED。 練習池預設關閉,需要在設定頁主動開啟。

  • AI 產題的病不是「答案錯」,是「題幹裡的引註是捏造的」

    我們做了一次盲測:把題幹與選項交給獨立的評估者、不給題庫的答案, 要求重新推導正解,再與題庫比對。100 題全查。

    答案幾乎全對 —— 100 題裡只有 1 題的答案真的錯。 壞的是題幹與引註。

    已證實並修好的(每一筆都由我們自己抓回一手來源複核,不是採信評估者):

    • tw_regs_14-v2:原題前提是假的,四個選項都成立 —— 已改題幹救回。 環境部公告附表寫的是「一/各行業/…直接排放達 2.5 萬」、 「二/製造業/…直接+間接合計達 2.5 萬」—— 「直接排放即達 2.5 萬」的門檻適用於各行業,服務業、金融保險業、農林漁牧業 達標一樣納管;而原標的正解「電力業及指定製造業」又混入需加計間接排放的那一批, 原問法無單一正解。諷刺的是,證明題目錯的引文(附表第一列「各行業」)當初就擺在那裡。 修法:改問「第二批製造業之門檻如何計算」,唯一正解=直接+用電間接排放合計(附表第二批列逐字), 答案為 C、重回計分。(我也曾一度誤把它救回為 D —— 那才是把兩批判定基準講反;讀完整附表後已撤回並改為 C。)
    • tw_regs_33-v2:正解選項裡掛著一個捏造的條號。 選項 C 引《公開發行公司年報應行記載 事項準則》「§10-4」—— 我們抓回全文:「第 10-1 條」出現 1 次,「第 10-4 條」出現 0 次。 更難堪的是:這一題自己的解析早就標注過這個錯,但選項沒改 —— 而選項才是使用者 看到的「正解」。
    • ifrs2026-006:題幹與它自己的解析互相矛盾。 題幹寫「依 IFRS S2 之 Appendix B」, 而解析寫「規定在 IFRS S1 本文第 77–82 段」。S2 的 Appendix B 沒有這個條款。
    • tw_regs_09-v2:誘答自己也不是法定基金來源。 氣候法 §32 六款不含「罰鍰」 (罰鍰入基金是空污法的設計)—— 熟悉條文的人會在兩個選項之間擺盪。

    這是 LLM 的典型病:大方向對,細節捏造。 對備考工具而言,這比錯答案更陰險 —— 學生把假條號背起來,上考場就錯。

    另有 3 筆指控 + 10 筆「引文釘不住答案」尚未經我們親自複核, 已釘進 provenance.blind_review,並註明那是待驗證的指控,不是判決

    這個盲測的說服力有限,我們照實說:評估者也是 AI,而題目也是 AI 生成的 —— 同一種模型偏誤會讓兩者天然一致。「答案 99% 一致」不能讀成「答案 99% 正確」, 只能讀成「這一層過濾沒抓到更多」。真正獨立的驗證仍然缺席。

  • 來源 PDF 本身可能是壞的 —— 而「忠實複製」的檢查永遠是綠的

    159 題「由來源 PDF 分欄重建」的題目,有一套很完整的 sha256 證據鏈 (raw / canonical / dataset 三個 hash + transformations[]),CI 一直全綠。

    但那條證據鏈驗的是「忠實」,不是「正確」。

    2026-07-14 發現:來源 214245506.pdf(S_CHU_07 的 67 題)選項 (C) 欄整欄位移一題 —— 每一題的 (C) 都是「下一題的 (C)」:

    • Q33「生命週期評估依據哪份 ISO 標準文件?」的 (C) 竟然是「場址特定數據
    • Q34「在組織邊界外所獲得的數據」的 (C) 是「確保量化結果的全面性和準確性」, 而且答案卡跟著錯(印「初級數據」,正解是「次級數據」—— LCA 最基本的定義)

    題庫忠實地複製了它。 最惡劣的是 q035 / q038:答案就是 (C),而 (C) 的文字是從別題 偷來的誘答選項 —— 使用者看到的「正解」,是另一題的錯誤答案。答案字母對,內容全錯。

    處置:8 題已依同一份模擬卷的乾淨版本(把答案印在每題正右方欄位)修正; 67/67 題用題幹(不是題號)逐選項比對過 —— 只有 (C) 欄壞掉。

    另一份來源(697134715.pdf,92 題)沒有第二份可以交叉。 已人工逐題檢視全部 92 題,未發現同類錯位 —— 但「我讀過而且沒看到問題」不是「已驗證」。 這個限制記在 restoration-manifest.json_meta.source_documents 裡。

  • 「有來源」分成三個等級 —— 不要混為一談

    等級 意思 主題庫 練習池
    ① 逐字引文(出自一手出處) 引文字串已附上,且其 URL 屬一手發布者(source-authority.ts 的 PRIMARY)。逐字比對在擷取當下verify_agent_quotes.py 對代理提交做過(擋掉捏造與非一手引文),但不是對 committed 資料的持續重抓。二手 evidence(維基/新聞/標準轉載預覽)不計入本級 756 / 775 138 / 154
    ② 有一手來源 URL 附了法規資料庫/環境部/IPCC/ISO 等的連結。「連結還通」不代表「指對地方」 —— 見下方引用複驗 771 / 775 149 / 154
    ③ 完全沒有來源 來自社群共筆的考古題整理,無從查證 4 / 775 0 / 154

    本級的判定是「一手 URL+有引文字串」,不是「該頁被重抓、逐字確認過」。 兩者不同: 前者程式可離線驗(docs-counts.test.ts 已釘住),後者需要每次重抓網頁——我們沒有對 committed 資料持續做。少數 evidence 落在二手來源(如 gist[367] Bloomberg CDN、練習池 5 題引維基/新聞/ 低碳建築聯盟),已排除在本級之外、改列入下方缺口報告的「有一手來源但無一手逐字引文」。 gist[137](ISO 14068-1 章節標題)的逐字只存在於標準全文與公開預覽,ISO 官方頁不含該字串, 故其 evidence 指向 ANSI 公開預覽(二手轉載通路),亦不計入本級。

  • 「有一手來源 URL」曾經是一個很弱的訊號 —— 我們把每一個都打開來看了

    連結是活的,不代表指對地方。 過去 383 題「附了一手來源 URL、但從來沒有人打開來看過」。 我們逐題把那一頁抓回來,檢查它到底有沒有說這件事:

    複驗結果 題數
    引用正確(那一頁上真的有支持答案的原文) 318 83.0%
    引錯地方 —— 那一頁根本不含這個主張 29 7.6%
    主題相關,但沒有一句話釘得住這個答案 18 4.7%
    連結已死(含軟 404:回 HTTP 200,內文卻寫「您所查詢的網址不存在」) 4

    上表為主要結果類別,不涵蓋全部 383 題:318+29+18+4=369,其餘約 14 題 落在少數其他 verdict(爭議、無法查證等)與尚未歸類的殘差。百分比=各類題數 ÷ 383, 且由 gate 釘住(docs-counts.test.ts),不再手填。這一頁的分類尚未做到「加總=母體」, 這是誠實揭露、待後續逐筆歸清。

    引錯的那 28 題,有幾個成串的模式:

    • 引到母法,規則卻在施行細則裡 —— CBAM 母法 (EU) 2023/956 全文查無「移動源排除」 與「複雜商品預設值 20% 上限」,那些寫在施行細則 2023/1773 裡; 氣候變遷因應法母法查無「10/31 查驗期限」,那在溫管辦法 §9。
    • 引到完全不相干的文件 —— 問「核能是不是再生能源」的題目,引用指向 CBAM 法規 (全文 0 次 "nuclear");問「何謂 NDC」的題目,引用也指向 CBAM 法規(全文 0 次 "NDC")。
    • 引到錯的標準 —— 問 PAS 2060 的題目,引用指向 iso.org/standard/43279.html —— 那是 ISO 14068-1,另一個標準組織的另一份文件。

    這些 URL 全部都回 HTTP 200。連結健康檢查一個都抓不到。

    處置:28 題已換成經機械驗證的一手來源(新來源上的引文逐字驗過); 只剩 1 題仍標記 citation_audit.verdict = citation_disputed

    這 12 題「代理說引錯、卻提不出替代來源」,我們一度就停在那裡 —— 而「停在那裡」被我寫成了「資料層面已經收斂」。那是不誠實的。 第七輪回頭把它們一題一題查完,結果是:

    • 11 題找得到依據。 其中 5 題換掉了被證偽的引用,6 題補上了真正釘得住答案的那一頁。 最刺眼的是 CBAM 納管查詢那兩題:原本引的是 EUR-Lex 的歐盟法規 —— 我抓回全文 273,630 字,「Taiwan」出現 0 次。它引錯了國家。 正確依據一直在經濟部國際貿易署「綠色貿易資訊網」的 CBAM 納管產品查詢頁上。
    • 而那堆「查不到」裡藏著一個錯答案。 gist[520] 問 2030 再生能源裝置容量目標, 原答 B(35.46–36.12 GW);iPAS 公版教材寫的是 45.46 至 46.12 GW (「35.46」在教材中出現 0 次)。正解是 C。我當初太早放棄了,錯答案就躲在放棄的那一堆裡。
    • 反過來,有 3 題是代理過度指控 —— 原引用其實站得住(例如 CBAM 法規全文 「default value」出現 46 次,主題相關,只是沒有那個「公告日期」)。 那是「沒有一句話釘得住」,不是「引錯地方」。所以「引錯」從 31 修正為 28。

    「這一頁沒有這句話」是一個否定命題,而本專案反覆學到 「我抓不到」≠「它不存在」僅憑代理一句話不足以動資料 —— 但也不能因此就不查。

    最後那 18 題「有 URL、但從來沒有人打開來看過」也查完了: 9 題確認引用正確(已抽出逐字引文)、3 題的引用撐不起那個答案、 4 題抓不到頁面(誠實記為 unverifiable —— 不是「引用錯了」,是「我沒驗到」)。

    而其中兩題差點被我誤判 —— 因為我的抓取器壞了。

    web.archive.org 無視 Accept-Encoding: identity,照樣回 gzip, 而我的程式不解壓 —— 拿到一坨亂碼。那坨亂碼的字元數輕鬆超過「頁面太短」的門檻, 於是守衛放行,接著「loss and damage 出現 0 次」。

    那個 0 是假的。 台積電的新聞稿原本抓回 7,689 字亂碼;解壓之後是 108,113 字, 標題就是「TSMC Commits to Ambitious Carbon Reduction Path in Line with SBTi」。 兩筆正確的引用,差一點被我判成錯的。

    修法不是「請伺服器不要壓縮」(它不理你),而是大方接受壓縮、自己解, 再加一道亂碼守衛(替換字元佔比 > 2% 就當沒抓到)—— 因為 MIN_CHARS 擋不住亂碼:一坨亂碼很長。

  • 答案是對的,但解析在教錯東西 —— 506 題的解析也全部查完了

    解析是使用者真正拿來學的內容。記錯一個字母只影響一題;學錯一個觀念會被套到所有題目上。 而一個「答案對、解析錯」的題目,會通過本專案現有的每一道 gate

    解析錯誤率 = 36 / 506 = 7.1%(答案的錯誤率只有 3.3% —— 解析是它的兩倍以上

    錯法幾乎全是條號與角色的錯位,不是打錯字:

    • mock-036:解析自我矛盾。 先說「採購原物料屬 Category 1(範疇三)」, 下一句寫「A、D 為 Scope 1」—— 正確是「B、D」。一個字母之差,卻在教「採購原物料算範疇一」。
    • gist[334]:意思整個相反。 題目問「何者錯誤」,而解析斷言的正是被判定為錯誤的那個選項 —— 它在替自己要否定的答案背書。
    • gist[1]:上游/下游講反。 ISO 14064-1 類別 4 是「組織使用他人的產品」(上游), 解析卻寫成「使用自組織之產品」—— 那是類別 5 的定義。
    • mock-008:「第 2 條第六款**」被寫成「第 6 條」**(§6 是聯合提案,全文查無「外加性」)。
    • gist[271]:描述性寫成規範性。 COP28 決議是「Recognizes the finding(認知到 IPCC 模型推估)」, 解析寫成「在 2025 年達到峰值」,還把決議自己的免責句 「this does not imply peaking in all countries」整個刪掉。

    處置:32 題已更正(每一筆更正的引文都經機械逐字比對)。 另有 35 題 的解析講了來源上找不到依據的東西 —— 未改動,只記為 unsupported「來源沒提到」不等於「講錯了」。

    然後我們對自己的更正做了對抗式覆核 —— 而我確實改壞了 6 題。

    派了 6 個新代理,契約寫死:「你的工作是證明我改錯了」, 而且刻意不給它們原始解析、也不給上一輪代理的推理 —— 獨立判斷。結果 26 對、6 錯

    • gist[203](滅火器):我把一個本來正確的解析改成了錯的。 稽核代理把教材頁尾那句「乾粉滅火器不用盤查」誤讀成涵蓋 BC/KBC 型,而我半自動套用了它。 但教材為 BC/KBC 型列出了專屬的 CO₂ 排放公式 —— 代表它盤查 (化學上也吻合:BC/KBC 的碳酸氫鈉受熱分解會放 CO₂,ABC 的磷酸二氫銨不會)。 原本的解析才是對的。我的「更正」製造出「兩個選項都不用盤查」的新矛盾。 已改回。
    • 4 題「更正註腳與主文互打架」:字串手術用 replace(claim, '')在對不上時靜靜地什麼都沒做,然後照樣把更正註腳貼上去 —— 結果錯誤句子還在,下面卻跟著一段「那句話是錯的」。同一則解析自己跟自己打架。
    • 1 題我的更正引入了新的「條/款」錯誤(第四項 vs 第四)—— 正是我這一輪在獵的那一類坑,我自己踩了進去。

    新增 gate:explanation_audit 宣稱移除的錯誤敘述,必須真的已經不在解析裡 ——「我已經把那句話移除了」是一句可以被證偽的宣稱,那就去證偽它。突變測試 → RED

    代理會過度指控,我會半自動套用它們的話。這兩件事疊在一起,就會把對的東西改錯。 唯一擋得住的,是讓另一批代理來證明我錯了。

    這個數字比我一開始量到的低。 先抽 40 題時得到 18%,但那個抽樣是偏誤的 —— 我把母體篩成「含條號/數字且有逐字引文」的題目,而條號錯位正好都住在那裡。 全量的真實錯誤率是 7.1%。 我報這個,不報那個好看的。

  • 「沒有來源」的那批到底錯多少 —— 我們把它全部查完了 —— 不是抽樣,是把 382 題全部查一遍(原本完全沒有來源的全部):逐題找一手來源, 用程式把引文抓回原網頁逐字比對。其中 19 題連一手來源都找不到(無從判斷); 可判斷的 363 題裡,12 題答案是錯的

    實測錯誤率 = 12 / 363 = 3.3%

    這推翻了我們自己上一版的說法。 上一版寫「隨機抽 40 題、29 題可驗證、錯誤 0 題、 點估計錯誤率 0%」—— 那是小樣本僥倖。真實值 3.3% 確實落在它自己給的 95% 上界(10%)之內, 但那個 0% 的點估計是往「安心」的方向錯的,而讓人安心正是它最不該做的事。 完整數字記在 meta.no_source_audit,由 CI 對著資料實算比對。

  • 代理的「判定」不算數,只有「證據」算數 —— 三輪共派 50+ 個 AI 代理蒐證, 契約寫死:只准交「一手來源 URL + 該頁面上的逐字引文」,找不到就回報找不到,禁止用「我知道」填空。 每一筆引文都由 tools/verify_agent_quotes.py 抓回原網頁逐字比對

    • 第一輪 32 筆引文中,代理捏造了 1 筆、引了 2 筆非一手來源 —— 全部被擋下,一筆都沒寫進題庫。
    • 第三輪 415 題、377 筆引文通過逐字驗證,同時抓到 6 筆捏造、4 筆非一手來源(拿 Google Drive 當「一手來源」)—— 一筆都沒寫進題庫。 捏造率不會因為契約寫得更清楚就歸零。所以擋它的不能是契約,只能是程式。
    • 找到 9 題答案是錯的4 題題目本身壞掉(見下)。
    • 代理也會過度指控 —— 有 3 筆「答案錯了」是它錯了。 gist[484]gist[490]gist[497] 是計算題,代理主張答案有誤, 理由是「生質 CO₂ 不該計入排放總量」「綠電係數應為 0」。那個規則是對的,但結論是錯的 —— 題目自己給了係數,算術照著給定數據算就是那個答案。 缺陷在題幹的前提,不在答案。 我沒有改答案,而是把正確規則寫進解析, 並在 metadata.stem_defect_note 記下這個判斷。
    • 反過來也有一題是代理對、我錯。 S_VOCUS_03-q004 問 ISO 14067 的「數據品質」特性, 代理說答案「準確度」有問題,我以「公版教材 5.10 就是準確度」駁回了它。 後來把教材整份抓下來才發現:5.10 準確度是 §5「原則」,而 §6.3.5「數據品質」 引的是 CNS 14044 §4.2.3.6.2 的清單 —— 那份清單裡是「精密度」,沒有「準確度」。 兩個不同條款,我把它們混為一談。代理交的是證據,我駁回它靠的是印象。
  • 一道抓不到 mock-036 的 gate,本來就沒抓到 mock-036

    「解析不得指涉選項字母」這條規則本來就存在 —— 但它有兩個洞,而 mock-036 的缺陷(「A、D 為 Scope 1」,在教「採購原物料算範疇一」)從這兩個洞之間掉了出去, 一路活到第五輪的人工稽核才被抓到:

    1. 它只守練習池。 規則寫在 practice-pool-quality.test.ts 裡,而那個檔案 只 import practice_pool.json —— 一題主題庫都守不到。 於是 gist[304](「故 B、D 皆非」)、gist[408](「A、B、C 都在其中」) 從來沒有被任何 gate 檢查過
    2. 它要求「先有關鍵詞才接字母」(「答案為 B」), 於是裸字母清單(「A、D 為 Scope 1」)整個漏掉。

    為什麼字母不能提:字母不是內容,只是位置 —— 而位置會變 (練習池的選項重排過;gist[14][529][532] 的整組選項被還原)。 位置一變,「答案為 B」就會指到別的東西,而且不會有任何測試變紅

    規則已抽成兩庫共用(utils/explanation-hygiene.ts),並補上裸字母清單。 全庫掃出 19 題在指涉字母(其中好幾題是我自己在前幾輪的更正裡寫進去的 —— 因為主題庫從來沒被守過),全部改成指涉內容。 突變測試:把 mock-036 的原始缺陷放回去 → RED

  • 有 5 題不是答案錯,是「題目本身壞掉」 —— 社群共筆抄題時保留了官方題幹、卻抄壞了選項, 結果是「有兩個以上的正解」。這種題改答案救不了

    • gist[14](治理基礎):四個選項全被換成「十二項關鍵戰略」,沒有一項是治理基礎 (治理基礎只有科技研發、氣候法制兩項)—— 四個選項都是正確答案
    • gist[529](CCUS):「捕捉」與「封存/利用」都是 CCUS 涵蓋的過程 —— 兩個都能選。
    • gist[532](SASB 生態衝擊):題目問「何者不正確」,而原選項 A 與 D 都是不正確的敘述
    • 以上三題都依 iPAS 公版教材的官方選項與答案卡還原,原選項完整留在 metadata.options_replaced(CI 會擋下沒有一手來源依據、沒有理由的還原)。
    • gist[61](碳中和主體範圍):公版教材明示「國家」不屬主體範圍,於是「國家」與「個人生活方式」 不屬於 —— 兩個正解,而這題沒有官方版本可以還原改成任何單一字母都是猜的,因此改為 answer: null 並標記 ambiguous排除計分
    • gist[258](ISO 14067 不包括哪項):ISO 官方摘要明文排除「CFP 的溝通」—— "Carbon offsetting and communication of CFP … are outside the scope of this document"。 於是「溝通的要求」與原答案「標籤設計規範」都是「不包括」的項目,兩個正解。 同樣改為 answer: null + ambiguous排除計分
  • 一道釘住錯誤答案的回歸測試,比沒有測試更難拆。 gist[304](坎昆協議 MRV)被使用者回報過, 修正後還加了回歸測試釘住答案 C。這次翻出 UNFCCC Decision 1/CP.16 全文才發現: 回報者指出「ICA 是非附件一國家的機制」完全正確,但排除了錯的選項,不等於找到了對的 —— 決議全文搜尋 baseline / base year 各 0 次,C 根本沒有依據; §40(a) 逐字要求的是 "mitigation actions ... and emission reductions achieved",那是選項 A。 那道測試看起來像是有人驗證過,其實沒有。

  • 重建的題目有證據鏈 —— 159 題逐題記錄來自哪一份 PDF(含 sha256)的哪一頁、哪一欄、 第幾題,以及 PDF 自己印的 answer key。跑 python tools/restore_from_source_pdf.py --verify 可完整重現(實測 159/159 相符)

  • 改過的答案留得下痕跡 —— 40 題答案曾被更正,每題都保留 metadata.prior_answer_correction_note(改了什麼、憑什麼改)。其中 40 題附一手來源 URL, 另外 0 題的依據是標準條文/公版教材本身 —— 也就是說每一筆更正都指得出一個可以點開的一手來源, 沒有任何一題是靠「我記得」改的。 推翻來源 PDF 的答案卡需要列明依據,而且 CI 會擋下沒有依據的偏離。

  • 引用的法條是逐字的 —— 題庫引用到的 6 部法規(氣候變遷因應法、碳費收費辦法、溫管辦法等) 逐條原文都釘選在 law-articles.pinned.json(含 sha256)。解析裡凡是用「」括起來、 宣稱是法條原文的句子,CI 會逐字比對 —— 對不上就擋下。 季排程另會重抓法條比 sha256:法規一被修訂,CI 就變紅。 這是本專案唯一能偵測來源「內容變了」(而非只是「連結還通不通」)的機制。

  • AI 產題與人工整理的題目嚴格隔離 —— AI 產題不會混進主題庫,UI 也會標示。 但不要相信 provenance.verify_verdict 它 155/157 都是 CONFIRMED, 而那個判定是「用 AI 驗 AI 產的題」。拿法條原文逐條比對後找到的 13 個實質缺陷, 13 個當初全部被判 CONFIRMED —— 包括憑空捏造的法條原文、捏造的法規名稱、 掛錯的條號。UI 原本據此對使用者說「已通過獨立驗證」,那句話已經移除。 一句假的保證比沒有保證更糟。

  • 練習池不會讓你靠猜字母得分 —— 答案分布經 CI 卡方檢定把關(χ² < 7.81), 沒有任何字母超過 35%。 原本永遠選 B 就能拿 60 分(來源模擬題本身即 53–73% 集中在 B); 已重排選項位置,每題的原字母記在 provenance.option_order

  • 文件不能對資料說謊 —— README、網站文案、llms.txt、甚至 GitHub 的 About, 上面每個題數都由 CI 對著資料實算比對,對不上就擋下 merge

欄位名稱:主題庫用 metadata.sources;加強練習池才用 sources / provenance。 兩者 schema 不同,不要混用。

證據鏈、還原方法、CI gate 如何驗證上述宣稱 → DATA-PROVENANCE.md

免責

本工具為非官方 iPAS 備考輔助,題庫整理可能含錯誤,最終以 iPAS 官方公告為準。 本專案不就內容正確性、可考性、或考試結果提供任何保證。 (iPAS 不公開歷屆試題,本題庫整理自公開資料與社群共筆。)

內容時效性

題庫中有 131 題的答案會隨法規變動(CBAM、碳費、NDC、碳中和標準)。 CONTENT-CURRENCY.md 記錄已查證到哪一天、還有什麼沒確定、 以及下一個到期日(最近的是 2026-12-15:ISAE 3410 撤回,由 ISSA 5000 取代)。

meta.content_review.last_review_date 不代表整份題庫都查證到那一天 —— 本輪只實查 131 / 775 題。判斷單一題目請看該題的 metadata.valid_as_of

季排程 quarterly-time-sensitive-verify 現在做兩件事,但能力範圍差很多

涵蓋範圍 偵測得到「內容變了」嗎
連結健康檢查 所有 time_sensitive 題目的來源 URL 不行,只看 HTTP 狀態碼
法條原文釘選比對 只有 law-articles.pinned.json 裡那 6 部我國法規 可以,法條一改 sha256 就對不上

所以綠燈仍然不等於內容正確。 釘選只涵蓋 6 部我國法規; EU 法規、ISO 標準、SBTi/CDP 準則的內容變動,目前仍然沒有任何自動機制看得到。 (CBAM 憑證繳交期限 5/31 → 9/30、臺灣 2030 NDC 24%±1% → 28%±2% —— 網址全程都是活的。)

開發

需要 Node.js ≥ 20 與 pnpm ≥ 9。

corepack enable && pnpm install

pnpm dev            # 開發(含 schema fail-fast 驗證)
pnpm build          # 建置
pnpm preview        # 預覽建置結果
pnpm test:run       # 單元測試(vitest)
pnpm test:coverage  # 含 coverage
pnpm test:e2e       # E2E(playwright)
pnpm lint && pnpm type-check

CI 會先跑 npm install -g corepack@latest —— Node 20.18 內建的 Corepack 簽名公鑰 已過期(nodejs/corepack#612), 不升級會裝不動 pnpm。本機遇到同樣問題時也照做。

技術棧:React 18 + TypeScript(strict)/Vite 6/Vitest + Testing Library + Playwright/ GitHub Actions(lint · tsc · test · build · e2e · CodeQL · Codecov)/GitHub Pages 自動部署。

授權

雙授權:

  • 原始碼 —— AGPL-3.0-or-later(見 LICENSE
  • 本專案自製的題庫、解析與內容 —— CC-BY-SA-4.0
  • 引用之官方/第三方資料(iPAS 公開考古題、法規條文、ISO/IPCC/EUR-Lex/環境部等) —— 依其各自原始條款,本專案不主張著作權、不重新授權;有出處的題目保留來源欄位 (主題庫 metadata.sources、練習池 sources / provenance

AGPL §13:若您修改本專案後以網路服務形式提供(SaaS/公開網頁/API), 必須讓所有使用者能取得對應修改版的完整原始碼,授權同樣為 AGPL-3.0-or-later。

回報問題

發現錯題或有建議,請至 Discussions #1

About

iPAS 淨零碳規劃管理師「初級」考古題練習工具:775 題主題庫 + 154 題加強練習(含 IFRS S1/S2、ISSB 整合 TCFD、永續揭露準則、ISO 14064、CBAM、SBTi)。React + TypeScript SPA + AI 輔助解析(puter.js),符合 EU AI Act Art.50 揭露。

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages