





















@@ -371,6 +371,36 @@ describe("installToolResultContextGuard", () => {
371371expect((err as MidTurnPrecheckSignal).request.route).toBe("compact_only");
372372}
373373});
374+it("does not count tool-result details toward the context budget", async () => {
375+const agent = makeGuardableAgent();
376+const contextForNextCall = [
377+makeToolResultWithDetails("call_small_text", "x".repeat(100), "d".repeat(50_000)),
378+makeToolResultWithDetails("call_another", "y".repeat(120), "e".repeat(80_000)),
379+];
380+381+const transformed = (await applyGuardToContext(agent, contextForNextCall)) as AgentMessage[];
382+383+expect(transformed).toBe(contextForNextCall);
384+expect(getToolResultText(transformed[0])).toBe("x".repeat(100));
385+expect(getToolResultText(transformed[1])).toBe("y".repeat(120));
386+expect((contextForNextCall[0] as { details?: unknown }).details).toBeDefined();
387+expect((contextForNextCall[1] as { details?: unknown }).details).toBeDefined();
388+});
389+390+it("ignores large tool-result details when deciding preemptive overflow", async () => {
391+const agent = makeGuardableAgent();
392+const contextForNextCall = [
393+makeUser("small user prompt"),
394+makeToolResultWithDetails("call_1", "a".repeat(50), "d".repeat(30_000)),
395+makeToolResultWithDetails("call_2", "b".repeat(50), "d".repeat(30_000)),
396+makeToolResultWithDetails("call_3", "c".repeat(50), "d".repeat(30_000)),
397+makeToolResultWithDetails("call_4", "e".repeat(50), "d".repeat(30_000)),
398+];
399+400+const transformed = (await applyGuardToContext(agent, contextForNextCall)) as AgentMessage[];
401+402+expect(transformed).toBe(contextForNextCall);
403+});
374404});
375405376406type MockedEngine = ContextEngine & {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。