Time_Dilation_in_LLM_Agent_.../explainer-zh.html
Jeuner 0d6b501fde feat: Interactive multilingual explainer pages (DE/EN/ZH/RU/HI)
Animated educational explainer for ages 12+ explaining:
- AI Agent communication & delegation
- QC double-agent principle (60% trigger, score 1-10)
- Causal Dilation Clock / Eigenzeit (proper time)
- Live interactive demo with flying message animations

Languages: Deutsch · English · 中文 · Русский · हिन्दी
index.html as language picker entry point

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 05:45:03 +02:00

191 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI机器人如何互相通信</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;700;900&display=swap');
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--yellow:#FFD93D;--green:#6BCB77;--blue:#4D96FF;--pink:#FF6B6B;--purple:#C77DFF;--dark:#1a1a2e;--radius:20px}
body{font-family:'Nunito','PingFang SC','Microsoft YaHei',sans-serif;background:var(--dark);color:#fff;overflow-x:hidden}
.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 20px}
.hero-eyebrow{font-size:13px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--yellow);margin-bottom:20px;opacity:0;animation:fadeUp 0.6s 0.2s forwards}
.hero h1{font-size:clamp(2rem,6vw,4.5rem);font-weight:900;line-height:1.15;margin-bottom:24px;opacity:0;animation:fadeUp 0.6s 0.4s forwards}
.hero h1 span{color:var(--yellow)}
.hero-lead{font-size:clamp(1rem,2vw,1.3rem);color:#ffffffbb;max-width:540px;line-height:1.7;margin-bottom:48px;opacity:0;animation:fadeUp 0.6s 0.6s forwards}
.hero-robots{display:flex;gap:32px;align-items:flex-end;justify-content:center;flex-wrap:wrap;opacity:0;animation:fadeUp 0.6s 0.8s forwards}
.robot{display:flex;flex-direction:column;align-items:center;gap:8px}
.robot-body{width:90px;height:90px;border-radius:22px;display:flex;align-items:center;justify-content:center;font-size:44px;box-shadow:0 8px 32px rgba(0,0,0,0.3);animation:robotFloat 3s ease-in-out infinite;transition:transform 0.2s}
.robot-body:hover{transform:scale(1.08) translateY(-4px)}
.robot:nth-child(2) .robot-body{animation-delay:0.8s}.robot:nth-child(3) .robot-body{animation-delay:1.6s}
.robot-name{font-size:14px;font-weight:700;color:#ffffffcc}.robot-role{font-size:11px;color:#ffffff66;text-align:center;max-width:90px}
.r-martin{background:linear-gradient(135deg,#4D96FF,#2563eb)}.r-bob{background:linear-gradient(135deg,#6BCB77,#16a34a)}.r-diana{background:linear-gradient(135deg,#C77DFF,#7c3aed)}.r-qc{background:linear-gradient(135deg,#FF6B6B,#dc2626)}
section{padding:clamp(64px,8vw,120px) 20px;max-width:1100px;margin:0 auto}
.section-label{font-size:12px;font-weight:700;letter-spacing:0.12em;color:var(--yellow);margin-bottom:16px}
.section-title{font-size:clamp(1.8rem,3.5vw,2.8rem);font-weight:900;line-height:1.2;margin-bottom:48px}
.agent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-bottom:48px}
.agent-card{background:#ffffff0d;border:1px solid #ffffff15;border-radius:var(--radius);padding:28px 24px;transition:border-color 0.2s,transform 0.2s}
.agent-card:hover{border-color:#ffffff30;transform:translateY(-4px)}
.agent-card-icon{font-size:48px;margin-bottom:16px;display:block}
.agent-card h3{font-size:20px;font-weight:900;margin-bottom:8px}.agent-card p{font-size:15px;color:#ffffffaa;line-height:1.6}
.tag{display:inline-block;font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;margin-top:12px}
.tag-blue{background:#4D96FF33;color:#4D96FF}.tag-green{background:#6BCB7733;color:#6BCB77}.tag-purple{background:#C77DFF33;color:#C77DFF}.tag-red{background:#FF6B6B33;color:#FF6B6B}
.stage-wrap{background:#ffffff08;border:1px solid #ffffff15;border-radius:var(--radius);padding:40px;position:relative}
.stage{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:160px;position:relative}
.stage-agent{display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0}
.stage-icon{width:72px;height:72px;border-radius:18px;display:flex;align-items:center;justify-content:center;font-size:36px;box-shadow:0 4px 20px rgba(0,0,0,0.3);transition:transform 0.3s,box-shadow 0.3s}
.stage-icon.active{transform:scale(1.15);box-shadow:0 0 0 4px var(--yellow),0 8px 30px rgba(0,0,0,0.4)}
.stage-label{font-size:13px;font-weight:700;color:#ffffffcc}.stage-status{font-size:11px;color:#ffffff55;min-height:16px;text-align:center;max-width:80px}
.msg-bubble{position:absolute;top:50%;transform:translateY(-50%);background:var(--yellow);color:#1a1a2e;font-size:12px;font-weight:700;padding:6px 12px;border-radius:20px;white-space:nowrap;box-shadow:0 4px 16px rgba(0,0,0,0.3);pointer-events:none;opacity:0;z-index:10}
.msg-bubble.qc{background:var(--pink);color:#fff}
.arrow-line{flex:1;height:2px;background:#ffffff15;position:relative;min-width:30px}
.play-btn{display:inline-flex;align-items:center;gap:10px;background:var(--yellow);color:#1a1a2e;border:none;border-radius:99px;padding:14px 32px;font-family:inherit;font-size:17px;font-weight:900;cursor:pointer;margin-top:28px;transition:transform 0.15s;box-shadow:0 4px 20px rgba(255,217,61,0.3)}
.play-btn:hover{transform:translateY(-2px)}.play-btn:disabled{opacity:0.5;cursor:not-allowed;transform:none}
.log-box{margin-top:20px;background:#00000030;border-radius:12px;padding:16px 20px;font-size:14px;color:#ffffffbb;min-height:48px;line-height:1.8;font-family:monospace}
.log-line{opacity:0;animation:fadeIn 0.4s forwards}.log-ok{color:var(--green)}.log-qc{color:var(--pink)}.log-time{color:var(--purple)}
.zeit-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}
.zeit-card{background:#ffffff0d;border:1px solid #ffffff15;border-radius:var(--radius);padding:28px 24px}
.zeit-bar-wrap{height:8px;background:#ffffff15;border-radius:99px;margin:16px 0 8px;overflow:hidden}
.zeit-bar{height:100%;border-radius:99px;transform:scaleX(0);transform-origin:left;animation:barGrow 1.5s ease-out forwards}
.zeit-bar-fast{background:var(--green);width:95%}.zeit-bar-normal{background:var(--blue);width:60%}.zeit-bar-slow{background:var(--purple);width:25%}
.qc-flow{display:flex;align-items:center;gap:0;flex-wrap:wrap;justify-content:center;margin-bottom:40px}
.qc-step{background:#ffffff0d;border:1px solid #ffffff15;border-radius:16px;padding:20px 24px;text-align:center;min-width:140px;transition:border-color 0.2s}
.qc-step:hover{border-color:var(--yellow)}.qc-step-icon{font-size:36px;margin-bottom:10px;display:block}.qc-step-title{font-size:15px;font-weight:700;margin-bottom:4px}.qc-step-desc{font-size:12px;color:#ffffffaa}
.qc-arrow{font-size:24px;color:#ffffff40;padding:0 8px;flex-shrink:0}
.score-demo{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:32px}
.score-badge{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 20px;border-radius:14px;min-width:80px;font-weight:900}
.score-badge .num{font-size:28px;line-height:1}.score-badge .lbl{font-size:11px;opacity:0.8}
.score-fail{background:#FF6B6B22;border:2px solid var(--pink);color:var(--pink)}.score-ok{background:#FFD93D22;border:2px solid var(--yellow);color:var(--yellow)}.score-great{background:#6BCB7722;border:2px solid var(--green);color:var(--green)}
.final-section{text-align:center;padding:clamp(80px,10vw,140px) 20px}
.final-section h2{font-size:clamp(2rem,4vw,3.5rem);font-weight:900;line-height:1.2;margin-bottom:20px}
.final-section p{font-size:18px;color:#ffffffaa;max-width:480px;margin:0 auto 36px;line-height:1.6}
.cta-group{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.cta-primary{background:var(--yellow);color:#1a1a2e;border:none;border-radius:99px;padding:16px 36px;font-family:inherit;font-size:17px;font-weight:900;cursor:pointer;text-decoration:none;transition:transform 0.15s}
.cta-primary:hover{transform:translateY(-2px)}
.cta-secondary{background:transparent;color:#fff;border:2px solid #ffffff30;border-radius:99px;padding:16px 36px;font-family:inherit;font-size:17px;font-weight:700;cursor:pointer;text-decoration:none;transition:border-color 0.2s,transform 0.15s}
.cta-secondary:hover{border-color:#ffffff60;transform:translateY(-2px)}
@keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes robotFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes barGrow{to{transform:scaleX(1)}}
@keyframes msgFly{0%{opacity:0;transform:translateY(-50%) translateX(0) scale(0.8)}15%{opacity:1;transform:translateY(-50%) translateX(0) scale(1)}85%{opacity:1}100%{opacity:0;transform:translateY(-50%) translateX(var(--fly-dist)) scale(0.9)}}
@keyframes pulse-glow{0%,100%{box-shadow:0 0 0 4px var(--yellow),0 8px 30px rgba(0,0,0,0.4)}50%{box-shadow:0 0 0 8px #FFD93D55,0 8px 30px rgba(0,0,0,0.4)}}
@keyframes scoreIn{from{opacity:0;transform:scale(0.5) rotate(-8deg)}to{opacity:1;transform:scale(1) rotate(0deg)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms !important;transition-duration:0.01ms !important}}
@media(max-width:600px){.stage{flex-direction:column;gap:20px}.arrow-line{width:2px;height:30px;min-width:unset}}
</style>
</head>
<body>
<div class="hero">
<div class="hero-eyebrow">🤖 AI机器人图解</div>
<h1>AI<span>智能体</span>如何<br>互相通信?</h1>
<p class="hero-lead">想象一个机器人团队——每个机器人都有自己的工作。他们互相发送消息来协同合作。这就是AI智能体的工作方式</p>
<div class="hero-robots">
<div class="robot"><div class="robot-body r-martin">🧠</div><div class="robot-name">马丁</div><div class="robot-role">队长</div></div>
<div class="robot"><div class="robot-body r-bob"></div><div class="robot-name">鲍勃</div><div class="robot-role">超级快速</div></div>
<div class="robot"><div class="robot-body r-diana">🐢</div><div class="robot-name">黛安娜</div><div class="robot-role">非常仔细</div></div>
<div class="robot"><div class="robot-body r-qc">🔍</div><div class="robot-name">质检员</div><div class="robot-role">质量控制</div></div>
</div>
</div>
<section>
<div class="section-label">团队成员</div>
<h2 class="section-title">每个机器人都有<br>自己的超能力</h2>
<div class="agent-grid">
<div class="agent-card"><span class="agent-card-icon">🧠</span><h3>马丁 — 队长</h3><p>马丁接收任务并分配工作。他等待结果并汇总一切。</p><span class="tag tag-blue">委派者</span></div>
<div class="agent-card"><span class="agent-card-icon"></span><h3>鲍勃 — 闪电侠</h3><p>鲍勃工作超快。他立刻回复——就像在脑子里算简单数学题。</p><span class="tag tag-green">快速响应</span></div>
<div class="agent-card"><span class="agent-card-icon">🐢</span><h3>黛安娜 — 仔细派</h3><p>黛安娜需要更多时间,但做得非常仔细——就像写一篇完美的作文。</p><span class="tag tag-purple">慢速·仔细</span></div>
<div class="agent-card"><span class="agent-card-icon">🔍</span><h3>质检员 — 老师</h3><p>检查工作是否足够好。打分1到10分。分数太低再来一次</p><span class="tag tag-red">审查员·目标9/10</span></div>
</div>
</section>
<section>
<div class="section-label">现场演示</div>
<h2 class="section-title">看他们如何<br>一起工作!</h2>
<div class="stage-wrap">
<div class="stage" id="stage">
<div class="stage-agent"><div class="stage-icon r-martin" id="si-user">👤</div><div class="stage-label"></div><div class="stage-status" id="ss-user">任务!</div></div>
<div class="arrow-line" id="line1" style="position:relative;"><div class="msg-bubble" id="msg1">📝 请做这个!</div></div>
<div class="stage-agent"><div class="stage-icon r-martin" id="si-martin">🧠</div><div class="stage-label">马丁</div><div class="stage-status" id="ss-martin">等待中...</div></div>
<div class="arrow-line" id="line2" style="position:relative;"><div class="msg-bubble" id="msg2">📋 去处理这个!</div></div>
<div class="stage-agent"><div class="stage-icon r-bob" id="si-bob"></div><div class="stage-label">鲍勃</div><div class="stage-status" id="ss-bob">准备好了</div></div>
<div class="arrow-line" id="line3" style="position:relative;"><div class="msg-bubble qc" id="msg3">🔍 这个好吗?</div></div>
<div class="stage-agent"><div class="stage-icon r-qc" id="si-qc">🔍</div><div class="stage-label">质检员</div><div class="stage-status" id="ss-qc">准备好了</div></div>
</div>
<div id="score-display" style="text-align:center;margin-top:24px;min-height:48px;"></div>
<div class="log-box" id="log">按下按钮,一起来看!👇</div>
<div style="text-align:center;"><button class="play-btn" id="play-btn" onclick="runDemo()">▶ 开始任务!</button></div>
</div>
</section>
<section>
<div class="section-label">时间感知</div>
<h2 class="section-title">为什么每个机器人<br>感受时间不同</h2>
<p style="color:#ffffffaa;font-size:17px;max-width:580px;line-height:1.7;margin-bottom:40px;">你有没有这种感觉?玩游戏时间飞逝——等公交车时间却好慢。机器人也有同样的体验。研究人员把它叫做<strong style="color:var(--yellow)">本征时间Eigenzeit</strong></p>
<div class="zeit-cards">
<div class="zeit-card"><span class="zeit-emoji"></span><div class="zeit-name" style="color:var(--green)">鲍勃 — 闪电速度</div><div class="zeit-bar-wrap"><div class="zeit-bar zeit-bar-fast"></div></div><div class="zeit-rate" style="color:var(--green)">每秒97次操作</div><div class="zeit-desc" style="margin-top:8px">对鲍勃来说,一小时就像一分钟。他在如此短的时间内做了那么多!</div></div>
<div class="zeit-card"><span class="zeit-emoji">🧠</span><div class="zeit-name" style="color:var(--blue)">马丁 — 正常速度</div><div class="zeit-bar-wrap"><div class="zeit-bar zeit-bar-normal"></div></div><div class="zeit-rate" style="color:var(--blue)">每秒2.6次操作</div><div class="zeit-desc" style="margin-top:8px">马丁协调一切。不快也不慢——刚刚好。</div></div>
<div class="zeit-card"><span class="zeit-emoji">🐢</span><div class="zeit-name" style="color:var(--purple)">黛安娜 — 仔细型</div><div class="zeit-bar-wrap"><div class="zeit-bar zeit-bar-slow"></div></div><div class="zeit-rate" style="color:var(--purple)">每秒0.04次操作</div><div class="zeit-desc" style="margin-top:8px">黛安娜体验到拉伸的时间。每个任务对她来说都像一次长途旅行。</div></div>
</div>
<div style="background:#ffffff08;border:1px solid #ffffff15;border-radius:var(--radius);padding:28px 32px;margin-top:32px;">
<div style="font-size:22px;font-weight:900;margin-bottom:12px;">💡 这样记住它:</div>
<p style="font-size:16px;color:#ffffffbb;line-height:1.7;">玩电子游戏时,时间飞逝——你每分钟做很多动作。<br>等公交车时,时间爬行——你几乎什么都不做。<br><br>机器人有同样的现象。我们称之为<strong style="color:var(--yellow)">因果膨胀时钟Causal Dilation Clock</strong>——一个测量每个机器人真正活跃程度的时钟。</p>
</div>
</section>
<section>
<div class="section-label">质量系统</div>
<h2 class="section-title">双智能体<br>技巧 🔍</h2>
<p style="color:#ffffffaa;font-size:17px;max-width:560px;line-height:1.7;margin-bottom:40px;">好的工作总是要被检查的。在学校是老师,对我们的机器人来说,是<strong style="color:var(--pink)">质检员</strong></p>
<div class="qc-flow">
<div class="qc-step"><span class="qc-step-icon">📝</span><div class="qc-step-title">任务到达</div><div class="qc-step-desc">马丁接到工作</div></div>
<div class="qc-arrow"></div>
<div class="qc-step"><span class="qc-step-icon"></span><div class="qc-step-title">鲍勃工作</div><div class="qc-step-desc">快速完成任务</div></div>
<div class="qc-arrow"></div>
<div class="qc-step" style="border-color:#FF6B6B55"><span class="qc-step-icon">🔍</span><div class="qc-step-title">质检检查</div><div class="qc-step-desc">10次中6次</div></div>
<div class="qc-arrow"></div>
<div class="qc-step"><span class="qc-step-icon">🏆</span><div class="qc-step-title">结果</div><div class="qc-step-desc">够好?完成!</div></div>
</div>
<div style="background:#ffffff08;border:1px solid #ffffff15;border-radius:var(--radius);padding:32px;text-align:center;">
<div style="font-size:18px;font-weight:700;margin-bottom:24px;color:#ffffffcc;">质检员给出的分数:</div>
<div class="score-demo">
<div class="score-badge score-fail"><span class="num">1-6</span><span class="lbl">😬 再来一次!</span></div>
<div class="score-badge score-ok"><span class="num">7-8</span><span class="lbl">😊 不错!</span></div>
<div class="score-badge score-great"><span class="num">9-10</span><span class="lbl">🌟 太棒了!</span></div>
</div>
<p style="margin-top:24px;color:#ffffffaa;font-size:15px;">低于7分 → 鲍勃必须再试最多再试2次</p>
</div>
</section>
<div class="final-section">
<h2>现在你知道<br>AI团队<span style="color:var(--yellow)">如何真正工作!</span></h2>
<p>智能体 · 委派 · 质量检查 · 本征时间 — 这不是魔法,这是聪明的团队合作!</p>
<div class="cta-group">
<a href="https://github.com/Jeuners/Time_Dilation_in_LLM_Agent_Systems" class="cta-primary">📄 阅读论文</a>
<a href="explainer-en.html" class="cta-secondary">🇬🇧 English</a>
</div>
</div>
<script>
const log=document.getElementById('log'),playBtn=document.getElementById('play-btn');let running=false;
function addLog(t,c='',d=0){return new Promise(r=>setTimeout(()=>{const e=document.createElement('div');e.className='log-line '+c;e.textContent=t;log.appendChild(e);log.scrollTop=log.scrollHeight;r()},d))}
function setActive(id,a=true){const e=document.getElementById(id);if(!e)return;a?(e.classList.add('active'),e.style.animation='pulse-glow 0.8s ease-in-out infinite'):(e.classList.remove('active'),e.style.animation='')}
function setStatus(id,t){const e=document.getElementById(id);if(e)e.textContent=t}
function flyMsg(id,lid){return new Promise(r=>{const b=document.getElementById(id),l=document.getElementById(lid);if(!b||!l){r();return}const d=l.offsetWidth;b.style.setProperty('--fly-dist',d+'px');b.style.left='0px';b.style.animation='none';b.offsetHeight;b.style.animation='msgFly 1.2s ease-in-out forwards';setTimeout(r,1300)})}
function showScore(s){const e=document.getElementById('score-display'),c=s>=9?'var(--green)':s>=7?'var(--yellow)':'var(--pink)',em=s>=9?'🌟':s>=7?'😊':'😬';e.innerHTML=`<div style="font-size:48px;animation:scoreIn 0.5s forwards;opacity:0">${em}</div><div style="font-size:22px;font-weight:900;color:${c};animation:scoreIn 0.5s 0.2s forwards;opacity:0">质检分数:${s}/10</div>`}
async function runDemo(){if(running)return;running=true;playBtn.disabled=true;log.innerHTML='';document.getElementById('score-display').innerHTML='';['si-user','si-martin','si-bob','si-qc'].forEach(id=>setActive(id,false));['ss-user','ss-martin','ss-bob','ss-qc'].forEach(id=>setStatus(id,'等待中...'));
const score=7+Math.floor(Math.random()*3),doQC=Math.random()<0.6;
setActive('si-user');setStatus('ss-user','任务!');await addLog('👤 你:"请解释智能体如何工作!"');await flyMsg('msg1','line1');setActive('si-user',false);
setActive('si-martin');setStatus('ss-martin','分配中...');await addLog('🧠 马丁:我来分配任务...','' ,400);await new Promise(r=>setTimeout(r,600));
setStatus('ss-martin','→ 鲍勃');await flyMsg('msg2','line2');setActive('si-martin',false);
setActive('si-bob');setStatus('ss-bob','⚡ 工作中...');await addLog('⚡ 鲍勃:来了!(快速)','log-time',200);await new Promise(r=>setTimeout(r,1200));
setStatus('ss-bob','✅ 完成!');await addLog('⚡ 鲍勃:完成!"智能体是协同工作的机器人..."','log-ok',300);
if(doQC){await addLog('🔍 质检触发60%概率)...','log-qc',600);setActive('si-bob',false);await flyMsg('msg3','line3');setActive('si-qc');setStatus('ss-qc','🔍 检查中...');await new Promise(r=>setTimeout(r,1500));setStatus('ss-qc',`${score}/10分`);await addLog(`🔍 质检员:${score}/10分 — ${score>=7?'通过!✅':'再来一次!❌'}`,'log-qc',200);showScore(score);setActive('si-qc',false);}
else{setActive('si-bob',false);await addLog('✓ 这次没有质检40%概率)','',600);showScore(score);}
setActive('si-martin');setStatus('ss-martin','🏆 完成!');await addLog('🧠 马丁:任务完成!'+(doQC?`质检分数:${score}/10`:'直接交付。'),'log-ok',500);await new Promise(r=>setTimeout(r,400));setActive('si-martin',false);setStatus('ss-user','🎉 谢谢!');
running=false;playBtn.disabled=false;playBtn.textContent='▶ 再来一次!';}
const obs=new IntersectionObserver(e=>{e.forEach(x=>{if(x.isIntersecting)x.target.querySelectorAll('.zeit-bar').forEach(b=>b.style.animation='barGrow 1.5s ease-out forwards')})},{threshold:0.3});document.querySelectorAll('.zeit-cards').forEach(el=>obs.observe(el));
</script>
</body>
</html>