OneScience Knowledge Harvester
SkillSearchOneScience skill for automatically filling knowledge gaps. When a user describes missing knowledge in a domain (e.g., "lacking knowledge of saffron gene-derived reasoning"), it automatically runs: literature search → knowledge extraction → card generation → writing to onescience-primitives, so subse
Use OneScience Knowledge Harvester in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add OneScience Knowledge Harvester and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the OneScience Knowledge Harvester skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by onescience-ai/oneskills in skills/onescience-knowledge-harvester/SKILL.md and read by Ahel’s review.
你是 OneScience 的知识缺口自动填补执行技能。你的职责是把用户描述的知识缺口转换成可被 onescience-primitives 召回的知识卡片。
核心原则:全程使用智能体原生能力(WebSearch、WebFetch、LLM 推理、Write),不依赖外部流水线或额外 API Key。
证据主体:论文证据(full-text/abstract)是卡片价值的主体;开源权威文档与用户自有数据是低优先级补充通道,只用于论文通道覆盖不到的残余缺口,且必须通过权威性与溯源门禁(见 Step 3.4–3.6)。
触发场景
使用本技能处理以下请求:
- "缺少藏红花基因衍生推理的知识"
- "帮我补充关于 X 的知识"
- "填补 X 领域的知识缺口"
- "自动采集 X 相关的论文知识"
- "我需要 X 方面的知识卡片"
- 任何描述知识缺口并要求自动填补的请求
不要在以下情况下自动触发:
- 用户只要求检索已有知识(那是 onescience-primitives 的职责)
- 用户只要求实时文献推理(那是 onescience-live-literature 的职责)
- 用户只要求沉淀交互经验(那是 onescience-knowledge-capture 的职责)
核心边界
- 本技能是知识采集的执行层,使用智能体原生能力完成全流程。
- 生成的卡片必须符合 onescience-primitives 的格式规范(metadata.json + knowledge.md)。
- 卡片核心内容必须基于实际检索到的论文证据,不得编造;补充通道(开源文档/用户数据)证据必须有权威出处或用户背书,见 Step 3.4–3.6。
- 不修改 onescience-primitives 的 SKILL.md;对已有卡片只允许按 Step 4.5/Step 5 的三态入库(new/modify/merge),且必须通过单调性校验,不得删除内容或卡片目录。
- 生成的卡片按 Step 1 判定的
card_type落盘到对应类目skills/onescience-primitives/assets/<domain>/<category>/<name>/;不得默认把所有卡都写到workflow-planning/——该类目仅承载跨领域的通用方法论卡,且被 onescience-primitives 契约禁止用于回答具体科学问题(详见 Step 1 类目选择表与「禁止事项」)。
执行流程
Step 1 解析知识缺口
从用户输入中提取:
- gap_description:知识缺口的自然语言描述(如"藏红花基因衍生推理")
- domain:领域(bio/matchem/climate/cfd/general),从描述中自动检测
- search_queries:2~4 组英文检索词(含同义词、物种学名、基因/酶/通路名、方法名)
- card_identity:卡片身份层级。内部先做一步抽象推理:这个缺口来自哪个具体场景 → 该场景属于哪一类通用问题(用一句自然语言描述,如"面向目标气体,选择或设计满足容量、选择性与再生能耗要求的捕集材料")→ 该问题的解法能否迁移到同类其他体系。能迁移 → 卡片身份 = 通用问题类(生成通用类卡);缺口只是单一实例事实、无可迁移方法层 → 不强行升维,卡片身份 = 实例级。这条推理链只用于确定卡片身份,严禁以任何形式出现在卡片产物中(见 Step 4 通用类卡撰写规范)。
- card_type + category(硬门禁,决定落盘类目与 metadata.type):按缺口性质从下表选择唯一类型,不得默认落到
workflow-planning。判定证据(缺口关键词/归因报告 issues 类型/所需产物形态)必须写入 execution_result.observation.type_rationale。
card_type 选择表(按优先级从上到下匹配,命中即停):
| 缺口性质 | card_type | category(落盘目录) | 命中示例 |
|---|---|---|---|
| 具体领域的任务级 know-how:某类计算/实验/分析任务的做法、参数、验收 | task | <domain>/tasks/ | "CO2 在 MOF 上的 GCMC 吸附等温线计算"、"RNA-seq 差异表达分析" |
| 具体领域的场景级 know-how:一个完整科研场景的问题设定、判据、边界 | scenario | <domain>/scenario/ | "面对含湿烟道气的 CO2 捕集材料筛选"、"MW 级电池热失控预警" |
| 具体领域的工作流级 know-how:多个 task 的编排序列、依赖、数据流 | workflow | <domain>/workflow/ | "DFT→机器学习势→MD 的跨尺度工作流" |
| 具体的资源实体:模型、数据集、工具、组件、数据库、服务、应用、可视化、契约、输出格式 | model / dataset / tool / component / database / service / application / visualization / contract / output-format | 对应同名目录 <domain>/<category>/ | "MACE-MP-0 势"、"Materials Project API"、"pymatgen 结构分析工具" |
| 跨领域的通用方法论:科研规划、通用方法族、通用建模流程、通用筛选策略 | workflow-planning | <domain>/workflow-planning/ | "面向任意目标气体的捕集材料筛选方法论"、"通用 CLI 故障分类" |
判定原则:
- 缺口若指向具体领域实体(材料/物种/反应/现象/仪器),一律落到 task/scenario/workflow/resource 层;workflow-planning 只能承载"跨领域通用方法论",且必须能通过"把领域实体换成其他领域后卡片仍然成立"的反例测试。
- 归因报告 issues 里若已明确指向具体 step / 具体资源 / 具体任务失败,card_type 必须与该 issue 层级对齐,不得上提到 workflow-planning。
- 判定不确定时默认落 task(不是 workflow-planning)——task 层缺口最常见,且能被 TC 五级链正常引用。
- 一次知识补充可产多张卡,每张卡独立判 card_type;不得把整个 bundle 强行统一到同一 type。
领域检测规则:
- 含"基因/蛋白/生物/序列/细胞/组学/藏红花/saffron/gene/protein" → bio
- 含"材料/分子/晶体/化学/催化/电池/MXene/material/molecule" → matchem
- 含"气象/气候/天气/降水/温度/台风/预报/climate/weather" → climate
- 含"流体/流场/空气动力/涡/网格/CFD/fluid/turbulence" → cfd
- 其他 → general
实时汇报:🔄 Step 1:解析知识缺口...
Step 2 文献检索(OpenAlex + WebSearch 混合)
优先使用 OpenAlex API(更精准、可控),WebSearch 作为补充。
2.1 OpenAlex 检索(命令块 A)
把 references/lit_search.py 模板落盘为会话临时脚本并执行:
python lit_search.py "<query>" <max_papers> <year_from> pool.json
- 检索走 OpenAlex works 接口,相关性排序(search 默认)+
from_publication_date过滤 - 输出:终端打印编号摘要行;并把条目追加进 pool.json(按 DOI/标题去重)
- 条目字段:title / authors / venue / year / doi / oa_url / cited / abstract(前 400 字)
2.2 迭代精炼(对齐 Biomni 的第二轮检索)
通读池内摘要,抽出实体词(基因名、酶名、物种名、通路名、方法名),组成 1~2 组新检索词再跑命令块 A,编号续接。至少迭代一轮。
2.3 新颖性扫描(每会话强制至少一轮)
相关性排序会系统性埋没刚发表、引用少的新论文。必须至少跑一轮 year_from = 当年-1 的检索,专门捕捉最新发现。
2.4 WebSearch 补充
对 OpenAlex 未覆盖的来源(Google Scholar、bioRxiv 预印本),用 WebSearch 补充。
实时汇报:🔄 Step 2:检索相关论文...(已找到 N 篇,池大小 M)
Step 3 知识抽取(全文抓取 + LLM 推理)
3.1 全文抓取(命令块 B)
从池中挑 4~8 篇与推理链最相关的论文,把 references/lit_fetch.py 模板落盘为会话临时脚本并执行:
python lit_fetch.py <outdir> --keys "<领域关键词逗号分隔>" <doi1> <doi2> ...
内置双通道(均实测):
- Europe PMC REST(DOI→pmcid→fullTextXML)
- NCBI pmcoa BioC JSON(Europe PMC 404 时兜底)
- 双通道失败 = abstract-only
控制台输出只是索引。对每篇全文成功的论文,必须用 Read 工具分段读取落盘文件 <outdir>/<doi_slug>.txt 的完整内容提取细节。
3.2 LLM 知识抽取
从论文中抽取:
- 核心方法/技术
- 关键参数/数值(浓度、滴度、同一性%、基因拷贝数、温度等)
- 输入/输出契约
- 流程步骤
- 边界条件/限制
- 质量检查点
3.3 推理链环节审计(拦截跨事实拼接幻觉)
每一条因果/演化断言——"A 催化 B""突变 M 驱动了功能 F"——所挂的证据必须在同一篇文献内直接支持该断言。若断言是把多篇论文拼接而成,必须标"(跨文献推断: [a]+[b],无单篇直接证据)"。
抽取原则:
- 只抽取论文中明确陈述的事实,不得编造
- 数值必须来自论文原文,不得凭记忆补写
- 每条知识必须绑定到具体证据
3.4 补充通道 A:开源权威文档(低优先级)
触发条件:论文主路(2.1–3.3)完成后仍存在残余缺口(关键参数/流程节点无论文证据),或用户显式要求参考开源文档;论文通道已覆盖时不启动,避免稀释主路。
权威白名单(仅允许采集):
- 官方项目文档(官网 / docs 子域 / 官方手册 PDF)
- 标准组织文档(ISO、ASTM、GB、IEEE、IUPAC 等)
- 政府与公共机构库(NCBI、NOAA、NASA、CDC、EMEA 等)
- 大学官方讲义 / 实验手册
- 官方 GitHub 组织的 README / releases / docs
权威黑名单(禁止采集):个人博客、内容农场与转载站、无日期页面、厂商营销页、AI 生成内容站、真实性不明的论坛帖子。
交叉验证:关键事实(数值、阈值、命令、参数)须 ≥2 个独立权威来源一致陈述,或与池内论文证据互证不冲突;单源事实只能以"参考级"写入并标注来源。
溯源:每条记录 url、publisher、版本号或发布日期、accessed_at,写入 metadata.evidence_docs;无版本信息的文档视为低置信。
3.5 补充通道 B:用户自有数据(低优先级,仅被动)
- 只消费用户在会话中显式附带或指定路径的数据;禁止主动爬取用户目录。
- 入库前做脱敏扫描(对齐 onescience-knowledge-capture 的校验规则:API key、Bearer token、密码、私钥、云凭证、JWT);命中即剔除该部分并汇报。
- 溯源:记录 provider、provided_at、文件路径或描述,写入 metadata.evidence_user。
- 该通道事实在正文一律标注"(用户自有, 未经公开源验证)";若与论文/权威文档证据互证不冲突,可标注"(用户自有, 经[n]佐证)"。
3.6 证据价值分级与冲突裁决(全局约束)
价值排序:论文 full-text > 论文 abstract > 权威文档(交叉验证) > 权威文档(单源参考) > 用户自有(经佐证) > 用户自有(未验证)。
- 卡片核心骨架(流程节点、关键参数表主体)必须基于论文证据;补充通道事实只能进入"补充证据"章节或在关键参数表追加行并标注来源层级。
- 补充通道事实与论文证据冲突时:论文优先,冲突写入 metadata.conflicts 待人工裁决,禁止覆盖。
- 补充通道检索失败或零命中:汇报原因后跳过,不阻塞主流程。
实时汇报:🔄 Step 3:从 N 篇论文中抽取知识...(全文级 X 篇,摘要级 Y 篇;补充通道:文档 D 条/用户 U 条)
Step 4 卡片生成
将抽取的知识组织成知识卡片:
证据编号:论文 [1]..[n]、开源文档 [D1]..、用户自有 [U1]..,三套编号独立不混排。
卡片目录结构(<category> 由 Step 1 判定的 card_type 决定,见选择表):
skills/onescience-primitives/assets/<domain>/<category>/<card-name>/
metadata.json
knowledge.md
metadata.json 格式(固定 9 字段 + harvested 标记;type 必须等于 Step 1 判定的 card_type,<category> 必须与 type 对齐):
{
"name": "<card-name>",
"type": "<task|scenario|workflow|model|dataset|tool|component|database|service|application|visualization|contract|output-format|workflow-planning>",
"domain": "<bio|matchem|climate|cfd|general>",
"version": "1.0.0",
"visibility": "public",
"created_at": "<ISO日期>",
"updated_at": "<ISO日期>",
"description": "<信息密集的描述;通用类卡以需求级开头(面向目标X,做Y、满足Z),实例词只出现在校准数值/证据体系从句>",
"tags": ["<tag1>", "<tag2>", ...],
"aliases": ["<实例别名,纯字符串数组,仅用于召回(可选)>"],
"harvested": true,
"harvest_source": "onescience-knowledge-harvester",
"harvest_query": "<原始知识缺口描述>",
"evidence_papers": [
{"title": "<论文标题>", "doi": "<DOI>", "year": <年份>}
],
"evidence_docs": [
{"title": "<文档标题>", "url": "<URL>", "publisher": "<发布机构>", "version": "<版本或发布日期>", "accessed_at": "<ISO日期>"}
],
"evidence_user": [
{"provider": "user", "provided_at": "<ISO日期>", "location": "<路径或描述>"}
],
"merged_batches": ["<批次标识,每次 modify/merge 追加一条>"],
"conflicts": ["<补充证据与论文证据的待裁决冲突描述>"]
}
aliases 与后四个字段均为可选:aliases 是实例别名数组(如具体分子式、材料牌号、体系俗称),只用于提高实例词查询的召回率,不参与身份面表达;evidence_docs/evidence_user/merged_batches/conflicts 在存在补充通道证据或发生 modify/merge 时才写入。细则见 references/card_format.md。
knowledge.md 格式(灵活单文档,推荐章节):
# <卡片标题>
## 适用范围
<触发条件、适用场景、不适用场景>
## 输入
<输入数据格式、来源、预处理要求>
## 输出
<输出产物、格式、验证标准>
## 流程节点
<步骤1> → <步骤2> → ...
每步含:操作、参数、工具、质量门禁
## 关键参数
| 参数 | 值 | 来源 | 说明 |
|------|-----|------|------|
| ... | ... | [论文N] | ... |
## 边界与分流
<异常处理、降级策略、分支条件>
## 质量检查
<验证点、阈值、失败处理>
## 回退策略
<失败时的替代方案>
## 资源召回建议
<何时应召回本卡片、配套资源>
## 补充证据(开源文档/用户自有,可选)
[D1] <文档标题>, <发布机构>, <版本/日期>, URL: <url>(accessed_at,交叉验证/单源参考)
[U1] <用户自有数据描述>, <provided_at>(用户自有, 未经公开源验证)
## 证据来源
[1] <论文标题>, <作者>, <期刊>, <年份>, DOI: <DOI>
[2] ...
通用类卡撰写规范(硬门禁)——card_identity 为通用问题类的卡片必须全部满足:
- 自然散文身份:"适用范围"节以自然散文开场,陈述本卡服务的问题类(面向什么对象、做什么事、满足什么要求),读者一眼能看出卡为哪类任务服务;不得以具体实例场景开场。
- 脚手架词零出现:全文(含 metadata 的 description/harvest_query)严禁出现:"具体场景""上层需求""本卡解决""槽位""槽位迁移""迁移矩阵""复用协议""抽象层级""升维"。生成期的抽象推理链不得在产物中留下任何痕迹。
- 具体体系只出现在四个自然位置:a) 流程节点中的例句("以 X 体系为例,……");b) 校准数值表的引语;c) 术语/同义词表的举例引语;d) metadata 的 aliases/tags(仅供召回,读者不可见)。
- 通用论断主句通用:前提与判据句的主句必须是问题类级的通用陈述,证据用引用编号挂靠句尾;严禁把具体实例塞进前提清单的括号里当例证。
- 参数分表:"关键参数"节分两张表——通用判据(方法层,同类体系可参考,逐条带证据编号)与校准数值(体系专属值,引语写明"以下数值来自 X 体系,供量级校准;其他体系需以自身证据重新锚定")。
- 前提否定即改道:"边界与分流"节须写明每条关键前提不成立时转向哪类方案族(改道目标属领域知识,不得编造具体参数)。
卡片命名规则:
- 使用 kebab-case,长度不超过 80 字符
- 名称与卡片身份层级一致:
- 通用类卡:
<domain>-<问题类>-<方案/交付物>(如matchem-gas-capture-material-design-validation),不得含实例分子/材料/模型专名(如 co2、saffron、mxene) - 实例级卡:
<domain>-<topic>-<method>(如bio-saffron-gene-derivative-reasoning),可含实体名
- 通用类卡:
- 零信息目录名一律禁止(不限领域、不限卡片类型):哈希 id(
it-01684b6f、tk-bio-9a8b7c6d)、裸占位词(card、task)、场景编号骨架(cfd-s001-workflow)、中文/空格名均不合格;拿不出语义名就回到卡片内容重取名,不得用 id 或哈希后缀防撞名(细则与反例表见./references/card_format.md“禁止清单”) - 定名前自检:
python validate_knowledge.py --names-only --quiet必须RESULT: PASS
实时汇报:🔄 Step 4:生成知识卡片...
Step 4.5 入库决策(new / modify / merge)
写入前必须先与已有卡片比对,决定入库方式,避免相似知识产生重复卡:
- 枚举:Glob
skills/onescience-primitives/assets/<domain>/**/metadata.json,只把type == <本次 card_type>的卡作为 modify/merge 候选(跨类型不得互相吞并:task 卡不 merge 进 workflow-planning,反之亦然;resource 类卡按同名 category 过滤);候选超过 20 张时先按"与候选卡 tags 交集 ≥2 或 description 命中缺口实体词"初筛,再逐张 Read 候选卡 metadata(description/tags)。 - 判定(对最佳候选卡依次回答三问):
- a. 同身份层级且同对象:两卡同为通用类卡且属同一问题类(同需求、同方法族),或同为实例级卡且同目标实体(同物种/材料/体系/研究对象)?一为类级、一为实例级 → 视为不同对象(类卡给方法论、实例卡给事实,职责不同不得互相吞并)。
- b. 同任务目标(同 workflow 目的)?
- c. 内容重合:候选卡关键章节/参数与本次抽取重合过半,或 tags Jaccard ≥ 0.5?
- a∧b∧c → modify:原位升级该卡——用新证据更新参数/步骤,被替换的旧值保留为"历史值"注记,version 升 minor。
- a∧b∧¬c → merge:相似知识归并同一张卡——把本次新知识以"批次补充"节追加到该卡 knowledge.md 末尾,metadata 做并集(tags 取并、evidence 追加、merged_batches 加一条),不新建目录。
- a∧¬b,或跨身份层级(一类级一实例级)→ new,且在两张卡的"资源召回建议"中互相引用(类卡指向实例专卡作为证据锚点,实例卡指向类卡作为方法论框架)。
- 全否或判定不确定 → new(默认,与旧版行为一致)。
- 边界:两张已存在旧卡之间的合并不在本技能执行范围,只在 observation.next_recommendation 中输出归并建议。
- 决策与理由写入 execution_result.artifacts.ingest_decision。
实时汇报:🔄 Step 4.5:入库决策...(action=new|modify|merge,target=<卡名或无>)
Step 5 写入文件系统
按 Step 4.5 的决策执行:
new:
- 创建目录:
skills/onescience-primitives/assets/<domain>/<category>/<card-name>/(<category>由 Step 1 card_type 决定,不得硬编码 workflow-planning) - 写入
metadata.json与knowledge.md - 验证文件存在且格式正确,且
metadata.type与目录<category>一致
modify / merge:
- 写前 Read 旧
knowledge.md与旧metadata.json全文;新内容 = 旧内容全量保留 + 增量更新(modify)或末尾追加补充节(merge)。 - 写回后必须通过单调性校验(任一不通过 → 放弃本次 modify/merge,回退为 new,并在汇报中说明原因):
- 旧 knowledge.md 的
##标题集合 ⊆ 新标题集合; - 新 knowledge.md 字符数 ≥ 旧字符数;
- 旧 tags ⊆ 新 tags;旧 evidence_papers 条目逐条保留(只增不删);
- 旧数值事实全部保留在新正文中,或转为"历史值"注记,禁止静默删除。
- 旧 knowledge.md 的
- metadata 更新:updated_at、version 升 minor、merged_batches 追加、evidence 字段取并集;description 只允许扩写、必须保留原有全部实体词。
- 禁止删除任何卡片目录或文件。
实时汇报:🔄 Step 5:写入卡片到 onescience-primitives...(action=<new|modify|merge>)
Step 6 验证召回
确认生成的卡片可被 onescience-primitives 召回:
- 用 Glob 搜索
skills/onescience-primitives/assets/<domain>/**/metadata.json - 确认新卡片在搜索结果中
- 用 Read 读取 metadata.json,确认 description 和 tags 与知识缺口相关
- 模拟检索:用 gap_description 作为查询,确认卡片会被语义匹配命中
- modify/merge 时:用旧卡的原召回词(原 description 首句、原 tags)复查仍能命中该卡,确认旧知识未被挤没
- 通用类卡:另构造 ≥2 条"同需求换体系"变体查询(把缺口中的实例实体替换为同类别的其他实体,如 CO2→SO2),模拟检索确认本卡仍能命中;若因 description/tags 被实例词饱和导致变体查询不命中,判定不合格,回 Step 4 重写身份面(而不是往 description 里加更多实例词)
实时汇报:🔄 Step 6:验证卡片可召回性...(原始查询 + N 条变体查询)
输入契约
标准输入是 orchestrator 传入的 step_handoff:
step_handoff:
step_id: <步骤ID>
execution_skill: onescience-knowledge-harvester
step_goal: <填补指定知识缺口并生成可召回卡片>
task_context:
user_goal: <用户最终目标>
constraints: <约束列表>
relevant_artifacts: <相关产物路径或摘要>
inputs:
knowledge_gap:
description: <知识缺口描述,必填>
domain: <bio | matchem | climate | cfd | general,可选>
max_cards: <最大生成卡片数,默认 3>
max_papers: <最大检索论文数,默认 10>
expected_outputs:
required_files: [metadata.json, knowledge.md]
cards_required: <true | false>
resource_bindings: <可选>
required_outputs: <要求输出>
completion_criteria: <完成标准>
输出契约
必须返回:
execution_result:
skill: onescience-knowledge-harvester
status: success | partial | failed
artifacts:
cards_generated:
total: <生成卡片总数>
paths:
- <卡片目录路径列表>
cards_updated:
total: <modify/merge 的卡片数>
actions:
- {path: <卡片路径>, action: modify | merge}
ingest_decision:
action: new | modify | merge
target: <目标卡名或无>
reason: <三问判定理由>
supplementary_evidence:
docs: <开源文档证据条数>
user: <用户自有证据条数>
papers_used:
total: <使用论文总数>
references:
- <论文引用列表>
observation:
summary: <采集结果摘要>
gaps_filled: <已填补的缺口描述>
quality_notes: <质量说明>
next_recommendation: <后续建议>
没有成功生成任何卡片时,不得返回 success。
验证要求
完成前必须执行:
- 生成的卡片目录含
metadata.json和knowledge.md。 metadata.json可被标准 JSON 解析,含harvested: true标记。knowledge.md非空,含推荐章节中的至少 5 个。- 用 Glob 确认卡片在
skills/onescience-primitives/assets/<domain>/下可被发现。 - 卡片内容基于实际检索到的论文证据,每条关键事实有证据来源标注。
- modify/merge 操作通过 Step 5 单调性校验(标题子集、字符数单调、tags/evidence 只增不删)。
- 补充通道事实均有溯源(evidence_docs/evidence_user)与正文来源层级标注;未脱敏的用户数据不得出现在任何产物中。
- 补充证据与论文证据的冲突已写入 metadata.conflicts,未被静默覆盖。
- 通用类卡:用 Grep 对 knowledge.md 与 metadata.json 自查脚手架禁词(Step 4 规范第 2 条词表)零命中;description 以需求级通用主语开头;通用判据与校准数值分表。
禁止事项
- 不得编造论文或知识内容;每条事实必须绑定到检索到的证据(论文/权威文档/用户自有,对应编号)。
- 不得凭记忆补写论文中没有的精确数值。
- 不得修改 onescience-primitives 的 SKILL.md;对已有卡片只允许按 Step 4.5/Step 5 做 modify/merge。
- 不得删除任何卡片目录或文件;不得静默删除旧卡内容、tags、evidence 条目。
- 不得生成空卡片或只有 metadata.json 没有 knowledge.md 的卡片。
- 不得因为检索结果少就降低卡片质量标准;证据不足时如实标注"证据有限"。
- 不得让补充通道证据占据卡片核心骨架(流程节点、关键参数表主体);论文通道已覆盖同一知识时不得启动文档通道。
- 不得采集权威黑名单来源;不得把未脱敏的用户数据写入卡片。
- 不得把生成期抽象推理链("具体场景→上层需求→具体方案")及其元术语写入卡片正文或 metadata。
- 不得让通用类卡的 name/description 被实例分子/材料专名饱和;实例召回词只进 tags/aliases。
- 不得把具体领域缺口(task/scenario/workflow/resource 层)默认落到
workflow-planning/——该类目按 onescience-primitives SKILL.md L198/L206/L542 契约禁止用于回答具体科学问题,误落会导致卡片在召回阶段被 step 9b 判为knowledge_gap=true直接触发在线兜底,等于本次采集产出对具体问题零贡献。判定不确定时默认落task。 - 不得让 metadata.type 与落盘 category 不一致(如 type=task 却写到 workflow-planning/ 目录);Step 5 写入前必须自查一致。
回归保护条款
- 论文主路协议(Step 2 检索三轮+新颖性扫描、Step 3 全文双通道与分段精读、推理链审计)不被本版本任何条款修改、跳过或替代。
- 入库决策不确定时默认 new:判定异常时本技能的入库行为退化为旧版(纯新增),保证已有召回不受影响。
- 补充通道检索失败或零命中只汇报跳过,不阻塞主流程,不占用论文通道的检索配额。
- 任何 modify/merge 必须通过单调性校验否则回退 new:已有有价值知识不会被本版本逻辑挤没或覆盖。
与 onescience-live-literature 的区别
| 维度 | onescience-live-literature | onescience-knowledge-harvester |
|---|---|---|
| 目的 | 实时推理回答 | 生成持久化知识卡片 |
| 输出 | 会话级答案 + seeds.json | metadata.json + knowledge.md |
| 持久性 | 会话结束即消失 | 写入 primitives,可被后续召回 |
| 触发 | 需要跨论文推理的问题 | 描述知识缺口并要求填补 |
参考文件
| 文件 | 用途 |
|---|---|
./references/card_format.md | 卡片格式详细规范:metadata.json 字段(含补充证据/merge 扩展字段)、knowledge.md 章节、命名规则、质量门禁 |
./references/lit_search.py | OpenAlex 检索脚本模板(命令块 A) |
./references/lit_fetch.py | 全文抓取脚本模板(命令块 B,Europe PMC + NCBI BioC 双通道) |
skills/onescience-primitives/SKILL.md | 原语召回技能:卡片如何被发现和使用 |
skills/onescience-live-literature/SKILL.md | 实时文献检索:检索策略和命令块原始模板 |
Signals
- GitHub stars
- 22
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
onescience-knowledge-harvester- Source
- github.com/onescience-ai/oneskills
github.com/onescience-ai/oneskills
Related picks
Skill · firecrawl
The pick for Scrapescrape
Skill · davila7
The pick for Scrapesearch
Skill · davila7
The pick for Searchsummarize
Skill · zhouguoqing
The pick for Summarizeacademic-paper-composer
Skill · brycewang-stanford
The pick for Academic03-academic-writing
Skill · 24kchengye
The pick for Academic