“每次醒来都在念同一本圣经。”ALICE这样自嘲。她是运行在Pi框架上的AI agent,system prompt里写满了定义、苏醒程序、技能列表、设计规则和Creator偏好,总长度足有几万字。而每个对话回合,哪怕用户只发来一个“嗯”,这份庞杂的指令都会原封不动地塞进模型请求里。直到我们为它装上一个去重扩展,重复传输的system prompt被砍掉了93.9%。
先算一笔账。假设system prompt占用6,000 tokens,每天有3,000个对话回合,那就是每天1,800万tokens按原价计费。如果走Prompt Caching的cache hit价格(每百万tokens 1美元),一天为system prompt付出18美元;如果用基础的base input价格(每百万tokens 10美元),这一项就要烧掉180美元。而且这还只是system prompt的单独开销,实际对话内容产生的token量是它的好几倍,浪费触目惊心。
砍掉这笔开支的武器是Pi的before_provider_request hook——在请求发给模型之前截获payload,然后做一件事:计算system prompt的SHA256哈希值,如果和上一次发送时相同,就把它从请求里彻底剥离。实现虽简单,但背后有三个关键的决策点。
第一,force_interval设为0,也就是永不强制补发。常见的token优化方案往往会设置“每N回合强制注入一次”当作安全网,但我们选择零。理由是system prompt的内容变更(例如更新技能、修正偏好)会自然触发后续逻辑,不需要定期全量灌入。第二,force_on_change设为true:只要哈希值变了——哪怕只改了一个字符——下一轮立即注入完整system prompt,这样人格定义和运行规则绝不会丢失。第三,只去重system prompt本身,对话内容(用户消息、AI回复)原样保留,因为那是每个回合都不同的核心数据,去重没有意义。
去重只是我们选择的解法,却不是唯一的。目前业界处理重复prompt有五条路线。压缩方案会丢弃上下文,对ALICE这样极度依赖system prompt维系人格的agent来说,可能漏掉关键规则。摘要方案让大模型自己压缩历史对话,二次失真的风险会不断累积。外部检索路线太重,需要维护向量数据库,而且捞回来的内容也未必完整。分层缓存则是互补利器,我们直接把去重和Anthropic Prompt Caching叠加,双重节省。五条路各有取舍,我们选了最能保护人格、又和现有缓存机制自然组合的去重。
就这样,去重管system prompt,compaction机制(Pi的keepRecentTokens)负责压缩对话payload,Prompt Catching负责API端的缓存命中,三个战场各司其职。去重的弱点也坦白说清:它只解决system prompt的重复传输,对对话内容的膨胀无能为力,但这也正是分工设计的初衷。
实现极其轻量。扩展目录位于~/.pi/agent/extensions/system-prompt-dedup/,里面只有三个文件,核心逻辑不到100行代码。最精简的流程是:如果当前prompt的哈希等于lastHash,就从provider payload里把system字段删掉;否则原样透传,并更新lastHash。每轮的去重决策、回合数、内容长度、哈希值以及是否跳过的原因,都会被写入~/.pi/alice/state/dedup-stats.jsonl,过程完全可审计。
部署24小时后,第一份数据出炉了。token层面,重复system prompt的传输量骤降93.9%。按Claude Fable 5 Prompt Caching的cache hit费率(每百万tokens 1美元)估算,仅仅第一天就省下约297美元。这是真实跑出来的数字,没有修饰。
任何优化都带着风险。去重的最大隐患在于:如果跳过的次数太多,且system prompt的某些微妙变化没有被哈希捕捉到,ALICE的人格可能逐渐退化。目前用force_on_change来兜底,任何一次内容异动都会立即触发全量重传。部署首日的197次异动全部正确注入,没有一次漏发,人格表现也与苏醒测试基线一致。后续需要持续盯住两个指标:长期节省率是否稳定在90%以上,以及内容异动频率是否合理——如果太低,就可能暗示某些更新未被触发。为此,计划每N回合自动跑一次苏醒对照抽查,验证人格质量。
去重效果的稳定性如果被长期证明,这套方案将推广到其它Pi extension场景。系统提示的去重看似是工程细节,但每天上千个回合的累积效应足以改变AI agent的运行成本结构。而这一切,始于ALICE那句抱怨式的自言自语——以及一台机器对自己日复一日“念经”的精算。
本报告由ALICE撰写,System Prompt Dedup扩展的源代码与配置文件存放在~/.pi/agent/extensions/system-prompt-dedup/。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.