# 自己写一个 Chrome 翻译插件要花多少时间？我实测了一遍

> 作者/来源: UCloud 运营管理员
> 发布时间: 2026-10-14T09:25:47.842Z
> 分类: AI专区
> 原文链接: http://117.50.162.249:3000/yun/articles/2834

---

## 自己写一个 Chrome 翻译插件要花多少时间？我实测了一遍

![云上工程笔记](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073668-550d4372fbf95447e5ba505ed8b2e14b.png)

云上工程笔记
记录云计算、AI 工程化与开发者实践。
1 人赞同了该文章

现成的翻译插件用了好几年，但有些功能始终不按我的想法来。国庆期间，我索性让 agent 帮我写了一个自己的。从第一行代码，到 Chrome 商店上架，终于不用再将就了。

平时看英文网页多，翻译插件是刚需。10 月 3 号第一次提交审核，被拒。10 月 8 号改完重提，状态回到待审核。趁这工夫把过程记下来。

## 为什么不用现成的

三个原因，外加一个私心。

量身定做。 我的用法很具体：鼠标停在中文词上，要拼音、字义和组词，不是翻译成英文；停在英文单词上，要 IPA 音标加朗读；整页翻译要中英上下对照。这些需求现成插件的设置里就是凑不齐。

安全。 翻译插件的原理是把网页文本发出去翻译，发给谁就是问题。现成插件大多经过它自己的服务器，你看过的每个网页都过一遍别人的手。

生词本。 查过的词我想存下来，隔几天翻一遍。现成插件要么没有，有的也不是我要的样子。自己的插件往后随便加。

私心： 想试试 agent 能不能把一个完整的小软件做出来，从第一行代码到上架。星图是我们自己在做的 agent 客户端，正好拿这个活练手。

![](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073595-5000801efb625349a9c9a02e3afee7df.jpg)

## 功能是跟着别扭长出来的

插件是 Chrome MV3 扩展，代码分四块：background 管 API 请求和计费，content script 注入网页做取词和双语排版，popup 是工具栏小窗，options 是设置页。UI 全部包在 Shadow DOM 里，不跟网页样式打架。

![](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073534-d48c2f8bfc091aa7f50c422e33744178.jpg)

最先做的是悬停取词。按住 Alt，鼠标停在单词上弹释义气泡。踩的第一个坑：气泡一移鼠标就消失。查词是异步请求，等响应回来鼠标早挪走了，旧代码在 mousemove 里就收气泡。改成只有点关闭、按 Esc、滚动页面才收起。

![](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073512-303b2f5ec32f143406735b63f36e2661.jpg)

然后是整页翻译。一开始一批 8 段 1100 字符，翻 CNN 这种长页面要干等半天。改了三处：每批加到 12 段 2600 字符，并发提到 6 路，接口换成 SSE 流式，译文边生成边往页面上贴，首段几秒钟就看到，体感和沉浸式翻译一样了。段落顺序也改成先译屏幕里正在看的。

排版是照着沉浸式翻译抄的思路。导航、面包屑、分页、侧栏、广告这些页面家具不碰，父子块只译最内层，免得一段文字出两遍译文。译文的字号行高直接从原文复制，标题译文跟着用标题字号。

词典是后来加的。中文词给带声调拼音和组词，英文单词给 IPA 音标，气泡里点小喇叭就朗读，用的浏览器内置语音，不花钱。这步主要靠改提示词：让模型在释义前先吐一行音标，前端拆开单独显示。

## 调试里的几笔账

思考型模型查一个词先想 822 个 token 才输出，费用是普通模型的八倍，能关就关。

翻译统计原本在网页上弹浮窗，太吵，挪进工具栏弹窗。右键菜单原本两个子项，点两下才能翻，改成一个开关，译过就变还原。

我还算过一次缓存的账：把翻译历史攒在同一个对话里续着发，看着能吃到缓存折扣，实际算下来每批开新对话更便宜。续对话每轮都要为旧文本和旧译文再付一次钱，哪怕按缓存价算也不划算。

测试是 node 里跑的冒烟脚本加人工验收。18 项断言，mock 掉 chrome.* 和 fetch，覆盖 token 统计、计费公式、流式解析，每轮改动跑一遍。

## 上架这步比写代码麻烦

打包上架交给了星图：商品 zip、商店文案、宣传截图、隐私政策、权限说明都由我们准备好，它去开发者后台点按钮。

10 月 3 号第一次提交。星图打开后台，Google 要求重新验证身份，密码和验证码我自己输。顺手立了条规矩：密码、2FA、支付、手机验证这类事永远不交给 agent，最后的公开发布按钮也由我来点。

提交前自查出两个问题：manifest 里声明了 scripting 权限，代码里一处没用，删掉；隐私政策里写「所有数据保存在本地」不准确，Chrome 的同步存储会把设置和 API Key 同步到我自己的其他设备，这话得如实写。改完重打包，18 项冒烟测试过了，提交，自动发布关着。后台显示：待审核。

第二天出结果，被拒。违规类型是「垃圾内容和商店中的排名」，内部代号 Yellow Argon。原因是产品说明里关键字太多，点名那行服务商枚举：OpenAI、DeepSeek、通义千问、OpenRouter、本地 Ollama/LM Studio。本意是告诉用户兼容性好，审核那边看作关键词堆砌。

整改干脆利落：说明里一个服务商名字都不留，改成「支持任意兼容主流接口规范的大模型服务，含自建与本地部署」；提竞品的小标题「像沉浸式翻译一样美观」改成「排版干净，不破坏原页面」；tags 精简到 translate、翻译、双语；弹窗截图里露出的模型名换成「自定义模型」重渲了一遍。版本直接用最新的 1.1.0 重提，词典、拼音、朗读这些提交之后才做的功能一起带上，省一轮审核。

重提的时候把 agent 的能力边界摸清楚了。让星图无头跑批去提交，报「Computer Use was not approved to use Google Chrome」，桌面操控的批准框只在交互会话里能点，无头跑弹不出来。最后我在交互式会话里批了 Chrome 的操控权限，星图把草稿建了、包传了、文案贴了、截图换了、审核提交了。改文案、打 zip、重渲截图这些备料，也是它在后面做的。

这一轮折腾有个额外收获：商店文案被逼着洗了一遍，现在干净了。

![](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073493-d17f97b0861af4edfc49334e846a006d.jpg)

## 写在最后

现成插件本身没问题，只是对不上我的用法。自己写一个的成本，这回实测下来主要就是验收花时间：星图半天能写完的功能，我试用挑毛病要用两三天。

等审核过了，插件我分享出来。有同样别扭的，可以先蹲一个。

如果你也在让 agent 干完整的活，转发给那个还在手动打包上架的朋友。

发布于 2026-10-09 17:33・上海

Google Chrome

![图片](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073476-a6466c1c71e53233d5a0258f7c60ee38.webp)

教你如何暴力背单词 教你如何几天记住几千个单词
今天教下大家如何暴力背单词 绝对是全网最牛逼的方式 花几分钟看完这篇文 只要是有认识小学最基础的 500 个单词 每位同学都可以...
今天教下大家如何暴力背单词 绝对是全网最牛逼的方式 花几分钟看完这篇文 只要是有认识小学最基础的 500 个单词 每位同学都可...

![用户头像](https://ucloud-blog.cn-bj.ufileos.com/imagebed/0998208030073429-51653cc474a6baadfe00cb8e23b57ee0.webp)

Revo
100+感兴趣