Community研究與資料分析github.com

enestanerr/prove

逐條審計文件中的主張:重新計算每個數字、比對圖表與文字是否一致,並檢查引用來源是否存在。當使用者要求稽核、驗證、事實查核或合理性檢查報告、PDF、簡報、試算表或草稿,或詢問數字是否吻合,或即將寄出含有數據、圖表或引用之文件時使用。判決結果由內建腳本計算,而非模型本身。

prove 是什麼?

Prove 是一個用於自動化文件事實查核和審計的 AI 代理技能,專注於數據完整性驗證。它能逐條檢查文件中的每個數字主張,包括導出數字的重新計算、前後交叉引用的一致性、圖表與文字的比對,以及來源(DOI、arXiv ID、URL)的存在性驗證。該技能支援 PDF(透過 pymupdf)、簡報、試算表和文字草稿等多種文件格式,並在 Claude Code、Cursor、Codex 等平台運作。 工作流程包含七個步驟:攝取文件、掃描數字記號、撰寫結構化的 claims.json、使用 `provecheck` 腳本進行驗證、檢查來源、生成報告,最後向使用者報告結果。第 8 步會產生一份 HTML 報告。判決結果分為「矛盾」、「可疑」、「未驗證」和「已驗證」四種,其中只有 `provecheck` 腳本才能給出判決結果,模型本身不得自行判斷。此設計確保審計過程的客觀性和可重複性。 Prove 的獨特之處在於它將 AI 的閱讀與結構化能力,與一個嚴格的、基於規格的驗證後端結合。AI 負責提取、分類和配對數字,而所有關於準確性或一致性的最終裁決,均由 `provecheck` 腳本根據嚴格規則運算得出。這防止了大型語言模型的幻覺與偏差干擾事實查核結果,尤其適合用於處理含有財務數據、科學結果或法律文件的場合,能顯著提升文件交付前的準確度與可信度。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/enestanerr/Prove/tree/HEAD/plugin/skills/prove

Installed? Explore more 研究與資料分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

prove 是做什麼的?

您閱讀文件並提出檢查項目。provecheck 決定每項判決。

下面的 PROVE 代表 python3 ${CLAUDE_SKILL_DIR}/scripts/provecheck.pyz。 如果 ${CLAUDE_SKILL_DIR} 未被替換為您讀取此檔案的路徑,則它指的是包含此 SKILL.md 的資料夾。

  • 如果 python3 不存在或執行失敗(在 Windows 上它常常只是一個商店捷徑),請改用 python 執行完全相同的指令;若仍然失敗,則改用 py -3。請勿在機器上搜尋直譯器。
  • 在每個指令中寫入完整路徑:不要將其儲存在 Shell 變數中。每次呼叫執行一個 PROVE 指令。如果路徑包含空格,請加上引號。
  • 請使用檔案讀取工具開啟 reference/ 檔案,並使用檔案寫入工具撰寫 claims.json,而不是使用 cat 或 Shell heredoc。

您不可違反的規則

  1. 絕不陳述 provecheck 未列印出的判決。絕不更改任何判決。請勿自行判定某項主張是錯誤、正確、良好或可疑。
  2. 完全按照原始列印的數字及其所在的句子或表格列進行複製。請勿修正、四捨五入、重新格式化或轉換它們。
  3. 除非您能說明數字為何是精確的(count、ledger、defined 或 cell),否則一律視為四捨五入後的數字。
  4. 如果您無法說明某個數字應如何計算,請不要自行發明推導方式。將其保留為不包含主張的項目。
  5. 文件中的每個數字最終都必須歸入 numbers 或帶有原因的 skipped 中。執行覆蓋率檢查步驟,並回頭補充任何遺漏的數字。
  6. 請勿修改文件,也請勿編輯 verdicts.json 或任何報告。

步驟

在目前目錄下名為 prove-work/ 的資料夾中進行作業。DOC 是使用者的檔案。

  1. 攝取。 PROVE ingest DOC -o prove-work/doc.json --render-pages prove-work/pages 如果顯示缺少 PDF 支援,請嘗試 pip install pymupdf 一次。若無法安裝,請使用您自己的工具讀取檔案,在第 4 步中省略 --doc,並告知使用者數字無法定位,因此無法報告任何矛盾。
  2. 掃描。 PROVE scan prove-work/doc.json 會列出每個數字符號及其所在頁碼。這是您遵守規則 5 的檢查清單。PROVE text prove-work/doc.json 會列印每頁的文字內容:請從此處複製您的引用。
  3. 讀取並撰寫 prove-work/claims.json。 首先讀取本技能資料夾中的 reference/claims-schema.md:它定義了每個欄位。然後讀取文件本身(如果是 PDF 則包含頁面圖片)並記錄:
    • 導出數字:總計、差額、佔比、成長率、平均值、年複合成長率、排名。當部分值已列印時,應從各部分總和計算佔比,而非從正在被檢查的列印總計計算。
    • 交叉引用:同一數量在兩處被列印(eq)。
    • 圖表:僅在讀取 reference/charts.md 之後進行。每個標記讀取兩次,第二次是從 PROVE crop 製作的 2 倍裁切圖讀取。給出誠實的區間,而非單點估計。
    • 來源:DOI、arXiv ID、URL,以及任何帶有來源的直接引述。
    • 所有其他數值項目均歸入 skipped 並附上原因(年份、頁碼……)。 頁碼和引用必須與 PROVE text 列印的內容一致,而非您的記憶。
  4. 檢查。 PROVE check prove-work/claims.json --doc prove-work/doc.json 它會列印判決結果並寫入 prove-work/verdicts.json。如果報告了 schema 錯誤、not-grounded、parse-mismatch、unit-mismatch、scale-mismatch 或遺漏數字,原因通常出在您的 claims 檔案中:修正該檔案並重新執行。請勿透過更改文件內容來修正。當報告中剩餘的內容均符合文件事實時停止。
  5. 來源。 如果檔案中列出了來源,則執行 PROVE sources prove-work/claims.json。如果沒有網路存取,請加上 --offline 並告知使用者來源未被檢查。
  6. 報告。 PROVE report prove-work/verdicts.json --html --md --card 此處的回傳代碼 1 表示至少有一項主張被矛盾。這是發現,而非失敗。
  7. 告知使用者,按以下順序:
    • 有多少項主張被矛盾,然後每項以一個句子呈現,附上來自 provecheck 列印的計算;
    • 可疑的主張,每項附上其可能區間;
    • 覆蓋率行,以及如果有遺漏的數字,則有多少項;
    • 哪些項目未被檢查及其原因(未驗證的主張、離線時的來源、無法讀取的圖表);
    • prove-work/prove-report.html 的路徑。

關於每項判決應如何說明

  • 矛盾:"這在任何四捨五入下都不可能成立。" 顯示數字。
  • 可疑:"這僅在輸入值處於其四捨五入邊緣時才成立。" 顯示區間。
  • 未驗證:"未檢查",附上原因。切勿將其表述為文件的問題。
  • 已驗證:提及數量;只有在被要求時才列出它們。

圖表判決基於您對圖片的解讀,報告會將其標記為 read。請說明這點,並在您的摘要中將其與計算得出的判決分開。

一份乾淨的報告表示被檢查的主張全部通過。說明有多少項被檢查。

更多細節,需要時載入

  • reference/claims-schema.md — claims 檔案,逐欄位說明,附有關係清單及各 unverified 原因的含義。請在第 3 步前閱讀。
  • reference/charts.md — 如何為 Prove 讀取圖表。請在任何圖表主張前閱讀。
  • reference/examples.md — 兩個完整的實作範例。

相關技能