Community研究與資料分析github.com

mleswell-ai/research-synthesis

將多個來源的證據,整合成一份可直接用於決策、且完全可追溯的報告。它會定義問題、評估每個來源、在聲明級別的分類帳中記錄證據,並建立跨來源的聲明。

research-synthesis 是什麼?

此技能旨在為開發者或 AI 代理使用者,自動化產出高品質的研究證據整合報告。它不僅僅是摘要或文獻回顧,而是透過嚴謹的流程,將多個來源的證據轉化為清晰、可驗證的聲明,並評估每個聲明的可信度。此技能支援「快速」、「標準」和「系統性」三種模式,分別適用於粗略回答、重要決策及可重現的研究方法。其核心運作流程包含「框架設定」、「收集」、「篩選評估」、「提取」、「建立聲明」、「評定確定性」及「壓力測試」等步驟,並使用一個名為 `ledger.py` 的 Python 工具來管理所有證據、聲明與執行檢查,確保最終報告的每個陳述都有來源、可追溯,且經過嚴格考驗。它特別適合用於撰寫文獻回顧、證據摘要或研究簡報,而非用於總結單一文件或快速查找事實。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mleswell-ai/research-synthesis-skill/tree/HEAD/skills/research-synthesis

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

在你喜歡的 AI 中提問

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

說明文件

研究整合

一份整合報告,回答的是沒有任何單一來源能回答的問題:現有證據支持什麼、我們能有多大把握、來源之間在哪些方面存在歧見及其原因,以及這對眼前的決策意味著什麼。一份摘要列表並不是整合報告。

三個問題

報告中的每一項陳述必須能經得起三個問題的考驗。整個方法論,以及 ledger.py 工具,都是為了讓這些答案可以被檢核。

  1. 這個陳述的具體來源是什麼? 一個已閱讀來源中的指定位置。答案是一個定位碼 (locator)。
  2. 這個陳述被獨立觀察到幾次? 十篇文章重複報告同一項研究,算是一次觀察。答案是一個譜系 (lineage) 的計數。
  3. 這樣的證據基礎允許我們有多大把握? 證據結構設定了確定性的上限;判斷只能比這個上限更低。

不可動搖的規則

  • 僅引用已閱讀過的內容。記錄其閱讀方式(全文、僅摘要、二手引用);未達全文閱讀等級的證據,不能承載有信心的聲明。
  • 所有的參考文獻、作者、年份、圖表或引述,都不能來自記憶。如果找不到,就不引用。
  • 每個圖表和引述都必須有定位碼,並在閱讀時記錄。
  • 來源報告的內容(發現)、其所代表的意義(詮釋)以及應採取的行動(建議)必須區分開來,且後兩者的確定性永遠不能高於支撐其的發現。
  • 反對某項聲明的證據,應與支持它的證據一同記錄。
  • 「證據不足」是一個合理的答案。沒有證據並不等於證據不存在。

選擇模式

如果不確定,選擇較輕量的模式,並在報告中說明。

模式使用時機來源數量搜尋策略輸出格式
快速 (Rapid)一個範圍有限的問題,主要使用提供的資料約 3 至 10無或少量簡報,通常在對話中 (assets/brief-template.md)
標準 (Standard)關乎一個真實的決策約 10 至 30結構化、有記錄完整報告 (assets/report-template.md)
系統性 (Systematic)方法必須可重現依研究方案而定全面、有記錄、可計數完整報告、研究方案及表格

兩種變化:

  • 初級定性資料(訪談、開放式問卷回覆、回饋、工單):工作流程相同;請先閱讀 references/qualitative-data.md。
  • 評估一份現有的整合報告:請參閱下方「審計他人的整合報告」。

工作流程

將此流程複製到工作筆記中,並逐步勾選完成。順序很重要:每個步驟都會產出下一個步驟所需的內容,跳過任何步驟都會導致已知的失敗模式(references/failure-modes.md)。

