Skip to content

[Feature]: 启动时主动检测系统代理(PAC),避免 undici 不支持 SOCKS5 导致握手失败 #82

@amberzizi

Description

@amberzizi

Problem / 你遇到的问题

背景

mavis(MiniMax Code)开启 PAC 模式 VPN(如 Xray / V2rayU)时,会自动走系统代理。但 mavis 底层使用的 Node.js undici fetch 不支持 SOCKS5 协议,握手阶段会报 UnsupportedProxyProtocol

影响范围

所有使用 PAC 模式代理的中国开发者,特别是 Xray / V2rayU / Clash 系用户。

根因简述

  • mavis 基于 Electron,Chromium 网络栈自动读 macOS 系统 PAC
  • PAC 默认返回 SOCKS5 代理 URL(如 SOCKS5 127.0.0.1:1080
  • mavis daemon 是 Node.js 子进程,用 undici fetch
  • undici fetch 只支持 HTTP/HTTPS proxy,不支持 SOCKS5
  • 握手阶段崩溃,根本到不了 VPN 路由层

复现步骤

  1. macOS 安装 V2rayU + Xray 核心
  2. 启动 PAC 模式(GFWList + 绕过大陆和局域网)
  3. 打开 MiniMax Code
  4. 触发一次 LLM 请求
  5. 报错:UnsupportedProxyProtocol fetching "https://agent.minimaxi.com/mavis/api/v1/llm/v1/messages"

当前临时 workaround

```bash
launchctl setenv NO_PROXY "agent.minimaxi.com,*.minimaxi.com,localhost,127.0.0.1"
launchctl setenv no_proxy "$NO_PROXY"

完全退出 MiniMax Code(⌘Q),重新打开

```

建议改进

  1. 启动时主动检测 PAC / 系统代理,给一次性友好提示
  2. 错误信息本地化:把 UnsupportedProxyProtocol 包装成中文提示,而不是直接透传 undici 底层错误
  3. config.yaml 支持 noProxy 字段:配置文件级别排除
  4. 可选:集成 socks-proxy-agent,让 mavis 支持 SOCKS5 代理

环境

  • 平台:macOS
  • VPN:V2rayU + Xray 核心
  • 代理协议:SOCKS5 (1080) / HTTPS proxy (1087)
  • Node.js:undici fetch(默认不支持 SOCKS5)

Proposed solution / 期望方案

建议改进

  1. 启动时主动检测 PAC / 系统代理,给一次性友好提示
  2. 错误信息本地化:把 UnsupportedProxyProtocol 包装成中文提示,而不是直接透传 undici 底层错误
  3. config.yaml 支持 noProxy 字段:配置文件级别排除
  4. 可选:集成 socks-proxy-agent,让 mavis 支持 SOCKS5 代理

Platform / 平台

macOS

Additional context / 补充信息

No response

Before submitting / 提交前确认

  • I have searched existing issues.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions