医学证据持续监控
每期创建一份新的、面向医生阅读的飞书进展报告。上一期报告和原定时任务用于恢复配置、帮助减少重复和延续跟踪,不向用户展示检索流水、内部台账或任务状态。
执行原则
- 多路发现、统一择优:论文发现先并行使用
general_search与scholar_search,随后无论首批数量是否已足,都尽量并行尝试 PubMed、Europe PMC、Crossref 三个结构化 URL,补充更完整的题录、摘要和高质量正式论文。三入口任一失败即跳过,不循环重试;正式发表研究仍不充足时才追加预印本检索。预印本不是每期必跑项。 - 来源偏好是软偏好:关注主题和重点话题决定查询与排序;来源范围偏好用于加权、补充和展示,不是白名单、硬准入或“必须逐个覆盖”的清单。不要因为某个偏好来源没有结果而中止报告。
- 论文宁缺勿滥:预警/疑似掠夺性、期刊身份或同行评议机制不透明、明显低质量的论文不进入报告。开放获取(OA)本身不是低质量证据,不得仅因 OA 排除正规高质量期刊;结合期刊质量信号、研究设计和来源透明度判断。
- 不逐篇回读:检索结果和摘要足以支持候选时,不再逐篇
web.fetch确认日期、补摘要或补刊名。只对少量日期冲突、链接异常、来源身份不清或关键数字缺少支持的最终候选选择性回源。 - 单文件运行态:各路检索结果先保留在当前上下文中,完成检索、去重和筛选后只写一次最终
report-data.json。不要生成evidence-ledger.json、batch-*.json、逐批快照或嵌套转义的 JSON 字符串;使用原生 JSON 写入 UTF-8 文件并保留可读中文。 - 最少但必要的检查:报告只保留有可点击来源和非空证据片段的内容,禁止题名空壳。飞书文档创建后只做一次
scope=full回读,确认正文非空、主要章节和入选条目标题可见即可。【监管-01】、监管 - 01等括号或空格差异不是失败条件,不运行精确display_id格式验证,也不因此重建文档。 - 尽量不派生子 Agent:由当前主 Agent使用批量并行工具调用完成检索、筛选、写作和交付。只有用户明确要求,或单 Agent 遇到真实工具硬限制时才例外。
- 聊天表达自然:最终聊天摘要和订阅邀请可适度使用 1–3 个与进展、报告或提醒相关的 emoji,帮助扫读;不要每段堆 emoji,也不要用 emoji 替代医学事实、证据边界或风险表述。
1. 判断当前动作
- 首次只表达持续关注:完成一次检索并创建首期报告,不创建定时任务;报告后自然邀请订阅。
- 明确要求创建订阅:从原话预填关注主题领域、重点标注话题、更新频率、来源范围偏好;更新频率缺失时,根据领域更新速度和首期检索结果生成默认建议。邀请用户进一步明确重点关注的子领域、技术路线、人群或进展类型;确认后只创建一个任务。
- 定时运行/立即更新:读取原任务;上一期报告和
seen_source_keys可用时用于帮助识别增量,不可用时照常检索、创建并回读新报告,再更新原任务。 - 修改/暂停/恢复/删除:操作原任务,不新建第二个任务。
- 只有一次性“查某领域最新进展”:完成一次进展检索和报告,不创建定时任务;普通文献调研、综述或课题调研才转「医学文献检索」。
用户回复“确认创建”前不得调用定时任务工具。不要让用户选择重要性阈值、无更新策略或其他内部参数。
2. 检索与筛选
检索时读取 references/baseline-and-multisource-search.md。
第一阶段:General + Scholar 并行发现
- 建立主题的中英文名称、缩写、常用同义词与重点概念簇,确定明确的
start_date、end_date。 - 并行调用
general_search与scholar_search搜最近发表的论文:- General 同时做宽主题和重点概念查询,按需用
site:pubmed.ncbi.nlm.nih.gov、期刊/出版商域名等限定站点,并加入窗口对应的英文月份与年份; - Scholar 每次传
publish_start_date与publish_end_date,先宽主题,再拆重点概念; - 不把所有概念塞进一条过窄的布尔式查询,零结果时换同义词或减少一个概念扩展一次。
- General 同时做宽主题和重点概念查询,按需用
- 同时用 General 搜最新医学资讯、共识/指南、监管和专业动态:中文使用
YYYY年M月,英文使用Month YYYY;跨月分别查自然月。按主题追加一个中外建议信源名做定向发现,但信源表不是白名单。 - General 命中论文报道、机构新闻稿或会议报道时,把它作为发现线索:提取论文原题、DOI、PMID、作者、期刊或试验简称,用 General/Scholar 或结构化入口反查对应论文页。找到后,研究条目的
source_url指向论文、PubMed/Europe PMC、DOI 或正式预印本页面;报道页可另存为discovery_source_url,不能替代论文链接。
第二阶段:结构化 URL 常规补充
General/Scholar 首批完成后,无论结果数量是否已足,都尽量并行拼接并读取以下三个入口:
- PubMed
[dp]与 Europe PMCSRC:MED + FIRST_PDATE; - Crossref
from-online-pub-date/until-online-pub-date,请求container-title和abstract; - 必要时对已选中的多个 PMID 做一次 Europe PMC
resultType=core批量摘要补充。
三个入口是补充召回,不是硬性完成门:单个入口不可用、返回 0 条或解析失败时直接跳过,不因故障重试拖慢报告。只有某个关键概念仍明显缺口时,才在可用入口缩短概念簇扩展一次。PubMed、Europe PMC、Crossref 是检索来源,不是期刊;journal_name 只取结果明确返回的真实期刊字段。
把 General、Scholar 与结构化结果合并去重,按主题相关性、研究设计质量、来源可信度、证据成熟度和时效性统一排序。使用自适应纳入阈值:窗口内只有少量可核验研究时,有多少达到质量底线的相关结果就呈现多少;若没有合格论文,宁可少写或不写。已有约 5–6 篇较强候选足以支撑本期时,提高门槛,只保留更相关、设计更强、来源更可信的研究,剔除边缘相关、低信息量、仅有题录、预警/疑似掠夺性或明显低质量期刊的候选。优先系统综述/Meta 分析、指南相关研究、随机对照试验、大型前瞻性队列和高质量专科研究;不为了凑数保留垃圾文献。
对最终入选论文,若检索结果或可信期刊信息源明确给出影响因子或分区,可选写入 journal_impact_factor 或 journal_quartile,并同时记录指标年份与口径/来源。分区需写清 JCR Q1/Q2…、中科院分区或其他体系,不能只写含义不明的“Q1”;影响因子不得用 CiteScore、SJR 等替代。没有可靠数据就省略,不为补指标逐篇回读或猜测。
若本次不是定时任务触发,且用户明确限定“一周/近 7 天”,先完整执行严格窗口检索;如仍不足以形成有参考价值的权威进展报告,主动向前扩展近期窗口。通常先补近 30 天,更新较慢的领域仍明显稀疏时可再补近 90 天;这是补充背景,不把旧内容冒充一周内新增。报告开头和聊天摘要均简洁说明严格窗口内有多少有效进展、扩展到哪个区间,并区分“近 7 天新增”与“扩大窗口补充”。action=scheduled_run 时不得用扩大窗口替代真实增量。
第三阶段:按需补预印本
只有正式发表研究仍不充足时,才检索 medRxiv、bioRxiv、Research Square、Preprints.org,按领域补 SSRN、arXiv、OSF 或 Europe PMC SRC:PPR。这里的“不充足”是指主问题或用户重点仍有明显缺口。已发表研究充足时跳过本阶段;用户明确排除预印本时不搜索。纳入时醒目标注“未经同行评议”,旧预印本新版本与后续正式发表合并为同一事件链。
检索、筛选和去重全部完成后,再把最终入选内容一次写入 report-data.json;不要为每批工具结果创建本地文件。只要至少一条主要检索路径可用即可完成报告;搜索成功但没有合格增量时可如实写“本期未检出可核验的新研究或进展”。
日期、身份与证据边界
日期判断、资讯身份和来源规则以 references/baseline-and-multisource-search.md 为准,不在多个文件重复维护。保留三条底线:
- 不把旧论文、旧指南或旧监管动作冒充成本期新进展;
- 不根据题名或主题补造对象、设计、数字、结论或临床建议;
- 只有具备可点击来源和可支持正文的片段、摘要或官方内容时才写成用户可见条目。
3. 每期飞书报告
成文时读取 references/output-and-qa.md,使用 assets/feishu-monitor-template.xml。
报告依次包含:
- 本周总结:浅色 callout 内用无序列表覆盖正文中大多数值得提及的进展;
- 本期进展总览画板:用
scripts/render_overview_whiteboard.py生成 SVG,包含具体核心观察、三类彩色分类卡和全部条目的原题/来源索引;画板应脱离正文也能读懂; - 最新医学资讯;
- 共识、指南与监管进展;
- 研究进展,按本期主题自然拆分;
- 灵感启发,每条用独立浅色 callout,只写由本期证据触发的研究或方法学问题;
- 订阅设置,放在最后。
空章节可省略。不要展示检索窗口、覆盖情况、基线、当前结论、task_id、checkpoint、证据台账或运行日志。不要给每条内容机械套“发生了什么/为什么值得关注/证据边界”;根据材料自由使用段落、列表、小表、callout 或补充图表。
所有用户可见内容只从最终一次写入的 report-data.json 生成:
key_observations可直接写成 3–4 条字符串;如希望保留证据映射,也可写成{"text":"…","supporting_display_ids":["研究-01"]}。两种形式均可直接渲染,不要为此读取脚本源码;- 建议每个
report_item写入时直接带上category:医学资讯用news,共识/指南/监管用guideline,论文/预印本/临床研究用research;漏填时渲染器会尝试从编号或类型推断; display_id全报告唯一;short_label是易读中文概括,original_title逐字保留来源原题;- 正文逐条列举资讯、共识/指南/监管和研究时,尽量在标题前沿用画板中的同一
display_id,让读者可以从画板定位正文;这是表达建议,不做编号格式、连续性或逐项一致性校验,也不因标号差异重建文档; - 每个资讯、研究/预印本、共识/指南和监管条目的标题本身都用对应
source_url创建可点击超链接,不能只在段末另放来源; - 期刊名只显示检索结果真实返回的
journal_name;否则写实际record_source。PubMed、Europe PMC、Crossref 不是期刊,PMID/DOI 有则显示、无则省略; - 总结、画板和灵感不得比正文证据更具体或更确定。
写 JSON 时正文引号优先使用中文全角引号 “”。渲染器会保守兼容正文中误写的未转义 ASCII 双引号,以及字符串形式的 key_observations;不要因这两类轻微格式问题中断流程、检查行号或读取源码。
report-data.json 写完后直接运行下列固定命令,不需要先查看脚本帮助或源码:
python3 scripts/render_overview_whiteboard.py \
--input report-data.json \
--output overview.svg
渲染器可在遗漏 category 时根据 display_id 或类型字段做一次安全推断,但这只是容错;生成数据时仍应一次性补齐类别。
生成 XML 时固定在“本期进展总览”标题下写入 <whiteboard type="svg" path="@overview.svg"></whiteboard>,让文档工具直接读取同工作目录的本地 SVG。不要上传 SVG、不要构造公网 URL、不要改用 <img>,也不要为选择插入方式重新阅读 XML 说明。
用 report-data.json 生成 XML 与 SVG 后只创建一次飞书文档。创建成功后用 scope=full 回读同一文档一次;看到报告标题、主要章节和入选条目标题,且正文非空、无明显整章丢失,即可交付 URL。不要对 display_id 的方括号、连字符两侧空格或标题字面格式做精确匹配;不要因为 【监管 - 01】 与 监管 - 01 的差异修改文档或重复创建。
首期聊天给出本期摘要和 [查看完整飞书进展报告]({本次实际 URL}) 后,再自然邀请订阅:
🔔 我可以定期帮你跟踪「{关注主题领域}」的最新研究、指南监管与医学资讯,并推送新的进展报告。需要订阅推送吗?我已经根据该领域特点和本次检索结果生成以下默认配置;如无调整,回复 确认创建 即可。你也可以进一步告诉我最想重点关注的子领域、技术路线、人群或进展类型。
随后展示四项简洁配置。来源范围偏好可由用户调整,但始终作为搜索与排序偏好,不作为硬准入。
更新频率未指定时,结合领域特点和首期结果给出一个默认值:
- 更新快、首期有多条重要研究/监管/会议进展:建议每周一次;
- 更新中等、重要变化通常隔周出现:建议每两周一次;
- 更新较慢、首期有效增量较少:建议每月一次。
若首期必须主动扩大用户指定的近 7 天窗口后才获得有效、有价值的文献,默认频率随实际更新速度放宽:补到近 30 天才形成有效报告时优先建议每两周一次;补到近 90 天或仍然较稀疏时优先建议每月一次。不要在这种情况下仅因用户最初问了“一周”就默认每周推送;这是推荐值,用户明确选择的频率仍优先。
这是默认建议而不是硬规则;用户可直接调整。未指定具体推送日/时间时,在建议频率后写“推送时间待确认”,不得擅自填写“每周一”。
4. 创建和维护订阅
用户确认后读取 references/monitor-contract.md 与 references/scheduled-run-protocol.md;定时运行时还必须显式读取 references/dedup-and-medical-delta.md:
- 复用已回读的首期报告作为
previous_report_doc; - 创建唯一任务,保存四项订阅设置、
previous_report_doc与last_success_at;seen_source_keys能方便生成时作为可选去重提示保存; - 创建或更新后读取同一任务一次,核对周期、时区、query 和报告链接。
定时运行时先读取 references/dedup-and-medical-delta.md,再按相同“General + Scholar → PubMed/Europe PMC/Crossref 常规补充 → 正式研究不足时补预印本”顺序检索增量。读取上一期报告和去重提示有助于减少重复,但缺失时不阻塞。每期创建新报告,不追加旧报告;报告全文回读确认主要内容存在后更新 last_success_at,去重提示可随任务顺手更新。报告末尾保留四项设置调整入口。报告用于医学证据跟踪,不替代临床决策或监管原文。