拨款
Grants — NIH 资助情报
> 可移植性: 需要 bash_tool(用于通过 curl 进行 RePORTER POST 请求)、安装了 docx 包的 Node.js 以及 Consensus MCP 连接。原生支持 Claude Code CLI。在开启了代码执行 + Consensus MCP 的 Claude.ai 中支持该工作流,但速度较慢。
> 范围:仅限 NIH。 非 NIH 资助方(PCORI, DOD CDMRP, VA, 基金会)不在范围内,并在引导阶段予以标记。
为拥有研究想法的临床研究人员提供一份战略性的 NIH 资助概览,并以可编辑的 .docx 格式输出。输出内容涵盖研究定位分析、研究所映射、目标资助发现以及研究人员可编辑、复制并与导师分享的战略建议。
智能体完整性规则 (Research-Pack 约定)
继承自 PR #657 审计,原样锁定。
- 执行纪律。 只有在确认收到结果后,步骤才算完成。Consensus 调用必须顺序执行且间隔 1 秒以上。RePORTER 调用顺序执行。
- 数据溯源。 仅统计本会话中工具调用返回的结果。严禁使用训练知识进行补充。训练知识需标记为
[非来自 Consensus/RePORTER — 参考信息]且不计入统计。
- 计数与归属。 发送的查询数 / 显示的结果数 / 引用的结果数 —— 这三个数字必须分开统计,不得混淆。每篇引用的论文必须具有本会话中可检索的 URL。
- 错误处理。 失败 $\rightarrow$ 等待 3 秒 $\rightarrow$ 重试一次 $\rightarrow$ 记录日志。若跨工具连续失败 3 次:停止,提醒研究人员,并解释缺失内容。严禁静默跳过。
- 透明度。 DOCX 文档中需包含审计日志 (Audit Log) 部分。聊天摘要中的标准与文档中保持一致。
关于 RePORTER POST 标准 + 计划层级检测,请参阅 references/reporter_post_patterns.md。
第一阶段:Grill-Me 引导访谈(6 个强制性问题,逐一询问)
Q1 (根问题) — 研究想法
> 请用 2-3 句话描述研究想法。研究问题是什么?创新点在哪里?临床相关性如何?模糊的回答(如“医疗 AI”、“疾病 X 的生物标志物”)将被拒绝 —— 请追求具体化。
>
> *询问原因:* 五次 Consensus 搜索(既定事实 / 关键影响 / 当前方法 / 相邻方法 / 研究空白)均依赖于精确的研究想法。模糊的想法会导致产生的研究空白引用同样模糊。
以及无用的定位叙述。
拒绝冗余。如果用户描述过于宽泛,仅限一次要求其提供示例。
Q2(取决于 Q1)— 职业阶段
> 职业阶段 — 请选择一项:
>
> 1. 博士前阶段(博士生、T32 受训者)
> 2. 博士后(F32、K99 申请人)
> 3. 职业早期(K 系列奖项申请人、首个 R01)
> 4. 独立研究员(拥有多个 R01、已建立实验室)
> 5. 高级 PI(R35、P 系列、U01 领导者)
>
> *询问原因:* 职业阶段决定了资助机制的推荐。受训者适用 F 系列,职业早期适用 K 系列,独立研究员适用 R 系列。选择错误的阶段会导致推荐的资助机制无法获得资助。
强制选择。
Q3(取决于 Q2)— 初步数据状态
> 初步数据 — 请选择一项:
>
> 1. 无(全新项目,尚无试点数据)
> 2. 试点数据(早期发现,单中心)
> 3. 强初步数据(多项实验,可支持 R01 规模)
> 4. 已验证且就绪(多中心,可发表)
>
> *询问原因:* 初步数据的状态决定了资助机制的预算规模。无数据 $\rightarrow$ R03 / R21 试点规模;强初步数据 $\rightarrow$ R01 / U01 多中心规模。不匹配会导致申请缺乏竞争力。
Q4(取决于 Q2)— 环境
> 研究环境 — 请选择一项:
>
> 1. 符合 R01 资格(拥有 NIH 基础资金的研究密集型机构)
> 2. 中端(区域性学术医疗中心,NIH 资助组合较少)
> 3. 资源受限(较小机构,NIH 基础资金极少)
> 4. 工业界协作(学术 + 工业界合作伙伴关系)
>
> *询问原因:* 环境影响方案的可行性(多中心 U01 要求符合 R01 资格)以及哪些资助类别具有竞争力(R15 专门针对资源受限机构)。
Q5(取决于 Q1)— 提交状态
> 提交状态 — 请选择一项:
>
> 1. 新申请(首次提交,无既往评审)
> 2. 重新提交(A1,需要针对评审意见进行回复)
> 3. 探索中(尚未决定是否提交)
>
> *询问原因:* 重新提交需要在 DOCX(第 7 节)中提供评审回复指导;新申请则跳过此步;探索中则将重点从策略转向整体格局。
Q6(取决于 Q1)— 已知的目标研究所
> 您是否已经在考虑特定的 NIH 研究所?请列出名称(如 NCI / NHLBI / NIMH / NINDS / NIDDK 等),或回答“无偏好 — 请帮我寻找合适的研究所”。
>
> *询问原因:* 如果您有目标研究所的假设,我将通过 RePORTER 数据对其进行验证。如果没有,我将根据研究所统计结果,列出资助相关工作的前三大研究所。
接受“无偏好”作为常见情况。
停止条件: Q6 结束后,确认并启动 Phase 2A。Phase 2A 开始后,绝不再重新开启信息采集。
Phase 2A:研究定位(5 项共识搜索)
以 1 次/秒的速度顺序运行。每次搜索对应一个定位维度:
1. 既定事实 (Established) — "<research idea>" established evidence — 已知内容
2. 重要性 (Stakes) — "<topic>" mortality OR burden OR cost OR prevalence — 为什么重要
3. 当前方法 (Current Approaches) — "<topic>" current treatment OR standard of care OR approach — 现有技术水平
4. 相邻方法 (Adjacent Methods) — "<related technique>" applied to <topic> — 方法论的可能性
5. 空白点 (Gaps) — "<topic>" limitations OR unanswered OR future directions OR challenge — 空白信号
每次搜索使用 scripts/citation_tracker.py --action record_consensus_search。从首次响应中检测 Plan 级别。
综合分析: 针对每个维度,提取 2-3 条可引用的发现(将成为第 2 节的 Gap 引用)。起草 Significance/I
创新语言采用“该领域已确立 X (参考文献),但 Y 仍未解决 (参考文献)”的模式。
阶段 2B:机构映射 + 资助项目发现 (RePORTER POST)
RePORTER 仅支持 POST 请求。请使用 bash_tool + curl —— 严禁使用 web_fetch。
动态财政年度窗口
在运行时通过 scripts/fiscal_year_calculator.py 计算。默认值为:当前财政年度 (FY) + 前 3 年。联邦财政年度始于 10 月 1 日,因此:
python scripts/fiscal_year_calculator.py --output json
返回: {"current_fy": 2026, "window": [2023, 2024, 2025, 2026]}
精确 (AND) 搜索 —— 寻找直接重叠项
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
-H 'Content-Type: application/json' \
-d '{
"criteria": {
"fiscal_years": [2023, 2024, 2025, 2026],
"include_active_projects": true,
"advanced_text_search": {
"operator": "AND",
"search_field": "all",
"search_text": "<key term 1> <key term 2>"
}
},
"limit": 50,
"include_fields": ["project_num", "project_title", "agency_ic_admin", "study_section", "fiscal_year", "principal_investigators", "abstract_text"]
}'宽泛 (OR) 搜索 —— 寻找相关研究
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
-H 'Content-Type: application/json' \
-d '{
"criteria": {
"fiscal_years": [2023, 2024, 2025, 2026],
"advanced_text_search": {
"operator": "OR",
"search_field": "all",
"search_text": "<term> <synonym> <related concept>"
}
},
"limit": 50
}'机构统计 + 研究分会 (Study Section) 排名
在获取 RePORTER 响应后:
- 统计
agency_ic_admin(机构代码:NCI, NHLBI, NIMH 等) $\rightarrow$ 资金支持前三的机构
- 统计
study_section$\rightarrow$ 前两个研究分会(申请书提交评审的地方)
NOSI 发现
解析 RePORTER 响应中的 NOT-* 机会编号。针对每个编号:
# NOSI 位于可预测的 URL 中:
https://grants.nih.gov/grants/guide/notice-files/NOT-<INSTITUTE>-<YEAR>-<NUMBER>.html
web_fetch <url>如果获取失败:记录 [NOSI {number} — fetch failed, not included] 并继续。
机制匹配 (基于范围感知)
不仅考虑职业阶段。职业阶段 + 项目范围 + 初步数据共同驱动推荐。
使用 scripts/mechanism_matcher.py:
python scripts/mechanism_matcher.py \
--career-stage "early_career" \
--prelim-data "pilot" \
--environment "r01_eligible" \
--scope "single_site" \
--output json
返回包含理由的机制候选名单
完整矩阵请参阅 references/nih_mechanism_matching.md。
阶段 3:DOCX 生成
通过 Node.js + docx 库生成 9 个章节。完整规范请参阅 references/docx_9_sections.md。
1. 执行摘要 (Executive Summary) —— 标题 + 职业阶段 + 环境 + 3-4 个关键发现要点
2. 研究定位 (Research Positioning) —— 3-5 处缺口引用(斜体,内联 Consensus 引用)+ 2-3 段定位叙述 + 支撑证据表
3. 目标机构 (Target Institutes) —— 排名表(机构、窗口期内项目数、与您想法的匹配度 %)+ 2-3 句解读
4. 资助机会 (Grant Opportunities) —— 若有,加粗标出 NOSI。前三大资助项目表(含 FOA 超链接)+ 每项资助的范围/预算匹配度段落
5. 已资助重叠项 (Funded Overlap) —— 前五大项目表(PI, project_num, IC, 年份, RePORTER 超链接)+ 差异化分析段落
6. 研究分会 (Study Sections) —— 排名表 + 最佳匹配解读
7. Stra
战略建议与后续步骤 — 3-4 条编号建议 + 强制性的项目官员 (PO) 建议 + 提交时间线说明 +(若重新提交且 Q5=2)评审员回复指南 + 结语段落
8. 参考文献 — 编号书目,超链接至 Consensus
9. 审计日志 — Consensus 搜索表、方案层级说明、RePORTER 搜索表、NOSI 获取表、汇总统计、工具限制说明、失败步骤
样式指南
正文 Arial 12pt,标题深蓝色 (#1a3a5c),表格表头浅蓝色 (#e8f0f8),NOSI 提示框琥珀色。ExternalHyperlink 模式:
- 论文引用:
https://consensus.app/papers/...
- FOA 链接:
https://grants.nih.gov/grants/guide/...
- RePORTER 项目:
https://reporter.nih.gov/project-details/<id>
强制性项目官员 (PO) 建议
必须包含在第 7 节中:
> 建议的下一步:联系 {top institute} 的项目官员。 请在 https://www.nih.gov/institutes-nih/list-nih-institutes-centers-offices → {institute} → Program Officers 查找其工作人员页面。准备材料:1 页的具体目标 (Specific Aims) + 个人简历 (CV) + 3 个关于匹配度的具体问题。邮件主题:“Pre-application inquiry: <topic>”。
这是给申请者最有价值的建议,绝不可省略。
提交时间线(嵌入在 DOCX 第 7 节)
| 机制 | 标准接收日期 |
|---|---|
| R01, R21, R03 | 2月5日, 6月5日, 10月5日 |
| K 类奖项 (K01, K08, K23, K99) | 2月12日, 6月12日, 10月12日 |
| R34, R61/R33 | 2月16日, 6月16日, 10月16日 |
| F31, F32 | 4月8日, 8月8日, 12月8日 |
第 4 阶段:交付
- 将 DOCX 保存至
<output-dir>/grants_<topic-slug>_<YYYY-MM-DD>.docx
- 聊天汇总:文件路径 + 审计计数 + 方案层级 + 目标机构判定结果
- 验证:使用
python3 -c "import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()" <docx>检查 zip 完整性(无输出即为完整),然后确认所需章节均已存在
工具链
| 脚本 | 角色 |
|---|---|
| scripts/citation_tracker.py | 三项计数审计(Consensus 发送/显示/引用 + RePORTER 项目/引用),路径为 ~/.grants_sessions/<session>.json |
| scripts/fiscal_year_calculator.py | 当前财年 + 前 3 年窗口。运行时计算,严禁硬编码。 |
| scripts/mechanism_matcher.py | 职业阶段 × 范围 × 初步数据 $\rightarrow$ 机制推荐短名单 |
参考文献
references/nih_mechanism_matching.md— 职业阶段 × 范围 × 初步数据 $\rightarrow$ 机制标准 (7+ 来源)
references/reporter_post_patterns.md— RePORTER curl POST 模板 + 方案层级检测 (7+ 来源)
references/docx_9_sections.md— 9 章节 .docx 规范 + 技术要求 (7+ 来源)
错误处理
| 故障 | 行为 |
|---|---|
| Consensus 触发速率限制 | 等待 3 秒,重试一次并记录;若仍失败,提醒研究员 |
| Consensus 某个维度返回 0 | 明确显示;绝不要用训练知识填充 |
| 检测到 Consensus 方案层级上限 | 记录层级,在审计中注明,并告知研究员 |
| RePORTER POST 返回错误 | 3 秒后重试一次;若仍失败,记录并继续 |
| 窄项 RePORTER 返回 <5 条 | 记录在案;宽项 OR 搜索应予以补偿;显示低计数 |
| NOSI 获取失败 | 记录 [NOSI {n} — fetch failed],继续执行 |
| 连续 3 次工具失败 | 停止执行,告知研究员缺失的内容 |
| DOCX 生成失败 | 将原始数据保存为 JSON 备份,以免研究员丢失工作进度 |
应拒绝的反模式
- 并行化 Consensus 调用(会导致...
- 速率限制 (rate limit)
- 在 RePORTER 中使用
web_fetch(RePORTER 仅支持 POST,而web_fetch为 GET)
- 财年数值硬编码
- 仅基于职业阶段推荐机制(必须同时考虑研究范围/规模)
- 在分面结果不足时,静默使用训练知识填充
- 跳过审计日志
- 跳过项目官员 (PO) 推荐
- 混淆“找到的论文”、“显示的论文”与“引用的论文”
- 在获取失败时伪造 NOSI 详情
---
版本: 1.0.0
源规范: megaprompts/08-grants-megaprompt.md
构建模式: 路径 B(直接转换)。pulse + litreview 的研究包同级组件。