统一在预设包装层做提示词夹心,并修正探针实际发信路径。

让所有模型请求与界面预览共用同一套夹心,避免探针与运行时行为分叉。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-10 02:18:00 +08:00
co-authored by Cursor
parent beb4c332e6
commit d65ebbce8b
7 changed files with 252 additions and 32 deletions
+55 -2
View File
@@ -51,9 +51,11 @@ describe("assemblePlayWorkerMessages", () => {
});
expect(messages.map((m) => [m.role, m.content])).toEqual([
["system", "SKILL"],
["system", "MAIN"],
["system", "### 舞台\n\n古镇夜雨"],
[
"system",
"### 任务契约\n\nSKILL\n\n### 舞台\n\n古镇夜雨",
],
["system", "用户:昨天来过"],
["system", "### 变量\n\nHP 3"],
["user", "我推门"],
@@ -62,6 +64,57 @@ describe("assemblePlayWorkerMessages", () => {
]);
});
it("does not emit any message before the first preset order entry", () => {
const report = importSillyTavernPreset({
prompts: [
{
identifier: "wb-head",
name: "世界书首",
role: "system",
content: "<世界书>",
},
{
identifier: "chatHistory",
name: "History",
role: "system",
marker: true,
},
{
identifier: "wb-tail",
name: "世界书尾",
role: "system",
content: "</世界书>",
},
],
prompt_order: [
{
character_id: 1,
order: [
{ identifier: "wb-head", enabled: true },
{ identifier: "chatHistory", enabled: true },
{ identifier: "wb-tail", enabled: true },
],
},
],
});
const messages = assemblePlayWorkerMessages({
systemPrompt: "创作步骤契约",
preset: report.preset,
pack: {
worldBookBefore: [{ id: "lore", name: "设定", content: "港口" }],
history: "昨日对话",
worldBookAfter: [],
turn: "本轮",
postTurn: [],
},
});
expect(messages[0]).toEqual({ role: "system", content: "<世界书>" });
expect(messages.some((m) => m.content === "创作步骤契约")).toBe(false);
expect(
messages.some((m) => m.content.includes("### 任务契约\n\n创作步骤契约")),
).toBe(true);
});
it("does not fill ST charDescription even if resolver returns content", () => {
const report = importSillyTavernPreset({
prompts: [