auto-paper-collecter (技能)
一個自我託管的研究文獻雷達,可在編碼代理內部運行。 Python 腳本只負責確定性工作(API 擷取、去重、渲染、寄信)。您 — 運行此技能的助理 — 負責所有需要判斷的工作:查詢擴展、電腦科學相關性過濾、中文摘要以及熱門主題綜合。這意味著不需要 AI API 金鑰 — 運行此技能的模型(Claude Code 中的 Claude、Codex 中的 GPT,……)就是 LLM。
佈局
skill/
├── SKILL.md
├── scripts/ common.py · fetch.py · render.py · notify.py (僅使用標準函式庫)
├── state/ config.json · (queries/candidates/curated/trends/seen .json)
└── digests/ YYYY-MM-DD.md + .html
從 scripts/ 執行腳本:cd skill/scripts && python3 <script>.py
設定 — state/config.json
keywords:最多約 3 個要追蹤的主題字串。domain:限制相關性的領域(預設為computer science)。sources:切換arXiv / Crossref / Semantic Scholar / GitHub / HuggingFace / PapersWithCode / RSS。lookback_days:向後擷取的天數(去重機制無論如何會阻止重複)。max_per_source、rss_feeds。
當使用者要求更改關鍵字/來源/領域時,編輯此檔案並向他們確認變更。
選用環境變數(絕不存儲在 repo 中):
SEMANTIC_SCHOLAR_KEY(提高 S2 速率限制)、GITHUB_TOKEN(提高 GitHub 限制)、SMTP_*/EMAIL_TO(電子郵件),以及推送管道 —TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID、SLACK_WEBHOOK_URL、WECHAT_WEBHOOK(企業微信群機器人)或SERVERCHAN_KEY(Server醬)。
執行流程 — 依序進行
1 · 讀取設定檔並擴展查詢 (您)
讀取 state/config.json。針對每個關鍵字,想2–3 個相關的英文搜尋查詢 — 同義詞、完整形式、相鄰子主題 — 如此召回率就不會受限於字面詞彙(例如 C2Rust → ["C2Rust", "C-to-Rust translation", "migrating legacy C code to Rust"])。將它們寫入 state/queries.json,格式為 {"<keyword>": ["q1", "q2", ...], ...}。
2 · 擷取候選 (腳本)
cd skill/scripts && python3 fetch.py
為這些查詢擷取每個已啟用的來源,丟棄任何已在 state/seen.json 中或早於 lookback_days 的內容,然後寫入 state/candidates.json。如果報告 0 個候選,請告知使用者「暫無新文獻」並停止(沒有其他事情可做)。
3 · 過濾相關性並撰寫摘要 (您)
讀取 state/candidates.json。對每個項目判斷:它是否 (a) 屬於電腦科學且 (b) 對於其 topic 關鍵字來說真正相關?丟棄其餘內容(醫學「翻譯」、金融「AI」、隨機的 GitHub 星列表等)。對每個保留的項目,撰寫簡潔的中文摘要,並組裝 state/curated.json — 一個物件列表:
{"source","topic","title","url","venue","authors","published",
"tldr":"一句話核心 (<=60字)","method":"方法簡述 (<=80字)",
"contributions":["核心貢獻1","核心貢獻2"]}
論文優先,GitHub 儲存庫最後(它們是補充信號)。如果來源已提供 tldr,您可以在此基礎上構建。
GitHub 項目是儲存庫,不是論文 — 不要過度摘要它們。使用儲存庫描述(其
abstract)作為tldr,並將method/contributions留空。fetch.py只保留星數 ≥10 的儲存庫,按星數排序,因此它們通常是實質性的(課程/框架/awesome-list),而非個人噪音。
4 · 熱門主題綜合 (您,選用但建議)
將保留的項目聚類成少數粗粒度的 CS 子領域(自然語言處理 / 電腦視覺 / 系統與編譯 …;積極合併)。寫入 state/trends.json:
{"top": [{"name","delta": <計數>, "summary": "<=80字方向總結", "papers": ["title", ...]}, ... 最多 3 個]}。
5 · 渲染摘要 (腳本)
cd skill/scripts && python3 render.py
從 curated.json(+ trends.json)寫入 digests/YYYY-MM-DD.md + .html,並將顯示的所有內容記錄到 seen.json 中,以免重複。
6 · 通知 (腳本,選用)
cd skill/scripts && python3 notify.py # 如果設定了 SMTP_* 環境變數,則以電子郵件寄送 HTML 摘要
7 · 報告結果 (您)
告知使用者保留了多少篇論文、熱門研究方向以及摘要路徑。提供開啟 HTML 或調整關鍵字的選項。
備註
- 腳本為純 Python 標準函式庫 — 不需要
pip install。 fetch.py已過濾掉垃圾未來日期並跨執行去重。- 此技能是該專案 FastAPI 網頁儀表板的代理驅動對應版本;兩者共享相同的來源和管線理念。