mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-10 16:13:36 +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
84
openclaw/extensions/kimi-coding/implicit-provider.test.ts
Normal file
84
openclaw/extensions/kimi-coding/implicit-provider.test.ts
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
import { describe, expect, it } from "vitest";
|
||||
import { registerSingleProviderPlugin } from "../../test/helpers/plugins/plugin-registration.js";
|
||||
import plugin from "./index.js";
|
||||
|
||||
async function runKimiCatalog(params: {
|
||||
apiKey?: string;
|
||||
explicitProvider?: Record<string, unknown>;
|
||||
}) {
|
||||
const provider = await registerSingleProviderPlugin(plugin);
|
||||
const catalogResult = await provider.catalog?.run({
|
||||
config: {
|
||||
models: {
|
||||
providers: params.explicitProvider
|
||||
? {
|
||||
"kimi-coding": params.explicitProvider,
|
||||
}
|
||||
: {},
|
||||
},
|
||||
},
|
||||
resolveProviderApiKey: () => ({ apiKey: params.apiKey ?? "" }),
|
||||
} as never);
|
||||
return catalogResult ?? null;
|
||||
}
|
||||
|
||||
async function runKimiCatalogProvider(params: {
|
||||
apiKey: string;
|
||||
explicitProvider?: Record<string, unknown>;
|
||||
}) {
|
||||
const result = await runKimiCatalog(params);
|
||||
if (!result || !("provider" in result)) {
|
||||
throw new Error("expected Kimi catalog to return one provider");
|
||||
}
|
||||
return result.provider;
|
||||
}
|
||||
|
||||
describe("Kimi implicit provider (#22409)", () => {
|
||||
it("publishes the env vars used by core api-key auto-detection", async () => {
|
||||
const provider = await registerSingleProviderPlugin(plugin);
|
||||
|
||||
expect(provider.envVars).toEqual(["KIMI_API_KEY", "KIMICODE_API_KEY"]);
|
||||
});
|
||||
|
||||
it("does not publish a provider when no API key is resolved", async () => {
|
||||
await expect(runKimiCatalog({})).resolves.toBeNull();
|
||||
});
|
||||
|
||||
it("publishes the Kimi provider when an API key is resolved", async () => {
|
||||
const provider = await runKimiCatalogProvider({ apiKey: "test-key" });
|
||||
|
||||
expect(provider).toMatchObject({
|
||||
apiKey: "test-key",
|
||||
baseUrl: "https://api.kimi.com/coding/",
|
||||
api: "anthropic-messages",
|
||||
});
|
||||
});
|
||||
|
||||
it("uses explicit legacy kimi-coding baseUrl when provided", async () => {
|
||||
const provider = await runKimiCatalogProvider({
|
||||
apiKey: "test-key",
|
||||
explicitProvider: {
|
||||
baseUrl: "https://kimi.example.test/coding/",
|
||||
},
|
||||
});
|
||||
|
||||
expect(provider.baseUrl).toBe("https://kimi.example.test/coding/");
|
||||
});
|
||||
|
||||
it("merges explicit legacy kimi-coding headers on top of the built-in user agent", async () => {
|
||||
const provider = await runKimiCatalogProvider({
|
||||
apiKey: "test-key",
|
||||
explicitProvider: {
|
||||
headers: {
|
||||
"User-Agent": "custom-kimi-client/1.0",
|
||||
"X-Kimi-Tenant": "tenant-a",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(provider.headers).toEqual({
|
||||
"User-Agent": "custom-kimi-client/1.0",
|
||||
"X-Kimi-Tenant": "tenant-a",
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue