























@@ -1,4 +1,5 @@
11import { cancel, isCancel } from "@clack/prompts";
2+import { formatCliCommand } from "../cli/command-format.js";
23import { promptYesNo } from "../cli/prompt.js";
34import { getRuntimeConfig } from "../config/config.js";
45import { redactMigrationPlan } from "../plugin-sdk/migration.js";
@@ -119,7 +120,9 @@ export async function migrateListCommand(runtime: RuntimeEnv, opts: { json?: boo
119120return;
120121}
121122if (providers.length === 0) {
122-runtime.log("No migration providers found.");
123+runtime.log(
124+`No migration providers found. Run ${formatCliCommand("openclaw plugins list")} to verify provider plugins are installed and enabled.`,
125+);
123126return;
124127}
125128runtime.log(
@@ -139,7 +142,9 @@ export async function migratePlanCommand(
139142): Promise<MigrationPlan> {
140143const providerId = opts.provider?.trim();
141144if (!providerId) {
142-throw new Error("Migration provider is required.");
145+throw new Error(
146+`Migration provider is required. Run ${formatCliCommand("openclaw migrate list")} to choose one.`,
147+);
143148}
144149const plan = selectMigrationItems(
145150await createMigrationPlan(runtime, { ...opts, provider: providerId }),
@@ -167,13 +172,17 @@ export async function migrateApplyCommand(
167172): Promise<MigrationApplyResult | MigrationPlan> {
168173const providerId = opts.provider?.trim();
169174if (!providerId) {
170-throw new Error("Migration provider is required.");
175+throw new Error(
176+`Migration provider is required. Run ${formatCliCommand("openclaw migrate list")} to choose one.`,
177+);
171178}
172179if (opts.noBackup && !opts.force) {
173-throw new Error("--no-backup requires --force.");
180+throw new Error("--no-backup requires --force because it skips the automatic rollback copy.");
174181}
175182if (!opts.yes && !process.stdin.isTTY) {
176-throw new Error("openclaw migrate apply requires --yes in non-interactive mode.");
183+throw new Error(
184+`openclaw migrate apply requires --yes in non-interactive mode. Preview first with ${formatCliCommand("openclaw migrate plan --provider <provider>")}.`,
185+);
177186}
178187const provider = resolveMigrationProvider(providerId);
179188if (!opts.yes) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。