研究 → plan.md + 源文件
三技能套件的编排器:
source-triage:在阅读之前查找资源并对其访问性、可及性、完整性和等级进行分类。research-plan(本技能):阅读可访问的资源,然后编写规划和源文件。evidence-check:独立审计,确保每个声明都是真实的且有支持。
如果缺少同级技能,请根据以下摘要内联执行其步骤。确定性检查器包含在本技能中:python3 <本技能文件夹>/scripts/research_checks.py。它是标准库Python,在你的代码沙箱中运行(PDF文本需要pypdf;如果缺失,在那里pip install pypdf)。在需要确定性检查的地方使用它。仅在无法执行代码时,才手动进行这些检查并说明。
输出(固定名称)
research/<主题-slug>/plan.md
research/<主题-slug>/sources__<主题-slug>__<YYYY-MM-DD>.md ← 人工视图
research/<主题-slug>/ledger.md ← 工作状态,边进行边写入
research/<主题-slug>/notes/<引用键>.md ← 每个资源笔记
research/<主题-slug>/notes/raw/<引用键>.txt ← 原始全文(API XML/PDF文本),支持逐字引用
research/<主题-slug>/claims.json ← 支持的声明 + 引文,用于检查
<主题-slug>:3-6个特定单词,小写连字符(淀粉-果聚糖-工程-植物)。- 永远不要覆盖之前的运行结果。同一主题:新的带日期的源文件 + 变更日志条目。新角度:新的slug。
- 如果用户有连接文件夹,则在其下工作;否则,在工作目录工作。最后发送两个主文件。
模式
- auto(默认):无暂停;在最后列出你的选择。step:在每个◆处停止。
- quick:保留8-15个资源。最多完整阅读5个顶级资源;其他使用
sections:(摘要 + 结果 + 讨论)。反证:最多3次搜索。选择性滚雪球。 - deep:25+个资源,滚雪球,并行探索,完整阅读所有A/B级资源。
- update:用户下载了文件或要求刷新 → 第6阶段。
- 请求中的硬约束(需要2个书章节、字数限制、必需数据库的评分标准)是要求,而非建议。使用经过验证的资源来满足它们,或者明确说明哪一个未满足。
第0阶段 — 框架
一条消息:
- 规划的目标及其用途(代理 / 技能 / MCP / 报告 / 实验 / 决策);
- 范围、年份、深度和模式;
- 硬约束;
- 2-6个 MECE轴(不重叠的子问题)。
创建一个任务列表:框架 → 分类 → 阅读 → 综合 → 编写 → 检查。如果没有任务工具,则将列表放在 research/<slug>/run-notes.md 顶部。
◆ 检查点:轴 + 范围。
第1阶段 — 分类(运行 source-triage)
首先使用图书馆 → 发现 → 完整性(用于你将提到的任何内容)→ 访问 + 可及性 → 等级 / 角色 / ⭐。
边进行边写入分类账。 立即追加每次搜索和每个分类的资源;上下文可能在运行中丢失,而分类账文件是唯一保留的记录。
在deep模式下使用子代理时,为每个轴并行发送一个探索者。每个探索者:
- 使用≤15次工具调用;
- 编写
notes/<轴>.md,包含以下章节:要点 · 引用发现(含链接)· 推断 · 缺口; - 将其候选者追加到分类账。
没有子代理时,按顺序运行各轴。 ◆ 检查点:按访问类别计数的 ⭐ 候选名单。
第2阶段 — 阅读
- 阅读
可读/持有的资源,最高等级优先。优先使用原始路由(通过shell的Europe PMC XML、PDF文本)并将文本保存到notes/raw/<引用键>.txt。 - WebFetch阅读是
read: full (extracted)。用于理解,但基于它的声明会被标记为⚠ extracted,并且永远不是由引文“支持”的。 - 对于长文本,分块阅读直到你到达参考文献列表。Quick模式允许
sections:阅读;标记它们。 - 在分类账每一行设置
read:full·sections:<哪些>·abstract·metadata。 - 每个资源,
notes/<引用键>.md包含:- 为什么(问题);
- 如何做(方法、数据);
- 结果(发现:精确复制的数字,带有章节/页面定位符);
- 限制,每个标记为
作者陈述(带定位符)或我的推断。 没有全文时:限制:未评估(阅读:abstract)。
- 当计划中的一个句子将承载声明时,从原始文本中复制一个≥40个字符的逐字引文到
claims.json:{"id","claim","source":"notes/raw/<引用键>.txt","quote","locator"}。 - 永远不要凭记忆填写笔记。“在我读的部分中没有”是有效答案。
第3阶段 — 综合
- 证据矩阵: 资源 × 主题(支持 / 矛盾 / 沉默)。按主题分组,永远不要逐个资源。
- 收敛(≥3个一致)· 分歧(用方法、群体或时间解释)· 沉默(<2个资源:缺口)。
- 独立计数: “4项研究(2项独立)”。共享数据集、队列、团队或试验只计一次。
- 反证检查: 对于头条发现,搜索null结果、失败复现和批评。即使没有结果也要记录搜索词。Quick模式:最多3次搜索。
- 否定声明(“没人做过X”)需要携带其背后的搜索,且限于搜索范围。
- 贡献检查: 用户利用这个计划能做以前不能做的什么?哪个⭐下载最能改变它?
- 魔鬼代言人检查: 最有力的反驳、选择性引用,以及一个未被质疑的前提。不要因为不便利就放弃一个反对意见。
第4阶段 — 编写文件
plan.md
- 标题: 目标 · 用途 · 范围 · 日期 · 指向源文件的链接 ·
证据基础:N个完整(原始)· N个完整(提取)· N个章节 · N个摘要 · N个元数据。 - 正文: 满足请求需要的所有内容。
- 引用:
<sup>[3](sources__<slug>__<date>.md#s3)</sup>,按首次出现顺序编号。 - 引用后标志:
⚠ abstract-only:仅阅读了摘要;⚠ metadata-only:仅知标题/出处;⚠ extracted:通过WebFetch阅读,因此无法进行逐字检查;⚠ preprint。
- 结尾: 开放性问题 · ⭐下载将解锁的内容 · 未满足的约束(如果有)· 变更日志。
sources____.md
# 源文件 — <可读主题标题>(<date>)
计划:[plan.md](./plan.md) · 问题:<一行> · 模式:<quick|deep> · 搜索:<数据库 + 日期>
计数:N 总共 · ⭐ X · 可读 R · 免费但被屏蔽 B · 付费 P · 非论文 W · 已排除 E (总计 = 每个分类账行)
证据基础:<与plan.md相同的细分>
## ⭐ 1. 下载这些以获取本地上下文
| # | 源文件 | 类型 | 等级 | 访问 · 许可证 | 为什么它对<正在构建的内容>重要 | 如何获取 | 保存为 | 可重新分发 |
## 2. 开放且可读(已提炼到计划中)
### <主题A>
<a id="s1"></a>**[1]** 作者(年份)。[标题](URL)。*期刊 / 书名,页码*。[DOI](https://doi.org/…) — `gold · CC-BY` · `readable:europepmc-xml` · read: full · 等级 A · 证据
(preprint会在这行添加一个 `` `preprint` `` 标签;然后检查器要求其引用带有`⚠ preprint`)
- WHY … · HOW … · WHAT … · LIMITS …
## 3. 免费但对AI代理被屏蔽(请自行打开)
条目 + 观察到的屏蔽 + 直接链接 + 任何绿色副本。
## 4. 付费
条目 + 绿色副本链接或“未找到” + 使用的摘要级别要点(如果已使用)。
## 5. 非论文资源
按类型,等级 T1–T5。灰色文献:URL + 访问日期 + 快照链接。
## 6. 已排除(及原因)
每个排除记录一个项目符号,以 **已排除:** <原因> 开头。
## 7. 搜索日志与访问路由报告
规则:
- 每个条目都有一个与计划中编号匹配的
<a id="sN">锚点。 - 每个URL都是一个
[文本](url)链接,包括标题行中的。 - ⭐行指向主条目编号。
- 按访问类别分组,然后按主题分组。
第5阶段 — 检查,然后交付
- 确定性检查: 运行
python3 <本技能文件夹>/scripts/research_checks.py all research/<slug>/。修复每个错误(缺少锚点、缺少⚠标志、计数不匹配、词汇、引文不在源文件中)并重新运行直到通过。 - 证据检查: 运行
evidence-check。- 使用子代理: 在一个全新的代理中,仅提供文件。
- 没有: 同会话检查,从磁盘重新读取每个文件,且不保留编写它们时的记忆。标记为
same-session (not independent),并建议用户在新对话中运行证据检查后再依赖它。
- 抽查打开 每个访问类别3个链接。来自出版商的403/429错误不能证明什么;说明这一点。
交付两个文件,并附带一行说明:
- 计划的头条;
- ⭐计数;
- 需要手动下载的资源数量;
- 未满足的约束。
在auto模式下,同时列出你的选择(轴、年份、数据库、过滤器、上限)。
第6阶段 — 更新(用户下载后)
- 将文件夹中的文件与保存名称匹配。
- 验证它们(
python3 <本技能文件夹>/scripts/research_checks.py pdf <files>)。 - 阅读每个文件,保存其原始文本,并设置
held: user和read: full。 - 重新评级,移除临时的
?等级。 - 将⚠标志转换为带有引文支持的声明,或重写新文本矛盾的声明。
- 对更改的部分重新运行第5阶段。
- 编写一个新的带日期源文件并添加变更日志条目。
红旗
| 想法 | 现实 |
|---|---|
| “我读完后再检查访问权限” | 先分类,否则付费摘要会悄悄影响计划。 |
| “它是OA,所以我可以阅读” | 测试路由。OA文章在测试中被屏蔽过。 |
| “WebFetch给了我文本” | 它给的是模型的提取。用于阅读,绝不用作引文。 |
| “我知道这篇论文/章节” | 试验产生了错误标题、错误书籍和基于记忆的不存在论文。先查证。 |
| “DOI可解析,所以章节正确” | 也检查书名和页码。 |
| “被屏蔽,我试试镜像” | 绝不。找到合法的绿色副本,否则将其列出给用户。 |
| “我最后再写分类账” | 上下文重置会抹掉它。边进行边写。 |
| “三项研究一致” | 计算独立研究;搜索那些结果相反的研究。 |