# Research-467: 自主科研助手多智能体系统设计

## 1. 系统概述

Research-467 是一个基于 lambdagent 规范的多智能体协作系统，能够从 IDEA.md 出发，自主完成"可行性分析 → 文献调研 → 实验设计 → 实验实施 → 结果分析 → 论文撰写 → 审稿评判 → 迭代修改"的完整科研闭环，以 CCF A 类会议 50%+ 投稿率为终止条件。

## 2. 架构总览

```
                    ┌─────────────────────────┐
                    │   research-orchestrator  │
                    │      (type: react)       │
                    │   主循环控制 + 状态管理    │
                    └────────┬────────────────┘
                             │ 调度
        ┌────────┬───────┬───┴───┬────────┬────────┬────────┐
        ▼        ▼       ▼       ▼        ▼        ▼        ▼
   ┌────────┐┌───────┐┌──────┐┌──────┐┌───────┐┌───────┐┌────────┐┌────────┐
   │ idea   ││ lit   ││ exp  ││ exp  ││result ││paper  ││ data   ││paper   │
   │analyst ││search ││plan  ││exec  ││analyze││writer ││verifier││reviewer│
   │(react) ││(react)││(chain)│(react)│(react) ││(chain)││(react) ││(react) │
   └────────┘└───────┘└──────┘└──────┘└───────┘└───────┘└────────┘└────────┘
```

### Lambda 语义

整体系统是一个 Y 组合子驱动的不动点迭代：

```
Research467 = Y_max(λself. λidea.
  let feasibility = IdeaAnalyst(idea) in
  let papers      = LitSearcher(idea, feasibility) in
  let plan        = ExpPlanner(idea, papers) in
  let results     = ExpExecutor(plan) in
  let analysis    = ResultAnalyzer(results, papers) in
  let draft       = PaperWriter(idea, papers, analysis) in
  let verified    = DataVerifier(results, draft) in
  let review      = PaperReviewer(verified.fixed_draft) in
  IF (review.score ≥ 0.5)
    THEN (draft, review)
    ELSE self(RevisionAdvisor(idea, review))
)
```

## 3. 智能体详细设计

### 3.1 research-orchestrator（主编排器）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 职责 | 管理整个科研流程状态机，调度子智能体，维护全局上下文 |
| 终止条件 | PaperReviewer 评分 ≥ 50% CCF-A 录用概率 |
| 最大迭代 | 5 轮（防止无限循环） |

### 3.2 idea-analyst（创意分析师）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 输入 | IDEA.md 内容 |
| 输出 | 可行性报告（新颖性/技术路线/风险/改进建议） |
| 工具 | semantic_scholar_search, arxiv_search |

### 3.3 lit-searcher（文献检索员）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 输入 | 研究主题 + 关键词 |
| 输出 | 结构化文献综述（≥20篇相关工作） |
| 工具 | semantic_scholar_search, arxiv_search, pdf_reader |

### 3.4 exp-planner（实验规划师）

| 属性 | 值 |
|------|-----|
| 类型 | chain |
| 步骤 | 1. 基线方法选择 → 2. 数据集确定 → 3. 评估指标定义 → 4. 实验方案生成 |
| 输出 | 完整实验计划 JSON |

### 3.5 exp-executor（实验执行员）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 输入 | 实验计划 |
| 输出 | 实验结果 + 日志 |
| 工具 | python_exec, shell_exec, gpu_monitor |
| 特殊 | 带 checkpoint，实验可中断恢复 |

### 3.6 result-analyzer（结果分析师）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 输入 | 实验结果数据 |
| 输出 | 分析报告 + 可视化图表 + 统计显著性检验 |
| 工具 | python_exec（matplotlib/scipy）, latex_table_gen |

### 3.7 paper-writer（论文撰写员）

| 属性 | 值 |
|------|-----|
| 类型 | chain |
| 步骤 | 1. 大纲生成 → 2. 各节撰写（parallel）→ 3. 整合润色 → 4. LaTeX 编译 |
| 输出 | 完整 LaTeX 论文 + PDF |

### 3.8 data-verifier（数据核验员）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 输入 | 实验原始结果 + 论文 LaTeX 源码 |
| 输出 | 核验报告（不一致项 + 严重等级 + 修正补丁） |
| 核验范围 | 表格数值、正文百分比、图表数据、摘要声明、统计量、bold 标注 |
| 工具 | python_exec（重新计算验证）, read_file |
| 特殊 | temperature=0.0，极端精确模式；输出包含可直接应用的 fix_patch |

