存储抽象五后端降级链与 Credit 计费 本节摘要:第 8 章的收束节,讲横跨整个代理层的两个机制——存储抽象与计费。代理层有自己的存储需求(会话状态、缓存、临时数据),抽象为 ProxyStorage,支持 cos/sqlite/fs/memory 四种后端,按优先级降级保可用。计费(Credit)则基于 token 消耗上报,让成本可追溯。这两个机制让代理层「存得下、用得起」,是生产级运行的横切保障。
本节摘要:第 8 章的收束节,讲横跨整个代理层的两个机制——存储抽象与计费。代理层有自己的存储需求(会话状态、缓存、临时数据),抽象为 ProxyStorage,支持 cos/sqlite/fs/memory 四种后端,按优先级降级保可用。计费(Credit)则基于 token 消耗上报,让成本可追溯。这两个机制让代理层「存得下、用得起」,是生产级运行的横切保障。
代理层除了转发,还要存一些自己的东西——会话状态、sessionInit 记录的三元组、缓存等:
代理层的存储需求 ├─ 会话状态(当前 team/agent/task 三元组) ├─ sessionInit 记录(避免每次重新选) ├─ 临时缓存(如某些计算结果) └─ 会话历史片段(供 extract 用) → 这些不该都堆在核心服务(那是长期记忆) → 代理层需要一个「自己的、灵活的」存储
| 存储内容 | 特点 |
|---|---|
| 会话状态 | 临时,会话级 |
| 三元组记录 | 中期,跨会话复用 |
| 缓存 | 临时,可丢 |
这些存储需求与核心服务的「长期记忆」不同——它们更临时、更灵活,所以代理层有自己的存储抽象,而非全用核心服务。
代理层的存储抽象为 ProxyStorage,实现多种后端,按优先级降级:
五后端降级链(从主到备) cos(对象存储) ← 生产首选,持久、可共享 ↓ (不可用) sqlite(本地数据库) ← 单机持久 ↓ (不可用) fs(本地文件) ← 简单兜底 ↓ (不可用) memory(内存) ← 最末兜底,重启丢 → 主后端故障,自动落到备选,保证可用
| 后端 | 特点 | 适用场景 |
|---|---|---|
| cos | 持久、可共享、生产级 | 多节点部署 |
| sqlite | 单机持久、无外部依赖 | 单机部署 |
| fs | 简单、无依赖 | 开发/测试 |
| memory | 快但易失 | 兜底/测试 |
关键概念:降级链的核心思想是「可用性优先于持久性」。cos 挂了落 sqlite,sqlite 挂了落 fs……即使最坏情况落 memory(丢持久性),至少系统还能跑(保可用性)。这种「逐级降级」让代理层在不同环境、不同故障下都能继续工作,是面向「各种部署环境」的弹性设计。
降级不是「手动切换」,而是自动探测+回退:
降级的自动机制(概念) 写入时: 尝试主后端(cos) ├─ 成功 → 写入完成 └─ 失败 → 尝试下一后端(sqlite)... 读取时: 按写入时的后端读(或遍历找) 周期性: 探测主后端是否恢复 ├─ 恢复 → 回迁到主后端 └─ 未恢复 → 继续用降级后端
这种自动降级+回迁,让运维不必「守着切换」——系统自己应对后端波动。当然,降级期间可能丢失部分持久性(如落在 memory 的数据重启会丢),这是「保可用性」的代价。
⚠️ 注意:降级链是「兜底机制」,不是「常态用法」。生产环境应配好主后端(cos),让常态走持久后端;降级只在故障时触发。如果你发现系统「常态就跑在 memory」,说明主后端配置有问题,要排查——常态跑 memory 会导致重启丢数据。
代理层的另一个横切机制是 Credit 计费——基于 token 消耗上报,让成本可追溯:
Credit 计费机制 forward 转发请求给 LLM ↓ LLM 返回答复(含 token 消耗) ↓ 代理层统计: ├─ 输入 token(含注入的记忆) ├─ 输出 token(答复) └─ 总消耗 ↓ 上报 Credit(关联到 team/agent/user) ↓ 成本可按团队/Agent/用户追溯
| 计费维度 | 用途 |
|---|---|
| 按 team | 团队成本核算 |
| 按 agent | 哪个 Agent 费钱 |
| 按 user | 用户级成本 |
Credit 计费与第 8 步 report(可观测上报)相关——它是成本维度的观测。第 12 章会讲三路可观测(Langfuse/Opik/ClickHouse),其中 ClickHouse 常用来统计这类成本数据。
存储降级链与 Credit 计费,都是「横切」整个代理层的机制——它们不是某一步,而是贯穿所有步骤的保障:
横切机制的贯穿 八步管道的每一步 ├─ 都可能用存储(状态/缓存)→ ProxyStorage 降级链保障 └─ forward 消耗 token → Credit 计费追溯 → 横切 = 「每一步都需要的基础能力」
这两个机制让代理层具备「生产级」的两个特征:① 弹性(存储降级,故障能扛),② 可追溯(计费,成本可控)。没有它们,代理层只是个「能跑的 demo」;有了它们,才是「能上生产的系统」。这就是为什么第 12 章生产部署会重点讲这些横切机制的配置。
💡 技巧:理解「横切」概念,你看系统的视角会更立体。八步管道是「主流程」(纵向),存储/计费/可观测是「横切」(横向)。主流程管「把事做完」,横切管「做得稳、做得明白」。成熟的系统两者都全——本系统在横切上(存储降级、Credit、三路可观测)做得很完整,这是它「生产级」的体现。
第 8 章到此完成——从透明代理定位、八步全景、身份三连、injection 双策略、限流转发回写、到存储计费,整套代理层讲透了。下一章转向代码接入——SDK 四步法。