Skip to content

自定义代理不作用于 AI 翻译请求,被墙环境报 Connection error #438

Description

@lancelotlee

环境

  • SmartSub 版本:3.7.0
  • 操作系统:Windows
  • 代理客户端:Clash Verge / mihomo,监听 127.0.0.1:7897

复现步骤

  1. 设置中把代理模式设为 custom,代理地址填 http://127.0.0.1:7897,日志确认出现 proxy applied: custom http://127.0.0.1:7897
  2. 添加一个直连不可达的 OpenAI 兼容 provider,例如 Gemini:
    • apiUrl:https://generativelanguage.googleapis.com/v1beta/openai/
    • modelName:gemini-3.5-flash-lite
    • 填好 API key
  3. 对任意 1 条字幕(如 Hello)执行翻译/测试。

实际行为

  • 日志出现:OpenAI translation failed: Connection error.
  • 单次请求约 60~70 秒后超时失败
  • 此时应用的日志里同时存在 proxy applied: custom http://127.0.0.1:7897,说明代理配置已生效,但翻译请求并未走代理

预期行为

自定义代理(custom proxy)应作用于 AI 翻译请求,代理不可达时给出明确提示。

分析

翻译请求使用官方 openai Node SDK 构造客户端,形如:

new OpenAI({ baseURL: apiUrl, apiKey: apiKey })

未传入任何代理 agent(如 HttpsProxyAgent),因此请求由 Node 直连发出,完全不经过应用配置的代理。应用日志里的 proxy applied: custom 只作用于其他网络(模型下载、更新等),翻译请求是另一条路径。

验证数据:

  • 同一代理下 curl --proxy http://127.0.0.1:7897 .../v1beta/openai/models → HTTP 200
  • 不走代理直接 curl .../v1beta/openai/models → HTTP 000(连接失败)

临时方法

在本地起一个 OpenAI 兼容中继(强制走代理转发到目标 API),把 provider 的 apiUrl 指向 http://127.0.0.1:<port>/v1

建议修复

  1. 为 openai 客户端传入基于 proxyUrl 的代理 agent(https-proxy-agent / tunnel);
  2. 或在请求前校验目标地址是否可达并给出明确的代理提示。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions