Files
EvoScientist/README.zh-CN.md
T
m4 c2743251e9 Initial commit of EvoScientist framework
Self-evolving AI scientist framework built on LangGraph/LangChain with
CLI/TUI core, FastAPI gateway, and Next.js frontend.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-07-13 08:07:45 +08:00

30 KiB
Raw Blame History

Warning

这是社区翻译版本,欢迎修正!


Note

本仓库只包含 EvoScientist 核心能力和 CLI。FastAPI Gateway、浏览器前端、Web 部署配置及 Web 数据迁移脚本已迁移到同级 Ai4Sci-Web 工程。

EvoScientist Logo

Typing SVG

English | 简体中文

EvoScientist 旨在通过构建自我进化的 AI 科学家来驱动 Vibe Research——让 AI 自主探索、生成洞见并持续迭代优化。 它以开箱即用为设计理念,提供一个伴随智能体技能、工具集和记忆库共同成长的活跃研究系统。 EvoScientist 超越了传统的人在回路(Human-in-the-Loop)模式,采用人在环上(Human-on-the-Loop)范式——AI 作为研究伙伴,与人类研究者共同进化,逐步内化学术品味与科学判断力。

🏆 荣誉与认可

ICAIS 2025 Awards
最佳论文与评审奖
Best Paper
AI 生成最佳论文
DeepResearch Bench II #1
DeepResearch Bench II 第一名

AstaBench Code & Execution #1
AstaBench 代码与执行榜第一名
AstaBench Data Analysis #1
AstaBench 数据分析榜第一名

⚡ 统一入口,多端体验

🖥️ CLI / TUI

📱 移动端

✨ 特性

  • 🤖 多智能体协作 — 6 个子智能体(规划、调研、编码、调试、分析、写作)协同工作。
  • 🧠 持久化记忆 — 上下文、偏好和研究发现跨会话保持。
  • 🌐 多模型供应商 — Anthropic、OpenAI、Google、MiniMax、NVIDIA——一处配置,随时切换。
  • 📱 多渠道接入 — CLI 为中心;Telegram、Slack、飞书、微信等——共享同一智能体会话。
  • 🔬 科学工作流 — 需求采集 → 规划 → 执行 → 评估 → 撰写 → 验证。
  • 🔄 代码生成模式 — More Effort(迭代精修),持续迭代提升代码生成质量。
  • ⚡ 自适应工具 — 每轮对话智能筛选相关工具,减少干扰提升效率。
  • ✂️ 上下文编辑 — 根据对话状态动态改写系统提示词。
  • 🔌 MCP 与 Skills — 即插即用 MCP 服务器,或从 GitHub 一键安装技能包。

Tip

寻找开箱即用的研究技能?查看 EvoSkills — 由 EvoScientist 引擎驱动,结合可安装技能,端到端研究全流程一步到位。EvoSkills 同样兼容各类 CLI 编程智能体。

🔥 动态

📖 目录

📦 安装

Tip

需要 Python 3.11+(< 3.14)。推荐使用 uv 或 conda 进行依赖管理和虚拟环境管理。

🪛 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh

快速安装

uv tool install EvoScientist

Note

更新已安装的版本到最新,请使用 uv tool upgrade:

uv tool upgrade EvoScientist

或安装到当前环境:

uv pip install EvoScientist

从 GitHub 安装最新版本

获取 PyPI 发布前的最新补丁:

uv pip install git+https://github.com/EvoScientist/EvoScientist.git

开发安装

git clone https://github.com/EvoScientist/EvoScientist.git
cd EvoScientist
uv sync --dev

enable pre-commit hooks:

uv run pre-commit install
使用 conda
conda create -n EvoSci python=3.11 -y
conda activate EvoSci
pip install -e ".[dev]"
使用 PyPi
pip install EvoScientist          # quick install
pip install -e ".[dev]"           # development install
可选:渠道依赖

消息渠道集成需要额外依赖,按需安装即可:

uv pip install "EvoScientist[telegram]"     # Telegram
uv pip install "EvoScientist[discord]"      # Discord
uv pip install "EvoScientist[slack]"        # Slack
uv pip install "EvoScientist[wechat]"       # 微信
uv pip install "EvoScientist[qq]"           # QQ
uv pip install "EvoScientist[feishu]"       # 飞书
uv pip install "EvoScientist[all-channels]" # 全部
升级到最新代码库
git pull && uv sync --dev

🔝回到顶部

🐳 Docker 部署

推荐在本地编译 Docker image,保存为 tar,通过 SSH 上传到服务器,再在服务器导入并运行。版本号由 EvoScientist/_version.py 中的 __version__ 统一管理,构建脚本自动读取。

1. 本地编译并保存为 tar

在项目根目录运行:

docker/build-image.sh \
  --platform linux/amd64 \
  --prefix ghcr.io/jakeyang886/evoscientist

如需完全重新编译、不复用 Docker 缓存,加 --no-cache:

docker/build-image.sh \
  --platform linux/amd64 \
  --prefix ghcr.io/jakeyang886/evoscientist \
  --no-cache

生成的镜像 tag(版本号自动从 EvoScientist/_version.py 读取):

ghcr.io/jakeyang886/evoscientist-backend:<version>-linux-amd64
ghcr.io/jakeyang886/evoscientist-frontend:<version>-linux-amd64

同时保存为本地 tar:

docker/dist/evoscientist-backend-<version>-linux-amd64.tar
docker/dist/evoscientist-frontend-<version>-linux-amd64.tar

2. 上传到服务器

SERVER_USER=root
SERVER_HOST=your.server.ip
SERVER_DIR=/opt/evoscientist
VERSION=$(sed -n 's/^__version__[[:space:]]*=[[:space:]]*["'\'']\([^"'\'']*\)["'\''].*/\1/p' EvoScientist/_version.py)

ssh ${SERVER_USER}@${SERVER_HOST} "mkdir -p ${SERVER_DIR}/docker-images ${SERVER_DIR}/docker"

scp docker/dist/evoscientist-backend-${VERSION}-linux-amd64.tar \
    docker/dist/evoscientist-frontend-${VERSION}-linux-amd64.tar \
    ${SERVER_USER}@${SERVER_HOST}:${SERVER_DIR}/docker-images/

scp docker/docker-compose.yml ${SERVER_USER}@${SERVER_HOST}:${SERVER_DIR}/docker/
scp .env.example ${SERVER_USER}@${SERVER_HOST}:${SERVER_DIR}/.env

3. 服务器导入并运行

ssh ${SERVER_USER}@${SERVER_HOST}
cd /opt/evoscientist

# 替换 <version> 为实际版本号
docker load -i docker-images/evoscientist-backend-<version>-linux-amd64.tar
docker load -i docker-images/evoscientist-frontend-<version>-linux-amd64.tar

BACKEND_IMAGE=ghcr.io/jakeyang886/evoscientist-backend:<version>-linux-amd64 \
FRONTEND_IMAGE=ghcr.io/jakeyang886/evoscientist-frontend:<version>-linux-amd64 \
docker compose -f docker/docker-compose.yml up -d

查看状态:

docker compose -f docker/docker-compose.yml ps
docker compose -f docker/docker-compose.yml logs -f

更完整的 Docker 构建和部署说明见 docker/README.zh-CN.md。

🔝回到顶部

🔑 配置

最简单的方式是使用交互式配置向导:

EvoSci onboard

Tip

向导将引导你完成供应商选择、密钥验证、模型选择和工作区模式设置。 支持 CLI 编程智能体订阅用户通过 OAuth 直连——无需 API Key。

onboard

📟 通过环境变量手动配置

至少设置一个 LLM 供应商密钥,搜索密钥为可选项:

# 选择一个 LLM 供应商
export ANTHROPIC_API_KEY="sk-..."   # Claude  — console.anthropic.com
export OPENAI_API_KEY="sk-..."      # GPT    — platform.openai.com
export GOOGLE_API_KEY="AI..."       # Gemini  — aistudio.google.com/api-keys
export MINIMAX_API_KEY="sk-..."     # MiniMax — platform.minimaxi.com (Anthropic-compatible)
export NVIDIA_API_KEY="nvapi-..."   # NIM    — build.nvidia.com

# 网络搜索(可选)
export TAVILY_API_KEY="tvly-..."    # app.tavily.com

也可以使用 EvoSci config set 将密钥持久化到 .data/.config/settings.yaml(项目根目录,或 $EVOSCIENTIST_CONFIG_DIR)。

或者复制示例 .env 文件用于项目级配置:

cp .env.example .env  # 填入你的密钥

⚠️ 切勿将包含真实密钥的 .env 文件提交到版本库。该文件已在 .gitignore 中。

Web 用户上传空间配额

Web 用户上传文件的存储空间按套餐限制,配置在 settings.yaml 的 gateway.upload_quota 中:

gateway:
  upload_quota:
    starter: 100MiB
    pro: 500MiB
    max: 1GiB
    ultra: 10GiB

统计口径只包含用户主动上传的 active 文件:user_files.status='active' AND source='upload'。大模型或 Agent 生成的产物通常是 source='artifact',不计入该上传空间配额。

也可以通过环境变量配置:

UPLOAD_QUOTA_BYTES='starter=100MiB,pro=500MiB,max=1GiB,ultra=10GiB'
码支付内测支付

码支付可作为内测支付通道跑通“创建订单 -> 用户扫码或打开支付链接 -> 回调验签 -> 自动入账 -> 完成会员充值”。EvoScientist 通过码支付平台提供的“易支付兼容 MApi 协议”接入,不需要再启用另一套易支付支付方式。默认关闭,仅建议用于小额内测,单笔上限默认 200 元。

非密钥字段配置在 settings.yaml:

payment:
  codepay:
    enabled: false
    mode: test
    api_url: https://codepay.example.com/mapi.php
    notify_url: https://your-domain.com/api/payments/codepay/notify
    return_url: https://your-domain.com/settings/billing
    pay_type: wxpay
    max_amount: 200
    allowed_user_uids: []
    allowed_plans: [pro, max, ultra]
    allowed_months: [1, 3, 12]

同名配置也可写入 .env,并且优先级最高:

CODEPAY_ENABLED=false
CODEPAY_API_URL=https://codepay.example.com/mapi.php
CODEPAY_NOTIFY_URL=https://your-domain.com/api/payments/codepay/notify
CODEPAY_RETURN_URL=https://your-domain.com/settings/billing
CODEPAY_MERCHANT_ID="1001"
CODEPAY_KEY="your-codepay-md5-key"
CODEPAY_MAX_AMOUNT=200
CODEPAY_ALLOWED_USER_UIDS=

必填字段包括:api_url、notify_url、merchant_id、key。api_url 应填写 MApi JSON 接口,不要填写 Submit 表单接口。回调地址为 /api/payments/codepay/notify。读取优先级为环境变量 > settings.yaml > 后台支付 JSON/defaults。金额异常或支付状态异常会把订单标记为 review_required,进入人工补单,不会自动开通会员。

📧 邮件服务 & 人机验证配置

邮件服务 (SMTP)

注册验证、密码重置等邮件需要配置 SMTP。在 .env 中设置:

# SMTP 邮件服务
SMTP_HOST=smtp.qq.com              # SMTP 服务器地址(QQ邮箱 / Gmail / 企业邮箱等)
SMTP_PORT=465                      # 端口(SSL: 465, TLS: 587)
SMTP_USER=your-email@qq.com        # 发件邮箱账号
SMTP_PASSWORD=xxxxxxxxxxxx         # 授权码(非邮箱登录密码)
SMTP_USE_TLS=true                  # 是否使用 TLS
SMTP_SENDER_NAME=EvoScientist      # 发件人显示名称
SMTP_SENDER_EMAIL=your-email@qq.com # 发件人邮箱(通常与 SMTP_USER 相同)

# 网站地址 — 邮件中的链接会拼接此地址
# 本地开发:
BASE_URL=http://localhost:3065
# 生产环境:
# BASE_URL=https://your-domain.com

Important

BASE_URL 决定了验证邮件和密码重置邮件中的链接地址。 部署到服务器后必须改为实际域名,否则用户点击邮件链接会跳转到 localhost。

常见邮箱授权码获取:

  • QQ 邮箱: 设置 → 账户 → POP3/SMTP 服务 → 生成授权码
  • Gmail: Google 账号 → 安全 → 两步验证 → 应用专用密码
  • 163 邮箱: 设置 → POP3/SMTP/IMAP → 开启并获取授权码

人机验证 (ALTCHA Sentinel)

注册和登录页面可启用 ALTCHA Sentinel 人机验证(自托管 PoW 方案,无需第三方服务)防止机器人攻击。

1) 部署 ALTCHA Sentinel

