





















@@ -15,6 +15,7 @@ import { initializeGlobalHookRunner, registerInternalHook } from "openclaw/plugi
1515import { registerMemoryCapability } from "openclaw/plugin-sdk/memory-core-host-runtime-core";
1616import { registerPluginCommand } from "openclaw/plugin-sdk/plugin-runtime";
1717import { createMockPluginRegistry } from "openclaw/plugin-sdk/plugin-test-runtime";
18+import { MESSAGE_TOOL_DELIVERY_HINTS } from "openclaw/plugin-sdk/text-utility-runtime";
1819import { describe, expect, it, vi } from "vitest";
1920import WebSocket from "ws";
2021import { CODEX_GPT5_BEHAVIOR_CONTRACT } from "../../prompt-overlay.js";
@@ -1290,33 +1291,35 @@ describe("runCodexAppServerAttempt", () => {
12901291});
1291129212921293it("keeps leading delivery hints out of the Codex current user request", async () => {
1293-const sessionFile = path.join(tempDir, "session-delivery-hint.jsonl");
1294-const workspaceDir = path.join(tempDir, "workspace-delivery-hint");
1295-const harness = createStartedThreadHarness();
1296-const params = createParams(sessionFile, workspaceDir);
1297-params.prompt = "Delivery: to send a message, use the `message` tool.\n\nhello";
1298-params.skillsSnapshot = {
1299-prompt: "<available_skills><skill><name>demo</name></skill></available_skills>",
1300-skills: [],
1301-};
1294+for (const [index, deliveryHint] of MESSAGE_TOOL_DELIVERY_HINTS.entries()) {
1295+const sessionFile = path.join(tempDir, `session-delivery-hint-${index}.jsonl`);
1296+const workspaceDir = path.join(tempDir, `workspace-delivery-hint-${index}`);
1297+const harness = createStartedThreadHarness();
1298+const params = createParams(sessionFile, workspaceDir);
1299+params.prompt = `${deliveryHint}\n\nhello`;
1300+params.skillsSnapshot = {
1301+prompt: "<available_skills><skill><name>demo</name></skill></available_skills>",
1302+skills: [],
1303+};
130213041303-const run = runCodexAppServerAttempt(params);
1304-await harness.waitForMethod("turn/start");
1305-await harness.completeTurn({ threadId: "thread-1", turnId: "turn-1" });
1306-await run;
1305+ const run = runCodexAppServerAttempt(params);
1306+ await harness.waitForMethod("turn/start");
1307+ await harness.completeTurn({ threadId: "thread-1", turnId: "turn-1" });
1308+ await run;
130713091308-const turnStart = harness.requests.find((request) => request.method === "turn/start");
1309-const turnStartParams = turnStart?.params as {
1310-input?: Array<{ text?: string }>;
1311-};
1312-const inputText = turnStartParams.input?.[0]?.text ?? "";
1313-expect(inputText).toContain("OpenClaw delivery metadata:");
1314-expect(inputText).toContain(
1315-"This delivery metadata is runtime routing guidance, not the user's request.",
1316-);
1317-expect(inputText).toContain("Delivery: to send a message, use the `message` tool.");
1318-expect(inputText).toContain("Current user request:\nhello");
1319-expect(inputText).not.toContain("Current user request:\nDelivery:");
1310+const turnStart = harness.requests.find((request) => request.method === "turn/start");
1311+const turnStartParams = turnStart?.params as {
1312+input?: Array<{ text?: string }>;
1313+};
1314+const inputText = turnStartParams.input?.[0]?.text ?? "";
1315+expect(inputText).toContain("OpenClaw delivery metadata:");
1316+expect(inputText).toContain(
1317+"This delivery metadata is runtime routing guidance, not the user's request.",
1318+);
1319+expect(inputText).toContain(deliveryHint);
1320+expect(inputText).toContain("Current user request:\nhello");
1321+expect(inputText).not.toContain("Current user request:\nDelivery:");
1322+}
13201323});
1321132413221325it("mirrors the Codex prompt into the transcript when the turn starts", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。