端插件的桥修通之后,问题集中到云端的大脑——提示词。先立规矩:提示词全文是内部资产,一篇都不贴(系列写作纪律之一),能写的只有版本之间"改了什么、为什么"。
1. 五个角色,一套编排
云侧不是一个提示词,是一套多模型编排,五个角色各拿一份:分析模型是主脑,决定这轮做什么、调什么工具;聊天模型把交付摘要翻译成用户能读的回复;存储分析模型从对话切片里提取该长期记住的信息;FC(Function Call,函数调用)是翻译官,把分析模型的意图翻译成插件调用;兜底模型在链路异常时保底回复。
FC 这一层没有用平台自带的函数调用,而是自己搭翻译流。原因有二:平台自带的 FC 对这个项目是黑盒,过程不可观测、历史无法记录,而"每一步可对账"从上一幕起就是底线;模型内部的函数调用还会夹带许多不必要的内部输入输出,token 白白花掉。自己搭的流,翻什么、怎么翻、怎么对账,全在明处。
从 v1 起每一代都完整归档,最后攒下三十九份——这套档案是云端大脑的发育史,也是本幕唯一的素材来源。
2. P 编号:给问题发身份证
提示词的迭代不靠灵感,靠问题推着走。为了不让问题散落在对话记录里,9 月 19 日建了一个问题跟踪台:每个问题发一个 P 编号,配状态灯——待讨论、进行中、已解决、挂起;要深挖的单独立档,取证全部落进测试日志。到 9 月 24 日,编号排到了 P16。
回看这张表,v6 之后提示词的每一次改版,背后都站着至少一个 P。
3. 循环:五种形态与续轮三段式
9 月 20 日的实测取证,把"死循环"钉在案板上——五种形态:同一次检索 4 连发被用户打断;4 连发后第 5 轮碰巧自纠;空结果 2 连发,还幻觉出"调用失败";非空结果 6 连发不自纠……共同点很快浮出来:和返回内容无关,空结果循环,非空结果照样循环。
根因(P6)朴素得出人意料:v7 只有"从用户消息起手"的首轮模板,没有续轮模板。模型每轮都把自己当第一轮,从头确定性重推,自然逐字重复;偶尔的自纠只是碰巧从历史起手的纯概率事件,不可依赖。
修复是 v8 的续轮三段式:复述最新执行 → 对照目标评估 → 三选一决策——先说清"我刚做了什么",再判断"离目标还差什么",最后决定接着调、要信息还是交付。
同一份实测还顺手证伪了一条旧规则:提示词里写的"最多 5 轮"毫无作用——LLM 每轮从头生成,根本无法自数轮次。轮次治理只能交给云侧硬上限,这条规则删了。
4. 三重转写:FC 改当参数生成器
P7 盘出的浪费更隐蔽:一份数据在链路里被 LLM 逐字转写三遍——FC 把插件返回搬一遍(纯搬运,零加工),分析模型写进交付摘要一遍,聊天模型再翻译给用户一遍。第一遍是纯浪费,还引入转写保真和截断两重风险。
修复是一次架构升级:FC 从"转述层"改造成"参数生成器"。分析模型只输出意图声明,不带调用语法;FC 把它翻译成结构化 calls JSON,只蹦几十个 token;平台按 JSON 直连插件执行,返回原文和参数 JSON 一起拼装回分析模型。数据从"三遍转写"降到"单遍",FC 那遍 LLM 转写彻底消失。
新架构带来新故障模式:翻译可能有损耗。对策是对账——意图、参数、返回三方对照。实测又发现插件的参数回显时有时无,于是定死:以 FC 参数 JSON 为对账权威,不依赖插件 echo。
5. 澄清、假完成、复合关键词
三个小一号的修订,各修一种"说谎"。
**P2,云侧没有选择器节点。**需要用户拍板时,分析模型不再等一个不存在的"提问分支",直接结束本轮,交付摘要写明"需要用户决定:事项与候选",用户下一轮的回答自然进历史。写操作的授权边界同时定死:用户明确指令才算授权,自行推导的写操作不执行——用户没说,就是不做。
**P3,零工具轮次宣称"已完成"。**模型一个工具没调,回复却说"已经完成了"。双向约束:分析侧新增"宣称与 tool 返回对齐",聊天侧新增核验"无 tool 行支撑的完成宣称不得转述"。
P5,复合关键词查空。“淮南,费用"被塞进同一个 query,端侧按整串子串匹配,必然查空;模型还把空结果当最终答案,向用户误报"确实没有”。修复定下单关键词铁律:意图声明一行只放一个关键词,复合查询拆成两行、翻译成两条 calls。
6. 套件统一:v8
9 月 21 日收口。四份文档统一到 v8——分析、存储分析、FC、聊天(聊天 v3 内容已是 v8 口径,并轨更名),六个旧文件归档。这次统一拆掉两样旧东西:转述层移除(存储流程同样改走"意图行 → FC 翻译 → 插件直连",与主循环同构);步进状态机拆除(计划/推进/调整那套步骤编号退场)。顺带又删了一条"最多 3 轮"——和上一节同一个理由,模型数不了自己的轮次。
到这一步,云端五个角色的口径第一次完全一致。按系列纪律交代一句:这一幕里的多数修复,写进档案时还挂着"待实测"的标签,正式的整批验证排在第七幕提审前的真机回归里。
本章沉淀
- 提示词即产品:每一版改写都由一个实测问题驱动,三十九份归档就是变更日志
- 循环的根因在模板不在模型:没有续轮模板,模型每轮都当自己第一轮
- LLM 无法自数轮次:"最多 N 轮"写进提示词无效,轮次治理归云侧硬上限
- 数据能绕开 LLM 就绕开:FC 参数生成器 + 插件直连,三遍转写降为单遍;对账以参数 JSON 为权威
- 宣称要对齐证据:无工具返回支撑的"已完成",两侧都不许出现
- 用户没说就是不做:写操作的授权边界
下章预告
云侧稳了,端侧数据库却在冷启动时无声吞掉一轮完整对话——没有报错,历史里只留下一轮没有问题的"孤儿回复"。排查从一条比数据库初始化早 5ms 到达的日志开始。下一幕:5ms 竞态窗口与"查询即引用"。
懿路向前 · AI辅助整理
2026-10-31