用 Paperclip 管理科研文献工作区:仓库(Repo)、剪贴板(Clipboard)与个人图书馆(Library)实战指南
【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills
导读
Paperclip 将约 1100 万篇全文论文、21.7 万+ 监管文件、11 万+ 临床试验方案与 57.4 万+ 蛋白质条目暴露为一个只读虚拟文件系统,供 Agent 以 Unix 命令方式检索与阅读。本文聚焦该工具在科研工作区管理上的三大核心设施——论文仓库(Repo,用于追踪文献与可验证声明)、剪贴板(/clipboard/,用于存放上传 PDF 与生成文件)、个人图书馆(Library,用于收录所有导入条目)——并完整覆盖repo/git、upload、sync、import、library、share、fetch等命令族的用法、验证流程与已知缺陷。读完本文,你将掌握如何组织一次带行号级引用的系统综述、如何把验证通过的声明沉淀进仓库并导出 BibTeX/RIS,以及如何管理属于自己的文献工作空间。本文内容以 repos-and-workspace.md 为主体,结合 SKILL.md 与 cli-reference.md 中的命令表与验证记录展开。
三个容易混淆的存储空间
Paperclip 里有三个彼此独立、各司其职的存储位置,是理解整个工作区模型的第一步:
| 存储空间 | 存放内容 | 命令族 |
|---|---|---|
| Repo(仓库) | 论文成员关系 + 可验证的claims(声明) | repo/git |
Clipboard(剪贴板)/clipboard/ | 上传的 PDF、语料库链接、以及你生成的文件 | upload、cp、sync、mkdir、rm |
| Library(图书馆) | 你导入的每一篇论文(无论是否与语料库匹配) | library、import |
两个最容易被误解的点:
- 仓库不会把论文复制进剪贴板。仓库记录的是"这篇论文属于这个集合"的成员关系与声明元数据,而不是文件本身。
repo commit不会保存任何文件。它保存的是声明元数据快照。要持久化你生成的产物(报告、图表、CSV),唯一途径是paperclip upload(详见下文"保存你生成的文件"一节)。
原文档中的所有示例均省略了认证前缀,实际调用时必须携带:
[ -f .env ] && { set -a; . ./.env; set +a; }; paperclip <command>[ -f .env ]守卫是必需的:对不存在的文件直接执行. ./.env会让 POSIX shell 直接退出,从而静默丢弃你整条命令。加守卫后,无论.env是否存在、密钥是否已存在于环境中、在sh还是bash下都安全。该前缀需要出现在每一条命令前,因为 shell 状态不会在两次调用之间保留,漏掉前缀会导致 Paperclip 静默回退到 OAuth 身份(详见 SKILL.md 中的"操作规则")。
注意:本文命令转录自 paperclip 0.7.14–0.7.15 的
--help,撰写时并未逐条执行。长任务前请用paperclip <cmd> --help复核。
仓库是 opt-in 的:不要擅自创建
除非用户明确要求,不要自行创建、加入或提交仓库。默认情况下,每一次查询——无论是简单查找还是完整综述——都是直接读取文本行并引用。仓库的存在是为了用户明确要求以下场景时才使用:
- 追踪一个文献集合;
- 构建系统综述(systematic review);
- 验证声明(claim verification)。
如果某条命令打印出遗留的[repo: <name>]横幅,直接忽略它——把不相关的论文追加进别人的既有仓库,是对其工作的静默污染。如果活动仓库与当前请求不匹配,要么新建一个,要么执行paperclip repo checkout -来停用。
对于系统综述或定量 meta 分析,在创建仓库之前先加载paperclip skills show paperclip-meta-analysis。该工作流要求结构化的、锚定行号的 JSON claims 与确定性的编译/QA 步骤;普通仓库里的自由文本 claims 是合法的,但无法汇总为效应量(poolable effect estimates)。
仓库基础操作
paperclip git与paperclip repo是同一个功能:
git暴露核心子集:init、add、commit、status、log、branch、merge、switch;repo在其之上增加checkout、remove、claims、history、citations、export、info。
paperclip repo init my-review # 创建并激活 paperclip repo # 列出最近 10 个仓库 paperclip repo -n 0 # 列出全部 paperclip repo info my-review paperclip repo checkout other-repo # 优先切换分支,否则切换仓库 paperclip repo checkout - # 停用完整命令一览(转录自 cli-reference.md 的 Repos 小节):
| 命令 | 用途 |
|---|---|
repo init <name> | 创建仓库 |
repo checkout <name> | 切换分支,否则切换仓库;-停用 |
repo add <id> ["claim"] [--lines L45-L52] [--json '{...}'] | 添加论文,可附带声明 |
repo remove <id> | 移除论文 |
repo commit -m "msg" [--no-verify] | 快照并验证未核验的声明 |
repo status | 论文、声明、[OK]/[X]标记 |
repo claims | 以 JSON 输出声明(含 doc id 与行锚点) |
repo log | 提交历史 |
repo history | 命令审计轨迹(搜索、map 等) |
repo branch <name> | 创建并切换到分支 |
repo merge <branch> | 将分支论文并集并入当前分支 |
repo info <name> | 单个仓库详情 |
repo citations | 通过 Semantic Scholar 获取引用计数与图谱 |
repo export bibtex\|ris\|csv\|markdown | 导出活动仓库 |
repo/repo -n 0 | 列出最近 10 个 / 全部仓库 |
repos-feature | 整体启用或禁用仓库功能 |
活动仓库是粘性的(sticky),会跨命令保持。若只想对单次调用限定仓库,而不改变粘性状态,有三种方式:
paperclip --repo other-repo search -s pmc "query" # 使用该仓库,不改变粘性状态 paperclip --repo-only search -s pmc "query" # 只搜索该仓库的论文 paperclip search -s pmc "query" --corpus # 即使有活动仓库,也搜索整个语料库注意--repo与--repo-only要放在子命令之前:paperclip --repo-only search -s pmc "query"。默认情况下,即使有活动仓库,search也覆盖整个语料库——仓库只用于打标签。
Claims:可验证的声明
仓库的核心价值在于声明(claim)与验证。声明通过repo add附加到具体论文上:
paperclip repo add PMC10945750 "LNP delivery achieved 70% editing in hepatocytes" --lines L45-L52 paperclip repo add bio_456 "Off-target rate below 0.1%" paperclip repo add PMC123 # 仅成员关系,永不验证 paperclip repo add PMC123 --json '{"type":"effect_size","value":0.42,"ci":[0.31,0.55]}' --lines L88关键规则:
--lines将声明锚定到具体行,使验证更快更准。只要知道声明出处,就应该提供它;- 每次带声明的
add都会创建一条新条目。对同一论文 id 反复调用add可以挂载多条声明; - 更正声明:
paperclip repo remove <id>后重新add修正后的文本; --json允许存放调用方自定义的结构化声明,而不让仓库变得领域专用(例如存放效应量、置信区间)。
查看全部声明:
paperclip repo claims # 所有声明以 JSON 输出,含 doc id 与行锚点提交与验证流程
paperclip repo commit -m "Initial citations" paperclip repo commit -m "Snapshot" --no-verify paperclip repo status paperclip repo log paperclip repo history # 搜索、map 等命令的审计轨迹关于commit的三个事实:
commit永远成功——它是一个元数据快照,同时会并行对未核验的声明做全文验证;- 每条声明验证后返回
[OK](得到支持)或[X](不支持)。[X]只是建议性的,不会阻止提交; - 已经验证过的声明在后续提交中不会重复检查。
在写出最终答复前必须运行repo status,并且只引用[OK]的声明。对每条[X],要么改写声明以贴合论文实际表述,要么另找来源,要么直接丢弃。
完整工作流:从创建到交付
下面是把一次文献综述走完的标准流程(含修复步骤):
# 1. 创建 paperclip repo init my-review # 2. 查找与阅读 paperclip search -s pmc "topic A" -n 10 paperclip map --from s_xxx "What was the main finding and the sample size?" # 3. 添加你打算引用的声明 paperclip repo add PMC123 "Key finding X" --lines L45-L52 paperclip repo add bio_456 "Key finding Y" # 4. 提交——逐条对照全文验证 paperclip repo commit -m "Initial citations" # 5. 检查 paperclip repo status # [OK] PMC123 claim: Key finding X # [X] bio_456 claim: Key finding Y — paper says Z instead # 6. 修复 paperclip repo remove bio_456 paperclip repo add bio_456 "Key finding Z" --lines L80 paperclip repo commit -m "Fix bio_456 claim" # 7. 确认全部 [OK],再开始写作 paperclip repo status分支:在不污染主线证据的情况下探索
仓库默认在main分支上。当你需要探索一个侧面问题(例如安全性)时,分支可以避免污染主证据线:
paperclip repo branch safety-concerns # 创建并切换;分叉当前论文集合 paperclip repo add PMC789 "Drug X causes hepatotoxicity in 12%" --lines L200-L210 paperclip repo commit -m "safety claims" paperclip repo checkout main # main 不受影响 paperclip repo merge safety-concerns # 论文取并集repo checkout <name>会先在当前仓库内尝试切换分支,失败后再回退到切换仓库。merge对论文取并集。
导出与引用图谱
paperclip repo export bibtex > review.bib paperclip repo export ris > review.ris paperclip repo export markdown > review.md paperclip repo export csv > review.csv paperclip repo citations # 通过 Semantic Scholar 统计引用数与图谱repos-feature可整体启用或禁用仓库功能。导出的review.bib/review.ris可直接接入 citation-management 等引用管理工作流。
Clipboard:你的个人文档空间
/clipboard/是个人文档空间,与语料库使用同一套检索工具:
paperclip mkdir /clipboard/my-review paperclip cp /papers/PMC10945750 /clipboard/my-review/ # 零拷贝语料库链接 paperclip cp ~/local/papers/ /clipboard/ # 上传本地 PDF paperclip ls /clipboard/ paperclip ls /clipboard/my-review paperclip head -40 /clipboard/my-review/<id>/content.lines paperclip search "deep learning" -s clipboard paperclip rm /clipboard/my-review/<id> # 移除单个文档 paperclip rm /clipboard/my-review -R # 软删除整个文件夹语料库链接是符号化的:读取链接论文的content.lines会代理到原始论文,因此不产生任何重复副本,行号也保持稳定。这一点与仓库"不复制论文"的设计互为呼应。
文档化的限制:仅支持 PDF、单文件 20 MB、每人 10,000 篇文档、50 GB 存储。
保存你生成的文件
paperclip upload analysis.json --into analyses/my-topic paperclip upload index.html render_qa.json --into analyses/my-topic这是唯一持久化生成文件的途径。repo commit只记录声明元数据,不存储任何文件。JSON、HTML、CSV、MD、PDF 均被接受。upload的通用语法为upload FILES... --into FOLDER。
同步本地文件夹
paperclip sync upload ~/my_papers/ # 一次性上传文件或文件夹 paperclip sync add ~/my_papers/ # 注册文件夹以持续同步 paperclip sync run # 上传新增/修改的 PDF paperclip sync list paperclip sync status paperclip sync remove ~/my_papers/ # 取消注册;远端文档保留 paperclip sync rm my_papers # 从剪贴板删除 paperclip sync rm --all paperclip sync import refs.bib分享
paperclip share my_papers colleague@example.com paperclip share my_papers colleague@example.com --role editor paperclip unshare my_papers colleague@example.comshare会把用户的文档授权给另一个人。运行前必须与用户确认文件夹和收件人(默认角色为viewer,--role editor授予编辑权限)。
Import:三种截然不同的工作
import实际上覆盖三种不同的任务,其中第三种最出人意料:
# 1) PDF → 个人图书馆 paperclip import paper.pdf paperclip import ~/papers/ # 递归 paperclip import ~/papers/ --dry-run # 2) 参考文献文件 → 图书馆,或剪贴板文件夹中的语料库链接 paperclip import refs.bib paperclip import refs.ris --dry-run paperclip import refs.bib --into /clipboard/thesis-refs paperclip import refs.bib --init my-review # 从该文件创建仓库 paperclip import refs.bib --add-to-repo # 同时加入活动仓库 # 3) 一篇论文的 REFERENCES(通过 Semantic Scholar)——注意不是论文本身 paperclip import PMC11282385 paperclip import PMC11282385 --min-cites 50 paperclip import PMC11282385 --dry-runpaperclip import <paper-id>导入的是该论文的参考文献,而不是论文本身。想保存你找到的论文,请使用paperclip cp /papers/<id> /clipboard/<folder>/。
完整选项:--doi、-n/--limit、--min-cites、--dry-run、--init NAME、--add-to-repo、--into。任何超过几篇参考文献的导入,先跑--dry-run。
Library:个人图书馆
paperclip library # 所有已导入条目 paperclip library PMC11166971 # 单篇论文详情 paperclip library --matched # 仅语料库关联条目(✓) paperclip library --unmatched # 仅书目元数据条目(○) paperclip library --rematch # 重试匹配未匹配条目 paperclip library -s "fine-tuning" # 按标题、作者、期刊关键词搜索 paperclip library --remove PMC123456未匹配的条目仍保留标题、作者、年份、DOI 与期刊,因此即使没有全文支撑,它们依然可被搜索、可被导出。语料库更新后值得重跑--rematch——之前未匹配的条目可能在新一轮更新中匹配成功。
Fetch:抓取 Paperclip 没有的论文
paperclip fetch https://www.nature.com/articles/s41586-023-05724-2 paperclip fetch 10.1038/s41586-023-05724-2 paperclip fetch https://arxiv.org/abs/2301.00001 --into /clipboard/my-review/fetch使用你的浏览器 cookies下载并把结果加入剪贴板,因此能触达机构订阅的付费内容。它是以用户的凭证作用于出版方站点——只有当用户明确要求某篇特定论文时才可运行(SKILL.md 的"操作规则"将fetch列为交互式命令:无 TTY 环境下它需要用户在浏览器中完成授权)。
数据出口与安全边界
仓库、上传与导入命令会把本地内容发送到服务端,或以用户身份对外行动。对照 SKILL.md 的"Repositories, uploads, and data egress"表,以下命令必须只为用户点名的具体文件或收件人运行,绝不自行对整目录发起,也绝不擅自动手:
| 命令 | 会流出什么 |
|---|---|
paperclip upload FILE --into ... | 该文件 |
paperclip cp ~/path /clipboard/ | 那些本地 PDF |
paperclip sync add/sync run | 整个已注册文件夹,持续性地 |
paperclip import ~/papers/ | 递归发现的每个 PDF——先--dry-run |
paperclip share FOLDER EMAIL | 授予他人访问用户文档的权限 |
paperclip fetch URL | 用用户浏览器 cookies以用户身份下载 |
只读语料库操作(search、grep、cat、map)只发送查询本身。
实战中的已知缺陷与避坑
结合 SKILL.md 在 0.7.14/0.7.15 上实测验证的缺陷清单,以下问题会直接影响仓库与工作区使用,官方文档可能标注为可用但实际并非如此:
| 缺陷 | 规避方式 |
|---|---|
paperclip bash '...'把整串内容当作单个命令名 | 正常传参即可 |
Paperclip 内部的管道/重定向(\|、>)会作为文件名传给grep | 在自己的 shell 里接管道:paperclip grep X file \| head -20 |
/.gxl/下的文件ls可见但cat报 "No such file" | 用paperclip results <id>或results <id> --save out.csv |
cd在两次调用间不持久 | 使用绝对路径,一切从/papers/解析 |
reduce --strategy table返回的是散文而非表格 | 自己用paperclip results m_<id>构建表格 |
二进制读取cat fig.jpg > out.jpg产生U+FFFD乱码 | 用ask-image,或把meta.json中的出版方 URL 交给用户 |
最严重的一个:reduce输出的散文内嵌{{"document_id": "PMC12388", "line": 5}}标记,其 id 被截断为 8 个字符且无法解析——真实论文是PMC12388858。据此构造的引用 URL 是死链。id 一律取自search、results或meta.json。
其他与工作区相关的注意事项:
head/tail只对.lines文件有效,对meta.json不输出任何内容,读meta.json请用cat;- 搜索片段(snippet)不是证据,是生成的摘要,引用前必须打开原始行;
- CLI 可能在命令中途自更新(打印
[paperclip] Updated 0.7.14 → v0.7.15),无害,但长时间脚本运行期间版本可能变化; - 持久化的源过滤会收窄每条命令——如果跨源搜索都为空,检查
paperclip config --sources-list。
小结
三个存储空间构成 Paperclip 工作区模型的完整闭环:仓库负责把"这篇论文属于该综述 + 这条声明得到了行级验证"沉淀为可提交、可分支、可导出的结构化证据;剪贴板负责承载上传的 PDF、零拷贝语料库链接与上传产物,与语料库共用一套检索工具;图书馆则忠实记录每一次导入(无论匹配与否),并支持--rematch在语料库更新后补齐匹配。正确运用repo status的[OK]/[X]验证结果、为声明提供--lines行锚点、用--dry-run守护大规模导入、以upload(而非repo commit)持久化生成文件,就能构建一条从检索到验证再到引用的完整证据链。更多细节可继续阅读 search-and-retrieval.md(filter、SQL schema 与检索语义)、map-reduce.md(map/reduce 管线与结果导出)以及 installation.md(安装与认证)。
【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考