一个基于 Vercel AI SDK 的 Chrome / Edge 浏览器翻译插件(Manifest V3),零依赖运行时、无构建步骤即可加载使用。 支持划词翻译、弹窗翻译、全页翻译,统一适配 OpenAI 兼容 / Anthropic / Google Gemini 三种主流 API 格式,模型列表可从 Base URL 动态拉取。
- 三种 API 格式:OpenAI 兼容(覆盖 DeepSeek / OpenAI / Ollama / OpenRouter / 硅基流动 / 智谱 GLM / 通义千问 / Kimi / Groq / Mistral 等 50+ 家)、Anthropic Messages 原生、Google Gemini 原生
- 内置 12 家服务商预设,也可添加任意自定义 Base URL(含本地 Ollama,支持"无需 Key")
- 模型列表一键拉取:从各家官方 /models 端点动态获取并选择(Ollama 自动走 /api/tags 兜底)
- 连通性测试:每项配置可单独测试;API Key 仅保存在本机 chrome.storage.local,不同步浏览器账号
| 方式 | 说明 |
|---|---|
| 划词翻译 | 选中网页文本即弹译文气泡:可复制、替换原文、关闭;快捷键 Alt + Shift + S |
| 弹窗翻译 | 点击扩展图标:输入文本 → 翻译,支持语言互换、历史记录(最近 20 条)、服务商快速切换 |
| 全页翻译 | 替换原文,或开启**对照翻译(沉浸)**在原文下方追加译文;支持动态加载内容、自动翻译整页、一键还原原文、失败局部重试 |
| 右键菜单 | 选中文字右键「翻译选中文本」;页面空白处右键「翻译此页面」 |
- 防拒答提示词:禁止模型输出"我无法翻译…请提供上下文"类元叙述;数字/版本号/代码等非语言片段原样保留;模糊片段按字面直译;输出清洗兜底剥除拒答尾巴
- 断句与并发:长文本自动分段,并发数 1–512 可调(默认 16),429 限流时并发自动减半自适应
- 失败处理:连接中断自动重试并显示进度;翻译不完整时右下角提示,支持只重试失败部分
- 可随时停止:点「✕ 停止」浮窗立即消失、在途请求全部取消、动态翻译一并停止
- 速度优化:短片段极简提示词(输入 token 降低 ~70%)、翻译结果内存缓存批量落盘、429/5xx 指数退避
- 极简圆角风格:弹窗单页布局、单列卡片式设置页、页面组件风格统一
- 深度思考(reasoner 类模型)、对照翻译、自动翻译、翻译风格(默认/正式/口语/技术/文学)、温度、快捷键等偏好自动保存
- 设置页「数据」区可一键清空翻译缓存 / 历史 / 统计,并支持导出/导入配置(备份与迁移,导出含 API Key 需妥善保管)
- 设置页显示翻译统计:成功/失败次数、累计字符数与最近使用时间
扩展目录为仓库下的
deepseek-translator/(核心代码零依赖,直接加载即可用;构建流程仅用于重新打包含 AI SDK 的后台脚本)。
- 下载或克隆本仓库到本地
- 打开 Chrome(或 Edge)→ 地址栏输入
chrome://extensions - 右上角开启「开发者模式」
- 点击「加载已解压的扩展程序」→ 选择本仓库中的
deepseek-translator文件夹 - 点击扩展图标 → 「前往设置」→ 添加服务商并填入 API Key
- 点击工具栏扩展图标,进入 设置
- 在「服务商」卡片中点 + 添加,选择预设(如 DeepSeek)或"自定义(OpenAI 兼容)"
- 填写 API Key(DeepSeek 可在 https://platform.deepseek.com/api_keys 获取)
- 点 获取模型 拉取可用模型并选择 → 点 测试 验证连通性
- 回到网页:选中文字即弹译文;点击图标可手动翻译或翻译整页
常用服务商 Base URL 速查
| 服务商 | 接口格式 | Base URL |
|---|---|---|
| DeepSeek | OpenAI 兼容 | https://api.deepseek.com |
| OpenAI | OpenAI 兼容 | https://api.openai.com/v1 |
| Anthropic Claude | Anthropic 原生 | https://api.anthropic.com/v1 |
| Google Gemini | Gemini 原生 | https://generativelanguage.googleapis.com/v1beta |
| Ollama(本地) | OpenAI 兼容 | http://localhost:11434/v1 |
| 硅基流动 / 智谱 GLM / 通义千问 / Kimi / Groq / Mistral | OpenAI 兼容 | 见设置页预设 |
| 功能 | 默认 | 自定义 |
|---|---|---|
| 翻译整个页面 | Alt + Shift + T |
设置页点击按键 → 按下新组合 → 松开即保存(Esc 取消) |
| 翻译选中文本 | Alt + Shift + S |
同上 |
快捷键基于键盘物理位置(e.code)匹配,与输入法/键盘布局无关;输入框内不触发;需页面获得焦点。
├── package.json / build.mjs # 依赖与 Rollup 打包脚本(纯 JS,无子进程)
├── .test-llm.mjs / .test-bundle.mjs # 单元测试与打包产物端到端测试(mock 服务器)
└── deepseek-translator/ # 扩展根目录
├── manifest.json # MV3 清单(host_permissions 放开 http(s))
├── background/
│ ├── background.js # Service Worker:消息路由、会话级取消、内存缓存批量落盘
│ └── background.bundle.js # Rollup 打包产物(含 Vercel AI SDK,已提交仓库)
├── content/ # 内容脚本:划词气泡、全页翻译、动态内容、进度胶囊
├── popup/ # 弹窗:翻译 + 服务商切换 + 历史
├── options/ # 设置页:服务商管理 / 翻译偏好 / 快捷键 / 数据清理(自动保存)
├── shared/
│ ├── llm.js # AI SDK 多格式适配层(翻译/模型列表/错误映射/输出清洗)
│ ├── translator.js # 提示词构建(短/长分档)、长文本分段
│ ├── storage.js # 设置/服务商存储(API Key 存本机)、批量缓存
│ ├── language-detect.js # 文本是否需要翻译判定(混排规则)
│ ├── shortcuts.js # 快捷键解析/匹配(e.code 归一化)
│ ├── languages.js / constants.js
├── icons/ └── _locales/ # 图标与 i18n(zh_CN)
npm install --ignore-scripts # 安装依赖(--ignore-scripts 跳过无需的构建脚本)
npm test # 单元测试(mock 服务器覆盖三种格式与错误路径)
npm run build # 重新打包 background.bundle.js(改 shared/ 或 background/ 后必须执行)改代码后记得刷新扩展:chrome://extensions → 扩展卡片上的刷新按钮;改动
shared/与background/后需先npm run build。
- Vercel AI SDK v7(
ai+@ai-sdk/openai-compatible/anthropic/google):统一三种 API 格式的对话补全 - Rollup:打包后台脚本(纯 JS 实现,任何环境可构建)
- 页面端共享模块通过内容脚本内
import(chrome.runtime.getURL(...))动态加载
Q:全页翻译后部分内容仍是原文/提示"翻译不完整"? A:多为服务商限流(429)或连接中断。请按提示点击「重试失败部分」;或到设置页调低并发数(默认 16)。限流会自动让并发减半。
Q:模型输出了"我无法翻译……请提供更多上下文"? A:插件已内置防拒答提示词与输出清洗。若仍出现,多半是旧版本缓存了此前的结果——到设置页「数据」清空翻译缓存后重试。
Q:为什么有些句子不被翻译(如"打开 Settings 页面")? A:新版已修复混排文本过滤:夹带 ≥2 个英文字母的目标语言句子也会翻译。若仍跳过,可能命中 URL/纯数字/已知专有名词白名单(如 API、GitHub 会原样保留)。
Q:可以翻译哪些语言? A:支持 21 种语言的互译(自动检测 / 简繁中文 / 英 / 日 / 韩 / 法 / 德 / 西 / 俄 / 阿 / 葡 / 意 / 荷 / 波 / 泰 / 越 / 印尼 / 马来 / 印地 / 土)。
Q:为什么第一次翻译慢,第二次快? A:翻译结果本地缓存 1 小时(上限 200 条);另可适当调高并发数提速。可在设置页「数据」区清空缓存。
Q:Ollama / 本地模型如何接入?
A:预设"Ollama(本地)"无需 Key,确认 Ollama 已开启 OpenAI 兼容服务(OLLAMA_HOST 默认 11434)后直接测试即可。
- 各家 API Key 仅保存在本机
chrome.storage.local,不会同步到浏览器账号服务器 - 翻译文本仅发送到你所选服务商的 Base URL
- 主机权限说明:为支持任意自定义 Base URL(含本地 Ollama)与全页翻译,清单申请了
http://*/*与https://*/*;内容脚本注入全部网页。网络请求仅在你主动翻译(或点击获取模型/测试)时发起 - 翻译结果本地缓存 1 小时(上限 200 条)、历史记录本地保存 20 条;设置页「数据」区可随时清空
- 深度思考会向模型透传
thinking参数,请仅对支持的服务商/模型开启 - 后台仅处理来自本扩展自身的消息(sender 校验)
- v1.6.0:恢复并补齐对照翻译 / 自动翻译(设置页开关);新增右键菜单翻译、划词气泡替换原文、配置导出/导入、翻译统计;修复清空缓存未清后台内存缓存的问题
- v1.5.0:质量加固——历史写入 await 修复弹窗竞态;缓存空闲防丢落盘;后台消息 sender 校验;设置页新增清空缓存/历史;移除未暴露的沉浸对照与自动翻译(死代码清理);版本号三处对齐
- v1.4.x:局部重试、右下角进度胶囊、翻译不完整提示、五项提速(限流自适应/合并重试/分档提示词/缓存批量写/并发上限 512)、快捷键自定义重构、停止翻译立即生效、提示词多语言适配
- v1.3.x:多服务商支持(Vercel AI SDK)、模型列表拉取、极简圆角 UI 重写、防拒答输出清洗
- v1.2.x:设置合并保存、API Key 迁移 local、模型感知请求体
- v1.0–1.1:DeepSeek 单服务商版本