oclaw/openclaw/extensions/fireworks/stream.ts
oliver dbbe3add6a 重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。

Made-with: Cursor
2026-04-26 08:34:33 +08:00

39 lines
1.5 KiB
TypeScript

import type { StreamFn } from "@mariozechner/pi-agent-core";
import { streamSimple } from "@mariozechner/pi-ai";
import type { ProviderWrapStreamFnContext } from "openclaw/plugin-sdk/plugin-entry";
import { normalizeProviderId } from "openclaw/plugin-sdk/provider-model-shared";
import { streamWithPayloadPatch } from "openclaw/plugin-sdk/provider-stream-shared";
import { isFireworksKimiModelId } from "./model-id.js";
function isFireworksProviderId(providerId: string): boolean {
const normalized = normalizeProviderId(providerId);
return normalized === "fireworks" || normalized === "fireworks-ai";
}
export function createFireworksKimiThinkingDisabledWrapper(
baseStreamFn: StreamFn | undefined,
): StreamFn {
const underlying = baseStreamFn ?? streamSimple;
return (model, context, options) =>
streamWithPayloadPatch(underlying, model, context, options, (payloadObj) => {
// Fireworks Kimi can emit chain-of-thought in visible `content` unless
// the Anthropic-style thinking toggle is explicitly disabled.
payloadObj.thinking = { type: "disabled" };
delete payloadObj.reasoning;
delete payloadObj.reasoning_effort;
delete payloadObj.reasoningEffort;
});
}
export function wrapFireworksProviderStream(
ctx: ProviderWrapStreamFnContext,
): StreamFn | undefined {
if (
!isFireworksProviderId(ctx.provider) ||
ctx.model?.api !== "openai-completions" ||
!isFireworksKimiModelId(ctx.modelId)
) {
return undefined;
}
return createFireworksKimiThinkingDisabledWrapper(ctx.streamFn);
}