Files
dsh_ai1net_server/docs/会话与接续/会话积分问题与治理_示意图_20260915.html
T
admin ce8e6ceed9 chore(工作区): 纳入版本控制基线(回收 411 MB 过程产物)
回收 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)、记忆修复前备份。
2026-09-24 07:51:03 +08:00

191 lines
11 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,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>