

















@@ -85,24 +85,24 @@ type Report = {
8585cpuProfilePath?: string;
8686};
878788-function parseFlagValue(flag: string): string | undefined {
89-const index = process.argv.indexOf(flag);
88+function parseFlagValue(flag: string, args = process.argv.slice(2)): string | undefined {
89+const index = args.indexOf(flag);
9090if (index === -1) {
9191return undefined;
9292}
93-const value = process.argv[index + 1];
94-if (!value || value.startsWith("--")) {
93+const value = args[index + 1];
94+if (!value || value.startsWith("-")) {
9595throw new CliArgumentError(`${flag} requires a value`);
9696}
9797return value;
9898}
9999100-function hasFlag(flag: string): boolean {
101-return process.argv.includes(flag);
100+function hasFlag(flag: string, args = process.argv.slice(2)): boolean {
101+return args.includes(flag);
102102}
103103104-function parsePositiveInt(flag: string, fallback: number): number {
105-const raw = parseFlagValue(flag);
104+function parsePositiveInt(flag: string, fallback: number, args = process.argv.slice(2)): number {
105+const raw = parseFlagValue(flag, args);
106106if (!raw) {
107107return fallback;
108108}
@@ -116,8 +116,8 @@ function parsePositiveInt(flag: string, fallback: number): number {
116116return value;
117117}
118118119-function parseNonNegativeInt(flag: string, fallback: number): number {
120-const raw = parseFlagValue(flag);
119+function parseNonNegativeInt(flag: string, fallback: number, args = process.argv.slice(2)): number {
120+const raw = parseFlagValue(flag, args);
121121if (!raw) {
122122return fallback;
123123}
@@ -138,28 +138,32 @@ function validateCliArgs(args = process.argv.slice(2)): void {
138138continue;
139139}
140140if (VALUE_FLAGS.has(arg)) {
141+const value = args[index + 1];
142+if (!value || value.startsWith("-")) {
143+throw new CliArgumentError(`${arg} requires a value`);
144+}
141145index += 1;
142146continue;
143147}
144148throw new CliArgumentError(`Unknown argument: ${arg}`);
145149}
146150}
147151148-function parseOptions(): Options {
149-validateCliArgs();
152+function parseOptions(args = process.argv.slice(2)): Options {
153+validateCliArgs(args);
150154return {
151-agentCount: parsePositiveInt("--agents", 8),
152-cpuProfDir: parseFlagValue("--cpu-prof-dir"),
153-cpuProfOutput: parseFlagValue("--cpu-prof-output"),
154-json: hasFlag("--json"),
155-keepTemp: hasFlag("--keep-temp"),
156-lookupsPerRun: parsePositiveInt("--lookups", 32),
157-modelsPerProvider: parsePositiveInt("--models-per-provider", 16),
158-output: parseFlagValue("--output"),
159-providers: parsePositiveInt("--providers", 48),
160-runs: parsePositiveInt("--runs", 8),
161-runtimeHooks: hasFlag("--runtime-hooks"),
162-warmup: parseNonNegativeInt("--warmup", 1),
155+agentCount: parsePositiveInt("--agents", 8, args),
156+cpuProfDir: parseFlagValue("--cpu-prof-dir", args),
157+cpuProfOutput: parseFlagValue("--cpu-prof-output", args),
158+json: hasFlag("--json", args),
159+keepTemp: hasFlag("--keep-temp", args),
160+lookupsPerRun: parsePositiveInt("--lookups", 32, args),
161+modelsPerProvider: parsePositiveInt("--models-per-provider", 16, args),
162+output: parseFlagValue("--output", args),
163+providers: parsePositiveInt("--providers", 48, args),
164+runs: parsePositiveInt("--runs", 8, args),
165+runtimeHooks: hasFlag("--runtime-hooks", args),
166+warmup: parseNonNegativeInt("--warmup", 1, args),
163167};
164168}
165169@@ -468,11 +472,13 @@ function printHuman(report: Report, cpuProfilePath?: string): void {
468472}
469473470474async function main(): Promise<void> {
471-if (hasFlag("--help") || hasFlag("-h")) {
475+const args = process.argv.slice(2);
476+validateCliArgs(args);
477+if (hasFlag("--help", args) || hasFlag("-h", args)) {
472478printUsage();
473479return;
474480}
475-const options = parseOptions();
481+const options = parseOptions(args);
476482const tempRoot = await mkdtemp(path.join(tmpdir(), "openclaw-issue-78851-"));
477483const workspaceDir = path.join(tempRoot, "workspace");
478484await mkdir(workspaceDir, { recursive: true });
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。