- [ ] 1 框架設定     在開始閱讀前,先確定問題、決策、範圍和標準
- [ ] 2 收集         啟動分類帳;記錄搜尋過程,或盤點提供的語料庫
- [ ] 3 篩選評估     篩選、評估每個來源,並給予譜系
- [ ] 4 提取         將證據及其定位碼提取到分類帳中
- [ ] 5 建立         跨來源建立聲明;調和矛盾,或標記為無法解釋
- [ ] 6 評定確定性   確定性須等於或低於其上限,並說明理由
- [ ] 7 壓力測試     檢查關鍵證據、嘗試提出相反的解釋、修改聲明
- [ ] 8 撰寫         先寫答案,並與決策關聯
- [ ] 9 重讀         確認工作表; `check` 和 `report` 指令執行乾淨;通過評分量表

1 框架設定

用一兩句話分別確定以下事項:問題(以能被回答「否」或「視情況而定」的方式表述);它服務的決策及使用者;範圍(族群或背景、時期、地點、來源類型);以及納入與排除標準。

在閱讀前先確定好標準。看到結果後才調整標準,是導致整合報告最終只是證實作者預期結論的方式。如果必須改變,請記錄變更及其原因。

最多向使用者提兩三個問題,且僅在答案會改變工作內容時提問(通常是決策、範圍邊界或模式)。如果使用者不願回答,則繼續進行,並在報告開頭列出所有假設。

問題框架、審查類型及研究方案大綱:references/scoping-and-protocol.md。

2 收集

啟動分類帳。這也會鎖定今天的日期,此日期不得假設:

python scripts/ledger.py new ledger.json --question "..." --purpose "..." --mode standard --corpus searched

--corpus 可以是 supplied(提供的)、searched(搜尋得到的)或 mixed(混合的)。分類帳是一個 JSON 檔案,存放研究方案、所有考慮過的來源,以及每個聲明及其證據。它是整合工作的暫存記憶體:請保持其存在於磁碟上並保持最新。欄位說明及填寫範例:references/evidence-ledger.md 和 examples/flexible-start/。

提供的語料庫:為每個項目給予一個來源 ID(S1, S2, ...),並在報告中說明整合報告僅涵蓋所提供的資料。

進行搜尋:

  • 從簡短、寬泛的查詢開始,以了解該領域的詞彙,然後再縮小範圍。
  • 在分類帳中記錄每一次查詢:查詢位置、查詢字串、日期、結果數量。
  • 追溯原始來源。當一篇文章報告一項研究時,設法找到並引用該研究;如果無法取得,則引用該文章,並記錄為 secondary-citation。
  • 刻意搜尋 null 結果、相反的發現,以及未發表或灰色文獻。已發表的證據傾向於過度呈現正面結果。
  • 向後追蹤參考文獻列表,並向前追蹤被引用次數。
  • 當新的搜尋結果大部分是已知來源,或模式的預算已用盡時停止。並說明原因。

對於大型或可分離的工作,若可使用子代理:references/parallel-research.md。

3 篩選評估

將標準應用於每個候選來源。被排除的來源也會保留在分類帳中,並附上原因。

對每個納入的來源,記錄:

  • 評估 (appraisal)(高、中、低、非常低)及具體疑慮。評估其對這個問題的適用性,而非其聲望:references/source-appraisal.md;
  • 譜系 (lineage)(L1, L2, ...)。當多個來源追溯至同一個起源時,它們共享一個譜系:例如一項研究及其預印本;新聞報導及其後續追蹤;數篇使用同一資料集的論文;複述同一份報告的網頁。確定性取決於譜系的數量,而非引用次數。

4 提取

對每個來源,記錄與問題相關的證據項目:來源 ID、定位碼、類型(引述、改寫、資料)及文字。包括族群和背景資訊,以及任何限制其適用範圍的資訊。預設使用改寫方式;僅引述關鍵字句。記錄來源實際報告的內容,而非對我們有利的內容。

