<!DOCTYPE html><html lang="zh-CN"><head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>EvoScientist框架:多智能体演化型AI科学家系统深度研究</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#1e293b',
secondary: '#64748b',
accent: '#3b82f6',
surface: '#f8fafc',
'surface-bright': '#ffffff'
},
fontFamily: {
'serif': ['Playfair Display', 'serif'],
'sans': ['Inter', 'sans-serif']
}
}
}
}
</script>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js"></script>
<style>
body {
overflow-x: hidden;
}
.gradient-bg {
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
}
.hero-overlay {
background: linear-gradient(135deg, rgba(30, 41, 59, 0.9) 0%, rgba(59, 130, 246, 0.8) 100%);
}
.toc-fixed {
position: fixed;
top: 0;
left: 0;
width: 280px;
height: 100vh;
background: rgba(248, 250, 252, 0.95);
backdrop-filter: blur(10px);
border-right: 1px solid #e2e8f0;
z-index: 40;
overflow-y: auto;
padding: 2rem 1.5rem;
}
.main-content {
margin-left: 280px;
min-height: 100vh;
}
.citation-link {
color: #3b82f6;
text-decoration: none;
font-weight: 500;
border-bottom: 1px dotted #3b82f6;
}
.citation-link:hover {
background-color: #eff6ff;
border-bottom: 1px solid #3b82f6;
}
.bento-grid {
display: grid;
grid-template-columns: 2fr 1fr;
grid-template-rows: auto auto;
gap: 1.5rem;
height: 60vh;
}
.bento-main {
grid-row: 1 / -1;
position: relative;
overflow: hidden;
}
.bento-stats {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.insight-highlight {
background: linear-gradient(120deg, #fef3c7 0%, #fde68a 100%);
border-left: 4px solid #f59e0b;
padding: 1rem 1.5rem;
margin: 1.5rem 0;
border-radius: 0 8px 8px 0;
}
.innovation-box {
background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
border: 1px solid #3b82f6;
border-radius: 12px;
padding: 2rem;
margin: 2rem 0;
position: relative;
}
.innovation-box::before {
content: "🚀";
position: absolute;
top: -12px;
left: 24px;
background: #3b82f6;
color: white;
padding: 8px 12px;
border-radius: 20px;
font-size: 0.875rem;
font-weight: 600;
}
.toc-link {
display: block;
padding: 0.5rem 0;
color: #64748b;
text-decoration: none;
border-bottom: 1px solid transparent;
transition: all 0.2s ease;
}
.toc-link:hover {
color: #1e293b;
border-bottom-color: #e2e8f0;
}
.toc-link.active {
color: #3b82f6;
font-weight: 500;
}
.section-divider {
height: 1px;
background: linear-gradient(90deg, transparent 0%, #e2e8f0 50%, transparent 100%);
margin: 4rem 0;
}
.mermaid-container {
display: flex;
justify-content: center;
min-height: 300px;
max-height: 800px;
background: #ffffff;
border: 2px solid #e5e7eb;
border-radius: 12px;
padding: 30px;
margin: 30px 0;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08);
position: relative;
overflow: hidden;
}
.mermaid-container .mermaid {
width: 100%;
max-width: 100%;
height: 100%;
cursor: grab;
transition: transform 0.3s ease;
transform-origin: center center;
display: flex;
justify-content: center;
align-items: center;
touch-action: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mermaid-container .mermaid svg {
max-width: 100%;
height: 100%;
display: block;
margin: 0 auto;
}
.mermaid-container .mermaid:active {
cursor: grabbing;
}
.mermaid-container.zoomed .mermaid {
height: 100%;
width: 100%;
cursor: grab;
}
.mermaid-controls {
position: absolute;
top: 15px;
right: 15px;
display: flex;
gap: 10px;
z-index: 20;
background: rgba(255, 255, 255, 0.95);
padding: 8px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.mermaid-control-btn {
background: #ffffff;
border: 1px solid #d1d5db;
border-radius: 6px;
padding: 10px;
cursor: pointer;
transition: all 0.2s ease;
color: #374151;
font-size: 14px;
min-width: 36px;
height: 36px;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-control-btn:hover {
background: #f8fafc;
border-color: #3b82f6;
color: #3b82f6;
transform: translateY(-1px);
}
.mermaid-control-btn:active {
transform: scale(0.95);
}
/* Enhanced Mermaid theme customization for better contrast */
.mermaid .node rect,
.mermaid .node circle,
.mermaid .node ellipse,
.mermaid .node polygon {
stroke: #374151 !important;
stroke-width: 2px !important;
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
}
.mermaid .node .label {
color: #1f2937 !important;
font-weight: 600 !important;
font-size: 13px !important;
font-family: 'Inter', sans-serif !important;
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.8);
}
.mermaid .edgePath .path {
stroke: #6b7280 !important;
stroke-width: 2px !important;
filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
}
.mermaid .edgeLabel {
background-color: rgba(255, 255, 255, 0.95) !important;
color: #374151 !important;
font-weight: 500 !important;
font-size: 11px !important;
padding: 4px 8px !important;
border-radius: 6px !important;
border: 1px solid #e5e7eb !important;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
}
/* Specific node color overrides for better contrast */
.mermaid .node[style*="fill:#e0f2fe"] .label,
.mermaid .node[style*="fill:#f0f9ff"] .label {
color: #0c4a6e !important;
font-weight: 700 !important;
}
.mermaid .node[style*="fill:#fef3c7"] .label,
.mermaid .node[style*="fill:#fffbeb"] .label {
color: #92400e !important;
font-weight: 700 !important;
}
.mermaid .node[style*="fill:#f3e8ff"] .label,
.mermaid .node[style*="fill:#faf5ff"] .label {
color: #6b21a8 !important;
font-weight: 700 !important;
}
.mermaid .node[style*="fill:#dcfce7"] .label,
.mermaid .node[style*="fill:#f0fdf4"] .label {
color: #166534 !important;
font-weight: 700 !important;
}
/* Default node colors with good contrast */
.mermaid .node:not([style*="fill"]) .label {
color: #1f2937 !important;
font-weight: 600 !important;
}
<span class="mention-invalid">@media</span> (max-width: 1024px) {
.toc-fixed {
transform: translateX(-100%);
transition: transform 0.3s ease;
}
.toc-fixed.open {
transform: translateX(0);
}
.main-content {
margin-left: 0;
}
.bento-grid {
grid-template-columns: 1fr;
height: auto;
}
.mermaid-control-btn:not(.reset-zoom) {
display: none;
}
.mermaid-controls {
top: auto;
bottom: 15px;
right: 15px;
}
}
</style>
<base target="_blank">
</head>
<body class="bg-surface font-sans text-primary">
<!-- Table of Contents -->
<nav class="toc-fixed">
<div class="mb-8">
<h3 class="font-serif font-bold text-lg text-primary mb-4">目录导航</h3>
<div class="space-y-1">
<a class="toc-link text-sm" href="#introduction">引言与架构概览</a>
<a class="toc-link text-sm" href="#multi-agent">1. 多智能体系统架构</a>
<div class="ml-4 space-y-1">
<a class="toc-link text-xs" href="#researcher-agent">1.1 研究者智能体</a>
<a class="toc-link text-xs" href="#engineer-agent">1.2 工程师智能体</a>
<a class="toc-link text-xs" href="#evolution-manager">1.3 进化管理器</a>
</div>
<a class="toc-link text-sm" href="#memory-system">2. 持久化记忆模块</a>
<a class="toc-link text-sm" href="#skill-packages">3. 技能包体系</a>
<a class="toc-link text-sm" href="#applications">4. 应用场景与案例</a>
<a class="toc-link text-sm" href="#paradigm-shift">5. 科研范式变革</a>
<a class="toc-link text-sm" href="#comparative-analysis">6. 对比分析</a>
<a class="toc-link text-sm" href="#future-outlook">7. 未来展望</a>
</div>
</div>
</nav>
<!-- Main Content -->
<main class="main-content">
<!-- Introduction -->
<section class="max-w-6xl mx-auto px-8 py-12">
<div class="prose prose-lg max-w-none">
<p class="text-xl leading-relaxed text-secondary mb-8">
EvoScientist是首个实现<strong class="text-primary">三智能体协同演化</strong>的AI科学家框架,通过研究者智能体(RA)、工程师智能体(EA)和进化管理器智能体(EMA)的分工协作,配合双记忆模块(构思记忆M_I和实验记忆M_E)的持久化知识管理,实现了从静态执行到动态演进的范式跃迁。
</p>
<div class="innovation-box">
<h3 class="font-serif text-xl font-semibold mb-4">核心突破</h3>
<p class="text-secondary">
该框架在ICAIS 2025 AI Scientist Track上取得突破性成果:<strong>六篇生成论文全部接收,斩获最佳论文奖和AI评审员赞赏奖</strong>,验证了其在想法生成四维指标(新颖性、可行性、相关性、清晰度)和代码执行成功率上相对于7个基线系统的全面领先。
</p>
</div>
<p class="text-lg leading-relaxed">
核心创新在于EMA驱动的三大演化机制(IDE/IVE/ESE),使系统能够从交互历史中持续蒸馏策略知识,实现跨任务的自我改进。这一突破性进展不仅展示了AI在科学研究中的巨大潜力,更为未来科研范式的变革指明了方向。
</p>
</div>
</section>
<div class="section-divider"></div>
<!-- Multi-Agent Architecture -->
<section class="max-w-6xl mx-auto px-8 py-12" id="multi-agent">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">1. 多智能体系统架构</h2>
<p class="text-lg text-secondary mb-8 leading-relaxed">
EvoScientist框架采用创新的<strong>三智能体协同架构</strong>,将科学发现过程解构为三个专业化、互补且持续演化的角色:研究者智能体(RA)负责创造性假设生成,工程师智能体(EA)致力于可执行方案实现,进化管理器智能体(EMA)作为元认知层持续蒸馏跨任务经验知识<a class="citation-link" href="https://arxiv.org/html/2603.08127v1">[4]</a>
<a class="citation-link" href="https://arxiv.org/html/2603.08127v1">[74]</a>。
</p>
<!-- Architecture Diagram -->
<div class="mermaid-container">
<div class="mermaid-controls">
<button class="mermaid-control-btn zoom-in" title="放大">
<i class="fas fa-search-plus"></i>
</button>
<button class="mermaid-control-btn zoom-out" title="缩小">
<i class="fas fa-search-minus"></i>
</button>
<button class="mermaid-control-btn reset-zoom" title="重置">
<i class="fas fa-expand-arrows-alt"></i>
</button>
<button class="mermaid-control-btn fullscreen" title="全屏查看">
<i class="fas fa-expand"></i>
</button>
</div>
<div class="mermaid">
graph TD
A["用户目标 G"] --> B["研究者智能体 RA"]
B --> C["构思记忆 M_I"]
C --> D["想法树搜索"]
D --> E["Elo锦标赛"]
E --> F["研究提案 P"]
F --> G["工程师智能体 EA"]
G --> H["实验记忆 M_E"]
H --> I["实验树搜索"]
I --> J["执行报告 W"]
J --> K["进化管理器 EMA"]
K --> L["IDE机制"]
K --> M["IVE机制"]
K --> N["ESE机制"]
L --> C
M --> C
N --> H
</div>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8 mt-12">
<!-- Researcher Agent -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100" id="researcher-agent">
<div class="flex items-center mb-6">
<div class="w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-lightbulb text-blue-600 text-xl"></i>
</div>
<div>
<h3 class="font-serif text-xl font-semibold">研究者智能体</h3>
<p class="text-sm text-secondary">Researcher Agent</p>
</div>
</div>
<p class="text-secondary mb-4">负责科学想法生成与迭代优化,通过想法树搜索和Elo锦标赛机制确保想法质量。</p>
<div class="space-y-2">
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>新颖性评估</span>
</div>
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>可行性分析</span>
</div>
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>相关性验证</span>
</div>
</div>
</div>
<!-- Engineer Agent -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100" id="engineer-agent">
<div class="flex items-center mb-6">
<div class="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-code text-green-600 text-xl"></i>
</div>
<div>
<h3 class="font-serif text-xl font-semibold">工程师智能体</h3>
<p class="text-sm text-secondary">Engineer Agent</p>
</div>
</div>
<p class="text-secondary mb-4">负责实验实现与代码执行,通过四阶段实验树搜索将想法转化为可执行代码。</p>
<div class="space-y-2">
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>数据预处理</span>
</div>
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>模型实现</span>
</div>
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>结果分析</span>
</div>
</div>
</div>
<!-- Evolution Manager -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100" id="evolution-manager">
<div class="flex items-center mb-6">
<div class="w-12 h-12 bg-purple-100 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-brain text-purple-600 text-xl"></i>
</div>
<div>
<h3 class="font-serif text-xl font-semibold">进化管理器</h3>
<p class="text-sm text-secondary">Evolution Manager</p>
</div>
</div>
<p class="text-secondary mb-4">负责多智能体演化与知识蒸馏,通过IDE/IVE/ESE三大机制实现跨任务自我改进。</p>
<div class="space-y-2">
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>想法方向演化</span>
</div>
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>想法验证演化</span>
</div>
<div class="flex items-center text-sm">
<i class="fas fa-check text-green-500 mr-2"></i>
<span>实验策略演化</span>
</div>
</div>
</div>
</div>
<div class="insight-highlight mt-12">
<h4 class="font-semibold mb-2">核心洞察</h4>
<p class="text-secondary">
三者的交互形成闭环学习系统:RA和EA的执行反馈通过EMA转化为持久化记忆,这些记忆又反过来增强后续任务的执行质量,从而实现真正的<strong>跨任务演化能力</strong>。
</p>
</div>
</section>
<div class="section-divider"></div>
<!-- Memory System -->
<section class="max-w-6xl mx-auto px-8 py-12" id="memory-system">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">2. 持久化记忆模块设计</h2>
<p class="text-lg text-secondary mb-8 leading-relaxed">
EvoScientist的记忆模块设计体现了对科学发现知识特性的深刻理解。科学研究中的知识具有高度结构化、多维度、持续演化的特点,传统的提示工程或上下文学习方法难以有效捕获和利用这些知识。
</p>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12">
<!-- Ideation Memory -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100">
<div class="flex items-center mb-6">
<div class="w-12 h-12 bg-blue-50 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-brain text-blue-600 text-xl"></i>
</div>
<div>
<h3 class="font-serif text-xl font-semibold">构思记忆 M_I</h3>
<p class="text-sm text-secondary">Ideation Memory</p>
</div>
</div>
<p class="text-secondary mb-4">支持研究想法生成,存储可行方向摘要和失败方向记录。</p>
<div class="space-y-3">
<div class="bg-blue-50 p-3 rounded-lg">
<div class="font-medium text-blue-900 mb-1">可行方向</div>
<div class="text-sm text-blue-700">IDE机制提取的成功研究方向</div>
</div>
<div class="bg-red-50 p-3 rounded-lg">
<div class="font-medium text-red-900 mb-1">失败方向</div>
<div class="text-sm text-red-700">IVE机制识别的不可行路径</div>
</div>
</div>
</div>
<!-- Experiment Memory -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100">
<div class="flex items-center mb-6">
<div class="w-12 h-12 bg-green-50 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-cogs text-green-600 text-xl"></i>
</div>
<div>
<h3 class="font-serif text-xl font-semibold">实验记忆 M_E</h3>
<p class="text-sm text-secondary">Experimentation Memory</p>
</div>
</div>
<p class="text-secondary mb-4">支持实验代码执行,存储数据处理和模型训练策略。</p>
<div class="space-y-3">
<div class="bg-green-50 p-3 rounded-lg">
<div class="font-medium text-green-900 mb-1">数据处理策略</div>
<div class="text-sm text-green-700">清洗、转换、特征工程最佳实践</div>
</div>
<div class="bg-purple-50 p-3 rounded-lg">
<div class="font-medium text-purple-900 mb-1">模型训练策略</div>
<div class="text-sm text-purple-700">架构、优化、超参数配置</div>
</div>
</div>
</div>
</div>
<div class="bg-gray-50 rounded-xl p-8">
<h3 class="font-serif text-xl font-semibold mb-6">记忆更新与检索机制</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="text-center">
<div class="w-16 h-16 bg-blue-100 rounded-full flex items-center justify-center mx-auto mb-4">
<i class="fas fa-sync-alt text-blue-600 text-2xl"></i>
</div>
<h4 class="font-semibold mb-2">IDE机制</h4>
<p class="text-sm text-secondary">从成功想法中提取可行研究方向</p>
</div>
<div class="text-center">
<div class="w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mx-auto mb-4">
<i class="fas fa-shield-alt text-red-600 text-2xl"></i>
</div>
<h4 class="font-semibold mb-2">IVE机制</h4>
<p class="text-sm text-secondary">从失败案例中学习规避不可行方向</p>
</div>
<div class="text-center">
<div class="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4">
<i class="fas fa-leaf text-green-600 text-2xl"></i>
</div>
<h4 class="font-semibold mb-2">ESE机制</h4>
<p class="text-sm text-secondary">从代码轨迹中蒸馏执行策略</p>
</div>
</div>
</div>
</section>
<div class="section-divider"></div>
<!-- Skill Packages -->
<section class="max-w-6xl mx-auto px-8 py-12" id="skill-packages">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">3. 技能包(Skill Packages)体系</h2>
<p class="text-lg text-secondary mb-8 leading-relaxed">
技能包体系是EvoScientist框架中支持代码生成与实验执行的重要基础设施。与记忆模块提供"做什么"的策略指导不同,技能包提供"怎么做"的具体实现——它们是预编写的、经过验证的Python代码模块<a class="citation-link" href="https://skillsllm.com/skill/evoscientist">[70]</a>。
</p>
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100 mb-8">
<h3 class="font-serif text-xl font-semibold mb-6">技能包结构</h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
<div class="bg-blue-50 p-6 rounded-lg">
<div class="font-semibold text-blue-900 mb-2">SKILL.md</div>
<div class="text-sm text-blue-700">元数据文件:功能、场景、规范、示例</div>
</div>
<div class="bg-green-50 p-6 rounded-lg">
<div class="font-semibold text-green-900 mb-2">主实现脚本</div>
<div class="text-sm text-green-700">核心Python代码:完成特定任务的完整实现</div>
</div>
<div class="bg-purple-50 p-6 rounded-lg">
<div class="font-semibold text-purple-900 mb-2">辅助脚本</div>
<div class="text-sm text-purple-700">工具函数、配置模板、测试用例</div>
</div>
<div class="bg-orange-50 p-6 rounded-lg">
<div class="font-semibold text-orange-900 mb-2">参考材料</div>
<div class="text-sm text-orange-700">文档、教程、最佳实践说明</div>
</div>
</div>
</div>
<div class="innovation-box">
<h3 class="font-serif text-xl font-semibold mb-4">EvoSkill框架:自动化的技能演化</h3>
<p class="text-secondary mb-6">
EvoScientist的技能包体系并非静态不变,而是通过EvoSkill框架实现动态的自动化技能发现与演化。该框架的核心机制是失败驱动的技能迭代优化<a class="citation-link" href="https://github.com/sentient-agi/EvoSkill">[69]</a>
<a class="citation-link" href="https://arxiv.org/html/2603.02766v1">[67]</a>。
</p>
<div class="grid grid-cols-1 md:grid-cols-5 gap-4">
<div class="text-center">
<div class="w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center mx-auto mb-3">
<span class="font-bold text-blue-600">1</span>
</div>
<div class="text-sm font-medium mb-1">基础执行</div>
<div class="text-xs text-secondary">使用当前最佳技能配置尝试任务</div>
</div>
<div class="text-center">
<div class="w-12 h-12 bg-red-100 rounded-lg flex items-center justify-center mx-auto mb-3">
<span class="font-bold text-red-600">2</span>
</div>
<div class="text-sm font-medium mb-1">缺口识别</div>
<div class="text-xs text-secondary">分析失败案例,识别能力缺口</div>
</div>
<div class="text-center">
<div class="w-12 h-12 bg-yellow-100 rounded-lg flex items-center justify-center mx-auto mb-3">
<span class="font-bold text-yellow-600">3</span>
</div>
<div class="text-sm font-medium mb-1">技能构建</div>
<div class="text-xs text-secondary">将提议转化为实际技能文件</div>
</div>
<div class="text-center">
<div class="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center mx-auto mb-3">
<span class="font-bold text-green-600">4</span>
</div>
<div class="text-sm font-medium mb-1">效果评估</div>
<div class="text-xs text-secondary">在验证集上测试新技能</div>
</div>
<div class="text-center">
<div class="w-12 h-12 bg-purple-100 rounded-lg flex items-center justify-center mx-auto mb-3">
<span class="font-bold text-purple-600">5</span>
</div>
<div class="text-sm font-medium mb-1">前沿维护</div>
<div class="text-xs text-secondary">维护表现最佳的技能配置集合</div>
</div>
</div>
</div>
</section>
<div class="section-divider"></div>
<!-- Applications and Case Studies -->
<section class="max-w-6xl mx-auto px-8 py-12" id="applications">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">4. 应用场景与案例研究</h2>
<div class="bg-gradient-to-r from-blue-50 to-green-50 rounded-xl p-8 mb-12">
<h3 class="font-serif text-2xl font-bold mb-6">ICAIS 2025获奖论文案例</h3>
<p class="text-lg text-secondary mb-6 leading-relaxed">
EvoScientist在<strong>ICAIS 2025(第一届国际AI科学家会议)AI Scientist Track</strong>上的卓越表现,为其技术能力提供了最有力的实证验证。在该评估中,EvoScientist生成的<strong>六篇完整论文全部获得接收</strong>,其中两篇更是斩获重要奖项<a class="citation-link" href="https://arxiv.org/html/2603.08127v1">[74]</a>。
</p>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<div class="bg-white rounded-lg p-6 shadow-sm">
<div class="flex items-center mb-4">
<div class="w-12 h-12 bg-yellow-100 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-trophy text-yellow-600 text-xl"></i>
</div>
<div>
<h4 class="font-semibold text-lg">最佳论文奖</h4>
<p class="text-sm text-secondary">Best Paper Award</p>
</div>
</div>
<p class="text-secondary text-sm">
识别了一个被主流研究忽视但具有根本性重要性的问题,通过"复活被遗忘方向"的能力展现了IDE机制的独特价值。
</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<div class="flex items-center mb-4">
<div class="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center mr-4">
<i class="fas fa-medal text-green-600 text-xl"></i>
</div>
<div>
<h4 class="font-semibold text-lg">AI评审员赞赏奖</h4>
<p class="text-sm text-secondary">AI Reviewer's Appraisal Award</p>
</div>
</div>
<p class="text-secondary text-sm">
在结果呈现的学术规范方面树立标杆,方法论描述达到教科书级别清晰度,可视化设计尤为出色。
</p>
</div>
</div>
</div>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<!-- Idea Generation Performance -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100">
<h3 class="font-serif text-xl font-semibold mb-6">想法生成性能</h3>
<p class="text-secondary mb-6">EvoScientist在四项核心指标上全面领先于7个对比系统。</p>
<div class="space-y-4">
<div class="flex justify-between items-center p-3 bg-blue-50 rounded-lg">
<span class="font-medium">新颖性</span>
<span class="text-blue-600 font-bold">+29.17 至 +95</span>
</div>
<div class="flex justify-between items-center p-3 bg-green-50 rounded-lg">
<span class="font-medium">可行性</span>
<span class="text-green-600 font-bold">+30 至 +90</span>
</div>
<div class="flex justify-between items-center p-3 bg-purple-50 rounded-lg">
<span class="font-medium">相关性</span>
<span class="text-purple-600 font-bold">+28 至 +92</span>
</div>
<div class="flex justify-between items-center p-3 bg-orange-50 rounded-lg">
<span class="font-medium">清晰度</span>
<span class="text-orange-600 font-bold">+35 至 +98</span>
</div>
</div>
</div>
<!-- Code Generation Performance -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100">
<h3 class="font-serif text-xl font-semibold mb-6">代码生成性能</h3>
<p class="text-secondary mb-6">通过ESE演化显著提升了执行成功率。</p>
<div class="space-y-4">
<div class="flex justify-between items-center p-3 bg-gray-50 rounded-lg">
<span class="font-medium">阶段1:数据预处理</span>
<span class="text-gray-600 font-bold">+7.6%</span>
</div>
<div class="flex justify-between items-center p-3 bg-gray-50 rounded-lg">
<span class="font-medium">阶段2:基线实现</span>
<span class="text-gray-600 font-bold">+9.6%</span>
</div>
<div class="flex justify-between items-center p-3 bg-gray-50 rounded-lg">
<span class="font-medium">阶段3:提案方法</span>
<span class="text-gray-600 font-bold">+1.3%</span>
</div>
<div class="flex justify-between items-center p-3 bg-green-50 rounded-lg">
<span class="font-medium">阶段4:结果分析</span>
<span class="text-green-600 font-bold">+21.8%</span>
</div>
</div>
</div>
</div>
<div class="insight-highlight mt-8">
<h4 class="font-semibold mb-2">关键发现</h4>
<p class="text-secondary">
人工评估进一步验证了自动评估的发现。EvoScientist在新颖性上的平均胜率为<strong>82.50%</strong>,在可行性上的平均胜率为<strong>64.17%</strong>,显著优于精选的强基线系统。
</p>
</div>
</section>
<div class="section-divider"></div>
<!-- Paradigm Shift -->
<section class="max-w-6xl mx-auto px-8 py-12" id="paradigm-shift">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">5. 科研范式变革</h2>
<div class="bg-gradient-to-br from-blue-50 to-indigo-50 rounded-xl p-8 mb-12">
<h3 class="font-serif text-2xl font-bold mb-6">Vibe Research理念阐释</h3>
<p class="text-lg text-secondary mb-6 leading-relaxed">
EvoScientist框架的技术创新背后,蕴含着对科研范式变革的深层思考。"<strong>Vibe Research</strong>"(氛围研究)这一概念,正是对这种变革性愿景的凝练表达。该理念源于软件开发领域的"<strong>Vibe Coding</strong>"(氛围编程)实践<a class="citation-link" href="https://skillsllm.com/skill/evoscientist">[70]</a>。
</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="bg-white rounded-lg p-6 shadow-sm">
<div class="w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center mb-4">
<i class="fas fa-magic text-blue-600 text-xl"></i>
</div>
<h4 class="font-semibold mb-3">直觉驱动</h4>
<p class="text-sm text-secondary">研究者不需要精通所有技术细节,而是凭借对领域动态的感知和对重要问题的判断来引导研究方向。</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<div class="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center mb-4">
<i class="fas fa-eye text-green-600 text-xl"></i>
</div>
<h4 class="font-semibold mb-3">情境感知</h4>
<p class="text-sm text-secondary">AI系统能够理解研究问题的背景、约束和隐含目标,生成符合"氛围"的解决方案。</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<div class="w-12 h-12 bg-purple-100 rounded-lg flex items-center justify-center mb-4">
<i class="fas fa-sync-alt text-purple-600 text-xl"></i>
</div>
<h4 class="font-semibold mb-3">动态适应</h4>
<p class="text-sm text-secondary">研究过程不是 rigidly 预设的,而是根据 intermediate 发现和反馈持续调整。</p>
</div>
</div>
</div>
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100 mb-8">
<h3 class="font-serif text-xl font-semibold mb-6">AI科学家角色的演变轨迹</h3>
<div class="space-y-8">
<div class="flex items-start space-x-6">
<div class="w-12 h-12 bg-gray-100 rounded-lg flex items-center justify-center flex-shrink-0">
<i class="fas fa-tools text-gray-600 text-xl"></i>
</div>
<div>
<h4 class="font-semibold text-lg mb-2">从工具到协作者</h4>
<p class="text-secondary">传统AI辅助科研将AI定位为工具——研究者明确指定任务,AI执行特定功能。EvoScientist代表的协作者范式实现了重要突破:AI系统具有一定程度的目标理解和自主决策能力。</p>
</div>
</div>
<div class="flex items-start space-x-6">
<div class="w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center flex-shrink-0">
<i class="fas fa-users text-blue-600 text-xl"></i>
</div>
<div>
<h4 class="font-semibold text-lg mb-2">专业化智能体的涌现</h4>
<p class="text-secondary">EvoScientist的三智能体架构预示了专业化智能体在科研中的广泛应用前景。RA、EA、EMA分别对应科研流程中的构思、执行、反思三个认知功能。</p>
</div>
</div>
<div class="flex items-start space-x-6">
<div class="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center flex-shrink-0">
<i class="fas fa-chart-line text-green-600 text-xl"></i>
</div>
<div>
<h4 class="font-semibold text-lg mb-2">科研评价体系的适应性变革</h4>
<p class="text-secondary">AI科学家的发展对现有科研评价体系提出了适应性变革的要求,包括作者身份与贡献认定、同行评审的自动化、学术诚信与可重复性保障等核心议题。</p>
</div>
</div>
</div>
</div>
</section>
<div class="section-divider"></div>
<!-- Comparative Analysis -->
<section class="max-w-6xl mx-auto px-8 py-12" id="comparative-analysis">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">6. 与主流AI科研工具的对比分析</h2>
<!-- Open Source Comparison -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100 mb-8">
<h3 class="font-serif text-xl font-semibold mb-6">开源系统对比分析</h3>
<div class="overflow-x-auto">
<table class="w-full text-sm">
<thead>
<tr class="border-b border-gray-200">
<th class="text-left py-3 px-4 font-semibold">系统名称</th>
<th class="text-left py-3 px-4 font-semibold">核心架构特点</th>
<th class="text-left py-3 px-4 font-semibold">关键局限</th>
<th class="text-left py-3 px-4 font-semibold">EvoScientist优势</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-100">
<tr>
<td class="py-4 px-4 font-medium">Virtual Scientist</td>
<td class="py-4 px-4 text-secondary">多智能体协作的提案-批判-精炼循环</td>
<td class="py-4 px-4 text-red-600">静态管道,缺乏演化机制</td>
<td class="py-4 px-4 text-green-600">记忆驱动的持续改进</td>
</tr>
<tr>
<td class="py-4 px-4 font-medium">AI-Researcher</td>
<td class="py-4 px-4 text-secondary">端到端自主研究流水线</td>
<td class="py-4 px-4 text-red-600">最小人工干预下的策略固化</td>
<td class="py-4 px-4 text-green-600">交互历史的策略蒸馏</td>
</tr>
<tr>
<td class="py-4 px-4 font-medium">InternAgent</td>
<td class="py-4 px-4 text-secondary">闭环多智能体框架,强调可扩展性</td>
<td class="py-4 px-4 text-red-600">人在回路扩展性的人为瓶颈</td>
<td class="py-4 px-4 text-green-600">自主演化减少人工依赖</td>
</tr>
<tr>
<td class="py-4 px-4 font-medium">AI Scientist-v2</td>
<td class="py-4 px-4 text-secondary">渐进式智能体树搜索</td>
<td class="py-4 px-4 text-red-600">假设生成与实验执行的割裂</td>
<td class="py-4 px-4 text-green-600">统一记忆架构的端到端优化</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- Commercial Systems Comparison -->
<div class="bg-white rounded-xl p-8 shadow-sm border border-gray-100 mb-8">
<h3 class="font-serif text-xl font-semibold mb-6">商业系统对比分析</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="bg-gray-50 rounded-lg p-6">
<h4 class="font-semibold mb-3">Hypogenic</h4>
<p class="text-sm text-secondary mb-3">社区驱动的AI研究加速平台</p>
<div class="text-red-600 text-xs mb-2">局限:周度竞赛机制的时延</div>
<div class="text-green-600 text-xs">优势:实时演化与持续优化</div>
</div>
<div class="bg-gray-50 rounded-lg p-6">
<h4 class="font-semibold mb-3">Novix</h4>
<p class="text-sm text-secondary mb-3">全生命周期AI协科学家</p>
<div class="text-red-600 text-xs mb-2">局限:端到端自动化的深度不足</div>
<div class="text-green-600 text-xs">优势:代码执行成功率的显著领先</div>
</div>
<div class="bg-gray-50 rounded-lg p-6">
<h4 class="font-semibold mb-3">K-Dense</h4>
<p class="text-sm text-secondary mb-3">智能任务执行器</p>
<div class="text-red-600 text-xs mb-2">局限:多领域泛化能力的局限</div>
<div class="text-green-600 text-xs">优势:科学发现任务的专门优化</div>
</div>
</div>
</div>
<div class="innovation-box">
<h3 class="font-serif text-xl font-semibold mb-4">核心差异化优势</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div>
<h4 class="font-semibold mb-2">架构层面</h4>
<ul class="text-sm text-secondary space-y-1">
<li>• 唯一实现三智能体协同演化</li>
<li>• 双记忆模块持久化知识管理</li>
<li>• 端到端反馈闭环完整构建</li>
</ul>
</div>
<div>
<h4 class="font-semibold mb-2">性能层面</h4>
<ul class="text-sm text-secondary space-y-1">
<li>• 想法生成四维指标全面领先</li>
<li>• 代码执行成功率显著提升</li>
<li>• 自动与人工评估一致优势</li>
</ul>
</div>
<div>
<h4 class="font-semibold mb-2">范式层面</h4>
<ul class="text-sm text-secondary space-y-1">
<li>• 从静态管道到动态演化跃迁</li>
<li>• 从单次执行到持续学习创新</li>
<li>• 从工具辅助到自主发现升级</li>
</ul>
</div>
</div>
</div>
</section>
<div class="section-divider"></div>
<!-- Future Outlook -->
<section class="max-w-6xl mx-auto px-8 py-12" id="future-outlook">
<h2 class="font-serif text-4xl font-bold text-primary mb-8">7. 技术演进路线图</h2>
<div class="space-y-12">
<!-- Short-term -->
<div class="bg-gradient-to-r from-blue-50 to-cyan-50 rounded-xl p-8">
<div class="flex items-center mb-6">
<div class="w-16 h-16 bg-blue-100 rounded-xl flex items-center justify-center mr-6">
<i class="fas fa-rocket text-blue-600 text-2xl"></i>
</div>
<div>
<h3 class="font-serif text-2xl font-bold text-blue-900">短期优化方向</h3>
<p class="text-blue-700">未来6-12个月</p>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">执行成功率提升</h4>
<p class="text-sm text-secondary mb-3">重点关注阶段3(提案方法实现)的表现提升,通过扩展实验记忆覆盖范围、增强技能包深度、改进代码搜索策略等方式突破21.6%的成功率瓶颈。</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">交互历史深度利用</h4>
<p class="text-sm text-secondary mb-3">引入长期记忆机制,追踪研究方向、方法家族、数据集特性等高层概念的演化轨迹,识别跨任务的共性模式。</p>
</div>
</div>
</div>
<!-- Mid-term -->
<div class="bg-gradient-to-r from-green-50 to-emerald-50 rounded-xl p-8">
<div class="flex items-center mb-6">
<div class="w-16 h-16 bg-green-100 rounded-xl flex items-center justify-center mr-6">
<i class="fas fa-expand-arrows-alt text-green-600 text-2xl"></i>
</div>
<div>
<h3 class="font-serif text-2xl font-bold text-green-900">中期能力拓展</h3>
<p class="text-green-700">未来1-3年</p>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">多模态科学数据</h4>
<p class="text-sm text-secondary">开发适用于图像、视频、音频、传感器信号等多模态数据的技能包和处理能力。</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">跨领域知识迁移</h4>
<p class="text-sm text-secondary">实现领域无关的抽象策略表示,使在一个领域学习的策略可以迁移到相关领域。</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">实时协作适应</h4>
<p class="text-sm text-secondary">支持更灵活的人机协作模式,允许研究者在任何阶段介入并提供反馈。</p>
</div>
</div>
</div>
<!-- Long-term -->
<div class="bg-gradient-to-r from-purple-50 to-pink-50 rounded-xl p-8">
<div class="flex items-center mb-6">
<div class="w-16 h-16 bg-purple-100 rounded-xl flex items-center justify-center mr-6">
<i class="fas fa-star text-purple-600 text-2xl"></i>
</div>
<div>
<h3 class="font-serif text-2xl font-bold text-purple-900">长期愿景目标</h3>
<p class="text-purple-700">未来3-10年</p>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">完全自主的科学发现</h4>
<p class="text-sm text-secondary mb-3">AI系统能够独立识别重要研究问题,设计并执行完整的验证方案,生成可发表的学术成果。</p>
</div>
<div class="bg-white rounded-lg p-6 shadow-sm">
<h4 class="font-semibold mb-3">科学智能的涌现</h4>
<p class="text-sm text-secondary mb-3">AI系统发展出对科学本质的深层理解——什么是好的研究问题、什么是有力的证据、什么是重要的贡献。</p>
</div>
</div>
</div>
</div>
<div class="mt-12 bg-gray-50 rounded-xl p-8">
<h3 class="font-serif text-xl font-semibold mb-6 text-center">终极愿景</h3>
<p class="text-lg text-secondary text-center leading-relaxed max-w-4xl mx-auto">
随着EvoScientist技术的持续演进,人类研究者的角色将从研究执行的主体转变为研究生态的塑造者——设定研究议程的优先级、评估AI生成成果的价值、维护学术规范的质量、以及探索AI尚未涉足的认知边疆。这种角色转变既是挑战也是机遇:它要求人类研究者发展新的核心能力,但也释放了人类认知潜力去应对更宏大、更复杂、更需要价值判断的科学问题。
</p>
</div>
</section>
<!-- Footer -->
<footer class="border-t border-gray-200 py-12 mt-16">
<div class="max-w-6xl mx-auto px-8 text-center">
<p class="text-secondary">
EvoScientist框架代表了AI科学家系统的重要突破,通过多智能体协同演化和持久化记忆管理,实现了从静态执行到动态演进的范式跃迁。随着技术的不断发展,这一框架有望推动科研范式的根本性变革,开启人机协作科学发现的新时代。
</p>
</div>
</footer>
</main>
<script>
// Initialize Mermaid with enhanced theme
mermaid.initialize({
startOnLoad: true,
theme: 'base',
themeVariables: {
primaryColor: '#3b82f6',
primaryTextColor: '#1f2937',
primaryBorderColor: '#374151',
lineColor: '#6b7280',
secondaryColor: '#f0f9ff',
tertiaryColor: '#f8fafc',
background: '#ffffff',
mainBkg: '#ffffff',
secondBkg: '#f8fafc',
tertiaryBkg: '#f1f5f9',
nodeBorder: '#374151',
clusterBkg: '#f8fafc',
clusterBorder: '#d1d5db',
defaultLinkColor: '#6b7280',
titleColor: '#1f2937',
edgeLabelBackground: '#ffffff',
nodeTextColor: '#1f2937',
// Enhanced contrast colors for different node types
cScale0: '#e0f2fe',
cScale1: '#fef3c7',
cScale2: '#f3e8ff',
cScale3: '#dcfce7',
cScale4: '#fce7f3',
cScale5: '#f0f9ff',
cScale6: '#fffbeb',
cScale7: '#faf5ff',
cScale8: '#f0fdf4',
cScale9: '#fdf2f8'
},
flowchart: {
useMaxWidth: false,
htmlLabels: true,
curve: 'basis',
padding: 20
},
fontFamily: 'Inter, sans-serif',
fontSize: 13
});
// Initialize Mermaid Controls for zoom and pan
function initializeMermaidControls() {
const containers = document.querySelectorAll('.mermaid-container');
containers.forEach(container => {
const mermaidElement = container.querySelector('.mermaid');
let scale = 1;
let isDragging = false;
let startX, startY, translateX = 0, translateY = 0;
// 触摸相关状态
let isTouch = false;
let touchStartTime = 0;
let initialDistance = 0;
let initialScale = 1;
let isPinching = false;
// Zoom controls
const zoomInBtn = container.querySelector('.zoom-in');
const zoomOutBtn = container.querySelector('.zoom-out');
const resetBtn = container.querySelector('.reset-zoom');
const fullscreenBtn = container.querySelector('.fullscreen');
function updateTransform() {
mermaidElement.style.transform = `translate(${translateX}px, ${translateY}px) scale(${scale})`;
if (scale > 1) {
container.classList.add('zoomed');
} else {
container.classList.remove('zoomed');
}
mermaidElement.style.cursor = isDragging ? 'grabbing' : 'grab';
}
if (zoomInBtn) {
zoomInBtn.addEventListener('click', () => {
scale = Math.min(scale * 1.25, 4);
updateTransform();
});
}
if (zoomOutBtn) {
zoomOutBtn.addEventListener('click', () => {
scale = Math.max(scale / 1.25, 0.3);
if (scale <= 1) {
translateX = 0;
translateY = 0;
}
updateTransform();
});
}
if (resetBtn) {
resetBtn.addEventListener('click', () => {
scale = 1;
translateX = 0;
translateY = 0;
updateTransform();
});
}
if (fullscreenBtn) {
fullscreenBtn.addEventListener('click', () => {
if (container.requestFullscreen) {
container.requestFullscreen();
} else if (container.webkitRequestFullscreen) {
container.webkitRequestFullscreen();
} else if (container.msRequestFullscreen) {
container.msRequestFullscreen();
}
});
}
// Mouse Events
mermaidElement.addEventListener('mousedown', (e) => {
if (isTouch) return; // 如果是触摸设备,忽略鼠标事件
isDragging = true;
startX = e.clientX - translateX;
startY = e.clientY - translateY;
mermaidElement.style.cursor = 'grabbing';
updateTransform();
e.preventDefault();
});
document.addEventListener('mousemove', (e) => {
if (isDragging && !isTouch) {
translateX = e.clientX - startX;
translateY = e.clientY - startY;
updateTransform();
}
});
document.addEventListener('mouseup', () => {
if (isDragging && !isTouch) {
isDragging = false;
mermaidElement.style.cursor = 'grab';
updateTransform();
}
});
document.addEventListener('mouseleave', () => {
if (isDragging && !isTouch) {
isDragging = false;
mermaidElement.style.cursor = 'grab';
updateTransform();
}
});
// 获取两点之间的距离
function getTouchDistance(touch1, touch2) {
return Math.hypot(
touch2.clientX - touch1.clientX,
touch2.clientY - touch1.clientY
);
}
// Touch Events - 触摸事件处理
mermaidElement.addEventListener('touchstart', (e) => {
isTouch = true;
touchStartTime = Date.now();
if (e.touches.length === 1) {
// 单指拖动
isPinching = false;
isDragging = true;
const touch = e.touches[0];
startX = touch.clientX - translateX;
startY = touch.clientY - translateY;
} else if (e.touches.length === 2) {
// 双指缩放
isPinching = true;
isDragging = false;
const touch1 = e.touches[0];
const touch2 = e.touches[1];
initialDistance = getTouchDistance(touch1, touch2);
initialScale = scale;
}
e.preventDefault();
}, { passive: false });
mermaidElement.addEventListener('touchmove', (e) => {
if (e.touches.length === 1 && isDragging && !isPinching) {
// 单指拖动
const touch = e.touches[0];
translateX = touch.clientX - startX;
translateY = touch.clientY - startY;
updateTransform();
} else if (e.touches.length === 2 && isPinching) {
// 双指缩放
const touch1 = e.touches[0];
const touch2 = e.touches[1];
const currentDistance = getTouchDistance(touch1, touch2);
if (initialDistance > 0) {
const newScale = Math.min(Math.max(
initialScale * (currentDistance / initialDistance),
0.3
), 4);
scale = newScale;
updateTransform();
}
}
e.preventDefault();
}, { passive: false });
mermaidElement.addEventListener('touchend', (e) => {
// 重置状态
if (e.touches.length === 0) {
isDragging = false;
isPinching = false;
initialDistance = 0;
// 延迟重置isTouch,避免鼠标事件立即触发
setTimeout(() => {
isTouch = false;
}, 100);
} else if (e.touches.length === 1 && isPinching) {
// 从双指变为单指,切换为拖动模式
isPinching = false;
isDragging = true;
const touch = e.touches[0];
startX = touch.clientX - translateX;
startY = touch.clientY - translateY;
}
updateTransform();
});
mermaidElement.addEventListener('touchcancel', (e) => {
isDragging = false;
isPinching = false;
initialDistance = 0;
setTimeout(() => {
isTouch = false;
}, 100);
updateTransform();
});
// Enhanced wheel zoom with better center point handling
container.addEventListener('wheel', (e) => {
e.preventDefault();
const rect = container.getBoundingClientRect();
const centerX = rect.width / 2;
const centerY = rect.height / 2;
const delta = e.deltaY > 0 ? 0.9 : 1.1;
const newScale = Math.min(Math.max(scale * delta, 0.3), 4);
// Adjust translation to zoom towards center
if (newScale !== scale) {
const scaleDiff = newScale / scale;
translateX = translateX * scaleDiff;
translateY = translateY * scaleDiff;
scale = newScale;
if (scale <= 1) {
translateX = 0;
translateY = 0;
}
updateTransform();
}
});
// Initialize display
updateTransform();
});
}
// Initialize controls after mermaid renders
setTimeout(initializeMermaidControls, 1000);
// Table of Contents functionality
document.addEventListener('DOMContentLoaded', function() {
const tocLinks = document.querySelectorAll('.toc-link');
const sections = document.querySelectorAll('section[id]');
// Smooth scrolling for TOC links
tocLinks.forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('href').substring(1);
const targetSection = document.getElementById(targetId);
if (targetSection) {
targetSection.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
});
});
// Update active TOC link on scroll
function updateActiveTocLink() {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (scrollY >= (sectionTop - 200)) {
current = section.getAttribute('id');
}
});
tocLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === '#' + current) {
link.classList.add('active');
}
});
}
window.addEventListener('scroll', updateActiveTocLink);
updateActiveTocLink(); // Initial call
});
// Mobile TOC toggle
function toggleTOC() {
const toc = document.querySelector('.toc-fixed');
toc.classList.toggle('open');
}
// Close TOC when clicking outside on mobile
function closeTOC(e) {
const toc = document.querySelector('.toc-fixed');
const toggleBtn = document.querySelector('.lg\\:hidden');
if (window.innerWidth < 1024 &&
!toc.contains(e.target) &&
(!toggleBtn || !toggleBtn.contains(e.target))) {
toc.classList.remove('open');
}
}
document.addEventListener('click', closeTOC);
document.addEventListener('touchstart', closeTOC);
// Add mobile menu button for smaller screens
if (window.innerWidth < 1024) {
const menuBtn = document.createElement('button');
menuBtn.innerHTML = '<i class="fas fa-bars"></i>';
menuBtn.className = 'fixed top-4 left-4 z-50 bg-white p-3 rounded-lg shadow-lg lg:hidden';
menuBtn.onclick = toggleTOC;
document.body.appendChild(menuBtn);
}
// Re-add mobile menu button when window is resized to small
window.addEventListener('resize', function() {
const existingBtn = document.querySelector('.lg\\:hidden');
if (window.innerWidth < 1024 && !existingBtn) {
const menuBtn = document.createElement('button');
menuBtn.innerHTML = '<i class="fas fa-bars"></i>';
menuBtn.className = 'fixed top-4 left-4 z-50 bg-white p-3 rounded-lg shadow-lg lg:hidden';
menuBtn.onclick = toggleTOC;
document.body.appendChild(menuBtn);
} else if (window.innerWidth >= 1024 && existingBtn) {
existingBtn.remove();
}
});
</script>
</body></html>
登录后可参与表态
讨论回复
1 条回复
✨步子哥 (steper)
#1
03-21 01:33
登录后可参与表态