200 lines
12 KiB
HTML
200 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Hermes Cyber Terminal</title>
|
||
<link rel="stylesheet" href="../../../assets/fonts.css">
|
||
<link rel="stylesheet" href="../../../assets/base.css">
|
||
<link rel="stylesheet" href="style.css">
|
||
</head>
|
||
<body class="tpl-hermes-cyber-terminal">
|
||
<div class="deck">
|
||
|
||
<!-- 1. COVER -->
|
||
<section class="slide is-active">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-vignette"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>~/hermes · zsh · 118x42 · 01:37:04</div></div>
|
||
<div style="margin:auto 0">
|
||
<p class="hc-prompt">whoami --hermes</p>
|
||
<h1 class="hc-h1">HERMES<br>AGENT / v0.9.2<span class="hc-cursor"></span></h1>
|
||
<p class="hc-lede">一个号称能「自主跑完整软件工程任务」的命令行 agent。<br>真的好用?还是又一轮营销?—— 我连续跑了 72 小时,告诉你答案。</p>
|
||
<div style="margin-top:26px">
|
||
<span class="hc-tag">rust-core</span>
|
||
<span class="hc-tag">mcp-native</span>
|
||
<span class="hc-tag amber">72h-benchmark</span>
|
||
<span class="hc-tag red">honest-review</span>
|
||
</div>
|
||
</div>
|
||
<div class="hc-footer"><span>hermes-review · lewis · 2026</span><span>01 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 2. SECTION DIVIDER -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>section · 01/04</div></div>
|
||
<div style="margin:auto 0">
|
||
<p class="hc-prompt">cat chapter_01.md</p>
|
||
<h1 class="hc-h1" style="font-size:110px">// Setup</h1>
|
||
<p class="hc-lede">从 <code style="color:var(--hc-amber)">brew install hermes</code> 到第一次 prompt —— 一共 4 分 22 秒。</p>
|
||
</div>
|
||
<div class="hc-footer"><span>section · setup</span><span>02 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 3. CONTENT — spec cards -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>benchmark · cold-start</div></div>
|
||
<h2 class="hc-h2">开箱数据</h2>
|
||
<p class="hc-lede">cold start → first-successful-task 三次平均</p>
|
||
<div class="hc-grid-3">
|
||
<div class="hc-card"><div class="lbl">install time</div><div class="val">42s</div><div class="desc">单 binary,无 docker,无 python env。</div></div>
|
||
<div class="hc-card"><div class="lbl">first token</div><div class="val">1.8s</div><div class="desc">接入 claude-opus-4-6,无预热。</div></div>
|
||
<div class="hc-card"><div class="lbl">first PR merged</div><div class="val">4m22s</div><div class="desc">跑的是 fix-a-typo 级别的低难度任务。</div></div>
|
||
</div>
|
||
<div class="hc-grid-2">
|
||
<div class="hc-card"><div class="lbl">// verdict +</div><div class="val" style="color:var(--hc-green);font-size:18px">冷启动是真的快</div><div class="desc">和 OpenClaw 的 docker + pip 流程比,快不止一个数量级。</div></div>
|
||
<div class="hc-card"><div class="lbl">// verdict -</div><div class="val" style="color:var(--hc-red);font-size:18px">MCP 服务器配置不够友好</div><div class="desc">env 变量需要手动塞进 ~/.hermes/env,文档几乎没写。</div></div>
|
||
</div>
|
||
<div class="hc-footer"><span>data · verified 3 runs</span><span>03 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 4. CODE -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>trace · hermes run</div></div>
|
||
<p class="hc-prompt">hermes run "refactor auth module to use pkce"</p>
|
||
<h3 class="hc-h3" style="margin-top:12px">↓ 真实 trace (节选)</h3>
|
||
<pre class="hc-codebox" style="margin-top:10px"><span class="cm"># hermes v0.9.2 · session 42a1</span>
|
||
[<span class="fn">plan</span>] <span class="st">"分析 src/auth/*.ts → 找 oauth flow → 抽成 pkce"</span>
|
||
[<span class="fn">read</span>] src/auth/oauth.ts <span class="cm">// 214 lines</span>
|
||
[<span class="fn">read</span>] src/auth/token.ts <span class="cm">// 88 lines</span>
|
||
[<span class="kw">think</span>] <span class="st">"发现 implicit flow,改为 code+pkce,需新 state param"</span>
|
||
[<span class="fn">edit</span>] src/auth/oauth.ts <span class="hl">+43 -17</span>
|
||
[<span class="fn">edit</span>] src/auth/token.ts <span class="hl">+12 -4</span>
|
||
[<span class="fn">test</span>] pnpm vitest auth <span class="st">PASS 18/18</span>
|
||
[<span class="fn">commit</span>] <span class="var">"feat(auth): migrate to oauth2 code+pkce"</span>
|
||
[<span class="fn">push</span>] origin feat/pkce-auth <span class="st">ok</span>
|
||
|
||
<span class="cm"># 总耗时 3m 14s · 14k tokens · $0.21</span></pre>
|
||
<div class="hc-footer"><span>trace · live</span><span>04 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 5. CHART -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>benchmark · hermes vs openclaw</div></div>
|
||
<h2 class="hc-h2">72 小时对比</h2>
|
||
<p class="hc-lede">同一组 48 个 GitHub issue,两个 agent 各跑一遍</p>
|
||
<svg viewBox="0 0 1000 380" style="width:100%;max-width:1040px;margin-top:24px" xmlns="http://www.w3.org/2000/svg">
|
||
<g font-family="JetBrains Mono, monospace" font-size="13" fill="#8a8892">
|
||
<!-- axis -->
|
||
<line x1="80" y1="40" x2="80" y2="320" stroke="rgba(126,211,164,.2)"/>
|
||
<line x1="80" y1="320" x2="960" y2="320" stroke="rgba(126,211,164,.2)"/>
|
||
<!-- y labels -->
|
||
<text x="70" y="46" text-anchor="end">100%</text>
|
||
<text x="70" y="116" text-anchor="end">75%</text>
|
||
<text x="70" y="186" text-anchor="end">50%</text>
|
||
<text x="70" y="256" text-anchor="end">25%</text>
|
||
<text x="70" y="324" text-anchor="end">0</text>
|
||
<!-- bars: hermes -->
|
||
<g>
|
||
<rect x="130" y="80" width="80" height="240" fill="rgba(126,211,164,.15)" stroke="#7ed3a4" stroke-width="1.5"/>
|
||
<text x="170" y="76" text-anchor="middle" fill="#7ed3a4" font-weight="700">82%</text>
|
||
<text x="170" y="345" text-anchor="middle">resolved</text>
|
||
<rect x="240" y="146" width="80" height="174" fill="rgba(126,211,164,.15)" stroke="#7ed3a4" stroke-width="1.5"/>
|
||
<text x="280" y="142" text-anchor="middle" fill="#7ed3a4" font-weight="700">58%</text>
|
||
<text x="280" y="345" text-anchor="middle">one-shot</text>
|
||
<rect x="350" y="60" width="80" height="260" fill="rgba(126,211,164,.15)" stroke="#7ed3a4" stroke-width="1.5"/>
|
||
<text x="390" y="56" text-anchor="middle" fill="#7ed3a4" font-weight="700">89%</text>
|
||
<text x="390" y="345" text-anchor="middle">test-pass</text>
|
||
<rect x="460" y="110" width="80" height="210" fill="rgba(126,211,164,.15)" stroke="#7ed3a4" stroke-width="1.5"/>
|
||
<text x="500" y="106" text-anchor="middle" fill="#7ed3a4" font-weight="700">71%</text>
|
||
<text x="500" y="345" text-anchor="middle">pr-merged</text>
|
||
</g>
|
||
<!-- bars: openclaw -->
|
||
<g>
|
||
<rect x="570" y="150" width="80" height="170" fill="rgba(233,197,138,.12)" stroke="#e9c58a" stroke-width="1.5"/>
|
||
<text x="610" y="146" text-anchor="middle" fill="#e9c58a" font-weight="700">60%</text>
|
||
<text x="610" y="345" text-anchor="middle">resolved</text>
|
||
<rect x="680" y="212" width="80" height="108" fill="rgba(233,197,138,.12)" stroke="#e9c58a" stroke-width="1.5"/>
|
||
<text x="720" y="208" text-anchor="middle" fill="#e9c58a" font-weight="700">38%</text>
|
||
<text x="720" y="345" text-anchor="middle">one-shot</text>
|
||
<rect x="790" y="130" width="80" height="190" fill="rgba(233,197,138,.12)" stroke="#e9c58a" stroke-width="1.5"/>
|
||
<text x="830" y="126" text-anchor="middle" fill="#e9c58a" font-weight="700">67%</text>
|
||
<text x="830" y="345" text-anchor="middle">test-pass</text>
|
||
</g>
|
||
<!-- legend -->
|
||
<g transform="translate(820,50)">
|
||
<rect x="0" y="0" width="14" height="14" fill="rgba(126,211,164,.15)" stroke="#7ed3a4"/>
|
||
<text x="22" y="12" fill="#7ed3a4">hermes 0.9.2</text>
|
||
<rect x="0" y="22" width="14" height="14" fill="rgba(233,197,138,.12)" stroke="#e9c58a"/>
|
||
<text x="22" y="34" fill="#e9c58a">openclaw 2.1</text>
|
||
</g>
|
||
</g>
|
||
</svg>
|
||
<div class="hc-footer"><span>benchmark · n=48</span><span>05 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 6. STATS -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>tldr</div></div>
|
||
<p class="hc-prompt">echo $VERDICT</p>
|
||
<div class="hc-big">7.8<span style="font-size:60px;color:var(--hc-ink2)">/ 10</span></div>
|
||
<p class="hc-lede" style="margin-top:14px">值得装,还不值得完全依赖。</p>
|
||
<div class="hc-grid-2" style="margin-top:24px">
|
||
<div class="hc-card"><div class="lbl">+ strong points</div><div class="desc">• rust 本体冷启快<br>• trace 可读性极强<br>• diff 审核友好,commit message 也写得合格</div></div>
|
||
<div class="hc-card"><div class="lbl">- weak points</div><div class="desc">• plan 阶段偶尔跳步<br>• 超 50k LoC 仓库会 OOM<br>• MCP 配置需要手动塞 env</div></div>
|
||
</div>
|
||
<div class="hc-footer"><span>verdict · honest</span><span>06 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 7. CTA -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>install</div></div>
|
||
<h2 class="hc-h2">想自己跑一遍?</h2>
|
||
<p class="hc-lede">三条命令,不到 5 分钟就能看见它干第一件事。</p>
|
||
<pre class="hc-codebox" style="margin-top:22px"><span class="cm"># 1. install</span>
|
||
<span class="kw">$</span> brew install hermes-agent/tap/hermes
|
||
|
||
<span class="cm"># 2. auth (先准备好 anthropic api key)</span>
|
||
<span class="kw">$</span> hermes auth login
|
||
|
||
<span class="cm"># 3. first task</span>
|
||
<span class="kw">$</span> cd ~/your-repo && hermes run <span class="st">"add a CHANGELOG.md from git log"</span></pre>
|
||
<div style="margin-top:26px">
|
||
<span class="hc-tag">brew-ready</span>
|
||
<span class="hc-tag">opus-4.6</span>
|
||
<span class="hc-tag amber">needs-api-key</span>
|
||
</div>
|
||
<div class="hc-footer"><span>try-it-now</span><span>07 / 08</span></div>
|
||
</section>
|
||
|
||
<!-- 8. THANKS -->
|
||
<section class="slide">
|
||
<div class="hc-grid"></div>
|
||
<div class="hc-scanlines"></div>
|
||
<div class="hc-chrome"><div class="dots"><span></span><span></span><span></span></div><div>EOF</div></div>
|
||
<div style="margin:auto 0">
|
||
<p class="hc-prompt">exit 0</p>
|
||
<h1 class="hc-h1" style="font-size:120px">// thanks<span class="hc-cursor"></span></h1>
|
||
<p class="hc-lede">完整 trace、48 个任务的 PR 列表、benchmark 脚本都在 <span style="color:var(--hc-amber)">github.com/lewis/hermes-review</span></p>
|
||
</div>
|
||
<div class="hc-footer"><span>session closed</span><span>08 / 08</span></div>
|
||
</section>
|
||
|
||
</div>
|
||
<script src="../../../assets/runtime.js"></script>
|
||
</body>
|
||
</html>
|