一套能从头跑到尾的配置——端点写什么、模型写什么,以及为什么是这个选择(附实测)。
这个版本没有内置的免费通道,翻译从第一步起就要用你自己的 API Key。这不是少给了什么:Key 在你手上,意味着请求由你的设备直接发往你选择的服务商,中间没有我们的服务器,也就没有一个能看到你在读什么的地方。代价是你要自己去开一个账号,这份教程就是把那几步说清楚。
| 做什么 | 引擎 | 模型 | 为什么 |
|---|---|---|---|
| 翻译 | DeepSeek | deepseek-v4-flash | 便宜,整页翻译够快 |
| 朗读 | 设备内置语音 | — | 免费、离线、不需要 Key |
| 转写 | 自建端点 | — | 只有做「说」这一档才需要 |
从 App Store 装好之后,还要手动把 Safari 扩展打开一次。iPhone 上这一步在「设置」里;打开 belliedmonkey.com/setup.html,那一页会自己检测,成功了它会变绿告诉你。
在 https://platform.deepseek.com 注册并创建一个 API Key。支持的引擎都可以,这份教程用 DeepSeek:便宜、整页翻译够快,而且不需要额外的网络条件。
打开扩展设置,翻译引擎选 DeepSeek,粘贴 Key,点「测试连接」。端点与模型已经替你填好 —— https://api.deepseek.com/v1/chat/completions,模型 deepseek-v4-flash —— 只有当你要指向中转、网关或换一个模型时才需要改它们。
https://your-endpoint.example 不是一个端点,https://your-endpoint.example/v1/chat/completions 才是。设备内置语音(免费 · 离线):不需要 Key、不联网、不花钱,这是正确的默认。想换更好的声音,可以填一个自建的语音端点,地址形如 http://127.0.0.1:8880/v1/audio/speech。
说题要听见你,也就需要一个转写接口。中国版不内置云端转写,只有自建这一条路:把地址填成 http://127.0.0.1:18790/v1/audio/transcriptions 这个形状即可,仓库里带了一个可直接跑的桥接脚本。好处是录音根本不出你这台机器。
打开一篇你读不懂的外文页面,打开翻译,确认每段原文下方都出现了译文。某一段失败时它现在会明说,并给一个可以点的重试,而不是一直停在「翻译中」。
不打开也能翻译,所以它不算在那六步里。采集默认是关的;打开之后,你**停下来读过**的句子才会变成复习卡 —— 扩展设置 →「采集学习材料」。它只记你停留过的句子,不记你划过去的一切;在你主动登录之前,卡片一直只在这台设备上。
这个开关在扩展里,不在 App 里。两边的存储是分开的,在 App 里画一个开关,写下去的地方扩展根本不读 —— 所以 App 把你送到这一页,而不是假装它能设。
推理模型是这里最大的坑。不管它的话,DeepSeek 的 deepseek-v4-flash 会为**每一个段落**思考一遍:2026-08-20 实测,一段话用了 3549 毫秒、烧掉 278 个思考 token。把思考关掉之后,同一段 1126 毫秒回来,快 3.2 倍,而译文读起来没有区别。
这个参数由扩展按「主机 + 模型」替你发出去,依据是一张**实测**出来的表,不是文档摘抄。必须实测的原因是文档预测不了它:同样的情况在另一个引擎上是 24833 毫秒变 1410 毫秒(17.6 倍);而在第三个引擎上,按文档发那个参数会得到 HTTP 200 加一个空正文——看起来就像扩展坏了,其实不是。
表里没见过的主机,只会收到协议最小集,别的一个字段都不发。这正是公司内网的网关能一次就通的原因——它不会被一个自己没实现的参数噎住。
下面这张表和软件里用的是同一份注册表,所以它不会和 App 的实际行为走散。
| 引擎 | 端点地址 | 默认模型 | 去哪开 Key |
|---|---|---|---|
| DeepSeek | https://api.deepseek.com/v1/chat/completions | deepseek-v4-flash | platform.deepseek.com |
| 智谱 GLM | https://open.bigmodel.cn/api/paas/v4/chat/completions | glm-4-flash | open.bigmodel.cn |
| 通义千问 | https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions | qwen-plus | bailian.console.aliyun.com |
| 通义千问·翻译版 | https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions | qwen-mt-turbo | bailian.console.aliyun.com |
| Kimi | https://api.moonshot.cn/v1/chat/completions | moonshot-v1-8k | platform.moonshot.cn |
只要说得通这两种请求格式,别的服务同样可以用——地址完全由你自己填:
| 条目 | 地址形状 | ||
|---|---|---|---|
| 自定义 · Chat Completions 格式 | https://your-endpoint.example/v1/chat/completions | — | — |
| 自定义 · Messages 格式 | https://your-endpoint.example/v1/messages | — | — |
有的服务商按区域发 Key,并且为不同区域跑不同的主机;在一个控制台里开的 Key,拿去打另一个地址是认不出来的。核对一下端点的域名和你开 Key 的那个控制台是不是同一边。
返回 HTTP 200 但正文是空的,几乎总是推理模型把输出预算全花在思考上了。扩展对它认识的模型会规避这一点;如果你手动换过模型,换回去,或者改成一个不思考的模型。
设置存在本机,不会自动跑到别的设备上。在另一台上重新填一次即可。
还没启用扩展?从这里开始 →