### 3.9 paper-reviewer（论文评审员）

| 属性 | 值 |
|------|-----|
| 类型 | react |
| 输入 | 论文 PDF/LaTeX |
| 输出 | 评审意见 + CCF-A 录用概率评分 |
| 参考 | 目标会议历年录用标准、Review 模板 |

## 4. 所需资源分析

### 4.1 知识库（RAG Sources）

| 知识库 | 用途 | 格式 |
|--------|------|------|
| `ccf_ranking.json` | CCF 推荐会议/期刊分级列表 | JSON |
| `conference_templates/` | 各会议 LaTeX 模板（AAAI, NeurIPS, ACL 等） | .tex/.sty |
| `review_criteria/` | 各会议评审标准和 checklist | Markdown |
| `writing_guides/` | 学术写作指南、常见 reviewer 意见 | Markdown |
| `methodology_kb/` | 研究方法论（实验设计、统计检验等） | Markdown |
| `user_papers/` | 用户已发表论文（学习写作风格） | PDF/LaTeX |

### 4.2 MCP 服务

| MCP Server | 提供的工具 | 说明 |
|------------|-----------|------|
| `scholar-mcp` | `semantic_scholar_search`, `get_paper_details`, `get_citations` | Semantic Scholar API 封装 |
| `arxiv-mcp` | `arxiv_search`, `arxiv_download`, `pdf_to_text` | ArXiv 论文检索与下载 |
| `code-sandbox-mcp` | `python_exec`, `install_package`, `gpu_status` | 安全的代码执行沙箱 |
| `latex-mcp` | `compile_latex`, `latex_lint`, `bibtex_format` | LaTeX 编译服务 |
| `fs-mcp` | `read_file`, `write_file`, `list_dir` | 文件系统操作 |
| `plotting-mcp` | `create_figure`, `create_table` | 科研图表生成 |

### 4.3 本地工具（localTools）

| 工具 | 说明 |
|------|------|
| `terminate` | 标准终止工具（base case） |
| `read_idea` | 读取并解析 IDEA.md |
| `save_checkpoint` | 保存当前科研进度 |
| `load_checkpoint` | 恢复科研进度 |
| `human_feedback` | 请求人类研究者反馈（可选） |

### 4.4 CLI 工具

```bash
# 启动科研流程
lambdagent run research467/orchestrator.yml --input idea.md

# 查看进度
lambdagent status research467

# 从检查点恢复
lambdagent run research467/orchestrator.yml --checkpoint latest

# 单独运行某个阶段
lambdagent run research467/lit-searcher.yml --input "transformer efficiency"

# 静态检查所有配置
lambdagent lint research467/*.yml

# 导出 Lambda 表达式（验证语义）
lambdagent lambda research467/orchestrator.yml
```

## 5. 关键设计决策

### 5.1 为什么用 react 而非 chain 做 orchestrator？

chain 是静态的 `f >> g >> h`，无法根据 reviewer 反馈动态决定回退到哪个阶段。react 的 Y 组合子循环 + 工具调用允许 orchestrator 在每一步灵活决策：可能只需修改论文，也可能需要重新实验。

### 5.2 迭代收敛策略

- 每轮迭代，reviewer 产出结构化评审（novelty/soundness/clarity/significance 四维度打分）
- orchestrator 根据最低分维度决定回退目标：
  - novelty 低 → 回退 idea-analyst
  - soundness 低 → 回退 exp-planner
  - clarity 低 → 回退 paper-writer
  - significance 低 → 回退 lit-searcher（寻找更强的对比方法）
- 设置 maxSteps=5 防止无限迭代，超过则输出当前最佳版本 + 改进建议

### 5.3 Memory 策略

- orchestrator 使用 redis memory（全局状态持久化）
- 子智能体使用 session-scoped local memory（任务完成即释放）
- 文献综述结果存入 RAG 供后续阶段引用

### 5.4 Guard 校验

- idea-analyst: 输出必须包含 novelty_score 字段
- exp-planner: 输出必须是合法 JSON 且包含 datasets, baselines, metrics
- paper-reviewer: 输出必须包含 acceptance_probability 数值
- orchestrator: 最终输出必须包含完整论文 + 评审报告

## 6. 执行流程示意

