From e8759f3402a488075f806113d21c472661a48566 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Thu, 7 May 2026 09:33:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A6=81=E7=94=A8=20opus[1m]=20?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=BF=81=E7=A7=BB=EF=BC=8C=E5=B0=8A=E9=87=8D?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=89=8B=E5=8A=A8=E5=88=A0=E9=99=A4=20[1m]?= =?UTF-8?q?=20=E5=90=8E=E7=BC=80=E7=9A=84=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迁移逻辑过于激进,用户手动删除 [1m]] 后会被自动加回。 现在将 migrateOpusToOpus1m 改为 no-op,保留用户的手动模型选择。 Co-Authored-By: Claude Opus 4.6 --- src/migrations/migrateOpusToOpus1m.ts | 40 ++++----------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/src/migrations/migrateOpusToOpus1m.ts b/src/migrations/migrateOpusToOpus1m.ts index e065e1989..5ab814c1d 100644 --- a/src/migrations/migrateOpusToOpus1m.ts +++ b/src/migrations/migrateOpusToOpus1m.ts @@ -1,43 +1,15 @@ import { logEvent } from '../services/analytics/index.js' -import { - getDefaultMainLoopModelSetting, - isOpus1mMergeEnabled, - parseUserSpecifiedModel, -} from '../utils/model/model.js' -import { - getSettingsForSource, - updateSettingsForSource, -} from '../utils/settings/settings.js' +import { isOpus1mMergeEnabled } from '../utils/model/model.js' /** - * Migrate users with 'opus' pinned in their settings to 'opus[1m]' when they - * are eligible for the merged Opus 1M experience (Max/Team Premium on 1P). - * - * CLI invocations with --model opus are unaffected: that flag is a runtime - * override and does not touch userSettings, so it continues to use plain Opus. - * - * Pro subscribers are skipped — they retain separate Opus and Opus 1M options. - * 3P users are skipped — their model strings are full model IDs, not aliases. - * - * Idempotent: only writes if userSettings.model is exactly 'opus'. + * Migration disabled: users who manually remove [1m] suffix should not + * have it automatically re-added. The migration was too aggressive and + * didn't respect user choice. */ export function migrateOpusToOpus1m(): void { + // No-op - respect user's manual model choice if (!isOpus1mMergeEnabled()) { return } - - const model = getSettingsForSource('userSettings')?.model - if (model !== 'opus') { - return - } - - const migrated = 'opus[1m]' - const modelToSet = - parseUserSpecifiedModel(migrated) === - parseUserSpecifiedModel(getDefaultMainLoopModelSetting()) - ? undefined - : migrated - updateSettingsForSource('userSettings', { model: modelToSet }) - - logEvent('tengu_opus_to_opus1m_migration', {}) + logEvent('tengu_opus_to_opus1m_migration', { skipped: true }) }