/research
SkillDocs & knowledgeEnd-to-end research orchestrator: idea discovery → experiment design → execution → verdict → paper writing, with human gating and state recovery
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 /research skill
What this skill tells your AI
The instructions your AI receives, as published by lambenthan/empiricalwiki in .claude/skills/research/SKILL.md and read by ahel’s review.
端到端研究编排器,将所有 skill 组合为完整的研究流程。 Stage 0 (Bootstrap) + 5 个 Stage + 2 个 Human Gate,覆盖从空 wiki 到论文提交的全流程。 零摩擦入口:wiki 为空时自动触发 Bootstrap(搜索 + auto-ingest 5 篇论文),无需手动 /init。 每个 Gate 和 Stage 保存进度到
wiki/outputs/pipeline-progress.md,支持跨 session 恢复。Stage 3 为非阻塞设计:实验部署后立即返回(
--auto模式自动设置 CronCreate 每 30 分钟监控), 实验全部完成后自动进入 Stage 4。可随时用/exp-status查看进度。
--auto模式跳过人工确认(自动选 top-1 idea),--skip-paper只做研究不写论文。
Inputs
direction:研究方向描述或RESEARCH_BRIEF.md文件路径- 文本形式:一句话描述研究方向(如 "sparse LoRA for edge devices")
- 文件形式:结构化的 RESEARCH_BRIEF.md(含 domain、constraints、target venues)
--auto(可选):全自动模式,Gate 1 自动选 top-1 idea,Gate 2 自动继续,Stage 3b 自动 CronCreate--start-from <stage>(可选):从指定 stage 恢复执行- 有效值:
stage1、stage2、stage3、stage3-collect、stage3-check、stage4、stage5 stage3-collect:跳过 deploy,直接进入 Stage 3c(收集已部署实验的结果)stage3-check:只检查实验状态(等同于/exp-status --pipeline {slug}),不继续执行- 需要
wiki/outputs/pipeline-progress.md存在
- 有效值:
--skip-paper(可选):只做研究(Stage 1-4),不写论文(跳过 Stage 5),但仍执行 /exp-eval(Stage 4)--venue(可选):目标会议(ICLR / NeurIPS / ICML / ACL / CVPR),传递给 /paper-plan
Outputs
- wiki 更新(通过子 skill 委托):ideas/、experiments/、claims/、outputs/、graph/
- wiki/outputs/pipeline-progress.md — 流水线进度快照(用于恢复)
- wiki/outputs/PIPELINE_REPORT.md — 完整流水线报告
- paper/ 目录(若未 --skip-paper)— 可提交的论文
- wiki/log.md — 每个 stage 追加日志
Wiki Interaction
Reads
wiki/graph/context_brief.md— 全局上下文(传递给子 skills)wiki/graph/open_questions.md— 知识缺口(传递给 /ideate)wiki/ideas/*.md— Gate 1 选择、Stage 4 判决wiki/experiments/*.md— Stage 3-4 状态检查wiki/claims/*.md— Stage 4 判决、Stage 5 论文规划wiki/outputs/pipeline-progress.md— --start-from 恢复状态wiki/papers/*.md— Stage 5 论文写作上下文
Writes
wiki/outputs/pipeline-progress.md— 每个 Gate 保存进度(委托写入 wiki 实体的操作由子 skill 完成)wiki/outputs/PIPELINE_REPORT.md— 最终报告wiki/log.md— 追加日志- 其他 wiki 实体写入均通过子 skill 委托(不直接写入 ideas/experiments/claims/)
Graph edges created
- 无直接创建 — 所有 graph edges 通过子 skill 代理(/ideate、/exp-design、/exp-eval 各自创建 edges)
Workflow
前置:
- 确认工作目录为 wiki 项目根(包含
wiki/、raw/、tools/的目录) - 若
--start-from指定,读取wiki/outputs/pipeline-progress.md恢复状态
Step 0: 初始化
-
解析输入:
- 若为文件路径:读取 RESEARCH_BRIEF.md,提取 direction、domain、constraints、target_venue
- 若为文本:作为 direction,domain/constraints 留空
- 生成 slug:
python3 tools/research_wiki.py slug "{direction}"
-
自动恢复检测(无
--start-from时):- 若
wiki/outputs/pipeline-progress.md存在 且status == running:- 读取 direction、current_stage、started、slug
- 使用 AskUserQuestion 提示用户选择:
检测到未完成的 pipeline: 方向: {direction} 当前阶段: {current_stage} 开始时间: {started} [1] 从 {current_stage} 继续(推荐) [2] 开始新的 pipeline(将覆盖旧进度) [3] 先查看实验状态(/exp-status --pipeline {slug}) - 若 --auto 或用户选 [1]:自动设
--start-from {current_stage},继续执行 - 若用户选 [2]:继续创建新 pipeline(覆盖旧进度文件)
- 若用户选 [3]:调用
/exp-status --pipeline {slug}后退出,不继续执行
- 若
-
检查恢复(有
--start-from时):- 若
wiki/outputs/pipeline-progress.md存在:- 读取进度文件,恢复 idea_slug、experiment_slugs、stage3a_deployed、claim_slugs、monitoring_cron_id
- 跳转到指定 stage
- 若进度文件不存在:报错退出,提示先运行完整流水线
--start-from stage3-check:等同于调用/exp-status --pipeline {slug},展示状态后退出--start-from stage3-collect:跳过 Stage 3a+3b,直接进入 Stage 3c(收集已部署实验)
- 若
-
创建进度文件
wiki/outputs/pipeline-progress.md:--- slug: "{pipeline-slug}" direction: "{research direction}" status: running current_stage: stage1 started: YYYY-MM-DD mode: auto|interactive skip_paper: true|false venue: "{venue}" idea_slug: "" experiment_slugs: [] stage3a_deployed: [] claim_slugs: [] iteration_count: 0 --- ## Stage Log - Stage 0 (Bootstrap): skipped - Stage 1: pending - Gate 1: pending - Stage 2: pending - Stage 3a (Deploy): pending - Stage 3b (Await): pending - Stage 3c (Collect): pending - Stage 4: pending - Gate 2: pending - Stage 5: pending -
追加日志:
python3 tools/research_wiki.py log wiki/ \ "research | started | direction: {direction} | mode: {auto|interactive}" -
Snapshot wiki 状态(用于 Step Final 的 Growth Report):
python3 tools/research_wiki.py maturity wiki/ --json保存返回的 JSON 到内存变量
maturity_before。
Stage 0: Bootstrap(wiki 为空时自动触发)
触发条件:运行 python3 tools/research_wiki.py maturity wiki/ --json,若 level == "cold" 且 papers < 3:自动进入 Bootstrap。否则跳过,直接进入 Stage 1。
-
初始化 wiki 结构(若未初始化):
python3 tools/research_wiki.py init wiki/ -
搜索相关论文(使用 Agent tool 并行 3 路搜索):
- DeepXiv:
python3 tools/fetch_deepxiv.py search "{direction}" --mode hybrid --limit 20 - Semantic Scholar:
python3 tools/fetch_s2.py search "{direction}" --limit 20 - arXiv:
python3 tools/fetch_arxiv.py(使用 direction 关键词) - 若 DeepXiv 不可用:跳过,仅使用 S2 + arXiv
- DeepXiv:
-
合并排名 & 选取 top 5:
- 按 arxiv_id 去重
- 排序优先级:DeepXiv relevance score > S2 citation count > recency
- 取 top 5 篇(5 = cold→warm 最低门槛)
-
逐一 auto-ingest:
Skill: ingest Args: "{arxiv_url_or_path}"每篇 ingest 后输出进度:
[{i}/5] Ingested: {paper_title} -
重建派生数据:
python3 tools/research_wiki.py rebuild-context-brief wiki/ python3 tools/research_wiki.py rebuild-open-questions wiki/ -
Bootstrap 报告:
python3 tools/research_wiki.py maturity wiki/ --json输出到终端:
Bootstrap 完成: Papers: {N} | Claims: {M} | Concepts: {K} | Edges: {E} Maturity: cold → {new_level} 继续进入 Stage 1: Idea Discovery... -
日志 + 进度更新:
python3 tools/research_wiki.py log wiki/ \ "research | stage0-bootstrap | auto-ingested {N} papers | maturity: {level}" python3 tools/research_wiki.py set-meta \ wiki/outputs/pipeline-progress.md current_stage stage1
Stage 1: Idea Discovery
调用 /ideate:
Skill: ideate
Args: "{direction}" --domain {domain}
完成后:
- 读取生成的 ideas,按 priority 排序
- 更新 pipeline-progress:Stage 1 → completed,记录生成的 idea slugs
- 追加日志
Gate 1: 选择 Idea
若 --auto 模式:
- 自动选择 priority 最高(排名 top-1)的 idea
- 在终端输出选择结果,不等待确认
若交互模式:
- 列出所有生成的 ideas(slug、title、priority、novelty score)
- 使用 AskUserQuestion 提示用户选择一个 idea(或输入 stop 停止)
- 若用户选择 stop:保存进度,终止流水线
保存进度:
- 更新 pipeline-progress:Gate 1 → passed,记录 idea_slug
- 更新选中 idea 的 status: proposed → in_progress
Stage 2: Experiment Design
调用 /exp-design:
Skill: exp-design
Args: "{idea_slug}" --review
完成后:
- 读取生成的 experiment slugs(从 wiki/experiments/ 中 linked_idea == idea_slug 的页面)
- 更新 pipeline-progress:Stage 2 → completed,记录 experiment_slugs
Stage 3: Experiment Execution(非阻塞)
Stage 3 分为三个子阶段,允许实验在后台异步运行,不阻塞 session。
Stage 3a: Deploy All
按 run order(baseline → validation → ablation → robustness)依次调用 /exp-run {experiment_slug}(默认 deploy 模式,Phase 1+2):
Skill: exp-run
Args: "{experiment_slug}"
(默认 deploy 模式,Phase 1+2,部署后立即返回,不等待实验完成)
每次部署后:
- 记录部署结果(成功/失败)到内存
- 若 deploy 失败:记录到 pipeline-progress 中,在报告中标注警告(基线 deploy 失败时加强警告),但继续部署其余实验(不中止)
全部部署完成后,更新 pipeline-progress.md:
python3 tools/research_wiki.py set-meta \
wiki/outputs/pipeline-progress.md current_stage stage3-await
python3 tools/research_wiki.py set-meta \
wiki/outputs/pipeline-progress.md stage3a_deployed \
"[{experiment_slug_1}, {experiment_slug_2}, ...]"
追加日志:
python3 tools/research_wiki.py log wiki/ \
"research | stage3a | deployed {N} experiments | pipeline: {slug}"
Stage 3b: Await(非阻塞)
实验部署完毕后,计算 ETA、保存进度并结束当前 session。
- 更新 pipeline-progress:
python3 tools/research_wiki.py set-meta \ wiki/outputs/pipeline-progress.md current_stage stage3-await - 计算各实验预计完成时间:
对每个已部署实验,读取 frontmatter 的
started和estimated_hours字段:eta = started + estimated_hoursrecommended_return = max(所有 eta) + 30 分钟缓冲,向上取整到最近整点或半点
- 追加日志:
python3 tools/research_wiki.py log wiki/ \ "research | stage3b | awaiting {N} experiments | latest eta: {YYYY-MM-DD HH:MM} | pipeline: {slug}" - 输出操作指引后结束当前 session:
✅ Stage 3a 完成:{N} 个实验已全部部署: 实验 环境 预计时长 预计完成 ──────────────────────────── ──────────── ──────── ────────────── exp-foo-baseline local ~8h 明天 09:30 exp-foo-validation remote (gpu1) ~6h 今天 23:00 exp-foo-ablation local ~4h 今天 21:00 ⏳ 最晚完成:明天 09:30(exp-foo-baseline) 建议 明天 10:00 之后运行: /exp-status ← 确认所有实验完成 /research --start-from stage3-collect ← 收集结果并继续 进度已保存至 wiki/outputs/pipeline-progress.md,当前 session 可以关闭。
Stage 3c: Collect(实验完成后触发)
触发条件:用户手动运行 /research --start-from stage3-collect
对每个已部署的 experiment(从 stage3a_deployed 列表读取):
Skill: exp-run
Args: "{experiment_slug} --collect"
(collect 模式,Phase 3+4:检查完成状态并收集结果)
每次 collect 后的决策:
- 若 outcome == failed 且为 baseline experiment → 终止流水线,报告基线无法复现
- 若 outcome == failed 且为 validation experiment → 记录失败,继续收集其余实验,进入 Stage 4 评估
- 若 outcome == inconclusive → 记录,继续
全部 collect 完成后:
- 更新 pipeline-progress:Stage 3 → completed
python3 tools/research_wiki.py set-meta \ wiki/outputs/pipeline-progress.md current_stage stage4 - 追加日志:
python3 tools/research_wiki.py log wiki/ \ "research | stage3c | collected {N} experiments | pipeline: {slug}" - 继续进入 Stage 4
Stage 4: Verdict & Iteration
对每个 completed experiment 调用 /exp-eval:
Skill: exp-eval
Args: "{experiment_slug}" --auto
评估 claims 是否充分:
- 读取所有 target claims 的最新状态
- 判断是否需要迭代:
- claims 充分(主要 claim confidence >= 0.7,且 status 为 supported 或 weakly_supported)→ 进入 Gate 2
- claims 不足(confidence < 0.4 或 status 为 challenged)→ 进入迭代
迭代路径(claims 不足时,最多 1 次重试):
- 分析失败原因
- 调用
/refine改进 experiment plan:Skill: refine Args: "{experiment_plan_slug}" --max-rounds 2 --focus evidence - 对新增/修改的 experiments 重新执行 Stage 3 → Stage 4
- 最多迭代 2 轮(防止无限循环),每个 stage 最多 1 次 auto retry
完成后:
- 更新 pipeline-progress:Stage 4 → completed,记录 claim_slugs
Gate 2: 确认 Paper Ready
若 --skip-paper:跳过 Gate 2 和 Stage 5,直接生成最终报告
若 --auto 模式:自动继续,进入 Stage 5
若交互模式:
- 展示 claim 状态摘要:
Claim: {slug} | Status: {status} | Confidence: {confidence} Evidence: {count} sources ({strong}/{moderate}/{weak}) - 使用 AskUserQuestion 提示用户确认:ready for paper / need more experiments / stop here
- 若 "need more experiments":返回 Stage 2 重新规划
- 若 "stop here":保存进度,生成最终报告(不含论文)
保存进度:
- 更新 pipeline-progress:Gate 2 → passed
Stage 5: Paper Writing
依次调用子 skills:/paper-plan → /paper-draft → /refine → /paper-compile
5a. 调用 /paper-plan:
Skill: paper-plan
Args: "{claim_slugs}" --venue {venue}
5b. 调用 /paper-draft:
Skill: paper-draft
Args: "wiki/outputs/PAPER_PLAN.md" --review
5c. 调用 /refine on Paper:
Skill: refine
Args: "paper/main.tex" --max-rounds 3 --target-score 8 --focus writing
5d. 调用 /paper-compile:
Skill: paper-compile
Args: "paper/"
完成后:
- 更新 pipeline-progress:Stage 5 → completed, status: completed
Step Final: Pipeline Report
生成 wiki/outputs/PIPELINE_REPORT.md:
# Research Pipeline Report
## Stage Summary
| Stage | Status | Duration |
|-------|--------|----------|
| Stage 0: Bootstrap | completed/skipped | ... |
| Stage 1: Idea Discovery | completed | ... |
| Gate 1: Idea Selection | passed | ... |
| Stage 2: Experiment Design | completed | ... |
| Stage 3a: Deploy Experiments | completed | ... |
| Stage 3b: Await (async) | completed | ... |
| Stage 3c: Collect Results | completed | ... |
| Stage 4: Verdict | completed | ... |
| Gate 2: Paper Ready | passed | ... |
| Stage 5: Paper Writing | completed | ... |
## Selected Idea
- **Idea**: [[{idea_slug}]] — {idea title}
- **Priority**: {N}
- **Novelty score**: {score}
## Claims Trail
| Claim | Initial Status | Final Status | Confidence (proposed → supported) |
|-------|---------------|-------------|-----------------------------------|
| [[{slug}]] | proposed | supported | 0.3 → 0.8 |
## Experiment Results
| Experiment | Outcome | Key Result |
|-----------|---------|------------|
| [[{slug}]] | succeeded | {result} |
## Iteration History
- Total iterations: {N}
- Reason for iteration: {claims insufficient / ...}
## Deliverables
- Ideas: +{N} created
- Experiments: +{N} created, {N} completed
- Claims: {N} updated
- Graph edges: +{N}
- Paper: paper/main.pdf (if applicable)
## Wiki Growth (pipeline total)
| Metric | Before | After | Delta |
|--------|--------|-------|-------|
| Papers | {N} | {N} | +{N} |
| Claims | {N} | {N} | +{N} |
| Ideas | {N} | {N} | +{N} |
| Experiments | {N} | {N} | +{N} |
| Edges | {N} | {N} | +{N} |
| Maturity | {level} | {level} | {status} |
| Coverage | {%} | {%} | +{%} |
(数据来自 Step 0 step 5 的 `maturity_before` 与此处重新调用 `maturity --json` 的对比。仅展示 delta != 0 的行。)
## Next Steps
- {recommendations based on remaining gaps or unresolved issues}
追加日志:
python3 tools/research_wiki.py log wiki/ \
"research | completed | idea: {slug} | claims: {N} updated | paper: {yes/no}"
更新 pipeline-progress:status: completed
Constraints
- 编排器不直接修改 wiki 实体,不嵌入子 skill 逻辑:所有 wiki 修改通过子 skill 委托完成,pipeline 只负责协调,通过 Skill tool 调用
- Gate 和 Stage 必须保存进度:每个 Gate 和 Stage 完成/进入等待时必须保存 pipeline-progress.md
- Stage 3a 部署失败不中止:deploy 失败时记录警告继续部署,不提前终止(baseline collect 失败时才终止)
- baseline collect 失败终止:Stage 3c collect 结果,baseline outcome == failed 时终止流水线
- Stage 3b 结束 session:Stage 3b 完成后当前 session 结束,不继续等待实验
- 最多 2 轮迭代:Stage 4 迭代最多 2 轮,防止无限循环
- --auto 不跳过计算:auto 模式跳过人工确认,但不跳过任何计算步骤
- --skip-paper 仍执行 Stage 4 /exp-eval:即使不写论文,也要完成 claim 更新
- 子 skill 参数透传:将 domain、--venue 等参数正确传递给子 skill
- 日志记录每个 Stage:每个 Stage 完成后追加 log.md 审计日志
- 不重复执行已完成 stage:--start-from 跳过已完成的 stages
- 进度文件在 wiki/outputs/pipeline-progress.md:统一位置,便于发现和恢复
- 自动恢复优先:无 --start-from 且有未完成 pipeline 时,默认提示用户恢复而不是重新开始
Error Handling
- pipeline-progress 不存在但指定 --start-from:报错,提示先运行完整流水线
- pipeline-progress 损坏或格式异常:尝试从 wiki 当前状态推断进度(读取 ideas/experiments/claims 状态),恢复到最近的 Gate
- 子 skill 调用失败:记录错误到 pipeline-progress,报告失败的 stage,建议 --start-from 恢复
- 所有 ideas 生成失败:终止流水线,建议用户调整 research direction
- 所有实验 deploy 失败:终止流水线(Stage 3a),生成失败报告,建议检查 GPU/SSH 配置
- Stage 3c baseline collect 失败:终止流水线,报告基线无法复现,建议重新 /exp-design
- 所有实验 collect 失败(其他非 baseline):进入 Stage 4 评估(以失败为证据)
- Gate 用户选择 stop:保存进度到 pipeline-progress,生成部分报告
- RESEARCH_BRIEF.md 格式错误:降级为纯文本 direction,忽略结构化字段
- wiki 为空(无 papers/concepts):自动触发 Stage 0 Bootstrap(搜索 + auto-ingest 5 篇论文)
- 迭代后 claims 仍不足:在报告中标注 "claims insufficient after max iterations",由用户决定是否继续
- 用户选择查看状态(自动恢复检测 [3]):调用
/exp-status --pipeline {slug}后退出,不继续执行新流水线
Dependencies
Skills(via Skill tool)
/ingest— Stage 0 Bootstrap auto-ingest/ideate— Stage 1 idea 发现/exp-design— Stage 2 实验设计/exp-run— Stage 3a(deploy 模式)和 Stage 3c(--collect 模式)/exp-status— 用户手动查看实验进度,--auto-advance可在所有完成时自动触发 Stage 4/exp-eval— Stage 4 判决/refine— Stage 4 迭代 + Stage 5 论文改进/paper-plan— Stage 5 论文规划/paper-draft— Stage 5 论文撰写/paper-compile— Stage 5 论文编译
Tools(via Bash)
python3 tools/research_wiki.py slug "{title}"— 生成 pipeline slugpython3 tools/research_wiki.py set-meta <path> <field> <value>— 更新 pipeline-progress 字段python3 tools/research_wiki.py log wiki/ "<message>"— 追加日志python3 tools/research_wiki.py maturity wiki/ --json— 检查 wiki 成熟度(Stage 0 触发条件 + Growth Report)python3 tools/research_wiki.py init wiki/— 初始化 wiki 结构(Stage 0)python3 tools/fetch_deepxiv.py search "{query}" --mode hybrid --limit 20— DeepXiv 语义搜索(Stage 0)python3 tools/fetch_s2.py search "{query}" --limit 20— Semantic Scholar 搜索(Stage 0)python3 tools/fetch_arxiv.py— arXiv RSS 搜索(Stage 0)
MCP Servers
- 无直接 MCP 调用 — 所有 Review LLM 交互通过子 skill 间接使用
Claude Code Native
Read— 读取 pipeline-progress、wiki 页面、RESEARCH_BRIEFWrite— 写入 pipeline-progress、PIPELINE_REPORTGlob— 查找 experiments、ideas、claimsSkill— 调用子 skills(核心能力)AskUserQuestion— Gate 和自动恢复检测的用户交互
Signals
- GitHub stars
- 83
- Forks
- 17
- Last commit
- Jun 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
research-lambenthan- Source
- github.com/lambenthan/empiricalwiki