```
Round 1:
  IDEA.md → idea-analyst → feasibility_report
         → lit-searcher → literature_review (20+ papers)
         → exp-planner → experiment_plan.json
         → exp-executor → raw_results/
         → result-analyzer → analysis_report + figures/
         → paper-writer → draft_v1.tex → draft_v1.pdf
         → data-verifier → verification_v1 (2 discrepancies fixed)
         → paper-reviewer → review_v1 (score: 0.35)

  score < 0.5, reviewer says: "soundness: weak experiments, missing ablation"

Round 2:
  orchestrator routes to exp-planner (soundness issue)
  → exp-planner → updated_plan (+ ablation studies)
  → exp-executor → new_results/
  → result-analyzer → updated_analysis
  → paper-writer → draft_v2.tex (incorporating new results)
  → data-verifier → verification_v2 (0 discrepancies ✓)
  → paper-reviewer → review_v2 (score: 0.52)

  score ≥ 0.5 ✓ → 输出 draft_v2 + submission recommendation
```

## 7. 产出物规范（Artifact Protocol）

每个智能体在工作时必须遵循统一的"**先计划、后执行、最后归档**"三阶段协议。
所有产出物写入 `${WORKSPACE}` 目录（运行时由 orchestrator 通过环境变量注入）。

### 7.1 三阶段协议

```
阶段 1: PLAN   → 写入 work_plan.md（目标、方法、预期产出、时间估算）
阶段 2: EXEC   → 执行工作，中间产物写入 artifacts/
阶段 3: REPORT → 写入 report.json（结构化结果）+ report.md（可读报告）
```

### 7.2 运行时工作区结构（Workspace Layout）

```
${WORKSPACE}/                                # e.g. ./workspace/run_20260327_143000/
├── project_plan.md                          # orchestrator 的总体科研计划
├── progress.json                            # orchestrator 维护的全局进度
├── round_1/                                 # 第 1 轮迭代
│   ├── 01_idea_analysis/
│   │   ├── work_plan.md                     #   工作计划：要分析什么、怎么分析
│   │   ├── artifacts/
│   │   │   ├── search_queries.json          #   搜索过的关键词和结果
│   │   │   └── similar_papers.json          #   找到的相似论文列表
│   │   ├── report.json                      #   结构化可行性评估
│   │   └── report.md                        #   可读版可行性报告
│   ├── 02_literature_review/
│   │   ├── work_plan.md                     #   检索策略计划
│   │   ├── artifacts/
│   │   │   ├── search_log.jsonl             #   每次搜索的记录
│   │   │   ├── papers_raw.json              #   原始检索结果
│   │   │   └── papers_fulltext/             #   下载的论文全文
│   │   ├── report.json                      #   结构化文献综述
│   │   └── report.md                        #   可读版文献综述
│   ├── 03_experiment_plan/
│   │   ├── work_plan.md                     #   实验设计思路
│   │   ├── artifacts/
│   │   │   ├── baseline_analysis.json       #   基线分析
│   │   │   └── dataset_survey.json          #   数据集调研
│   │   ├── report.json                      #   完整实验计划
│   │   └── report.md                        #   可读版实验计划
│   ├── 04_experiment_execution/
│   │   ├── work_plan.md                     #   执行计划（步骤、顺序、资源）
│   │   ├── artifacts/
│   │   │   ├── scripts/                     #   实验脚本
│   │   │   │   ├── run_main.py
│   │   │   │   ├── run_ablation.py
│   │   │   │   └── run_baseline_*.py
│   │   │   ├── logs/                        #   运行日志
│   │   │   │   └── *.jsonl
│   │   │   ├── checkpoints/                 #   模型检查点
│   │   │   └── raw_results/                 #   原始实验数据
│   │   │       ├── main_results.json        #     ← 主实验原始数据
│   │   │       ├── ablation_results.json    #     ← 消融实验原始数据
│   │   │       └── efficiency_results.json  #     ← 效率实验原始数据
│   │   ├── report.json                      #   汇总实验结果
│   │   └── report.md                        #   可读版执行报告
│   ├── 05_result_analysis/
│   │   ├── work_plan.md                     #   分析计划
│   │   ├── artifacts/
│   │   │   ├── figures/                     #   生成的图表
│   │   │   │   ├── main_comparison.pdf
│   │   │   │   ├── ablation_curve.pdf
│   │   │   │   └── efficiency_plot.pdf
│   │   │   ├── tables/                      #   LaTeX 表格代码
│   │   │   │   ├── main_table.tex
│   │   │   │   └── ablation_table.tex
│   │   │   └── statistical_tests.json       #   统计检验结果
│   │   ├── report.json                      #   结构化分析结果
│   │   └── report.md                        #   可读版分析报告
│   ├── 06_paper_writing/
│   │   ├── work_plan.md                     #   写作大纲和计划
│   │   ├── artifacts/
│   │   │   ├── outline.json                 #   结构化大纲
│   │   │   ├── sections/                    #   各节草稿
│   │   │   │   ├── abstract.tex
│   │   │   │   ├── introduction.tex
│   │   │   │   ├── related_work.tex
│   │   │   │   ├── method.tex
│   │   │   │   ├── experiments.tex
│   │   │   │   └── conclusion.tex
│   │   │   ├── paper.tex                    #   ← 完整论文源码
│   │   │   ├── references.bib               #   ← 参考文献
│   │   │   └── paper.pdf                    #   ← 编译后 PDF
│   │   ├── report.json                      #   写作完成状态
│   │   └── report.md                        #   写作过程说明
│   ├── 07_data_verification/
│   │   ├── work_plan.md                     #   核验计划和范围
│   │   ├── artifacts/
│   │   │   ├── number_map.json              #   论文数值→原始数据映射
│   │   │   ├── fix_patch.json               #   修正补丁
│   │   │   └── paper_fixed.tex              #   修正后论文（如有修改）
│   │   ├── report.json                      #   核验结果
│   │   └── report.md                        #   可读版核验报告
│   └── 08_paper_review/
│       ├── work_plan.md                     #   评审计划和关注点
│       ├── artifacts/
│       │   ├── review_notes.md              #   逐节评审笔记
│       │   └── comparable_papers.json       #   用于对比的同领域已录用论文
│       ├── report.json                      #   结构化评审报告
│       └── report.md                        #   可读版评审意见
├── round_2/                                 # 第 2 轮迭代（结构同上，仅含回退阶段）
│   ├── ...
├── final/                                   # 最终产出
│   ├── paper.tex                            #   最终论文源码
│   ├── paper.pdf                            #   最终论文 PDF
│   ├── references.bib                       #   参考文献
│   ├── figures/                             #   所有图表
│   ├── supplementary/                       #   补充材料
│   ├── experiment_data/                     #   实验原始数据归档
│   │   ├── main_results.json
│   │   ├── ablation_results.json
│   │   └── efficiency_results.json
│   ├── code/                                #   实验代码归档
│   ├── submission_checklist.md              #   投稿前检查清单
│   └── submission_recommendation.json       #   投稿建议（目标会议+时间线）
└── .checkpoints/                            # orchestrator 检查点
    ├── round_1_phase_3.ckpt
    └── ...
```

