
Gemini Voyager 默认模型功能解析为 Gemini 设置默认模型并自动切换的完整实现指南【免费下载链接】voyagerEnhancement suite for Gemini, AI Studio, Claude ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件其中的提示词管理器可用于任意网站如 DeepSeek Harness。项目地址: https://gitcode.com/gh_mirrors/ge/voyager默认模型Default Model是 Gemini Voyager 为 Gemini™ 提供的一项增强能力在 Gemini 的模型选择菜单中注入“星标”按钮让用户为模型设置默认项并在每次开启新对话时由插件自动切换过去省去手动切换的重复操作。本文基于仓库中的功能文档与源码实现完整讲解该功能的使用方法、数据模型、底层注入与自动切换原理以及仓库测试所验证的边界行为帮助你既会用它也理解它背后的浏览器扩展工程细节。功能版本说明该功能仅在 Gemini Voyager 1.1.9 及后续版本中支持对应源码位于 src/pages/content/defaultModel/。功能特点在 Gemini 中开启新对话后模型选择器默认停留在 Gemini 自带的快速模型上如果你习惯使用 Pro 或其他模型每次新对话都需要手动切换。默认模型功能从四个方面解决这个问题交互式设置在 Gemini 的模型选择菜单中直接注入“星标”按钮无需进入扩展设置页即可完成配置自动切换开启新对话时插件会自动为你切换到预设的默认模型持久化保存偏好会被保存如果开启了插件同步还会跨设备同步优化体验针对单页应用SPA优化无论是点击“新对话”按钮、使用快捷键还是直接访问/app路径都能准确触发。从源码结构看该功能同时支持模型默认与“思考级别”Standard / Extended默认两套偏好二者共用同一套星标交互与自动应用框架。如何使用按照以下步骤即可完成默认模型的设置与取消点击 Gemini 输入框上方的模型选择器打开模型菜单鼠标悬停在想要设为默认的模型上点击出现的空心星标星标变为实心后该模型即被设为默认页面底部会弹出“Default model set: xxx”的提示下次访问首页或发起新对话时系统会自动为你选中该模型如需取消再次点击实心星标即可此时提示为“Default model cleared”。如果你将鼠标悬停到某个模型项上但星标未出现可以确认扩展版本是否不低于 1.1.9并检查模型菜单是否成功被扩展识别见下文“注入逻辑”。偏好数据模型与存储键默认模型的偏好通过扩展的存储服务持久化底层存储键定义在 src/core/types/common.ts存储键值说明gvDefaultModel模型 ID 名称或兼容的纯名称字符串用户星标的默认模型gvDefaultThinkingLevel索引 标签 模式用户星标的默认思考级别gvDefaultModelAutoApplytrue/false自动应用开关主开关从 modelLocker.ts 的解析逻辑parseStoredDefaultModel可以看出存储的两种形态对象形态{ id, name, pill? }id是 Gemini 页面上的稳定模型标识data-mode-idname是完整名称pill是 Gemini 触发器上显示的短标签如 “Flash”由插件从页面学习而非用户输入兼容形态纯字符串仅旧版本名称会被自动升级为带 ID 的对象形态。思考级别的存储为{ index, label, mode? }其中mode取standard或extended。值得注意的是源码注释明确说明Standard 是 Gemini 内置的默认思考级别因此锁定到 Standard 永远不会产生实际动作见checkAndLockModel中isPageDefaultThinkingLevel的判断只会白白让选择器闪开一次实现时将其视为“无思考偏好”。星标注入在模型菜单中“长”出来的按钮默认模型功能的交互入口是注入到 Gemini 模型菜单中的星标按钮核心实现在 DefaultModelManager单例类的injectStarButtons与injectThinkingLevelStars方法中。整个注入过程需要考虑 Gemini 复杂的 DOM 结构菜单面板识别Gemini 的历史版本使用 Material 菜单.mat-mdc-menu-panel2026 年改版后模型选择器渲染在普通的cdk-overlay-pane中通过包含[data-mode-id]条目来识别移动端则是mat-action-list.gds-mode-switch-menu-list底部面板模型项定位菜单项同时兼容rolemenuitemradio与rolemenuitem两种形态模型 ID 从data-mode-id属性读取紧凑布局下则回退解析jslog元数据中的 16 位十六进制 ID星标按钮生命周期按钮类名为gv-default-star-btn通过MutationObserver监听菜单面板的挂载注入失败时最多重试 10 次间隔 50ms并在每次注入前清理不属于当前菜单项的“孤儿星标”避免 Angular 视图复用造成的重复星标命中校验为避免把星标注入到设置/主题等非模型菜单注入前会校验面板是否包含[data-mode-id]、.mode-title或.title-and-description等模型菜单特征测试 modelLocker.test.ts 中专门验证了“不向设置菜单注入星标”与“不向主题子菜单注入星标”。星标按钮的点击通过e.stopPropagation()与e.preventDefault()阻止冒泡避免误触发 Gemini 自身的菜单项选中逻辑同时采用“先更新 UI 再异步写存储”的乐观更新策略保证点击反馈即时。自动切换面向 SPA 的锁定循环设置默认模型后插件通过checkAndLockModel及其内部的锁定循环lock loop在每次新对话时自动切换模型。仓库测试对该循环的描述将其称为default model locker默认模型锁。触发时机新对话判定isNewConversation使用正则/^\/(u\/\d\/)?(app\/?|gem\/.*)$/判定当前是否处于新对话页兼容多账号路径/u/0/app以及/gem/xxx路径。触发来源包括页面加载init时立即执行一次SPA 路由变化通过共享的路由监听器watchRouteChanges来自src/pages/content的路由工具覆盖浏览器历史事件与页面内 SPA 导航仅当路径变化且判定为新对话时才触发避免重复执行同路径“新对话”点击点击当前/app页面内 href 不变的“新对话”链接时路由监听器无法感知因此单独注册了捕获阶段的 click 监听作为语义化例外。锁定循环与快速路径每次触发后插件以 1 秒为间隔运行最多 5 次tickLock。每次 tick 先读取模型选择器触发按钮pill上的文本行做快速路径判定模型名匹配采用双向整词匹配既判断存储名称是否是 pill 文本的整词子串也判断 pill 是否是存储名称的整词子串——因为 Gemini 的 pill 显示短名“Pro”而菜单项保存全名“3.1 Pro”若 pill 已显示正确模型且无思考级别偏好则立刻停止循环不会闪烁式地打开选择器若不匹配才打开模型菜单按 ID 优先、名称其次、全文整词匹配兜底的顺序查找目标项并模拟点击成功后延迟 120ms 聚焦回聊天输入框让用户可以直接输入。智能跳过与防打扰实现中包含多项避免打扰用户的设计Flash/快速模型跳过FAST_MODEL_IDS与FAST_MODEL_NAMES记录了 Gemini 默认的 Flash/Fast 模型如果默认就是它们直接跳过自动切换页面本来就是这个状态让位于用户输入通过shouldYieldToUserComposerActivity检测聊天输入框是否已有内容或在 8 秒内有过输入活动若用户在操作则立即停止循环绝不打断输入会话去重每次导航生成唯一的autoSelectSessionId循环过程中若发现会话已变化用户导航离开又回来立即终止防止重复切换失败熔断连续 3 次无法找到目标模型例如模型配额耗尽或 Gemini 改版时停止重试并弹出一次提示 toast建议用户在设置中暂停该功能。思考级别扩展默认偏好除了模型本身2026 年改版后的 Gemini 在选择器中提供了“思考级别”选项。该功能同样支持将其设为默认对当前的单行Extended thinking开关通过稳定的 jslog 事件 ID 识别注入“思考级别星标”对旧版 Standard / Extended 子菜单形态通过valuethinking_level行及其aria-controls关联的子菜单面板定位并注入星标存储的标签用于在菜单中回填星标状态采用“先按标签匹配、标签失效才回退索引”的策略resolveThinkingDefaultIndex避免存储索引与标签漂移时同时点亮两颗星标的问题。自动应用开关随时可暂停的总闸当 Gemini 改版导致自动切换失效时用户无需卸载扩展可以在扩展弹窗中关闭自动应用。该开关位于 GeneralSettingsCard.tsx 的“Auto-apply default model on new chats”项由 useGeneralPopupSettings.ts 读写gvDefaultModelAutoApply键默认值为true缺失视为开启兼容旧版本用户。关闭开关后所有自动应用路径短路但页内星标 UI 仍然可用用户依然可以设置/清除默认模型通过chrome.storage.onChanged监听实现无需刷新页面即时生效关闭时立即清除已注入的星标并终止正在运行的锁定循环重新开启时重置失败计数并立即执行一次锁定检查防止“星标残留”初始化与观察器在关闭状态下仍会主动清扫 DOM 中残留的gv-default-star-btn避免用户看到可点击但无效果的星标。仓库测试行为边界的工程保障该功能配套了详尽的单元测试 modelLocker.test.ts基于 Vitest用模拟 DOM 验证了关键行为可作为理解实现的补充证据性能保障50 次无关 DOM 突变不会触发对菜单面板的全局查询避免页面卡顿菜单形态兼容菜单项后渲染、rolemenuitem变体、移动端底部面板、jslog 元数据兜底等场景均能正确注入星标自动锁定正确性按 ID 锁定不受语言影响日语“思考モード”也能命中不会把描述文本中的 “pro” 误认为 “Pro” 模型默认 Flash 时零点击跳过防打扰用户在输入框开始输入或 8 秒内有键盘活动时不会自动切换模型pill 标签学习对已选中的 Flash 变体学习其短标签“Flash”之后可快速确认而无需打开选择器同时拒绝学习与所选行不一致的标签防止“教坏”快速路径跟随改名同一模型 ID 被 Gemini 改名3.8 Flash → 3.9 Flash时自动更新存储名称并保持默认设置有效。常见问题与失败兜底为什么自动切换偶尔闪一下选择器这是锁定循环正在读取菜单项状态以确认目标模型若你已经手动选择过正确模型快速路径会直接判定成功而不再打开菜单。为什么提示“Default model couldnt auto-apply after 3 tries”连续 3 次无法完成自动切换时触发通常意味着 Gemini 改版导致菜单结构变化或目标模型在当前账号不可用。toast 上的“Pause in settings”按钮会尝试直接打开扩展弹窗Firefox 等禁止程序化弹窗的浏览器中会退化为手动打开弹窗的提示文案。如何彻底关闭打开扩展弹窗关闭 “Auto-apply default model on new chats” 开关已设置的默认模型不会被删除随时可以重新开启。总结默认模型功能是 Gemini Voyager 对“重复操作自动化”的一次完整实践通过星标注入提供零成本配置入口用面向 SPA 的路由监听与锁定循环实现可靠自动切换以存储键 同步机制保证跨设备一致性再用熔断、防打扰与总开关设计保障稳定性。从 功能文档 到 核心实现 与 测试套件这份代码为理解浏览器扩展如何优雅地增强第三方 SPA 提供了一个高完成度的参考样本。【免费下载链接】voyagerEnhancement suite for Gemini, AI Studio, Claude ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件其中的提示词管理器可用于任意网站如 DeepSeek Harness。项目地址: https://gitcode.com/gh_mirrors/ge/voyager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考