

























11import { formatCliCommand } from "../../cli/command-format.js";
2-import {
3-commitConfigWriteWithPendingPluginInstalls,
4-hasPendingPluginInstallRecords,
5-stripPendingPluginInstallRecords,
6-unchangedPendingPluginInstallRecordIds,
7-} from "../../cli/plugins-install-record-commit.js";
8-import { replaceConfigFile, resolveGatewayPort } from "../../config/config.js";
2+import { resolveGatewayPort } from "../../config/config.js";
93import { logConfigUpdated } from "../../config/logging.js";
104import type { OpenClawConfig } from "../../config/types.openclaw.js";
115import { resolveGatewayAuthToken } from "../../gateway/auth-token-resolution.js";
@@ -21,6 +15,7 @@ import {
2115waitForGatewayReachable,
2216} from "../onboard-helpers.js";
2317import type { OnboardOptions } from "../onboard-types.js";
18+import { commitNonInteractiveOnboardConfig } from "./config-write.js";
2419import { applyNonInteractiveGatewayConfig } from "./local/gateway-config.js";
2520import {
2621type GatewayHealthFailureDiagnostics,
@@ -210,40 +205,12 @@ export async function runNonInteractiveLocalSetup(params: {
210205nextConfig = applyNonInteractiveSkillsConfig({ nextConfig, opts, runtime });
211206212207nextConfig = applyWizardMetadata(nextConfig, { command: "onboard", mode });
213-// Ordinary onboard reruns must preserve existing agents.list / bindings.
214-// Only explicit --reset is allowed to shrink the config — see openclaw#84692.
215-const allowConfigSizeDrop = opts.reset === true;
216-let writeBaseHash = baseHash;
217-if (!allowConfigSizeDrop && hasPendingPluginInstallRecords(baseConfig)) {
218-const migrated = await commitConfigWriteWithPendingPluginInstalls({
219-nextConfig: baseConfig,
220-writeOptions: { allowConfigSizeDrop: true },
221-commit: async (config, writeOptions) => {
222-return await replaceConfigFile({
223-nextConfig: config,
224- ...(writeBaseHash !== undefined ? { baseHash: writeBaseHash } : {}),
225- ...(writeOptions ? { writeOptions } : {}),
226-});
227-},
228-});
229-writeBaseHash = migrated.persistedHash ?? undefined;
230-nextConfig = stripPendingPluginInstallRecords(
231-nextConfig,
232-unchangedPendingPluginInstallRecordIds(nextConfig, baseConfig),
233-);
234-}
235-const committed = await commitConfigWriteWithPendingPluginInstalls({
208+nextConfig = await commitNonInteractiveOnboardConfig({
236209 nextConfig,
237-writeOptions: { allowConfigSizeDrop },
238-commit: async (config, writeOptions) => {
239-return await replaceConfigFile({
240-nextConfig: config,
241- ...(writeBaseHash !== undefined ? { baseHash: writeBaseHash } : {}),
242- ...(writeOptions ? { writeOptions } : {}),
243-});
244-},
210+ baseConfig,
211+ baseHash,
212+reset: opts.reset,
245213});
246-nextConfig = committed.config;
247214logConfigUpdated(runtime);
248215249216await ensureWorkspaceAndSessions(workspaceDir, runtime, {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。