Repository navigation
JavSP-fork v0.4.8 — 五大翻译通道全量加固
一次性把 Google / 百度 / Bing / Claude / OpenAI 兼容(含本地 Ollama、LM Studio)五个通道
各自的历史缺陷集中修掉,并把散落各处的「是否走代理」收敛成一个用户可手动选择的开关。
随后又跑了一轮安全与性能审查,把查出的 7 项缺陷(B-014 ~ B-020)一并修完。
⚠️ 测试状态(务必先读)
本版本改动面较大,维护者没有能力对所有通道做端到端实机验证 —— 百度 / Bing / Claude
等通道需要付费账号或额度,目前暂时测不了。已完成的是离线验证:
- 回归测试 108 项全部通过(原 66 项 + 新增 42 项),全部 mock、不联网;
- 仅 Google 通道做过真实连通性验证。
也就是说:除 Google 外的四个通道,修复效果是「按官方文档与代码缺陷推导」的结果,
还没有真机跑通记录。
📮 欢迎反馈各通道实测结果(最好带 log)
无论成功失败,都欢迎开 issue 反馈,这直接决定后续修复优先级。请带上:
| 要提供什么 | 说明 |
|---|---|
| 引擎 + 关键配置 | 如 baidu、bing(region=eastasia)、claude(model=...)、openai(url=局域网 Ollama) |
| 目标语种 / 是否勾选「使用统一代理」 | 这两项决定走哪条分支 |
| 界面报错原文 | 设置页「测试」按钮的返回结果即可 |
| 日志片段 | 桌面版:运行目录 JavSP.log;Docker:docker logs javsp。logger 名 javsp.web.translate |
脱敏提醒:贴配置和 log 前请先自行替换
app_id/api_key/ 代理地址 / 局域网 IP。
各通道要点
- Google:429 退避不再全局累加(旧实现一次限流后所有后续请求都被拖长);
错误码不再KeyError;非 JSON 响应(拦截页)转为可读报错。 - 百度:错误码汉化(
54003: Invalid Access Limit→ 「访问频率受限(QPS 超限)…」);
QPS 节流改为锁内预约时间槽(旧实现多线程下形同虚设),新增qps配置;
无trans_result时不再静默产出空译文。 - Bing:女优名用动态词典保护 + XML 属性转义;新增
region配置(单服务资源必填,
否则 401001 无从排查);空响应不再IndexError;NFO 原文断句不再被词典标记污染。 - Claude / OpenAI:Claude 默认模型从已被官方硬退役的
claude-3-haiku-20240307
换成claude-haiku-4-5-20251001,model可自行指定;OpenAI 兼容端api_key可留空
(本地 Ollama / LM Studio 不需要鉴权)。 - 共性:长文本按引擎上限自动分段再拼接;新增 sqlite 翻译缓存(key 含引擎+模型+语种+
prompt+文本,换模型/改提示词自动失效,只缓存成功结果);「使用统一代理」开关通用化,
对所有引擎一视同仁。 - 设置页:新增「测试」按钮 —— 用尚未保存的界面配置真实跑一次翻译,保存前即可
确认引擎/密钥/端点/代理是否配对。
第二轮加固(B-014 ~ B-020)
| 编号 | 问题 | 修法 |
|---|---|---|
| B-014 | 「测试」端点可被当作回显型 SSRF 与配额消耗器;pydantic 报错会回显含 api_key 的输入 |
URL 只允许 http(s)、屏蔽云元数据地址、同客户端 3 秒最小间隔、报错只回显字段位置与原因 |
| B-015 | Bing 女优名标记互为子串时嵌套,产出畸形 XML | 按长度降序 + 一次性正则替换 |
| B-016 | Google 成功路径固定 sleep(4) 且按段计;429 退避无总预算 |
改引擎级 2 秒节流(线程共享);退避加 120 秒累计预算 |
| B-017 | Google 单段 6000 字节 → URL 膨胀到约 18K 字符 | 上限收紧到 1800 字节 |
| B-018 | 异常信息里带出完整 URL(百度 appid/sign 在查询串上) |
统一抹掉 URL 查询串并截断 |
| B-019 | 翻译缓存无条数上限;清理后不 VACUUM,占用字节纹丝不动 |
上限 20000 + 淘汰最旧;清理后 VACUUM |
| B-020 | 分段拼接丢换行,百度段落语义丢失 | 百度按换行拼接,Google / Bing 保持空串 |
B-014 取舍:没有禁掉私有 / 回环网段 —— 禁掉会直接废掉本地与局域网 Ollama 这个核心
场景,只挡云元数据地址。要真正防「别人用你的额度」,请设置JAVSP_AUTH_PASSWORD开启认证。
升级说明
- 旧配置无需改动即可升级:所有新字段都有兼容默认值。
- Docker:
docker load镜像 tar.gz 后重建容器即可(配置在挂载卷,不受影响)。 - Windows:下载 zip 覆盖安装目录(
config.yml与会话不会被覆盖)。 ⚠️ v0.4.5 之前的版本内置升级助手有缺陷,从那些版本点「立即升级」会失败,
需手动下载 zip 覆盖一次,之后即可正常一键升级。
资产
| 文件 | 说明 |
|---|---|
JavSP-0.4.8-windows.zip |
Windows 桌面版(便携,解压即用) |
javsp-fork-0.4.8-image.tar.gz |
Docker 镜像(docker load 后使用) |
javsp-fork-0.4.8.sha256 |
上面两个资产的 SHA-256 校验值 |