

























@@ -4,6 +4,7 @@ import { randomUUID } from "node:crypto";
44import fs from "node:fs";
55import { access, mkdir, writeFile } from "node:fs/promises";
66import path from "node:path";
7+import type { OpenClawCrablineChannelDriverSelection } from "crabline";
78import { sleep } from "openclaw/plugin-sdk/runtime-env";
89import { appendRegularFile } from "openclaw/plugin-sdk/security-runtime";
910import { uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -79,6 +80,8 @@ type QaMultipassPlan = {
7980fastMode?: boolean;
8081thinkingDefault?: string;
8182runtimePair?: [RuntimeId, RuntimeId];
83+channelDriverSelection?: OpenClawCrablineChannelDriverSelection;
84+enabledPluginIds?: string[];
8285scenarioIds: string[];
8386forwardedEnv: Record<string, string>;
8487hostCodexHomePath?: string;
@@ -242,13 +245,18 @@ export function createQaMultipassPlan(params: {
242245scenarioIds?: string[];
243246concurrency?: number;
244247runtimePair?: [RuntimeId, RuntimeId];
248+channelDriverSelection?: OpenClawCrablineChannelDriverSelection;
249+enabledPluginIds?: string[];
245250image?: string;
246251cpus?: number;
247252memory?: string;
248253disk?: string;
249254}) {
250255const outputDir = params.outputDir ?? createQaMultipassOutputDir(params.repoRoot);
251256const scenarioIds = uniqueStrings(params.scenarioIds ?? []);
257+const enabledPluginIds = uniqueStrings(
258+(params.enabledPluginIds ?? []).map((pluginId) => pluginId.trim()).filter(Boolean),
259+);
252260const transportId = params.transportId?.trim() || "qa-channel";
253261const providerMode = params.providerMode ?? DEFAULT_QA_LIVE_PROVIDER_MODE;
254262const provider = getQaProvider(providerMode);
@@ -282,6 +290,15 @@ export function createQaMultipassPlan(params: {
282290 ...(params.allowFailures ? ["--allow-failures"] : []),
283291 ...(params.concurrency ? ["--concurrency", String(params.concurrency)] : []),
284292 ...(params.runtimePair ? ["--runtime-pair", params.runtimePair.join(",")] : []),
293+ ...(params.channelDriverSelection
294+ ? [
295+"--channel-driver",
296+params.channelDriverSelection.channelDriver,
297+"--channel",
298+params.channelDriverSelection.channel,
299+]
300+ : []),
301+ ...enabledPluginIds.flatMap((pluginId) => ["--enable-plugin", pluginId]),
285302],
286303scenarioIds,
287304);
@@ -307,6 +324,8 @@ export function createQaMultipassPlan(params: {
307324fastMode: params.fastMode,
308325thinkingDefault: params.thinkingDefault,
309326runtimePair: params.runtimePair,
327+channelDriverSelection: params.channelDriverSelection,
328+ enabledPluginIds,
310329 scenarioIds,
311330 forwardedEnv,
312331 hostCodexHomePath,
@@ -556,6 +575,8 @@ export async function runQaMultipass(params: {
556575scenarioIds?: string[];
557576concurrency?: number;
558577runtimePair?: [RuntimeId, RuntimeId];
578+channelDriverSelection?: OpenClawCrablineChannelDriverSelection;
579+enabledPluginIds?: string[];
559580image?: string;
560581cpus?: number;
561582memory?: string;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。