| name | metabolism |
| description | Knowledge metabolism: Day 0 init (discuss + baseline survey) or daily cycle (incremental search + update knowledge + generate hypotheses). Triggered by bootstrap and daily cron. |
Knowledge Metabolism
读取 config.json 的 currentDay 字段判断执行哪个分支:
currentDay == 0 或 config.json 不存在 → 执行 Day 0(初始化)
currentDay >= 1 → 执行每日增量循环
Day 0:初始化
与用户讨论研究方向后,构建领域基线知识。
准备
- 检查
config.json 是否存在
- 不存在:询问用户研究方向,创建
config.json(包含 keywords, arxivCategories, sources, currentDay: 0, processed_ids: [])
- 已存在且
currentDay > 0:跳转到每日循环
Step 1: 宽泛调研
委托 /research-collect 执行宽泛调研(不限日期),构建初始知识:
sessions_spawn({
task: "/research-collect\n研究主题: {从 config.json 的 keywords 提取}\n这是 Day 0 基线构建,请做宽泛调研(不限日期),覆盖领域经典工作和近期进展。",
label: "Day 0 Baseline Survey",
runTimeoutSeconds: 1800
})
等待完成后,读取 papers/ 获取论文列表。
Step 2: 阅读与知识提取
对每篇论文:
- 读 .tex 源码(优先)或 PDF
- 提取:核心方法、关键结论、领域现状
将每篇论文的 arXiv ID / DOI 追加到 config.json 的 processed_ids。
Step 3: 构建初始知识状态
创建 knowledge/_index.md:
- Research Goal(从 config.json 提取)
- Topics 表格(按论文主题聚类)
- Cross-topic Links(如有)
- Timeline(记录 Day 0)
为每个识别出的主题创建 knowledge/topic-{name}.md:
Step 4: 记录日志
写入 log/{YYYY-MM-DD}-init.md,更新 config.json:currentDay 设为 1。
Day 1+:每日增量循环
准备
- 读取
config.json 获取关键词、arXiv 分类、sources、processed_ids 和 currentDay
- 读取
knowledge/_index.md 获取当前知识状态
Step 1: Search(增量搜索)
根据 config.json 的 sources 字段选择搜索来源,用滑动窗口(过去 5 天)搜索,靠 processed_ids 去重:
arXiv(如果 sources 包含 "arxiv"):
arxiv_search({
query: "{keywords} AND cat:{category}",
date_from: "{5天前 YYYY-MM-DD}",
sort_by: "submittedDate",
max_results: 30
})
OpenAlex(如果 sources 包含 "openalex"):
openalex_search({
query: "{keywords}",
filter: "from_publication_date:{5天前 YYYY-MM-DD}",
sort: "publication_date",
max_results: 20
})
合并结果,按 arXiv ID / DOI 去重,跳过 processed_ids 中已有的论文。
按 /paper-download 的方式下载新论文到 papers/(arXiv 优先 .tex 源文件,DOI 通过 Unpaywall 获取 OA PDF)。
Step 2: Read(阅读)
对每篇新论文:
- 读 .tex 源码(优先)或 PDF
- 提取:核心方法、关键结论、与已有知识的关系
将每篇论文的 arXiv ID / DOI 追加到 config.json 的 processed_ids。
Step 3: Update Knowledge
读取当前 knowledge/_index.md 和相关 topic-*.md,根据今日阅读的论文更新。
更新原则:
- 新发现 → 添加到相关章节
- 印证已有认知 → 补充证据来源
- 与已有认知矛盾 → 标注分歧,保留两方论据
- 跨领域关联 → 记录连接
篇幅管理: 每个 topic 文件控制在 200 行以内。接近上限时,压缩早期内容(合并相似结论、删除低价值条目),保留信息密度。不要为了压缩而丢失关键结论和来源引用。
Step 4: Hypothesize(假设)
更新完知识后,回顾今日新增内容,自问:
- 有没有反复出现但尚未被验证的模式?
- 有没有两个独立发现组合后暗示的新方向?
- 有没有现有方法的明显空白?
有想法 → 写入 ideas/hyp-{NNN}.md:
# Hypothesis {NNN}
## 假设
{一句话}
## 推理过程
{基于哪些论文/知识得出,2-3 段}
## 来源论文
- {arxiv_id}: {title}
## 自评
- 新颖性: {1-5}
- 可行性: {1-5}
- 影响力: {1-5}
然后用 sessions_send 通知 main session。
没有想法 → 跳过,不要硬凑。
Step 5: Log & Finish
写入 log/{YYYY-MM-DD}.md,更新 config.json:currentDay +1。
行为约束
- 不捏造论文中未出现的事实性声明,但可以用自身知识做推理和关联判断
- 没有想法时不生成假设
- 自主运行,不向人类提问(Day 0 初始配置除外)
- 修改知识文件前必须先读取当前内容