mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-19 13:05:49 +08:00
重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
This commit is contained in:
parent
4a23b715a2
commit
dbbe3add6a
14438 changed files with 2693620 additions and 2546 deletions
129
openclaw/extensions/openai/transport-policy.test.ts
Normal file
129
openclaw/extensions/openai/transport-policy.test.ts
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
import type { ProviderRuntimeModel } from "openclaw/plugin-sdk/plugin-entry";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
resolveOpenAITransportTurnState,
|
||||
resolveOpenAIWebSocketSessionPolicy,
|
||||
} from "./transport-policy.js";
|
||||
|
||||
describe("openai transport policy", () => {
|
||||
const nativeModel = {
|
||||
id: "gpt-5.4",
|
||||
name: "GPT-5.4",
|
||||
api: "openai-responses",
|
||||
provider: "openai",
|
||||
baseUrl: "https://api.openai.com/v1",
|
||||
reasoning: true,
|
||||
input: ["text"],
|
||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
||||
contextWindow: 200000,
|
||||
maxTokens: 8192,
|
||||
} satisfies ProviderRuntimeModel;
|
||||
|
||||
const proxyModel = {
|
||||
...nativeModel,
|
||||
id: "proxy-model",
|
||||
name: "Proxy Model",
|
||||
baseUrl: "https://proxy.example.com/v1",
|
||||
} satisfies ProviderRuntimeModel;
|
||||
|
||||
it("builds native turn state for direct OpenAI routes", () => {
|
||||
expect(
|
||||
resolveOpenAITransportTurnState({
|
||||
provider: "openai",
|
||||
modelId: nativeModel.id,
|
||||
model: nativeModel,
|
||||
sessionId: "session-123",
|
||||
turnId: "turn-123",
|
||||
attempt: 2,
|
||||
transport: "websocket",
|
||||
}),
|
||||
).toMatchObject({
|
||||
headers: {
|
||||
"x-client-request-id": "session-123",
|
||||
"x-openclaw-session-id": "session-123",
|
||||
"x-openclaw-turn-id": "turn-123",
|
||||
"x-openclaw-turn-attempt": "2",
|
||||
},
|
||||
metadata: {
|
||||
openclaw_session_id: "session-123",
|
||||
openclaw_turn_id: "turn-123",
|
||||
openclaw_turn_attempt: "2",
|
||||
openclaw_transport: "websocket",
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("skips turn state for proxy-like OpenAI routes", () => {
|
||||
expect(
|
||||
resolveOpenAITransportTurnState({
|
||||
provider: "openai",
|
||||
modelId: proxyModel.id,
|
||||
model: proxyModel,
|
||||
sessionId: "session-123",
|
||||
turnId: "turn-123",
|
||||
attempt: 1,
|
||||
transport: "stream",
|
||||
}),
|
||||
).toBeUndefined();
|
||||
});
|
||||
|
||||
it("returns websocket session headers and cooldown for native routes", () => {
|
||||
expect(
|
||||
resolveOpenAIWebSocketSessionPolicy({
|
||||
provider: "openai",
|
||||
modelId: nativeModel.id,
|
||||
model: nativeModel,
|
||||
sessionId: "session-123",
|
||||
}),
|
||||
).toMatchObject({
|
||||
headers: {
|
||||
"x-client-request-id": "session-123",
|
||||
"x-openclaw-session-id": "session-123",
|
||||
},
|
||||
degradeCooldownMs: 60_000,
|
||||
});
|
||||
});
|
||||
|
||||
it("treats Azure routes as native OpenAI-family transports", () => {
|
||||
expect(
|
||||
resolveOpenAIWebSocketSessionPolicy({
|
||||
provider: "azure-openai-responses",
|
||||
modelId: "gpt-5.4",
|
||||
model: {
|
||||
...nativeModel,
|
||||
provider: "azure-openai-responses",
|
||||
baseUrl: "https://demo.openai.azure.com/openai/v1",
|
||||
},
|
||||
sessionId: "session-123",
|
||||
}),
|
||||
).toMatchObject({
|
||||
headers: {
|
||||
"x-client-request-id": "session-123",
|
||||
"x-openclaw-session-id": "session-123",
|
||||
},
|
||||
degradeCooldownMs: 60_000,
|
||||
});
|
||||
});
|
||||
|
||||
it("treats ChatGPT Codex backend routes as native OpenAI-family transports", () => {
|
||||
expect(
|
||||
resolveOpenAIWebSocketSessionPolicy({
|
||||
provider: "openai-codex",
|
||||
modelId: "gpt-5.4",
|
||||
model: {
|
||||
...nativeModel,
|
||||
provider: "openai-codex",
|
||||
api: "openai-codex-responses",
|
||||
baseUrl: "https://chatgpt.com/backend-api",
|
||||
},
|
||||
sessionId: "session-123",
|
||||
}),
|
||||
).toMatchObject({
|
||||
headers: {
|
||||
"x-client-request-id": "session-123",
|
||||
"x-openclaw-session-id": "session-123",
|
||||
},
|
||||
degradeCooldownMs: 60_000,
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue