- AI 应用
- 前端
【免费下载链接】voyager
Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;其中的提示词管理器可用于任意网站,如 DeepSeek Harness。
导读
Gemini Voyager 是面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强型浏览器扩展,其「默认模型」(Default Model)功能允许用户把偏好的 Gemini™ 模型设为默认值,从而告别每次开启新对话都要手动切换模型的繁琐操作。本文以 docs/ru/guide/default-model.md 为主线,结合扩展的源码实现(modelLocker.ts)与测试用例(modelLocker.test.ts),完整讲解该功能的交互方式、底层自动锁定原理、存储机制与故障保护策略。读完后你不仅会熟练使用星标设置默认模型,还能理解其在 SPA 页面、多语言界面与 Gemini 改版下的适配细节。
该功能自 Voyager 1.1.9 版本起提供支持,当前源码中仍持续演进(如 2026 版 Gemini 界面适配、思考级别默认值等增强)。
功能特性一览
「默认模型」模块的核心能力可归纳为以下四点(均与源码实现一一对应):
- 交互式设置(Interactive Setup):直接在 Gemini 原生的模型选择菜单中注入「星标」按钮,无需进入扩展设置页即可设置默认模型。实现位于 injectStarButtons,通过
MutationObserver监听菜单面板渲染后动态注入.gv-default-star-btn按钮。 - 自动切换(Auto-Switching):每当开启新对话时,扩展会自动将模型切换到你所设定的默认模型。对应 checkAndLockModel 的锁定循环逻辑。
- 偏好持久化(Persistent Preference):选择结果保存在浏览器存储中,并通过
chrome.storage.sync跨设备同步。存储键定义在 common.ts。 - SPA 优化(SPA Optimized):无论点击「新建对话」按钮、使用快捷键,还是返回首页,都能精准触发切换动作。这得益于 routeWatcher 对 Gemini 单页应用路由变更的监听。
使用方法:三步完成默认模型设置
按照官方文档的操作步骤,即可在 Gemini 页面中完成设置:
- 点击 Gemini 输入框上方的模型选择器,打开模型下拉菜单。
- 将鼠标悬停到你偏好的模型行上,点击该行标题右侧出现的星标图标(空星)。
- 当星标变为实心(填充)状态时,表示该模型已被设为默认。
- 此后扩展会在所有新对话中自动选中该模型。
- 如需取消默认设置,只需再次点击实心星标即可。
操作细节与源码印证
- 星标按钮只在真正的模型选择菜单中注入,而不会污染 Gemini 的设置菜单、主题菜单等其他下拉面板。源码通过多重选择器守卫实现:仅当菜单面板包含
[data-mode-id]、.mode-title或.title-and-description等模型菜单特征时才注入(injectStarButtons),对应测试用例does not inject star buttons into the settings menu与does not inject star buttons into the theme submenu验证了这一行为。 - 点击星标时会触发乐观 UI 更新:先立即更新按钮状态并弹出提示 Toast,再在后台异步写入存储(handleStarClick),保证交互零卡顿。
- 星标同时支持桌面端 Material 菜单(
mat-mdc-menu-panel)与移动端紧凑底部面板(mat-action-list.gds-mode-switch-menu-list),并在 2026 版 Gemini 改版后兼容cdk-overlay-pane+gem-menu-item的新布局。
存储机制与跨设备同步
默认模型的选择结果存储于浏览器同步存储区,相关键名定义在 src/core/types/common.ts:
| 存储键 | 说明 | 取值形态 |
|---|---|---|
gvDefaultModel | 默认模型设置 | 优先为{ id, name, pill? }对象;历史版本可能仅为模型名字符串 |
gvDefaultThinkingLevel | 默认思考级别(Standard/Extended) | { index, label, mode? }对象 |
gvDefaultModelAutoApply | 自动应用的总开关(kill switch) | 布尔值;缺失时视为启用(向后兼容) |
其中id是 Gemini 模型行的稳定标识(如data-mode-id或 jslog 元数据中提取的 16 位十六进制 ID),name是完整模型名(如3.1 Pro),pill是 Gemini 触发器上显示的短标签(如Flash)。存储采用chrome.storage.sync,因此偏好会跟随浏览器账号跨设备同步。
值得注意的设计是gvDefaultModelAutoApply这个总开关:即使 Gemini 改版导致自动锁定失效,用户仍可关闭自动应用来暂停切换行为,而页面内的星标设置/清除功能依旧可用。关闭时源码会主动清扫所有已注入的星标按钮(sweepDefaultModelUi),避免出现「多个模型同时显示为默认」的脏状态。
自动切换的底层原理:锁定循环(Lock Loop)
设置好默认模型后,扩展如何保证新对话一定使用该模型?核心逻辑是checkAndLockModel启动的一个最多 5 次、每次间隔 1 秒的锁定循环(checkAndLockModel):
- 路径判定:仅当当前 URL 匹配新对话路径时才会锁定,支持
/app与多账号路径/u/0/app,以及 Gem 路径/gem/xyz(isNewConversation,modelLocker.ts)。 - 快路径(Fast Path):优先读取触发器 pill 文本(如输入框上显示
Pro),与存储的默认模型做双向匹配;若已匹配则直接终止循环,绝不在已正确的对话上打开菜单造成闪烁。 - 慢路径(Slow Path):若 pill 不匹配,则模拟点击模型选择器打开菜单,在菜单项中按
id或名称定位目标模型行并执行click(),随后关闭菜单、把焦点还给输入框(focusChatInputAfterAutoSwitch,modelLocker.ts)。
测试用例对该机制进行了充分验证,例如:
auto-locks model when menu uses role="menuitem" variant:验证在 2026 版新菜单结构(role="menuitem"+data-mode-id)下能正确锁定到「思考」模型而不是默认的「快速」模型;locks by>赞
- AI 应用
- 前端
【免费下载链接】voyager
Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;其中的提示词管理器可用于任意网站,如 DeepSeek Harness。
相关推荐
GrapesJS 如何替换默认 Modal 为自定义对话框?
GrapesJS 如何替换默认 Modal 为自定义对话框? 在使用 GrapesJS 搭建可视化编辑器时,默认的 Modal(对话框)是框架自带的 DOM 结
前端低代码UI组件BongoCat多模型切换功能:快速预览与默认设置全攻略
BongoCat多模型切换功能:快速预览与默认设置全攻略 引言:告别单调,拥抱个性化交互体验 你是否厌倦了屏幕上一成不变的静态图标?是否希望在敲代码或玩游戏时,
桌面应用Gemini CLI 键盘快捷键全解:默认键位、自定义 keybindings.json 与 Vim 模式
Gemini CLI 键盘快捷键全解:默认键位、自定义 keybindings.json 与 Vim 模式 本文基于 gemini cli 仓库的官方快捷键参考
人工智能AI Agent交互助手CLIMCP Clients