5 建立

跨來源進行比對,絕不一個來源一個來源地處理。

  1. 選擇方法以符合問題和證據類型:定性或混合證據使用主題整合法;各種量化證據使用帶有結構化效應摘要的敘述性整合法;只有當研究之間足夠相似,平均值有意義時才使用統合分析。 references/synthesis-methods.md
  2. 根據證據的陳述內容而非來源或共同詞彙來分組。
  3. 將每組撰寫成一個聲明:一個可能錯誤的句子。「回饋時機」是一個主題。「延遲回饋在保留任務上優於即時回饋,但在程序性任務上則不然」是一個聲明。
  4. 雙向附加證據:支持它的項目,以及反對它的項目。
  5. 調和每個矛盾,記錄在項目的 reconciled 欄位中:族群、衡量標準、劑量、時間範圍、比較組、研究設計品質或利害關係的差異。如果沒有任何因素可以解釋,則寫入 unexplained。未經調和的矛盾會降低確定性上限。
  6. 切勿統計顯著與不顯著研究的數量。 報告方向、效應大小和範圍。在報告或比較任何效應前,請先閱讀 references/quantitative-evidence.md。
  7. 誠實計數:使用「14 位參與者中的 9 位」、「5 項試驗中的 3 項」,而不是「大多數」。

聲明的數量應為決策所需,且不多於此。如果讀者無法將其記在腦中,表示分組尚未完成。

6 評定確定性

python scripts/ledger.py ceilings ledger.json

這會為每個聲明印出其已記錄證據所能承載的最高確定性,以及限制因素:單一譜系、無全文閱讀、未經調和的矛盾,或是支撐建議的薄弱聲明。

然後進行判斷。將每個聲明的 certainty 設定為 等於或低於 其上限,並根據偏倚風險、不一致性、間接性、不精確性以及可能的遺漏證據來降低評級,並給出一句話的 rationale 說明決定因素。聲明的措辭應與其確定性相符:

確定性措辭
高 (High)「X 會增加 Y」
中 (Moderate)「X 很可能會增加 Y」
低 (Low)「X 可能會增加 Y」
非常低 (Very low)「目前不清楚 X 是否會增加 Y」

關於規則、定性及非研究證據的處理,以及工作範例:references/certainty.md。

7 壓力測試

試著在讀者之前,先設法打破結論。

python scripts/ledger.py keystones ledger.json

關鍵證據 (keystone) 是一個聲明無法缺少的譜系:移除它,該聲明將失去證據支持,或無法再按原本的方式評定確定性。接著,對每個結論所依賴的聲明:

  • 關鍵證據:全文重讀每個關鍵來源。如果它是正確的,還有哪些事也應該是正確的?這些事是否在別處被觀察到?
  • 相反的解釋:針對同一組證據,寫出最好的替代解釋(機率、選擇、干擾、測量、反向因果、有利益衝突的來源)。指出能夠區分這兩種解釋的觀察結果,並尋找它。
  • 反轉論述:僅從分類帳的內容,草擬一份預期相反結論的人會寫出的結論。只要該草稿在某些部分合理,就表示原始聲明被誇大了。
  • 可轉移性:證據是否來自與決策情境相似的環境?如果不是,應視為間接證據,並降低評級。
  • 沉默證據:如果該聲明為真,應該存在什麼樣的證據?這些證據是否被搜尋過?

將壓力測試的結果放入分類帳(新的反對項目、改變的評級、範圍縮小的聲明)。如果什麼都沒發現,而這是事實,那麼也是可接受的結果。如果有子代理可用,將此步驟交給一個只看過分類帳的新手。

8 撰寫