### 7.3 work_plan.md 统一格式

每个智能体开始工作前必须先写入 `work_plan.md`：

```markdown
# [智能体名称] 工作计划

## 目标
[本阶段要完成什么]

## 输入
[依赖哪些前序阶段的产出，具体文件路径]

## 方法
[准备如何完成，分几步]

## 预期产出
[会生成哪些文件，每个文件的用途]

## 风险与应对
[可能遇到的问题和应对策略]

## 预计耗时
[估算]
```

### 7.4 report.json 统一元数据

所有 report.json 必须包含以下公共字段：

```json
{
  "_meta": {
    "agent_id": "research-467-xxx",
    "phase": "01_idea_analysis",
    "round": 1,
    "started_at": "2026-03-27T14:30:00Z",
    "completed_at": "2026-03-27T14:35:22Z",
    "duration_seconds": 322,
    "status": "completed",
    "work_plan_path": "round_1/01_idea_analysis/work_plan.md",
    "artifacts": [
      "round_1/01_idea_analysis/artifacts/search_queries.json",
      "round_1/01_idea_analysis/artifacts/similar_papers.json"
    ]
  },
  ...agent-specific fields...
}
```

## 8. 文件结构（配置文件）

```
research467/
├── DESIGN.md                    # 本文档
├── orchestrator.yml             # 主编排器配置
├── agents/
│   ├── idea-analyst.yml         # 创意分析师
│   ├── lit-searcher.yml         # 文献检索员
│   ├── exp-planner.yml          # 实验规划师
│   ├── exp-executor.yml         # 实验执行员
│   ├── result-analyzer.yml      # 结果分析师
│   ├── paper-writer.yml         # 论文撰写员
│   ├── data-verifier.yml        # 数据核验员
│   └── paper-reviewer.yml       # 论文评审员
├── knowledge/
│   ├── ccf_ranking.json         # CCF 分级列表
│   ├── review_criteria.md       # 评审标准
│   └── writing_guide.md         # 写作指南
└── prompts/
    └── reviewer_template.md     # 评审模板
```
