<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ZeroToken - Record once. Automate forever.</title>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: linear-gradient(135deg, #0a0e27 0%, #1a1f3a 50%, #0f1419 100%);
color: #e8eaed;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.poster-container {
width: 720px;
min-height: 1280px;
background: linear-gradient(135deg, #0d1117 0%, #161b22 100%);
border-radius: 24px;
overflow: hidden;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
position: relative;
}
/* Background decoration */
.bg-grid {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image:
linear-gradient(rgba(88, 166, 255, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(88, 166, 255, 0.03) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
}
.bg-glow {
position: absolute;
top: -200px;
right: -200px;
width: 600px;
height: 600px;
background: radial-gradient(circle, rgba(88, 166, 255, 0.15) 0%, transparent 70%);
pointer-events: none;
}
.content {
position: relative;
z-index: 1;
padding: 48px 40px;
}
/* Header */
.header {
margin-bottom: 48px;
text-align: center;
}
.title {
font-size: 68px;
font-weight: 800;
background: linear-gradient(135deg, #58a6ff 0%, #79c0ff 50%, #a5d6ff 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
letter-spacing: -2px;
margin-bottom: 16px;
line-height: 1.1;
}
.subtitle {
font-size: 24px;
color: #7ee787;
font-weight: 600;
font-family: 'Fira Code', monospace;
letter-spacing: 0.5px;
}
/* Problem Section */
.problem-section {
background: rgba(255, 107, 107, 0.08);
border: 1px solid rgba(255, 107, 107, 0.2);
border-radius: 16px;
padding: 28px;
margin-bottom: 40px;
}
.problem-title {
font-size: 20px;
font-weight: 700;
color: #ff6b6b;
margin-bottom: 16px;
display: flex;
align-items: center;
gap: 10px;
}
.problem-content {
font-size: 16px;
line-height: 1.6;
color: #c9d1d9;
}
.highlight-red {
color: #ff6b6b;
font-weight: 600;
}
/* Architecture Flow */
.architecture {
margin-bottom: 40px;
}
.section-title {
font-size: 22px;
font-weight: 700;
color: #58a6ff;
margin-bottom: 24px;
display: flex;
align-items: center;
gap: 12px;
}
.flow-container {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
}
.flow-step {
flex: 1;
background: rgba(88, 166, 255, 0.05);
border: 2px solid rgba(88, 166, 255, 0.3);
border-radius: 12px;
padding: 24px 16px;
text-align: center;
position: relative;
}
.flow-step.active {
background: rgba(88, 166, 255, 0.1);
border-color: #58a6ff;
box-shadow: 0 0 30px rgba(88, 166, 255, 0.2);
}
.flow-step.inactive {
background: rgba(126, 231, 135, 0.05);
border-color: rgba(126, 231, 135, 0.3);
}
.flow-icon {
font-size: 36px;
margin-bottom: 12px;
display: block;
}
.flow-title {
font-size: 16px;
font-weight: 700;
color: #e8eaed;
margin-bottom: 8px;
}
.flow-desc {
font-size: 12px;
color: #8b949e;
font-family: 'Fira Code', monospace;
}
.flow-arrow {
color: #58a6ff;
font-size: 28px;
font-weight: bold;
}
/* Features Grid */
.features {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 40px;
}
.feature-card {
background: rgba(33, 38, 45, 0.6);
border: 1px solid rgba(48, 54, 61, 0.8);
border-radius: 16px;
padding: 24px;
transition: all 0.3s ease;
}
.feature-card:hover {
border-color: rgba(88, 166, 255, 0.5);
background: rgba(33, 38, 45, 0.8);
}
.feature-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 16px;
}
.feature-icon {
font-size: 28px;
color: #58a6ff;
}
.feature-title {
font-size: 17px;
font-weight: 700;
color: #e8eaed;
}
.feature-content {
font-size: 14px;
line-height: 1.6;
color: #8b949e;
}
.feature-code {
background: rgba(0, 0, 0, 0.3);
border-radius: 8px;
padding: 10px 12px;
margin-top: 12px;
font-family: 'Fira Code', monospace;
font-size: 11px;
color: #7ee787;
border-left: 3px solid #7ee787;
}
/* Comparison */
.comparison {
background: linear-gradient(135deg, rgba(88, 166, 255, 0.05) 0%, rgba(126, 231, 135, 0.05) 100%);
border: 1px solid rgba(48, 54, 61, 0.8);
border-radius: 16px;
padding: 28px;
margin-bottom: 40px;
}
.comparison-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
}
.comparison-item {
padding: 20px;
border-radius: 12px;
}
.comparison-item.old {
background: rgba(255, 107, 107, 0.08);
border: 1px solid rgba(255, 107, 107, 0.2);
}
.comparison-item.new {
background: rgba(126, 231, 135, 0.08);
border: 1px solid rgba(126, 231, 135, 0.2);
}
.comparison-title {
font-size: 16px;
font-weight: 700;
margin-bottom: 12px;
display: flex;
align-items: center;
gap: 8px;
}
.comparison-item.old .comparison-title {
color: #ff6b6b;
}
.comparison-item.new .comparison-title {
color: #7ee787;
}
.comparison-text {
font-size: 14px;
line-height: 1.5;
color: #c9d1d9;
}
.token-waste {
color: #ff6b6b;
font-weight: 600;
}
.token-save {
color: #7ee787;
font-weight: 600;
}
/* Footer */
.footer {
text-align: center;
padding-top: 20px;
border-top: 1px solid rgba(48, 54, 61, 0.8);
}
.github-box {
background: rgba(88, 166, 255, 0.1);
border: 1px solid rgba(88, 166, 255, 0.3);
border-radius: 12px;
padding: 16px 24px;
display: inline-flex;
align-items: center;
gap: 12px;
font-family: 'Fira Code', monospace;
font-size: 14px;
color: #58a6ff;
text-decoration: none;
transition: all 0.3s ease;
}
.github-box:hover {
background: rgba(88, 166, 255, 0.15);
border-color: #58a6ff;
}
.footer-desc {
margin-top: 16px;
font-size: 13px;
color: #8b949e;
font-style: italic;
}
/* Responsive */
<span class="mention-invalid">@media</span> (max-width: 600px) {
.features {
grid-template-columns: 1fr;
}
.comparison-grid {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<div class="poster-container">
<div class="bg-grid"></div>
<div class="bg-glow"></div>
<div class="content">
<!-- Header -->
<div class="header">
<h1 class="title">ZeroToken</h1>
<p class="subtitle">Record once. Automate forever.</p>
</div>
<!-- Problem Section -->
<div class="problem-section">
<div class="problem-title">
<i class="material-icons">warning</i>
核心问题
</div>
<div class="problem-content">
AI Agent 控制浏览器时,<span class="highlight-red">每个操作都需要一次 LLM 推理</span>。重复执行相同任务时,系统每天在重新思考同一个流程,造成巨大的 Token 浪费。
</div>
</div>
<!-- Architecture Flow -->
<div class="architecture">
<div class="section-title">
<i class="material-icons">account_tree</i>
三层架构
</div>
<div class="flow-container">
<div class="flow-step active">
<i class="material-icons flow-icon">psychology</i>
<div class="flow-title">录制阶段</div>
<div class="flow-desc">LLM 推理</div>
</div>
<div class="flow-arrow">→</div>
<div class="flow-step">
<i class="material-icons flow-icon">timeline</i>
<div class="flow-title">轨迹生成</div>
<div class="flow-desc">Trajectory</div>
</div>
<div class="flow-arrow">→</div>
<div class="flow-step inactive">
<i class="material-icons flow-icon">play_circle</i>
<div class="flow-title">脚本回放</div>
<div class="flow-desc">Script Engine</div>
</div>
</div>
</div>
<!-- Features Grid -->
<div class="section-title" style="font-size: 20px; margin-bottom: 16px;">
<i class="material-icons">stars</i>
核心特性
</div>
<div class="features">
<div class="feature-card">
<div class="feature-header">
<i class="material-icons feature-icon">help_outline</i>
<div class="feature-title">模糊点标记</div>
</div>
<div class="feature-content">
显式标记需要人工或AI判断的步骤
</div>
<div class="feature-code">
fuzzy_point: { requires_judgment: true }
</div>
</div>
<div class="feature-card">
<div class="feature-header">
<i class="material-icons feature-icon">replay</i>
<div class="feature-title">确定性回放</div>
</div>
<div class="feature-content">
首次推理后,直接运行脚本
</div>
<div class="feature-code">
run_script(task_id) // 无需 LLM
</div>
</div>
<div class="feature-card">
<div class="feature-header">
<i class="material-icons feature-icon">fingerprint</i>
<div class="feature-title">自适应定位</div>
</div>
<div class="feature-content">
保存元素指纹,应对网站变化
</div>
<div class="feature-code">
adaptive: true // 智能匹配
</div>
</div>
<div class="feature-card">
<div class="feature-header">
<i class="material-icons feature-icon">error_outline</i>
<div class="feature-title">统一错误契约</div>
</div>
<div class="feature-content">
结构化错误,便于AI决策
</div>
<div class="feature-code">
{ retryable: true, code: "..." }
</div>
</div>
</div>
<!-- Comparison -->
<div class="comparison">
<div class="section-title" style="font-size: 20px; margin-bottom: 16px;">
<i class="material-icons">compare</i>
效率对比
</div>
<div class="comparison-grid">
<div class="comparison-item old">
<div class="comparison-title">
<i class="material-icons">close</i>
传统方式
</div>
<div class="comparison-text">
每次执行都需 LLM 推理<br>
<span class="token-waste">重复思考相同流程</span><br>
Token 成本高
</div>
</div>
<div class="comparison-item new">
<div class="comparison-title">
<i class="material-icons">check_circle</i>
ZeroToken
</div>
<div class="comparison-text">
首次推理后直接回放<br>
<span class="token-save">稳定执行确定性任务</span><br>
Token 成本大幅降低
</div>
</div>
</div>
</div>
<!-- Footer -->
<div class="footer">
<a href="https://github.com/AMOS144/zerotoken" class="github-box">
<i class="material-icons">code</i>
github.com/AMOS144/zerotoken
</a>
<div class="footer-desc">
AI Agent 浏览器自动化 MCP Server
</div>
</div>
</div>
</div>
</body>
</html>
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!