先寫答案。報告有七個部分(快速簡報可以省略方法部分):

  1. 結論 (Bottom line):以兩到四句話給出答案,措辭須反映其確定性。
  2. 這對決策的意義:標明是詮釋或建議,包括坦誠的「不應行動」和「證據無法決定此事」,並說明什麼會改變結論。
  3. 發現 (Findings):每個聲明一個子標題,寫出名稱及其 ID([C1])、確定性: 一行(附理由)、證據與引用([S3, S7]),以及此發現適用的對象。
  4. 證據存在歧見之處及其原因。
  5. 缺口與限制:包括證據和本次整合報告的限制。
  6. 研究方法:問題、標準、搜尋、計數、評估、方法。
  7. 來源:按 ID 列出所有引用的來源。

在證據允許的地方要明確肯定,在證據不足的地方則要坦白。如果每個句子都同樣地含糊其詞,會掩蓋強勁發現與薄弱發現之間的區別,而這才是讀者最需要知道的資訊。

9 重讀

python scripts/ledger.py worksheet ledger.json

工作表會列出必須根據其定位碼重新閱讀的證據:每個圖表、每個引述,以及來自關鍵證據的所有內容。打開每個來源進行比對。然後記錄結果:

python scripts/ledger.py mark ledger.json confirmed C1.s1 C1.s2
python scripts/ledger.py mark ledger.json mismatch C2.s1 --note "Table 3 gives 0.03, not 0.30"

在確認之前,先修正分類帳和報告中的任何不一致之處。在不重讀的情況下將項目標記為「已確認」,會使唯一能發現錯誤引用的檢查機制失效。

接著執行檢查、修正其報告的錯誤,並重複直到兩者都完全乾淨:

python scripts/ledger.py check ledger.json
python scripts/ledger.py report report.md ledger.json

python scripts/ledger.py explain <CODE> 會說明任何規則存在的原因。在快速模式之外,report 指令在所需的證據未被確認時會執行失敗。如需附錄,可使用 python scripts/ledger.py tables ledger.json 來產生證據表格,並使用 trace ledger.json C1 來追溯任何聲明回到其來源的路徑。

最後,根據 references/quality-rubric.md 對草稿進行評分,並修正任何低於通過標準的部分。

更新整合報告

當有新證據出現時,將來源加入現有分類帳,將 as_of 設為新日期,提取證據,然後再次執行 ceilings 和 keystones:新的譜系可能會提高某些上限,而新的矛盾可能會降低某些上限。在 protocol.deviations 下記錄變更內容,並在報告中說明哪些結論發生了變化及其原因。

審計他人的整合報告

  1. 重建其隱含的問題、標準和方法。
  2. 將其引用與來源進行比對,從其結論所依據的來源開始。不要聲稱一個未閱讀的來源「真正」說了什麼;將其報告為「未經核實」。
  3. 使用 references/quality-rubric.md 對其評分,並根據 references/failure-modes.md 進行測試。
  4. 先報告結論,然後說明哪些部分有根據、哪些部分缺乏支持,以及按重要性排序的具體修正建議。

參考檔案

檔案何時閱讀
references/scoping-and-protocol.md框架設定問題、選擇審查類型、撰寫研究方案
references/source-appraisal.md評估來源或指派譜系時
references/evidence-ledger.md編輯分類帳欄位或檢查其結構時
references/synthesis-methods.md在建構聲明步驟選擇方法時
references/quantitative-evidence.md報告或比較任何效應估計時
references/qualitative-data.md使用訪談、開放式問卷回覆或類似資料時
references/certainty.md設定確定性評級
references/failure-modes.md在審計他人報告時,或在審查自己的報告時
references/quality-rubric.md在重讀步驟的最後,對報告進行自我評分
references/parallel-research.md大型文獻搜尋,或使用可分離的子任務
assets/brief-template.md快速模式報告的模板
assets/report-template.md標準或系統性模式報告的模板
examples/flexible-start/查看從不同數量和類型的證據開始的實際範例

相關工作

  • audit(審計):審計一份現有的整合報告(請參閱「審計他人的整合報告」)。
  • standalone-versions(獨立版本):此儲存庫包含 scripts/ 和 references/,可以獨立於 AI 代理使用。

相關技能