OneScience Knowledge Harvester
SkillAI & modelsOneScience 知识缺口自动填补技能。当用户描述缺少某领域知识(如"缺少藏红花基因衍生推理的知识")时,自动执行:文献检索 → 知识抽取 → 卡片生成 → 写入 onescience-primitives,使后续 OneScience 推理任务可召回这些知识卡片。全程使用智能体原生能力(网络搜索、LLM 推理、文件操作),不依赖外部流水线或额外 API Key。触发词:缺少知识、补充知识、填补知识缺口、自动采集知识、harvest knowledge。
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the OneScience Knowledge Harvester skill
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。
触发场景
使用本技能处理以下请求:
- "缺少藏红花基因衍生推理的知识"
- "帮我补充关于 X 的知识"
- "填补 X 领域的知识缺口"
- "自动采集 X 相关的论文知识"
- "我需要 X 方面的知识卡片"
- 任何描述知识缺口并要求自动填补的请求
不要在以下情况下自动触发:
- 用户只要求检索已有知识(那是 onescience-primitives 的职责)
- 用户只要求实时文献推理(那是 onescience-live-literature 的职责)
- 用户只要求沉淀交互经验(那是 onescience-knowledge-capture 的职责)
核心边界
- 本技能是知识采集的执行层,使用智能体原生能力完成全流程。
- 生成的卡片必须符合 onescience-primitives 的格式规范(metadata.json + knowledge.md)。
- 卡片内容必须基于实际检索到的论文证据,不得编造。
- 不修改 onescience-primitives 的 SKILL.md 或已有卡片。
- 生成的卡片写入
skills/onescience-primitives/assets/<domain>/workflow-planning/<name>/。
执行流程
Step 1 解析知识缺口
从用户输入中提取:
- gap_description:知识缺口的自然语言描述(如"藏红花基因衍生推理")
- domain:领域(bio/matchem/climate/cfd/general),从描述中自动检测
- search_queries:2~4 组英文检索词(含同义词、物种学名、基因/酶/通路名、方法名)
领域检测规则:
- 含"基因/蛋白/生物/序列/细胞/组学/藏红花/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],无单篇直接证据)"。
抽取原则:
- 只抽取论文中明确陈述的事实,不得编造
- 数值必须来自论文原文,不得凭记忆补写
- 每条知识必须绑定到具体证据
实时汇报:🔄 Step 3:从 N 篇论文中抽取知识...(全文级 X 篇,摘要级 Y 篇)
Step 4 卡片生成
将抽取的知识组织成知识卡片:
卡片目录结构:
skills/onescience-primitives/assets/<domain>/workflow-planning/<card-name>/
metadata.json
knowledge.md
metadata.json 格式(固定 9 字段 + harvested 标记):
{
"name": "<card-name>",
"type": "workflow-planning",
"domain": "<bio|matchem|climate|cfd|general>",
"version": "1.0.0",
"visibility": "public",
"created_at": "<ISO日期>",
"updated_at": "<ISO日期>",
"description": "<信息密集的描述,含核心能力、适用场景、关键参数>",
"tags": ["<tag1>", "<tag2>", ...],
"harvested": true,
"harvest_source": "onescience-knowledge-harvester",
"harvest_query": "<原始知识缺口描述>",
"evidence_papers": [
{"title": "<论文标题>", "doi": "<DOI>", "year": <年份>}
]
}
knowledge.md 格式(灵活单文档,推荐章节):
# <卡片标题>
## 适用范围
<触发条件、适用场景、不适用场景>
## 输入
<输入数据格式、来源、预处理要求>
## 输出
<输出产物、格式、验证标准>
## 流程节点
<步骤1> → <步骤2> → ...
每步含:操作、参数、工具、质量门禁
## 关键参数
| 参数 | 值 | 来源 | 说明 |
|------|-----|------|------|
| ... | ... | [论文N] | ... |
## 边界与分流
<异常处理、降级策略、分支条件>
## 质量检查
<验证点、阈值、失败处理>
## 回退策略
<失败时的替代方案>
## 资源召回建议
<何时应召回本卡片、配套资源>
## 证据来源
[1] <论文标题>, <作者>, <期刊>, <年份>, DOI: <DOI>
[2] ...
卡片命名规则:
- 使用 kebab-case
- 格式:
<domain>-<topic>-<method>(如bio-saffron-gene-derivative-reasoning) - 长度不超过 80 字符
实时汇报:🔄 Step 4:生成知识卡片...
Step 5 写入文件系统
使用 Write 工具将卡片写入 onescience-primitives:
- 创建目录:
skills/onescience-primitives/assets/<domain>/workflow-planning/<card-name>/ - 写入
metadata.json - 写入
knowledge.md - 验证文件存在且格式正确
实时汇报:🔄 Step 5:写入卡片到 onescience-primitives...
Step 6 验证召回
确认生成的卡片可被 onescience-primitives 召回:
- 用 Glob 搜索
skills/onescience-primitives/assets/<domain>/**/metadata.json - 确认新卡片在搜索结果中
- 用 Read 读取 metadata.json,确认 description 和 tags 与知识缺口相关
- 模拟检索:用 gap_description 作为查询,确认卡片会被语义匹配命中
实时汇报:🔄 Step 6:验证卡片可召回性...
输入契约
标准输入是 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:
- <卡片目录路径列表>
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>/下可被发现。 - 卡片内容基于实际检索到的论文证据,每条关键事实有证据来源标注。
禁止事项
- 不得编造论文或知识内容;每条事实必须绑定到检索到的论文证据。
- 不得凭记忆补写论文中没有的精确数值。
- 不得修改 onescience-primitives 的 SKILL.md 或已有卡片。
- 不得生成空卡片或只有 metadata.json 没有 knowledge.md 的卡片。
- 不得因为检索结果少就降低卡片质量标准;证据不足时如实标注"证据有限"。
与 onescience-live-literature 的区别
| 维度 | onescience-live-literature | onescience-knowledge-harvester |
|---|---|---|
| 目的 | 实时推理回答 | 生成持久化知识卡片 |
| 输出 | 会话级答案 + seeds.json | metadata.json + knowledge.md |
| 持久性 | 会话结束即消失 | 写入 primitives,可被后续召回 |
| 触发 | 需要跨论文推理的问题 | 描述知识缺口并要求填补 |
参考文件
| 文件 | 用途 |
|---|---|
./references/card_format.md | 卡片格式详细规范:metadata.json 字段、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
- 20
- Forks
- 1
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
onescience-knowledge-harvester- Source
- github.com/onescience-ai/oneskills