WeClaw_87|19K tokens 的「你好」:我们把系统提示词减掉了 80%,还顺手让一篇论文的措辞名副其实

WeClaw_87|19K tokens 的「你好」:我们把系统提示词减掉了 80%,还顺手让一篇论文的措辞名副其实
Hi带娃的我热爱AI 大模型应用落地、意识解码与 AI 开发工具链。 创业路上用技术换时间一起把 AI 变成生产力 WeClaw_8719K tokens 的「你好」我们把系统提示词减掉了 80%还顺手让一篇论文的措辞名副其实系列文章第 87 篇- 提示词预算 · 锚点切分 · 按意图注入 · 整模块丢弃 · 灰度回退 专栏信息《从零到一构建跨平台 AI 助手WeClaw 实战指南》专栏专栏定位面向开发者和技术决策者的实战专栏用真实案例和完整代码带你理解如何构建生产级 AI 应用本文记录一次「给系统提示词减肥」的完整战役。用户说一句「你好」模型要先读完 19K tokens 的股票操作纪律、OCR 防泄漏规则和论文生命周期管理然后才回一句「你好呀」。这不是修辞是 WeClaw 改造前的真实加载行为。这篇讲我们怎么在不破坏任何既有行为、不触碰任何论文复现契约的前提下把 10 个典型场景的系统提示词总量从 244,357 tokens 砍到 48,845−80.0%以及中途否决掉的三条弯路。‍ 作者与项目作者简介翁勇刚 WENG YONGGANG新概念龙虾-WeClaw 开发团队负责人一群专注于跨平台 AI 应用的实践者理念“再复杂的技术也能用代码讲清楚” 项目地址https://github.com/wyg5208/weclaw.git 官网地址https://weclaw.link 作者 CSDNhttps://blog.csdn.net/yweng18⭐ 欢迎 Star⭐、Fork、贡献代码 摘要本文结构概览一句「你好」为什么要读 19K tokens问题的量化→ 三条被否决的瘦身路线以及否决理由思辨→ 两轮评审把一个方案从「看起来对」磨到「构造性对」方案演进→ 锚点切分 意图注入 模块预算三件套的技术实现 → 10 场景实测数据与门禁验收 → 一个意外收获论文里 “lightweight” 的措辞从虚假宣传变成了事实陈述。核心结论系统提示词膨胀的根因不是「写多了」而是装配方式错了——全量注入让每个请求都为所有领域付费安全的瘦身不是删文本而是重构装配链内容一行不丢行多重集等价加载量按需付费灰度开关 字节级回退不是保守而是让高风险重构敢动手的前提。一、问题每个请求都在为全部 13 个领域付费WeClaw 的系统提示词由一段核心常量CORE_SYSTEM_PROMPT构成33,533 字符实测约 19.3K tokens。里面装着 13 个领域的工具选择指南浏览器、文档、金融、数据分析、创作、语音、古诗词、专业文档、学术、OCR 扫描、菜谱、通讯天气、定时任务——每个领域都是一段带「严禁」「必须」字样的硬规则。装配逻辑简单粗暴无论用户说什么全量注入。于是出现了这样的账单场景用户实际说了什么模型要先读多少闲聊「你好呀」27,983 tokens问天气「今天北京天气怎么样」22,401 tokens写首诗「写一首秋天的诗」27,983 tokens一个只涉及天气的请求为什么要携带「量化分析严禁手工绕行 stock_screen」「论文项目须用 paper_lifecycle.update_phase 记录进度」这些纪律答案是没有任何为什么装配函数只会做加法。更尴尬的是学术层面的连锁问题。我们有一篇在投论文CFTA异步工具编排模式声称语音快聊路径使用 “a lightweight system prompt”——实测这条路径注入的是全量核心19.9K tokens。“lightweight” 是纯粹的虚假宣传是一颗等着被审稿人引爆的雷。诊断结论这不是「提示词写多了」的问题。每段指南在其领域内都是必要的硬规则删不得。问题在于装配方式——全量注入让成本与请求无关只与系统总规模挂钩。二、思辨三条被否决的路线动手之前我们认真评估过四条路线否决了三条。这部分「不做什么」的思辨比最终方案本身更值钱。路线 A纯去重——否决但保留为前置批次最直觉的想法33K 字符里有多少重复实测扫了一遍重复文本只有约 960 字符的收益。去重是干净的、零风险的值得做后来作为 P0 批次落地但它解决不了问题去重后日常请求仍要读约 13K tokens稳定压在 15K 安全线上方。去重是卫生不是手术。路线 BLLM 在线摘要——否决理由有四用一个小模型在每轮请求前把系统提示词「压缩」成摘要听起来很优雅。评估后否决四条理由一条比一条硬延迟与成本每轮请求多一次 API 调用恰好打击我们最想优化的首响应延迟不可控摘要模型可能丢掉「严禁」「必须」这类硬规则——而恰恰是这些规则在防事故破坏 prefix 缓存摘要结果每轮漂移LLM 服务端的前缀缓存彻底失效实际 token 成本不降反升不可审计压缩后的提示词出了行为问题你无法定位是哪条规则丢了。路线 C按 tier/置信度收窄——否决风险外溢意图分类器本来就输出置信度「低置信度就少注入」看似顺理成章。但排查发现 tier 机制自身存在既有缺陷收窄逻辑与工具 schema 暴露耦合在它上面再叠一层提示词收窄等于把两个有缺陷的判断串联。我们没有修 tier而是绕开了它——这个决策后来被证明是对的提示词装配与 tier 解耦后tier 的任何后续修复都不会波及这里。路线 D采纳结构化拆分 按意图装配把全量常量原样保留从它派生出一套结构化视图核心残量 13 个领域指南 一行式索引装配时按意图只取需要的部分。关键设计前提原常量不删不改任何异常一个配置开关回到原点。三、方案演进两轮评审把「看起来对」磨成「构造性对」方案初稿V1自我感觉良好然后被两轮评审打出了 4 个 Critical、10 个 Warning、7 个 Suggestion。挑三个改变了最终形态的发现发现一切分不能靠复制粘贴。V1 打算把 CORE 的 33K 文本手工切成 14 份新常量。评审指出这等于凭空制造 33K 字符的漂移面——CORE 改一个字切分副本就静默失真。改成运行时锚点切分切分代码只记录每个章节的起止锚点章节标题字符串导入时从活体 CORE 现场切出。CORE 是单一事实源切分是它的视图。锚点失效章节改名、被删在导入时直接抛异常——红灯优于静默。发现二等价性必须可证明不能靠目测。「切完应该没丢东西吧」这种话在评审里是不及格的。最终方案给出构造性证明CORE 中未被任何指南区间覆盖的部分按原顺序拼接就是核心残量——由定义可知核心残量 全部指南 ≡ 原 CORE行多重集。验收脚本把这句话变成可执行断言一行内容丢失即红。发现三三篇在投论文是冻结面。全库 grep 后确认多篇论文的实验脚本依赖意图分类器等符号的精确行为而提示词改造极易顺手「优化」到它们。于是写入冻结契约detect_intent_with_confidence等符号只增不改另配 10 条 query 的快照护栏——任何破坏意图行为的改动门禁当场红灯。这三条把方案从「一个瘦身技巧」变成了「一次有安全骨架的重构」。最终方案文档 463 行其中约三分之一是风险表与否决记录。四、技术栈三件套实现4.1 锚点切分新模块 domain_guides.py切分核心逻辑不到 60 行骨架是「先校验后切割」_GUIDE_SEGMENTS[# (指南名, 起始锚点, 结束锚点)——锚点必须是 CORE 中唯一子串(browser_guide,**浏览器工具选择指南】**,【文档处理工具选择指南】),(finance_guide,6. **stock_query**,【数据分析工具选择指南】),# …共 15 段ocr_scan_guide 由三段合并覆盖 13 个指南]def_build_split(core:str):intervals[]forname,start,endin_GUIDE_SEGMENTS:si,eicore.find(start),core.find(end)ifsi0orei0:raiseValueError(f锚点未找到:{name})# 红灯绝不静默ifcore.find(start,si1)0:raiseValueError(f锚点不唯一:{name})# 唯一性校验intervals.append((si,ei,name))# 段间按序、不重叠校验 → 指南段 strip 合并# 核心残量 未覆盖区间按序拼接构造性等价的关键切分结果P0 去重后的实测规模产物规模用途CORE_RULES 核心残量3,260 字符始终注入身份/通用纪律13 个领域指南362 ~ 7,345 字符/个按意图注入单请求 ≤3 个 ≤12K 字符GUIDE_INDEX 一行式索引1,208 字符未命中意图时的兜底速查表4.2 按意图注入三条规则 一个反查表装配函数接受一个guide_override参数语义三分None按INTENT_GUIDE_MAPPING15 个意图 → 指南列表收集命中意图按(-score, 名称)确定性排序取前 3__index__强制注入一行式索引direct_tool 反查失败时的兜底具体指南键只注入该指南斜杠直达工具时TOOL_GUIDE_REVERSE反查目标工具所属指南。两条互斥与兜底规则值得展开互斥用户明问「你都有哪些功能」时注入的是能力菜单此时跳过索引兜底——两个「概览型」内容不得同场兜底定义「未命中」被定义为映射结果为空而不是「置信度低」。这个区分来自实测10 条护栏 query 里有 4 条含「写一首秋天的诗」返回空意图——分类器存在覆盖盲区这些请求一律由索引兜底不做任何置信度判断。4.3 模块列表 预算渲染器丢弃的艺术装配产物不再是字符串而是带丢弃优先级的模块列表(core_rules, 内容, -1) # -1 永不丢弃 (companion, 内容, -1) # 心理关怀锚点不可丢 (skills, 内容, 45) (files, 内容, 50) (guide_*, 内容, 60/65/70) # 相关性越低越先丢 (guide_index,内容, 75) (capabilities,内容, 80) # 最先被丢渲染器在双预算下工作字符硬上限 26,000从 50,000 收紧 token 软预算 15,000用真实估算器废弃了沿用已久的len//2假设——实测中文密度 0.571 tok/字符旧系数高估容量 14%。超限时的纪律有两条反直觉但重要的规定整模块丢弃禁止句中截断。旧代码的prompt[:N]会把一条「严禁」规则从中间切开留下语义残骸整模块丢弃保证活下来的每段都是完整的丢弃后回补索引。如果领域指南被丢光了渲染器补回 1,208 字符的一行式索引——模型至少知道「有哪些领域、细节按需」而不是对工具生态一无所知。4.4 灰度开关一行配置的回退契约# config/default.toml [prompts.domain_guides] enabled false # 一键回退原 CORE 全量路径逐字节等价改造前因为原常量从未被修改回退路径与改造前的输出逐字节一致——这不是「行为差不多」是可用断言验证的。验收脚本真的 monkeypatch 了开关、真的断言了字节级等价。五、五条链路一套装配WeClaw 共有五条会生成系统提示词的链路改造前各有各的拼接代码复制粘贴分叉是双路径行为漂移的温床。P2 批次抽出共享装配函数后全部归一链路装配方式实测规模普通对话流式/非流式意图装配 技能/经验/文件注入 预算渲染闲聊 3,465 tokens语音快聊固定三模块核心残量陪伴索引~3,465 tokens斜杠直达工具工具反查指南未命中强制索引单指南 ≤7.3K 字符斜杠直达技能复用指令意图正常装配同意图场景CFTA 异步链路正常装配 不可丢弃的判定指令模块≤26K 硬上限内统一之后「同一输入经两条路径产出不同提示词」这类漂移在构造上不再可能——验收门禁里有逐字节一致性断言守着。六、效果数据说话6.1 token 账单真实估算器10 场景 × 改造前后场景改造前改造后降幅闲聊27,9833,465−87.6%创作-诗词 / 语音 / 学术27,9833,465−87.6%浏览器19,8803,582−82.0%定时19,8803,465−82.6%文档-格式转换22,4015,265−76.5%日常-天气22,4015,984−73.3%金融-股票分析19,8805,794−70.9%能力菜单27,98310,895−61.1%合计244,35748,845−80.0%降幅最大的恰是最常见的请求闲聊和空意图场景不再为 13 个领域付费只带一张 1,208 字符的索引地图。6.2 质量账单内容一行没丢切分等价核心残量 13 指南 ≡ 原 CORE非空行多重集断言通过场景正确性天气请求含默认城市机制、不含股票纪律股票分析含「严禁绕行」学术场景含论文生命周期规则——7 场景逐项断言冻结护栏10 条 query 的意图快照与基线全一致论文复现面零漂移回归定向回归 274 项零新增失败12 个失败经git stash干净 HEAD 对照全部为既有问题。6.3 意外收获论文措辞从虚假变成事实CFTA 论文里 “lightweight system prompt” 的论断改造前是 19.9K tokens 的虚假宣传改造后是 ~3.9K tokens 的事实陈述。我们按论文一致性清单同步修订了三篇在投论文的 5 处漂移含预算数字口径、意图类别数统一、一处成本论证的前提限定并主动在 Limitations 补了一段敏感性披露瘦身后 CFTA 的绝对延迟收益会从 ~11.5s 缩到 ~8-10s但相对降幅稳定在 55-58%——收益来源是把工具执行移出首响应关键路径而不是掩盖臃肿提示词。主动披露比被审稿人发现体面得多。七、沉淀四条可迁移的经验膨胀问题的根因常在装配而非内容。先问「这段话在这个请求里为什么出现」再决定删不删高风险重构的三件套原物保留回退面 构造性等价可证明不丢东西 灰度开关一键回到原点。三件齐备重构才敢动手丢弃要有优先级截断是懒政。prompt[:N]切出来的语义残骸比不切更危险给论文时代的项目加冻结护栏。实验脚本依赖的符号就是公共 API改动前先立快照断言红灯比道歉便宜。完整的验收脚本在仓库scripts/下verify_domain_guides_split / verify_prompt_assembly_p2 / probe_sp_tokens全部只读、可重复执行。下一篇第 88 篇讲这场战役里容易被忽略的另一半如何在「三篇论文依赖活体代码」的约束下设计安全骨架。本文涉及的代码src/core/domain_guides.py新模块、src/core/prompts.py、src/core/agent.py、config/default.toml版本v9.13.0 迭代文档docs/开发记录/v9.13.0_2026-08-10_系统提示词瘦身方案V3落地.md

最新新闻

日新闻

周新闻

月新闻