Skip to main content
Glama
README.md
# SciHost — 科学方向探索宿主系统

面向材料科学文献调研与可证伪假设生成的持续运行系统。输入文献语料,输出**可证的科研发现**、**研究方向**与**含完整溯源链的发现报告**。

本项目为**比赛提交包**,自包含、零外部服务依赖、**离线可运行**(无需任何 API Key)。

## 核心能力

- **科学文献采集与隐性配对**:从论文语料发现跨领域隐性关联
- **CSP 知识抽取**:自动抽取 组分-结构-性能 三元组
- **可证伪假设生成**:生成含数值预测的假设(如"预测 X 材料带隙为 Y eV")
- **数字孪生仿真试错**:内置 `ResearchTwin` 虚拟实验环境,算法算子交叉验证 + 材料物理约束检查
- **材料性能找全(内置 DSR-MO 算法)**:将已知材料性能数据映射为连续性能景观,用内置多模态优化算法一次性找全所有性能最优的候选材料,并为数值预测假设对标打分
- **验证复现与发现认证**:扰动重跑 + 交叉验证 → 认证为科学发现
- **文献溯源链**:每条发现可追溯到 假设 → 配对 → 论文 → CSP
- **EWC 持续学习**:保护已验证知识,校准算子权重

## 内置核心算法:DSR-MO

本系统内置了 **DSR-MO**(小生境 / 群体智能方向的多模态优化算法),作为宿主系统中的一个研究算子,随项目一并提供。

- **算法定位**:面向多模态优化的单目标 niching 算法,能够在一个连续函数空间内**同时定位出所有等高的性能峰**("先占地盘、后精耕细作":maximin 选择铺开占位保覆盖,Nelder-Mead 局部精修保精度,报告期密度过滤去冗余)。
- **本项目中的应用场景**:数字孪生中的「材料性能找全」算子。把已知材料成分-结构-性能(CSP)数据构造成连续性能景观,DSR-MO 在该景观上一次找全所有性能极值的候选材料,作为可证伪假设的对照基准与打分依据。
- **算法源码仓库**:https://github.com/aceris-sola/DSR-MO (评审可对照查看算法完整实现)
- **移植说明**:为便于离线运行,算法以纯 numpy 实现并嵌入本包(`sci_host/dsr_mo/`),不依赖 MATLAB/Octave。这是同一算法在本系统的实际应用形态。

## 快速开始

```bash
# 1. 安装依赖
pip install -r requirements.txt

# 2. 离线演示(默认,几轮快速跑)
python run.py

# 3. 材料科学完整流水线演示(推荐先跑这个,看完整效果)
python demo.py

# 4. 作为 MCP 服务使用(stdio 模式,供 Claude Desktop / Cursor / IDE 调用)
python run.py --mcp

# 5. 作为 MCP 服务使用(HTTP 模式,远程访问)
python run.py --mcp --http 8080
```

## 启用 Sciverse 联网检索(真实文献 + 后端联网审查)

默认离线即用(内置语料,无需任何 Key)。需要检索**真实文献**或做**后端联网审查**时,配置一个 Sciverse API Key 即可,采集会自动走 `https://api.sciverse.space/agentic-search`(4.65 亿学术元数据)。

**Key 填在哪(二选一):**
- 推荐:复制 `.env.example` 为 `.env`,在 `SCIVERSE_API_TOKEN=` 后填真实 token(项目启动自动读取,`.env` 已被 git 忽略)
- 或用环境变量:`export SCIVERSE_API_TOKEN=sci_你的token`

**联网审查三步走:**
```bash
python run.py --mcp          # ① 启动 MCP 服务
```
```
② 调用 sci_create_sciverse_host 创建联网宿主(联网开关)
③ 依次调用 sci_stream_crawl → pair → hypothesize → trial → verify,
   每步读取真实中间结果,用 sci_stream_feedback 实时把关
```

完整步骤、可复制的提示词见 **[USAGE.md](USAGE.md#5-启用-sciverse-联网检索真实文献--后端联网审查)** 第 5 节。

## 评审验证清单

| 验证项 | 命令 | 预期 |
|--------|------|------|
| 离线演示 | `python run.py` | 跑出 论文采集/配对/假设/试错 数据 |
| 材料完整演示 | `python demo.py` | 输出 CSP 三元组、认证发现、溯源报告 |
| MCP 服务 | `python run.py --mcp --http 8080` | 启动 MCP 服务,暴露 `sci_*` 工具 |
| 测试套件 | `python -m pytest tests/ -q` | 核心修复测试通过 |

## 作为 MCP 服务接入

MCP 客户端配置(`claude_desktop_config.json` / VS Code / Cursor):

```json
{
  "mcpServers": {
    "sci-host": {
      "command": "python",
      "args": ["/绝对路径/sci-host-mcp-competition/run.py", "--mcp"]
    }
  }
}
```

工具命名空间为 `sci_*`,例如:
- `sci_create_host` / `sci_create_materials_host` — 创建宿主实例
- `sci_step` / `sci_run_cycles` — 运行探索循环
- `sci_get_directions` / `sci_get_discoveries` — 获取方向与发现
- `sci_get_csp_knowledge` / `sci_get_discovery_report` — 材料科学专属
- `sci_generate_competition_report` — 生成参赛 Markdown 报告

## 目录结构

```
sci-host-mcp-competition/
├── run.py                 # 统一入口(离线演示 + MCP 服务)
├── demo.py                # 材料科学完整离线演示
├── requirements.txt       # 最小依赖
├── README.md
├── sci_host/              # 宿主系统核心包(自包含)
│   ├── mcp_server.py      # MCP 服务入口
│   ├── research_twin.py   # 内置数字孪生虚拟实验环境
│   ├── twin_adapter.py    # 算法算子适配器
│   ├── dsr_mo/            # 内置 DSR-MO 多模态优化算法(含材料性能景观与找全算子)
│   ├── research_quality.py
│   ├── core/ ... materials/ ... trial/ ... 等子模块
├── tests/                 # 核心修复测试套件
└── demo/competition-demo.html  # 可视化演示页面
```

## 运行环境

- Python ≥ 3.9
- 仅依赖:`numpy`, `requests`, `mcp[cli]`, `pydantic`
- 离线模式使用内置语料,不访问网络,评审无需联网