CF 證據循環(CF Evidence Loop)
研究人員不會從答案開始。他們會針對一組固定問題,逐一查閱公開記錄:有哪些出版品、是否有任何出版品被撤回、有哪些正在進行的試驗、哪些已獲核准及適用對象、涉及多少人數、領域的建議是什麼,以及領域透過補助金和預印本正在討論什麼。此技能為代理提供了一個命令列形式的循環,並有一條規則:每項結果都必須附帶其來源、日期,以及它無法證明的內容。
研究,而非醫療建議。此工具返回的記錄描述的是公開文件。它們不會為任何人解讀任何資訊,標籤上的適應症說明也不代表任何個人的資格條件。
1. 此技能的功能
| 問題 | 指令 | 來源 |
|---|---|---|
| 關於此主題已出版哪些內容? | pubmed "<term>" [--sort pub_date] | 透過 NCBI E-utilities 查詢 PubMed |
| 系統性回顧和 Cochrane 怎麼說? | reviews "<term>" | PubMed 的系統性回顧子集加上 Cochrane 期刊 |
| 使用開放取用和引用元資料搜尋 | epmc '<Europe PMC query>' | Europe PMC |
| 此 DOI 被引用的頻率為何,以及它是否為開放取用? | cited <DOI> | Europe PMC |
| 此論文是否已被撤回或更正? | retractions <DOI> [<DOI> ...] | Crossref、Retraction Watch 資料 |
| 此 DOI 是什麼? | doi <DOI> | Crossref |
| FDA 何時首次核准此藥物? | approval <BRAND> | openFDA Drugs@FDA |
| 現行美國標籤怎麼說? | label <BRAND> [--sections ...] | openFDA 標籤 |
| EMA 何時在歐盟核准此藥品? | ema <DRUG> [--file PATH] | 歐洲藥品管理局(離線下載的 JSON 報告) |
| 哪些試驗列出了此疾病? | trials "<condition>" [--term X] [--status RECRUITING] | ClinicalTrials.gov v2 |
| 此試驗在試驗登記處的資訊為何? | trial <NCTId> | ClinicalTrials.gov v2 |
| 此預印本是什麼? | `preprint <biorxiv | medrxiv> ` |
| 在某時間範圍內出現了哪些 CF 預印本? | preprints <server> <YYYY-MM-DD> <YYYY-MM-DD> [--pattern] | bioRxiv / medRxiv |
| 此變異體如何分類? | variants "<ClinVar query>" | 透過 NCBI E-utilities 查詢 ClinVar |
| NIH 資助誰進行此主題的研究? | grants "<text>" [--fy 2025] | NIH RePORTER |
| UKRI 資助誰進行此主題的研究? | ukri "<query>" [--limit 25] | UKRI Gateway to Research (別名:gtr) |
| 某地區的人口基數為何? | population <entity> [--variable Count_Person] [--year YYYY] | Google Data Commons |
| 使用 CADD、ClinVar、SnpEff、gnomAD 頻率註解變異體 | myvariant "<variant query>" [--limit 5] | MyVariant.info |
| 查詢 gnomAD 彙總等位基因頻率 (因設計而被拒絕) | gnomad <chrom-pos-ref-alt> | gnomAD (僅限手動存取;目錄政策始終拒絕) |
| OpenAlex 對此作品有何資訊 (引用、撤回、OA)? | `openalex <DOI | ID>` |
| 搜尋 OpenAlex 作品 | openalex-search "<query>" [--limit 10] | 透過 OurResearch 查詢 OpenAlex (需要金鑰) |
| Unpaywall 索引了哪些開放取用位置和授權元資料? | unpaywall <DOI> | 透過 OurResearch 查詢 Unpaywall |
| Semantic Scholar 擁有哪個引用圖譜和論文元資料? | s2 <DOI> | 透過 Ai2 查詢 Semantic Scholar (別名:semantic-scholar) |
| 解析完整的論文追蹤 (Crossref、Unpaywall OA、Semantic Scholar 引用) | paper-trail <DOI> | Crossref、Unpaywall、Semantic Scholar (別名:paper) |
| ChEMBL 擁有哪個化合物的元資料、臨床階段和 ATC 代碼? | `chembl <CHEMBL_ID | name> [--limit 5]` |
| ChEMBL 擁有哪些定量生物活性分析 (EC50、IC50、Ki、Kd)? | `chembl-activity <CHEMBL_ID | name> [--target CHEMBL4051]` |
| Open Targets 擁有哪個目標的可追蹤性、安全性風險、疾病評分或 FAERS 統計資料? | `opentargets <ID | query> [--limit 5]` |
| Scite 為此 DOI 提供了哪些支持性、對比性和提及性引用計數? | scite <DOI> [--rest] | Scite Pro MCP (scite-mcp) 或零額度公開 REST (--rest,scite-api) |
| 每次請求最多篩選 500 個 DOI,以零額度成本取得 Smart Citation 計數、撤回和章節細分 | scite-batch <DOI...> [--papers] [--sections] | Scite 公開 REST (POST /tallies,POST /papers,POST /tallies/cited-by-sections;零額度成本) |
| 對此 DOI 的引用如何分佈在摘要、方法、結果和討論章節? | scite-sections <DOI> | Scite 公開 REST (GET /tallies/cited-by-sections/{doi} + /tallies/{doi};零額度成本) |
| 讀取特定論文內的逐字全文摘錄和 Smart Citation 片段 | scite-excerpts <DOI> "<query>" [--limit 5] | Scite Pro MCP 模式 C (scite-mcp,隔離在 <untrusted_data> 中) |
| Scite 從種子 DOI 推薦哪些相關論文? | scite-recommend <DOI> [--limit 5] | Scite 合作夥伴 REST (GET /api_partner/recommend-papers/{doi},受每月 650 次請求的 REST 保護盾限制) |
| 使用 Scite Smart Citation 計數搜尋文獻 | scite-search "<query>" [--limit 5] | Scite Pro MCP (scite-mcp,需要 OAuth/金鑰) |
| 以零額度成本將 PubMed ID 解析為 DOI | scite-pmid <PMID> | Scite 公開 REST (GET /papers/resolve-pmid/{pmid},零額度成本) |
| 匯總最多 100 個 DOI 的 Smart Citation 計數,零額度成本 | scite-aggregate <DOI...> | Scite 公開 REST (POST /tallies/aggregate,零額度成本) |
| 列出目標 DOI 的引用出版物和已撤回引用計數,零額度成本 | scite-sources <DOI> [--limit 5] | Scite 公開 REST (GET /papers/sources/{target_doi},零額度成本) |
| 探索 1 跳引用網絡,包含意圖分類和隔離片段 | scite-graph <DOI> [--direction both] [--limit 5] | Scite Pro MCP (citation_graph,隔離在 <untrusted_data> 中) |
| 按 DOI 或 PMID 讀取分頁全文主體 | `scite-fulltext <DOI | PMID> [--offset 0] [--length 8000]` |
| 搜尋 Scite 證據資料集 (英國 MHRA、專利、510(k)、MAUDE、FAERS、補助金、藥物、試驗) | scite-evidence <dataset> "<query>" [--filter F] [--page 1] | Scite Pro MCP (search_mhra,search_patents,search_510k_summaries 等,隔離在 <untrusted_data> 中) |
| 標準化 HGVS 或 SPDI 變異體座標 | `ncbi-variation <HGVS | SPDI>` |
| 查詢 UniProtKB 蛋白質序列、結構域邊界和天然變異體 | `uniprot <ACCESSION | query> [--limit 5]` |
| 查詢 Ensembl 基因組座標、典型轉錄本或 rsID 後果 | `ensembl <rsID | ENSG |
| 按藥物名稱搜尋 NLM DailyMed 結構化產品標籤 (SPL) | dailymed <DRUG> [--limit 5] | DailyMed RESTful web services v2 (dailymed-web-services) |
| 在目錄條目前閱讀條款或法律頁面 | read-page <HTTPS_URL> [--out FILE] [--max-chars N] | 在實驗室行為規則下,由人類發起閱讀條款/政策頁面或 PDF |
| 確定性查詢 CFTR RefSeq NM_000492.4 外顯子和 UniProt P13569 結構域背景 | `cftr-context <variant | codon>` |
| 確定性查詢 CFTR 調節劑品牌、API、分子代碼、NDA 和 openFDA SPL 黑框警告安全背景 | `cftr-modulator <brand | code |
| 確定性查詢 CFTR Cryo-EM 座標結構元資料 | cftr-structure <pdb_id> [--list] | 零網絡確定性 CFTR Cryo-EM 結構解析度、配體、構型和參考 (別名:cftr-pdb) |
| 此工具可以存取哪些來源? | sources | 目錄 |
| 多個來源對同一藥物、變異體或試驗怎麼說? | brief drug <BRAND>,brief variant "<ClinVar query>",brief trial <NCTId> | 上述來源,交叉核對 (參閱 Briefs) |
| 此筆記中的每個 DOI、PMID 和試驗 ID 是否存在? | cite-check <FILE> [--max-ids 30] [--scite-bulk] | Crossref、PubMed、ClinicalTrials.gov,加上可選的零額度 Scite 批量預檢 (參閱 Cite-check) |
客戶端程式碼拒絕執行的操作:存取 catalog.yaml 中不允許的任何主機 (API 資料查詢中永不遵循重新導向);偽裝成瀏覽器;跳過憑證檢查;在被拒絕後重試。對於目錄前的條款閱讀,read-page 會強制執行實驗室的嚴格網路行為:僅限 HTTPS,首先透過 robots_allows 檢查 robots.txt,尊重 Crawl-delay,拒絕或無法讀取的 robots 會中止擷取,同站 HTTPS 重新導向會重新檢查 robots,啟用憑證驗證,5 MB 主體容量上限,單一請求。它不需要目錄條目,因為它專門用於在目錄條目存在之前,由人類發起閱讀條款頁面,而非用於資料提取。該套件也永遠不會呼叫語言模型,也不會查詢任何持有個人層級資料的來源。
2. 執行
pip install -r scripts/requirements.txt
python scripts/evidence_cli.py retractions 10.1038/ng.2745
python scripts/evidence_cli.py approval TRIKAFTA
python scripts/evidence_cli.py variants "CFTR[gene] AND F508del" --limit 5
python scripts/evidence_cli.py population country/USA
python scripts/evidence_cli.py cftr-context "F508del"
python scripts/evidence_cli.py cftr-context "621+1G->T" --json
python scripts/evidence_cli.py cftr-context "711+1G->T"
python scripts/evidence_cli.py cftr-modulator "Trikafta"
python scripts/evidence_cli.py cftr-modulator "VX-121" --json
python scripts/evidence_cli.py cftr-structure "8EIQ"
python scripts/evidence_cli.py cftr-structure "8EIZ"
python scripts/evidence_cli.py cftr-structure "7SV7"
python scripts/evidence_cli.py cftr-structure "7SVR"
python scripts/evidence_cli.py cftr-structure "6O2P"
python scripts/evidence_cli.py cftr-pdb --list
每個指令的標誌:--json 將每條記錄輸出為一個 JSON 物件,--ledger PATH 將記錄附加到一個 JSONL 證據分類帳。當每條記錄的狀態為 found 或 not_found 時,退出碼為 0;當有任何記錄的狀態為 blocked、rate_limited 或 error 時,退出碼為 3。
Briefs
Brief 會透過同一個客戶端向多個來源提出一個問題,因此目錄閘道、節流、預算和斷路器仍然生效。它會列印每個來源返回的每條記錄、每個來源的狀態、它比較的欄位,以及一個簡短的交叉核對區塊。
| 配方 | 執行 | 交叉核對 |
|---|---|---|
brief drug TRIKAFTA | approval、label、依條款進行的 trials (5)、為品牌進行的 pubmed (5) | 每個來源的狀態;標籤的生效日期年份不早於 Drugs@FDA 首次核准年份;OpenAlex 文獻和撤回掃描;CFTR 調節劑安全邊界 (AH-4) 和初步 PDB 交叉核對 |
brief variant "CFTR[gene] AND F508del" | variants、為相同條款進行的 pubmed (5) | 每個來源的狀態;有多少 ClinVar 記錄匹配,以及每一條的分類和審查狀態 |
brief trial NCT05033080 | trial、為 NCT id 進行的 pubmed (5) | 每個來源的狀態;登記處記錄的 ID;哪些返回的論文在其標題中提及該試驗 |
如何解讀交叉核對:
PASS:數值一致,或來源已回應。這不是關於藥物、變異體或試驗的發現。CHECK:應由人員查看。來源未回應;多條 ClinVar 記錄匹配 (全部列出,無從選擇);或標籤的生效日期早於藥物的首次核准日期,這不可能是正確的,因此兩條記錄中有一條不一致。標籤的生效日期是其最新修訂日期,因此標籤年份等於或晚於核准年份是預期的,並且是PASS。NOT STATED:來源未提供該數值,因此無從比較。PubMed 記錄不包含摘要或全文,因此一篇未在標題中提及該試驗的論文是NOT STATED,而非「未提及」。
Brief 不做的事:它不會加入任何自身的事實。它列印的每個數值都是從記錄欄位複製而來,或是帶有標籤的計數或年份差距,缺失的數值會列印為 not stated。被封鎖、限速或失敗的來源不會阻止其他來源;它會與其狀態一同列出,並且退出碼為 3。使用 --json 時,記錄會先出現,最後一個物件 {"brief": ...} 會包含來源、欄位、交叉核對和頁尾;--ledger 僅儲存記錄。每個 brief 都以以下內容結尾:研究,而非醫療建議。Brief 列出的是公開文件;它不會為任何人解讀任何資訊。
Cite-check
每條引用都會經過證據記錄,無法解析的引用會從來源中刪除或修正,絕不從記憶中修復。cite-check FILE 會將其應用於整個筆記。它會尋找每個 DOI、每個寫成 PMID 123、PMID: 123 或 pubmed/123 URL 的 PubMed ID,以及每個 NCT ID,移除重複項 (保留首次出現的行),並使用單一查詢程式碼逐一查詢:DOI 使用 doi,PMID 使用基於 [pmid] 欄位的 PubMed 搜尋 (兩次請求),NCT ID 使用 trial。通常的客戶端規則適用:目錄閘道、節流、預算、斷路器、記帳。
| 行 | 意義 |
|---|---|
PASS | 來源返回了一條記錄;其標題和年份或日期會被列印,如果缺失則列印 not stated |
NOT FOUND | 來源回應沒有此 ID。從來源中刪除或修正它;絕不要猜測 |
UNRESOLVED | 查詢被封鎖、限速或失敗。無法解析不等於不存在 |
TITLE PASS / TITLE CHECK | 同一行上四個或更多單詞的引述或強調短語,與記錄的標題 (忽略大小寫、標點符號和順序) 共享至少 0.6 (或更少) 的較短一側單詞 |