预设兼容:按真实抓包对齐装配与包装层,补上声明式工具与预设正则。

- 装配只认 prompt_order.enabled;squash_system_messages 只合并相邻 system(新增 system 档,连接符按酒馆用单换行)
- 包装层:new_chat_prompt、示例对话(new_example_chat_prompt + <START> 切段 + name)、角色卡三块与 personality_format/scenario_format、{{user}}/{{char}} 取值、任务契约并进预设条目
- 工具协议:按 ToolBindings / 伪工具协议数据声明真 tools(presetToolPolicy=preset),工具描述用到的条目不再重复作为消息发出
- 正则:promptOnly 作用于对话历史(含 depth 过滤)、写入时脚本改写回复;{{//}} 注释按配平扫描
- tools/st-request-diff:真假上游抓包对比工具、三份预设的机制结论与实测报告
This commit is contained in:
2026-10-23 00:13:08 +08:00
parent ed09e5c831
commit 9dc927282f
94 changed files with 11558 additions and 413 deletions
+5 -1
View File
@@ -119,10 +119,14 @@ order 4: 用户.最新输入(full)
- 排序表里出现该 ref 时,按 **projection** 动态裁剪后注入(不是整段永远塞满)。
- 若尚未写入历史,可用 `运行.事件流` + `用户.最新输入` 拼兜底。
- 投影建议:`summary`(默认)/ `fields`(更短)/ `full`(更长)/ `fixed`(几乎不注入)。
- 裁剪是**块级 + 滞回**的(`projectDialogueHistory()`):段数在 n~2n 之间原样全给,超过 2n 才裁回 n。
这样历史 message 数组的首条不是每轮都变,前缀缓存每 n 轮才断一次。
**不要**改回「每轮取最近 n 段」——那会让整段前缀每轮全价重发。
- 投影后的正文会被 `parseHistoryMessages()` 切成真多轮 message,进预设的 `chatHistory` 洞。
### 4.2 拼装
Runtime 按 inserts 数组顺序拼进单条 user 上下文(`assembleWorkerContext` **不再**按 static/dynamic 重排)。
Runtime 按 inserts 数组顺序拼块,再由 `workerContextToBags()` 分袋(before / history / after / turn / postTurn)。
`tier` 仅作缓存提示(历史标签之前偏 static,之后偏 dynamic)。
### 4.3 可编排