AI 应用前端【免费下载链接】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点击查看免费下载本文基于 Voyager 项目的官方迁移文档docs/ar/guide/safari-migration.md英文版见 docs/en/guide/safari-migration.md系统讲解自 v1.6.0 起 Safari 宿主应用更名后的一次性手动迁移流程包括操作步骤、数据安全说明与常见误区并辅以仓库源码佐证其底层实现原理。读完本文你将掌握如何安全地完成旧版「Gemini Voyager.app」向新版「Voyager.app」的替换并理解为什么该迁移只需要执行一次、之后即可回归自动更新。背景为什么需要一次手动迁移从v1.6.0开始Voyager 的 Safari 宿主应用由「Gemini Voyager」更名为「Voyager」。macOS 依据应用名称.app文件名来识别已安装的应用因此如果直接安装新版本新应用会与旧应用并存于同一台机器上而 Safari 会同时看到两套扩展进而可能出现扩展重复显示、功能入口混乱新旧两个扩展同时注入网页行为互相干扰卸载时难以区分哪个应用对应哪个扩展。所以官方将这次更名设计为一次性的手动替换只需手动执行一次应用替换之后所有更新都会重新回到自动更新通道无需再手动操作。值得说明的是仓库源码中同样体现了这次改名的工程化处理。在宿主应用入口 Voyager/App/AppDelegate.swift 中定义了旧应用的固定路径常量/// The pre-rename host app. If it lingers in /Applications alongside the new /// Voyager.app, both Safari extensions coexist and conflict. private let legacyAppPath /Applications/Gemini Voyager.app也就是说旧应用会被精确识别为/Applications/Gemini Voyager.app这正是本文迁移步骤中需要移除的目标对象。你的数据是安全的Bundle ID 未变迁移最让人担心的是数据丢失。官方文档明确承诺应用的 Bundle ID包标识符没有改变因此以下数据全部得到保留你的文件夹结构folders提示词库 / 收藏库prompt library云同步数据cloud sync所有设置settings。这一步只替换应用本身完全不触碰数据文件。从仓库配置可以得到佐证。在 Voyager/Voyager.xcodeproj/project.pbxproj 中应用与扩展的PRODUCT_BUNDLE_IDENTIFIER均为com.yourCompany.Gemini-Voyager com.yourCompany.Gemini-Voyager.Extension发布构建中由正式签名替换为实际 Bundle ID。改名前后该标识保持不变这是 macOS 与 Safari 识别同一个扩展的关键——Safari 依据 Bundle ID 关联扩展与应用只要它不变已授权的扩展状态、存储数据与云同步凭据就能在应用替换后继续生效。另外Google Drive 数据目录也做了改名兼容处理。在 Voyager/Shared/NativeSupport.swift 中定义了新旧目录名的映射逻辑enum VoyagerGoogleDriveFolderIdentity { static let currentName Voyager Data static let legacyName Gemini Voyager Data static let markerKey voyagerDataFolder static let markerValue 1 static func shouldRenameLegacyFolder( named name: String, canonicalNameAlreadyExists: Bool ) - Bool { name legacyName !canonicalNameAlreadyExists } }可以看到旧的「Gemini Voyager Data」目录会被识别并在新目录名尚不存在时自动迁移到「Voyager Data」。这进一步印证了改名只涉及应用外壳底层数据标识与迁移路径都是完整设计好的。迁移步骤一次性手动操作按照官方文档整个迁移只需四步建议在下载并准备好新版 DMG 之后开始完全退出 Safari在 Safari 中按⌘Q彻底退出而不是只关闭窗口。这一步很关键如果 Safari 仍在运行扩展与应用之间的关联可能还处于活动状态干扰后续替换。删除旧应用打开Finder → 应用程序将旧的「Gemini Voyager.app」拖入废纸篓。安装新应用打开你最新下载的 DMG 镜像将「Voyager.app」拖入应用程序文件夹。重新启用扩展重新打开 Safari →设置 → 扩展启用「Voyager Extension」。完成以上四步后迁移即告完成。如果此前已经在 Safari 中启用过扩展Bundle ID 不变意味着 Safari 会继续认可该扩展的身份。两件千万不要做的事官方文档特别强调了两个反向操作务必避免不要同时保留两个应用。如果把旧的「Gemini Voyager.app」留在原地两个扩展会在 Safari 中并存并冲突产生与未迁移完全相同的问题。不要在 Safari 的扩展面板中对旧扩展点击卸载Uninstall。该卸载动作指向的是旧应用会绕开应用替换逻辑、使状态变得更加混乱。正确的做法只有一步像上面第 2 步那样把旧应用拖入废纸篓。这一警告在源码中有对应的防护逻辑。宿主应用启动时前台正常启动、而非后台静默唤起时会检查旧应用是否仍存在若存在则弹出一个本地提醒对话框见 Voyager/App/AppDelegate.swiftprivate func promptLegacyAppRemovalIfNeeded() { guard !launchedForHandoff else { return } guard FileManager.default.fileExists(atPath: legacyAppPath) else { return } // 弹出警告检测到旧应用仍位于应用程序文件夹 // 提供三个按钮Move Old App to Trash / Migration Guide / Not Now }若用户选择Move Old App to Trash应用会调用NSWorkspace.shared.recycle(_:)将旧应用直接移入废纸篓若无法直接移入废纸篓则在 Finder 中高亮选中该应用供用户手动处理见 Voyager/App/AppDelegate.swift。这意味着即使你忘记了手动删除旧应用新版 Voyager 也会在你首次启动时主动提醒并协助完成清理。迁移之后更新自动恢复完成这一次应用替换后后续所有 Safari 版本更新都将通过应用内置的**自动更新器Sparkle**完成不再需要任何手动替换操作。Sparkle 的接入可以从源码与配置中确认Voyager/App/Info.plist 配置了自动更新相关的键值SUAutomaticallyUpdate true自动下载并安装更新SUEnableAutomaticChecks true启动自动检查更新SUFeedURL更新源指向发布版的appcast.xmlSUPublicEDKeySparkle 用于校验更新包签名的 EdDSA 公钥。Voyager/App/AppDelegate.swift 中通过SPUStandardUpdaterController(startingUpdater: true, ...)初始化更新控制器并在菜单中注入「Check for Updates…」入口installCheckForUpdatesMenuItem。Voyager/Voyager.xcodeproj/project.pbxproj 将 Sparkle 作为远程 Swift 包依赖引入锁定在 Voyager/Voyager.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved 中。同时应用自带的诊断功能见 Voyager/App/NativeDiagnosticsService.swift会报告更新的当前状态自动检查是否开启、最近一次检查时间等便于在迁移后确认更新通道已恢复正常。常见疑问Q1迁移会影响云同步吗不会。云同步Google Drive / iCloud的数据标识与存储位置不依赖应用名。Google Drive 侧的旧目录「Gemini Voyager Data」会被自动识别并迁移到新目录名见上文VoyagerGoogleDriveFolderIdentity逻辑iCloud / CloudKit 侧则通过固定的容器标识与 Bundle ID 关联替换应用后同步状态保持不变。Q2如果我已经误点了旧扩展的卸载怎么办旧扩展的卸载状态会随旧应用的删除而自然失效。请完成上述标准四步退出 Safari → 删除旧应用 → 安装新应用 → 重新启用「Voyager Extension」并在设置中重新开启扩展即可。Q3新版 Voyager 为什么不自动帮我替换旧应用macOS 不允许应用在运行时自行删除另一个正在运行的.app因此官方选择用启动时检测 提醒 一键移入废纸篓的方式引导用户完成替换既符合系统安全模型也避免误删数据。结语从「Gemini Voyager」到「Voyager」的更名迁移虽然需要一次手动操作但整个过程在官方设计上做到了数据零风险、步骤四步内、一次之后永不再手动。结合源码可见新版应用不仅主动检测旧应用残留并辅助清理Google Drive 与 iCloud 的数据迁移也都有完整兼容逻辑。相关中文说明还可参考仓库根目录的 docs/guide/safari-migration.md 与其他语言版本docs/en/guide/safari-migration.md 等。赞分享AI 应用前端【免费下载链接】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点击查看免费下载相关推荐7个关键步骤掌握Voyager数据库迁移确保数据结构稳定升级的终极指南7个关键步骤掌握Voyager数据库迁移确保数据结构稳定升级的终极指南 Voyager是一款强大的Laravel管理后台框架其数据库迁移功能能够帮助开发者安后端CMSFusion360插件开发实战DIY Spacemouse自定义Home View功能实现Fusion360插件开发实战DIY Spacemouse自定义Home View功能实现 DIY Spacemouse是一款专为Fusion360设计的导航硬件开发嵌入式开发工具batchgenerators扩展开发如何贡献自定义变换模块batchgenerators扩展开发如何贡献自定义变换模块 batchgenerators是一个强大的2D和3D图像分类与分割数据增强框架它允许开发者通过数据增强深度学习计算机视觉上一篇CANN/ops-nn SiLU梯度算子下一篇Symfony String国际化实战为什么它比原生PHP字符串函数更强大创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考