Sentinel 是一个轻量 PoW 验证服务,可 Docker 一键启动:

docker run -d --name altcha-sentinel \
  -p 3020:3000 \
  -e ALTCHA_HMAC_KEY=your-hmac-secret-key \
  altcha/sentinel

或直接部署到已有服务器。Sentinel 默认监听端口 3000(映射到宿主机 3020)。

2) 后端配置(.env)

CAPTCHA_ENABLED=true
ALTCHA_HMAC_KEY=your-hmac-secret-key    # 与 Sentinel 的 HMAC key 一致
ALTCHA_SENTINEL_URL=http://your-sentinel-host:3020

3) 前端集成

前端通过 <altcha-widget> Web Component 自动集成,无需额外配置前端环境变量。

Note

不配置 CAPTCHA_ENABLED=true 时验证组件不会显示,注册登录正常使用(无验证步骤)。 ALTCHA_HMAC_KEY 必须与 Sentinel 服务端配置的 key 一致,否则验证会失败。

🔝回到顶部

⚡ 快速上手

EvoSci  # 或 EvoScientist — 交互模式(默认 TUI)

demo

运行 EvoSci -h 查看全部 CLI 选项。

cli help

Tip

需要复制长输出?使用 --ui cli 切换到经典模式,即可使用终端原生复制。macOS iTerm2 用户也可以按住 ⌥ Option 拖选文字,再 ⌘+C 复制。

