OneScience Knowledge Harvester

SkillAI & models

OneScience 知识缺口自动填补技能。当用户描述缺少某领域知识(如"缺少藏红花基因衍生推理的知识")时,自动执行:文献检索 → 知识抽取 → 卡片生成 → 写入 onescience-primitives,使后续 OneScience 推理任务可召回这些知识卡片。全程使用智能体原生能力(网络搜索、LLM 推理、文件操作),不依赖外部流水线或额外 API Key。触发词:缺少知识、补充知识、填补知识缺口、自动采集知识、harvest knowledge。

Available today. Use it from your connected AI after setup.

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 的职责)

核心边界

  1. 本技能是知识采集的执行层,使用智能体原生能力完成全流程。
  2. 生成的卡片必须符合 onescience-primitives 的格式规范(metadata.json + knowledge.md)。
  3. 卡片内容必须基于实际检索到的论文证据,不得编造。
  4. 不修改 onescience-primitives 的 SKILL.md 或已有卡片。
  5. 生成的卡片写入 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:

  1. 创建目录:skills/onescience-primitives/assets/<domain>/workflow-planning/<card-name>/
  2. 写入 metadata.json
  3. 写入 knowledge.md
  4. 验证文件存在且格式正确

实时汇报🔄 Step 5:写入卡片到 onescience-primitives...

Step 6 验证召回

确认生成的卡片可被 onescience-primitives 召回:

  1. 用 Glob 搜索 skills/onescience-primitives/assets/<domain>/**/metadata.json
  2. 确认新卡片在搜索结果中
  3. 用 Read 读取 metadata.json,确认 description 和 tags 与知识缺口相关
  4. 模拟检索:用 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

验证要求

完成前必须执行:

  1. 生成的卡片目录含 metadata.jsonknowledge.md
  2. metadata.json 可被标准 JSON 解析,含 harvested: true 标记。
  3. knowledge.md 非空,含推荐章节中的至少 5 个。
  4. 用 Glob 确认卡片在 skills/onescience-primitives/assets/<domain>/ 下可被发现。
  5. 卡片内容基于实际检索到的论文证据,每条关键事实有证据来源标注。

禁止事项

  • 不得编造论文或知识内容;每条事实必须绑定到检索到的论文证据。
  • 不得凭记忆补写论文中没有的精确数值。
  • 不得修改 onescience-primitives 的 SKILL.md 或已有卡片。
  • 不得生成空卡片或只有 metadata.json 没有 knowledge.md 的卡片。
  • 不得因为检索结果少就降低卡片质量标准;证据不足时如实标注"证据有限"。

与 onescience-live-literature 的区别

维度onescience-live-literatureonescience-knowledge-harvester
目的实时推理回答生成持久化知识卡片
输出会话级答案 + seeds.jsonmetadata.json + knowledge.md
持久性会话结束即消失写入 primitives,可被后续召回
触发需要跨论文推理的问题描述知识缺口并要求填补

参考文件

文件用途
./references/card_format.md卡片格式详细规范:metadata.json 字段、knowledge.md 章节、命名规则、质量门禁
./references/lit_search.pyOpenAlex 检索脚本模板(命令块 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