回收 411 MB(470 M → 58.8 M),全部经回收站,可恢复: - 待清理/(146.2 M,含 relay 分片 128 M 与 42 项过程目录) - tmp/(32.4 M,按接续棒命名的过程临时区) - .workbuddy/tmp/(39.5 M) - 4 份 workbuddy.db 冗余副本(101 M,09-23 事故的坏副本 / 抢救产物) - tmp/im16/gw/centrifugo 二进制(63.9 M,可重下)+ 缓存残留 入库范围:常驻规则(CODEBUDDY.md / README.md / state.py)、在途接续入口与 接续包、docs/、交付物/、交接单/、归档/、scripts/、.codebuddy/、 .workbuddy/memory/;共 398 件,其中 >60 KB 的 26 件全为文档。 排除(.gitignore):tmp/、待清理/、运行态日志与缓存、*.db 与 DB 备份整目录、 打包二进制(*.tar.gz / *.tgz)、记忆修复前备份。
191 lines
11 KiB
HTML
191 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN"><head><meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
|
||
<title>注意这个问题立省 50% token</title>
|
||
<style>
|
||
*{box-sizing:border-box}
|
||
html,body{overflow-x:hidden}
|
||
body{margin:0;padding:26px 14px 34px;background:#f4f5f7;color:#0b1220;
|
||
font-family:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;
|
||
-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
|
||
.wrap{max-width:920px;margin:0 auto}
|
||
.card{background:#fff;border:1px solid #e6e9ee;border-radius:18px;padding:24px 26px;margin-bottom:14px;
|
||
box-shadow:0 1px 2px rgba(11,18,32,.04),0 10px 28px -14px rgba(11,18,32,.13)}
|
||
h1{font-size:33px;line-height:1.25;margin:0;letter-spacing:-.9px;font-weight:800;word-break:break-word}
|
||
h1 em{font-style:normal;color:#c02626}
|
||
|
||
/* ── 流程图示(纯 HTML,随屏宽自动重排) ───────────────── */
|
||
.flow{width:100%}
|
||
.frow{display:flex;gap:12px;align-items:stretch}
|
||
.fbox{flex:1 1 0;min-width:0;background:#f8fafc;border:1.5px solid #dbe1e8;border-radius:14px;padding:14px 16px}
|
||
.fbox.hl{background:#fff9f9;border-color:#fecaca}
|
||
.far{flex:0 0 auto;display:flex;align-items:center;font-size:24px;font-weight:800;color:#c02626}
|
||
.fcap{font-size:12.5px;font-weight:800;color:#6b7688;margin-bottom:7px}
|
||
.ftxt{font-size:16px;font-weight:800;line-height:1.5;color:#0b1220}
|
||
.ftxt b{color:#c02626;font-size:20px}
|
||
.fsub{font-size:12.5px;font-weight:700;color:#6b7688;margin-top:6px;line-height:1.5}
|
||
.fdown{text-align:center;font-size:26px;line-height:1;color:#c02626;font-weight:800;margin:11px 0}
|
||
.fcap2{font-size:14px;font-weight:800;color:#0b1220;margin:15px 0 9px;line-height:1.55}
|
||
.tank{height:52px;border-radius:13px;background:#f6f7f9;border:1.5px solid #e6e9ee;padding:2px}
|
||
.fill{height:100%;width:45%;border-radius:11px;background:linear-gradient(90deg,#e05a5a,#a81c1c)}
|
||
.big{font-size:32px;font-weight:800;color:#c02626;letter-spacing:-1.4px;margin-top:10px;line-height:1.2}
|
||
.big span{font-size:13px;color:#6b7688;letter-spacing:0;font-weight:700;margin-left:8px}
|
||
.comp{display:flex;height:30px;border-radius:8px;overflow:hidden}
|
||
.comp i{display:block;height:100%}
|
||
.concl{margin-top:16px;background:#fef2f2;border:1.5px solid #fecaca;border-radius:10px;
|
||
padding:12px 15px;font-size:14.5px;font-weight:800;color:#c02626;line-height:1.6}
|
||
.lg{display:flex;gap:9px;flex-wrap:wrap;margin-top:13px}
|
||
.lg span{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:#4b5563;
|
||
background:#f8fafc;border:1px solid #e8ecf1;border-radius:999px;padding:6px 13px}
|
||
.lg i{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
|
||
|
||
/* ── 轮次条 ─────────────────────────────────────────── */
|
||
.row{display:flex;align-items:center;gap:14px;padding:11px 0;border-bottom:1px dashed #eef1f4}
|
||
.row:last-of-type{border-bottom:0}
|
||
.row.hot{background:#fffafa;border-radius:10px;margin:2px -8px;padding:13px 8px}
|
||
.lab{flex:0 0 118px;line-height:1.35}
|
||
.lab b{font-size:15.5px;font-weight:800;display:block}
|
||
.lab i{font-style:normal;font-size:12.5px;color:#6b7688;font-weight:700}
|
||
.bar{flex:1 1 auto;min-width:0;height:34px;border-radius:9px;overflow:hidden;display:flex;
|
||
background:#f6f7f9;border:1px solid #eef1f4}
|
||
.inh{background:linear-gradient(180deg,#d94f4f,#b91c1c);display:block}
|
||
.add{background:linear-gradient(180deg,#f5a95c,#e07a24);display:block}
|
||
.val{flex:0 0 62px;text-align:right;font-size:17px;font-weight:800;color:#b91c1c;font-variant-numeric:tabular-nums}
|
||
.note{flex:0 0 auto;font-size:12.5px;font-weight:800;color:#c02626;background:#fef2f2;
|
||
border:1px solid #fecaca;border-radius:999px;padding:4px 10px;white-space:nowrap}
|
||
.key{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;font-size:13.5px;color:#4b5563;font-weight:700}
|
||
.key i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
|
||
.k1 i{background:#c02626}.k2 i{background:#e8892f}
|
||
.tot{margin-top:14px;padding:12px 16px;border-radius:12px;background:#ecfdf5;border-left:4px solid #0a7a4f;
|
||
font-size:15px;font-weight:800;color:#0a7a4f;line-height:1.65}
|
||
.tot s{text-decoration:none;color:#c02626}
|
||
|
||
/* ── 问题 / 方案卡 ──────────────────────────────────── */
|
||
.mp{background:#fef2f2;border:1.5px solid #fecaca;border-radius:14px;padding:18px 20px}
|
||
.mpt{font-size:12.5px;font-weight:800;color:#c02626;letter-spacing:1.2px;margin-bottom:9px}
|
||
.mpb{font-size:17px;font-weight:800;line-height:1.7;color:#0b1220}
|
||
.mpb b{color:#c02626}
|
||
.so{background:#ecfdf5;border:1.5px solid #bbf7d0;border-radius:14px;padding:18px 20px}
|
||
.sot{font-size:12.5px;font-weight:800;color:#0a7a4f;letter-spacing:1.2px;margin-bottom:9px}
|
||
.sob{font-size:20px;font-weight:800;line-height:1.5;color:#0b1220}
|
||
.sob b{color:#0a7a4f}
|
||
.sof{display:flex;align-items:center;gap:11px;margin-top:14px;flex-wrap:wrap}
|
||
.sof .n{background:#fff;border:1px solid #bbf7d0;border-radius:11px;padding:10px 15px;
|
||
font-size:15px;font-weight:800;color:#0a7a4f}
|
||
.sof .n s{text-decoration:none;color:#c02626}
|
||
.sof .ar{font-size:20px;font-weight:800;color:#0a7a4f}
|
||
.sos{font-size:13.5px;font-weight:700;color:#4b5563;margin-top:12px;line-height:1.65}
|
||
|
||
/* ── 手机端:全部改为竖排,禁止横向撑破 ───────────────── */
|
||
@media (max-width:600px){
|
||
body{padding:16px 10px 26px}
|
||
.card{padding:17px 15px;border-radius:14px}
|
||
h1{font-size:23px;letter-spacing:-.4px}
|
||
.frow{flex-direction:column;gap:0}
|
||
.fbox{flex:0 0 auto}
|
||
.far{transform:rotate(90deg);justify-content:center;margin:8px 0;line-height:1}
|
||
.ftxt{font-size:15px}
|
||
.ftxt b{font-size:18px}
|
||
.fcap2{margin:13px 0 8px;font-size:13.5px}
|
||
.tank{height:44px}
|
||
.big{font-size:26px}
|
||
.big span{display:block;margin:5px 0 0}
|
||
.comp{height:24px}
|
||
.concl{font-size:13.5px;padding:11px 13px}
|
||
.lg{gap:7px}
|
||
.lg span{font-size:12px;padding:5px 10px}
|
||
.row{flex-wrap:wrap;gap:6px 10px;padding:9px 0}
|
||
.lab{flex:1 1 100%}
|
||
.lab b{display:inline;font-size:14.5px}
|
||
.lab i{margin-left:8px}
|
||
.bar{flex:1 1 62%;order:2;height:26px}
|
||
.val{flex:0 0 auto;order:3;text-align:left;font-size:15px}
|
||
.note{order:4;font-size:11.5px;padding:3px 9px}
|
||
.key{gap:10px;font-size:12.5px}
|
||
.tot{font-size:13.5px;padding:11px 13px}
|
||
.mpb{font-size:15.5px}
|
||
.sob{font-size:17px}
|
||
.sof .n{font-size:13.5px;padding:8px 12px}
|
||
.sos{font-size:13px}
|
||
}
|
||
</style></head><body><div class="wrap">
|
||
|
||
<div class="card">
|
||
<h1>注意这个问题立省 <em>50% token</em></h1>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="flow">
|
||
|
||
<div class="frow">
|
||
<div class="fbox">
|
||
<div class="fcap">第 1 轮 · 我问了什么</div>
|
||
<div class="ftxt">「代码注释里还有 96 处遗留备注,全清掉」</div>
|
||
</div>
|
||
<div class="far">→</div>
|
||
<div class="fbox hl">
|
||
<div class="fcap">模型干了什么</div>
|
||
<div class="ftxt">展开了 <b>101</b> 次工具调用</div>
|
||
<div class="fsub">142 次文件编辑 · 179 次命令</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="fdown">↓</div>
|
||
|
||
<div class="fcap2">上下文 = 101 次调用的「入参 + 输出」原文</div>
|
||
<div class="tank"><div class="fill"></div></div>
|
||
<div class="big">27 万 <span>token(占最终 59 万的 45%)</span></div>
|
||
|
||
<div class="fcap2">这 27 万里面装的是什么</div>
|
||
<div class="comp">
|
||
<i style="width:75.3%;background:#a81c1c"></i>
|
||
<i style="width:19.0%;background:#d97706"></i>
|
||
<i style="width:4.5%;background:#2563eb"></i>
|
||
<i style="width:1.3%;background:#0a7a4f"></i>
|
||
</div>
|
||
<div class="lg">
|
||
<span><i style="background:#a81c1c"></i>工具输出(命令回显 / 文件内容 / 搜索结果)75%</span>
|
||
<span><i style="background:#d97706"></i>工具入参 19%</span>
|
||
<span><i style="background:#2563eb"></i>我的提问(含系统注入)4.5%</span>
|
||
<span><i style="background:#0a7a4f"></i>AI 回复 1.3%</span>
|
||
</div>
|
||
|
||
<div class="concl">从此永久留在历史里 —— 之后每一轮、每一次请求,都要把它整份重发一遍</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="row"><div class="lab"><b>第 1 轮</b><i>101 次调用</i></div><div class="bar"><span class="inh" style="width:0.0%"></span><span class="add" style="width:65.4%"></span></div><div class="val">27 万</div></div>
|
||
<div class="row"><div class="lab"><b>第 2 轮</b><i>26 次调用</i></div><div class="bar"><span class="inh" style="width:65.4%"></span><span class="add" style="width:22.3%"></span></div><div class="val">36 万</div></div>
|
||
<div class="row"><div class="lab"><b>第 3 轮</b><i>24 次调用</i></div><div class="bar"><span class="inh" style="width:87.6%"></span><span class="add" style="width:6.6%"></span></div><div class="val">39 万</div></div>
|
||
<div class="row hot"><div class="lab"><b>第 4 轮</b><i>10 次调用</i></div><div class="bar"><span class="inh" style="width:94.2%"></span><span class="add" style="width:5.8%"></span></div><div class="val">41 万</div><div class="note">AI 只回 620 字</div></div>
|
||
<div class="key"><span class="k1"><i></i>从前面继承的(每轮全量重发)</span>
|
||
<span class="k2"><i></i>本轮新增</span></div>
|
||
<div class="tot">共 29 轮 → 末尾 59 万 | 累计输入 1.93 亿 | 其中工具痕迹 93%<br>
|
||
<span style="display:block;margin-top:6px;font-size:.94em">但最贵的<b>不是</b>第 1 轮(它只占 <s>5.6%</s>)—— 是<span style="color:#c02626">水位已经很高、还跑了 50+ 次请求</span>的那两轮,合计 <s>40%</s></span></div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="mp">
|
||
<div class="mpt">主 要 问 题</div>
|
||
<div class="mpb">一句话,被展开成<b>上百次工具调用</b>;<br>
|
||
而这些调用背后的<b>每一次模型请求</b>,都要把全部历史原文重发一遍。<br>
|
||
⇒ 成本 = 请求次数 × 当时的上下文体积,<b>越往后越贵</b>。</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="so">
|
||
<div class="sot">解 决 方 案</div>
|
||
<div class="sob">让 AI <b>写脚本</b>处理</div>
|
||
<div class="sof">
|
||
<span class="n"><s>101 次工具调用</s></span>
|
||
<span class="ar">➜</span>
|
||
<span class="n">1 个脚本,一次跑完</span>
|
||
</div>
|
||
<div class="sos">96 处同类改动合成一个脚本 —— 少一次调用,就少背一遍全部历史。</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div></body></html>
|