
















@@ -1380,14 +1380,12 @@ describe("compaction-safeguard recent-turn preservation", () => {
1380138013811381expect(result.cancel).not.toBe(true);
13821382const summaryCall = mockSummarizeInStages.mock.calls.at(-1)?.[0];
1383-expect(summaryCall?.headers).toMatchObject({
1384-"Copilot-Integration-Id": "vscode-chat",
1385-"Editor-Plugin-Version": "copilot-chat/0.35.0",
1386-"Openai-Organization": "github-copilot",
1387-"User-Agent": "GitHubCopilotChat/0.26.7",
1388-"X-Test": "1",
1389-"x-initiator": "user",
1390-});
1383+expect(summaryCall?.headers?.["Copilot-Integration-Id"]).toBe("vscode-chat");
1384+expect(summaryCall?.headers?.["Editor-Plugin-Version"]).toBe("copilot-chat/0.35.0");
1385+expect(summaryCall?.headers?.["Openai-Organization"]).toBe("github-copilot");
1386+expect(summaryCall?.headers?.["User-Agent"]).toBe("GitHubCopilotChat/0.26.7");
1387+expect(summaryCall?.headers?.["X-Test"]).toBe("1");
1388+expect(summaryCall?.headers?.["x-initiator"]).toBe("user");
13911389});
1392139013931391it("does not retry summaries unless quality guard is explicitly enabled", async () => {
@@ -1871,16 +1869,13 @@ describe("compaction-safeguard recent-turn preservation", () => {
18711869const compaction = expectCompactionResult(result);
18721870expect(getApiKeyAndHeadersMock).not.toHaveBeenCalled();
18731871expect(mockSummarizeInStages).not.toHaveBeenCalled();
1874-expect(providerSummarize).toHaveBeenCalledWith(
1875-expect.objectContaining({
1876-previousSummary: "previous provider summary",
1877-customInstructions: expect.stringContaining("Keep milestone names."),
1878-summarizationInstructions: {
1879-identifierPolicy: "custom",
1880-identifierInstructions: "Preserve ticket IDs exactly.",
1881-},
1882-}),
1883-);
1872+const providerInput = providerSummarize.mock.calls[0]?.[0];
1873+expect(providerInput?.previousSummary).toBe("previous provider summary");
1874+expect(providerInput?.customInstructions).toContain("Keep milestone names.");
1875+expect(providerInput?.summarizationInstructions).toEqual({
1876+identifierPolicy: "custom",
1877+identifierInstructions: "Preserve ticket IDs exactly.",
1878+});
18841879const providerMessages = providerSummarize.mock.calls[0]?.[0]?.messages ?? [];
18851880expect(JSON.stringify(providerMessages)).not.toContain("openclaw.runtime-context");
18861881expect(JSON.stringify(providerMessages)).not.toContain("secret runtime context");
@@ -2197,19 +2192,20 @@ describe("compaction-safeguard double-compaction guard", () => {
21972192expect(compaction.summary).not.toContain("No prior history.");
21982193expect(mockSummarizeInStages).toHaveBeenCalled();
21992194const summaryCall = mockSummarizeInStages.mock.calls[0]?.[0];
2200-expect(summaryCall?.messages).toEqual(
2201-expect.arrayContaining([
2202-expect.objectContaining({
2203-role: "custom",
2204-customType: "cron-request",
2205-content: "prepare the daily report",
2206-}),
2207-expect.objectContaining({
2208-role: "toolResult",
2209-toolName: "read",
2210-}),
2211-]),
2212-);
2195+const summaryMessages = summaryCall?.messages ?? [];
2196+const cronRequest = summaryMessages.find(
2197+(message) =>
2198+message.role === "custom" &&
2199+"customType" in message &&
2200+message.customType === "cron-request",
2201+) as { content?: unknown } | undefined;
2202+expect(cronRequest?.content).toBe("prepare the daily report");
2203+expect(
2204+summaryMessages.some(
2205+(message) =>
2206+message.role === "toolResult" && "toolName" in message && message.toolName === "read",
2207+),
2208+).toBe(true);
22132209});
2214221022152211it("continues when messages include real conversation content", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。