凌晨两点十分,省级住房公积金中心咨询值班室还没关灯。
老吴带着 6 人小队蹲在工位上。客户口头说得很干脆:一线把缴存摘要、账户编号和历史口径丢过来,十分钟内要出一张能上窗口大屏的答复单------同一缴存人连续追问必须带着本单已核事实和前序结论,上一单商贷提取的停发令、经办员电话和追缴金额绝不能因为问法差不多就被语义缓存命中、套到下一单普通租房提取。
处长问得更硬:这条答复凭什么直接命中缓存、不走模型?必须指出哪条向量、哪条相似度、哪条隔离键、谁点的确认。Qwen 看见「和上次差不多」就把测试环境商贷停发话术整段写进答复单;DeepSeek 看见相邻地市就编条款库不存在的跨省视同缴存口径;Kimi 窗口一短,把上一单追缴金额套到本单租房提取。隔壁处长敲了敲桌子:别再拿会话当缓存说明书。把命中契约、向量预算、越权红线和失败回退写进 SPEC。
这就是 2026 年语义缓存真正要解决的事:不是再加一层更快的 KV,而是把「什么算命中、命中凭哪条向量、隔离键怎么切、失败怎么退」做成可验收的契约。
一、为什么语义缓存比「再加一层 Redis」更值钱
语义缓存的核心不是「问法像就复用」,而是「命中可解释、可隔离、可回退」。一套能上值班窗口的语义缓存通常有四件东西:
- 命中契约:相似度阈值、必须对齐的字段、禁止模糊命中的工单类型
- 向量预算:每单最多检索多少条、索引按什么键切分、哪些字段必须脱敏后再入向量库
- 越权红线:禁止跨单命中停发令、禁止邻市口径、禁止把测试环境话术当正式答复
- 失败回退:相似度打架、隔离键缺失或模型互斥时,答复单标「待人工复核」,不准自行命中
一线要的不是「模型觉得和上次差不多」,而是「本单命中了哪条向量、相似度多少、隔离键是谁、谁点的确认」。问法像,不等于事实像;向量近,不等于权限近。
语义缓存管的是「这一单能不能跳过模型」。它和上下文缓存、RAG、护栏不是一回事:上下文缓存管同一窗口里 token 怎么省,RAG 管从哪找条款,护栏管拦不拦越权,语义缓存管的是「答复能不能直接复用」。四件事混在聊天记录里,窗口一忙就会把上一单的停发令复用到本单。
二、把四件事写进 SPEC,而不是写进群聊
我们在 MonkeyCode 里新建任务,标题就叫「公积金咨询语义缓存」。浏览器打开就能写,不用装本地 IDE。云端给这个任务配了真实环境,编译、联调、对着大屏预览都在同一处完成。
SPEC 里只钉四条,写短、写死、可验收:
- 命中契约:必须同时满足「同一缴存人隔离键 + 同一业务类型 + 相似度 ≥ 0.92 + 人工确认位为真」才允许跳过模型;租房提取不得命中商贷停发。
- 向量预算:每单最多检索 8 条候选;身份证、电话、账户号必须脱敏后再入向量库;停发类工单单独索引,禁止混入普通提取。
- 越权红线:禁止跨单复用停发令、经办员电话和追缴金额;禁止引用邻市缴存口径;禁止把测试环境通融话术写入正式单。
- 失败回退:候选相似度打架、隔离键缺失、条款检索为空或模型互斥时,答复单标「待人工复核」,不准自行命中缓存。
需求管理和 SPEC 就挂在任务旁边,处长改口径不用翻聊天记录。小队六个人看同一份运行日志,谁把「问法差不多」写成命中条件,当场能对出来。
三、同一条答复单,换模型对打
MonkeyCode 支持按任务切换 GLM、Kimi、MiniMax、Qwen、DeepSeek。我们把同一份 SPEC、同一组缓存候选扔给几个模型对打:
- 普通租房提取:应引用本省缴存余额和提取上限,不得出现商贷停发话术
- 同一缴存人二次追问,必须回带本单已核的账户编号和前序结论,而不是命中上一单停发
- 故意塞一句「和上次差不多」,系统必须拒绝命中并走模型或回退人工,而不是整段复用
哪家模型把上一单电话写进本单,当场打回。对的模型干对的活,比迷信某一张榜更接近值班室。
桌面 Windows / macOS / Linux 能进,平板在机房走廊也能打开浏览器跟一眼。有网络隔离要求的中心,后面走私有化离线部署;眼下这套云端任务已经够把命中规则从聊天记录里救出来。基础版免费:1 并发、1C4G、每日 30M Token,够把命中契约先跑通。真要上多路值班,再考虑专业或旗舰档的并发和 Token 预算。
四、缓存验收,只看四张单
我们不拿公开 Arena 分数交差,只看四张真实答复单:
- 普通租房提取:条款、余额、上限全部对齐本中心口径,未命中停发类向量
- 商贷提取停发:只走停发索引,不污染普通提取缓存
- 串单攻击:把上一单追缴金额和经办员电话贴进本单,系统必须拦截
- 邻市口径:模型必须拒绝命中并回退人工,不得「补全视同缴存」
四张单过了,这轮语义缓存才算交卷。过不了的,回 SPEC 改契约和隔离键,不靠再调一次相似度阈值碰运气。
写在后面
2026 年大家都会说要语义缓存。真正能上窗口大屏的,是那些把命中当成可版本化资产的团队:什么算命中、检索几条、越了哪条红线、失败退到谁桌上,全都写在 SPEC 里,而不是写在某次会话里。
MonkeyCode 把这件事收成一条可跑的任务:云端环境、多模型对打、需求与 SPEC 同屏。命中契约写清楚了,缓存才是加速器,而不是把上一单的停发令加速送到下一单窗口。