






















@@ -73,7 +73,7 @@ describe("openrouter provider hooks", () => {
73737474it("advertises xhigh thinking for OpenRouter-routed DeepSeek V4 models", async () => {
7575const provider = await registerSingleProviderPlugin(openrouterPlugin);
76-const expectedV4Levels = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
76+const expectedV4Levels = ["off", "minimal", "low", "medium", "high", "xhigh"];
77777878expect(
7979provider
@@ -309,7 +309,7 @@ describe("openrouter provider hooks", () => {
309309310310expect(capturedPayload).toMatchObject({
311311thinking: { type: "enabled" },
312-reasoning_effort: "max",
312+reasoning_effort: "xhigh",
313313messages: [
314314{ role: "user", content: "read file" },
315315{
@@ -324,6 +324,50 @@ describe("openrouter provider hooks", () => {
324324expect(baseStreamFn).toHaveBeenCalledOnce();
325325});
326326327+it("keeps OpenRouter DeepSeek V4 reasoning_effort within OpenRouter values", async () => {
328+const provider = await registerSingleProviderPlugin(openrouterPlugin);
329+const payloads: Array<Record<string, unknown>> = [];
330+const baseStreamFn = vi.fn(
331+(
332+ ...args: Parameters<import("@mariozechner/pi-agent-core").StreamFn>
333+): ReturnType<import("@mariozechner/pi-agent-core").StreamFn> => {
334+const payload = { messages: [] };
335+void args[2]?.onPayload?.(payload, args[0]);
336+payloads.push(payload);
337+return { async *[Symbol.asyncIterator]() {} } as never;
338+},
339+);
340+341+for (const thinkingLevel of ["minimal", "low", "medium", "high", "xhigh", "max"] as const) {
342+const wrapped = provider.wrapStreamFn?.({
343+provider: "openrouter",
344+modelId: "openrouter/deepseek/deepseek-v4-pro",
345+streamFn: baseStreamFn,
346+ thinkingLevel,
347+} as never);
348+void wrapped?.(
349+{
350+provider: "openrouter",
351+api: "openai-completions",
352+id: "openrouter/deepseek/deepseek-v4-pro",
353+baseUrl: "https://openrouter.ai/api/v1",
354+compat: {},
355+} as never,
356+{ messages: [] } as never,
357+{},
358+);
359+}
360+361+expect(payloads.map((payload) => payload.reasoning_effort)).toEqual([
362+"minimal",
363+"low",
364+"medium",
365+"high",
366+"xhigh",
367+"xhigh",
368+]);
369+});
370+327371it("recognizes full OpenRouter DeepSeek V4 refs but skips custom proxy routes", async () => {
328372const provider = await registerSingleProviderPlugin(openrouterPlugin);
329373const payloads: Array<Record<string, unknown>> = [];
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。