常用示例
EvoSci                            # 交互模式(默认 TUI)
EvoSci -p "你的问题"              # 单次查询模式
EvoSci --workdir /path/to/project # 在指定目录下启动
EvoSci -m run                     # 隔离的会话级工作区
EvoSci --ui cli                   # 经典 CLI(轻量)
EvoSci serve                      # 无头模式——仅渠道,无交互提示符
操作审批

默认情况下,Shell 命令(execute 工具)执行前需要人工审批。跳过审批提示的方式:

# 单次会话:通过 CLI 参数启用自动审批
EvoSci --auto-approve
EvoSci -p "query" --auto-approve

# 持久化:写入配置(对所有后续会话生效)
EvoSci config set auto_approve true

# 或仅放行特定命令前缀
EvoSci config set shell_allow_list "python,pip,pytest,ruff,git"

会话中也可以在审批提示时回复 3(Approve all),仅对当次会话自动审批后续所有操作。

智能体提问

智能体可以在需要澄清时主动向你提问(例如数据集选择、实验方向等)。此功能默认开启。关闭方式:

# 持久化:写入配置
EvoSci config set enable_ask_user false

# 重新开启
EvoSci config set enable_ask_user true
会话内命令
命令 说明
/current 显示当前会话信息
/threads 列出最近的会话
/resume 恢复之前的会话
/delete 删除已保存的会话
/new 开始新会话
/clear 清除聊天记录
/skills 列出已安装的技能包
/install-skill <src> 从本地路径或 GitHub 安装技能包
/uninstall-skill <name> 卸载已安装的技能包
/mcp 管理 MCP 服务器
/channel 配置消息渠道
/help 显示可用命令
/exit 退出
脚本调用
from EvoScientist import EvoScientist_agent
from langchain_core.messages import HumanMessage
from EvoScientist.utils import format_messages

thread = {"configurable": {"thread_id": "1"}}
last_len = 0

for state in EvoScientist_agent.stream(
    {"messages": [HumanMessage(content="Hi?")]},
    config=thread,
    stream_mode="values",
):
    msgs = state["messages"]
    if len(msgs) > last_len:
        format_messages(msgs[last_len:])
        last_len = len(msgs)

🔝回到顶部

Web UI

Web 前端、FastAPI Gateway 和本地联调说明已迁移到同级 Ai4Sci-Web 工程。EvoScientist CLI 可以在未安装 Web 工程的环境中独立运行。

🔝回到顶部

🍪 示例与实践

收集了一些官方示例、进阶用法和社区贡献的实践方案,帮助你更好地使用 EvoScientist。

👉 浏览全部示例与实践 →

🔝回到顶部

🔌 MCP 集成

通过 MCP 服务器一条命令即可添加外部工具:

# 用法
EvoSci mcp add <name> <command> [-- args...]

# 示例
EvoSci mcp add sequential-thinking npx -- -y @modelcontextprotocol/server-sequential-thinking

Tip

关于命令选项、配置字段、工具路由、通配符过滤和故障排查,请参阅 MCP 集成指南。

🔝回到顶部

📱 渠道接入

连接消息平台,使其与 CLI 共享同一智能体会话:

# 用法
EvoSci channel setup <channel>

# 示例
EvoSci channel setup telegram

多个渠道可同时运行——在配置中用逗号分隔:

channel_enabled: "telegram,slack,feishu,qq"

也可以在 CLI 会话中通过 /channel 交互式启动渠道。

Tip

关于各渠道设置指南、功能矩阵、架构详情和故障排查,请参阅 渠道集成指南。

🔝回到顶部

📚 致谢

本项目基于以下优秀的开源项目构建:

  • LangChain — 构建智能体和 LLM 驱动应用的框架。
  • DeepAgents — 开箱即用的智能体编排框架。

感谢以上项目作者对开源社区的宝贵贡献。

🔝回到顶部

🎯 ᯓ➤ 路线图

即将推出:

  • 🖥️ 全屏 TUI 和经典 CLI 双界面
  • 📻 EvoMemory v1.0 已上线
  • ⚒️ 200+ 预置技能已内置
  • 🧩 内置研究全流程技能已上线
  • 👋 Human-in-the-loop 操作审批
  • 🦾 智能体主动向人类澄清确认
  • 📑 技术报告已发布
  • 🔐 OAuth 登录(CLI 编程智能体订阅用户)
  • 📺 带工作区的 Web 应用界面
  • 📹 Demo 与教程正在制作中
  • 📊 基准测试套件即将推出
  • ⏰ 核心系统定时任务规划中

敬请期待——更多功能正在路上!

🔝回到顶部

🌍 项目角色

Core Contributors

Xi Zhang
Xi Zhang
Yougang Lyu
Yougang Lyu
Dinos Papakostas
Dinos Papakostas
Yuyue Zhao
Yuyue Zhao
Ziheng Zhang
Ziheng Zhang
Xiaohui Yan
Xiaohui Yan

Contributors

Jan Piotrowski, Wiktor Cupiał, Jakub Kaliski, Jakub Filipiuk, Xinhao Yi, Shuyu Guo, Andreas Sauter, Wenxiang Hu, Jacopo Urbani, Zaiqiao Meng, Jun Luo, Lun Zhou

Xiaoyi DeepResearch Xiaoyi DeepResearch Team 及更广泛的开源社区共同为本项目做出贡献。

如有任何咨询或合作意向,请联系:EvoScientist.ai@gmail.com

🔝回到顶部

🤝 贡献

EvoScientist Team

我们欢迎各层次的开发者、研究者以及 AI 编程助手参与贡献。我们的 贡献指南 同时面向人类和 AI Agent 编写,涵盖架构说明、设计模式、扩展指南和代码规范,帮助你安全高效地参与项目开发。

👥 社区贡献者

⚗️ 加入 EvoScientist 社区,探讨 AI 驱动的科研前沿,分享实验成果,共同推动自动化科学发现的未来。

  • Discord — 实时提问、分享发现,与研究者和开发者协作交流。

  • 微信 — 加入中文社区,与国内研究者和开发者交流。

    微信群二维码

每一份贡献,都让我们离 AI 驱动科学突破、造福全人类的未来更近一步。

📈 Star 趋势

Star History Chart

🔝回到顶部

📝 引用

如果您觉得我们的论文和代码对您的研究有帮助,请使用以下 BibTeX 引用:

@article{evoscientist2026,
  title={EvoScientist: Towards Multi-Agent Evolving AI Scientists for End-to-End Scientific Discovery},
  author={Yougang Lyu and Xi Zhang and Xinhao Yi and Yuyue Zhao and Shuyu Guo and Wenxiang Hu and Jan Piotrowski and Jakub Kaliski and Jacopo Urbani and Zaiqiao Meng and Lun Zhou and Xiaohui Yan},
  journal={arXiv preprint arXiv:2603.08127},
  year={2026}
}

🔝回到顶部

📜 许可证

本项目基于 Apache License 2.0 开源——详情请见 LICENSE 文件。

🔝回到顶部