Problem / 问题
连接公共免费中转(公益站 / 免费代理)时,不少站点会校验客户端身份(User-Agent 或 x-app / claude 相关请求头),只放行官方客户端。而 PI-Desktop 目前:
- 默认请求 UA 是
pi (macos 24.x; arm64)(来自 getPiUserAgent()),这类"未知客户端"UA 很容易被公益站拒绝或降速;
- 设置 UI 里没有自定义请求头(Custom headers)字段,供应商/模型设置里也没有 User-Agent 覆盖入口;
- 只有 Claude 兼容模式会自动伪装成
claude-cli/<version> + x-app: cli + anthropic-dangerous-direct-browser-access: true;而 OpenAI 兼容 / 自定义供应商(ioll、relay 等,最常见的公益站类型)走的仍是 pi (...) 这个 UA。
Proposed change / 期望改动
在供应商(或模型)设置中增加**"客户端身份"选项**,可以自动通过大部分公益站验证:
- 一键预设仿冒客户端:
claude-cli/<version>(附带 x-app: cli、anthropic-dangerous-direct-browser-access)、codex、opencode(附 x-opencode-client)、cursor、vscode,以及自定义 UA 字符串;
- 对 OpenAI 兼容端点同样生效(目前只有 Claude 兼容路径会伪装身份,OpenAI 兼容路径缺这个能力);
- 身份设置为供应商级或全局,切换无需重启。
内部实现参考(0.13.11 现状):
- 合并顺序已经是
{ "User-Agent": getPiUserAgent(), ...model.headers, ...optionsHeaders },需要补的是面向用户的"客户端身份"下拉 + 支持 OpenAI 兼容路径。
Alternatives / 其他方案
- 文档引导用 SDK 已有的
ANTHROPIC_CUSTOM_HEADERS / OPENAI_CUSTOM_HEADERS 环境变量(非 UI,且对大多数用户不可见);
- 先只加"供应商自定义请求头"字段,UA 由用户自己填写(治标,无预设)。
Additional context / 补充信息
- 版本:PI-Desktop 0.13.11(macOS)
- 用途:公共免费中转通常要求客户端与官方一致,这是它们的常见校验手段;希望 PI-Desktop 提供一个合规、便捷的入口,而不是让每个用户去改环境变量。
Problem / 问题
连接公共免费中转(公益站 / 免费代理)时,不少站点会校验客户端身份(User-Agent 或
x-app/claude相关请求头),只放行官方客户端。而 PI-Desktop 目前:pi (macos 24.x; arm64)(来自getPiUserAgent()),这类"未知客户端"UA 很容易被公益站拒绝或降速;claude-cli/<version>+x-app: cli+anthropic-dangerous-direct-browser-access: true;而 OpenAI 兼容 / 自定义供应商(ioll、relay 等,最常见的公益站类型)走的仍是pi (...)这个 UA。Proposed change / 期望改动
在供应商(或模型)设置中增加**"客户端身份"选项**,可以自动通过大部分公益站验证:
claude-cli/<version>(附带x-app: cli、anthropic-dangerous-direct-browser-access)、codex、opencode(附x-opencode-client)、cursor、vscode,以及自定义 UA 字符串;内部实现参考(0.13.11 现状):
{ "User-Agent": getPiUserAgent(), ...model.headers, ...optionsHeaders },需要补的是面向用户的"客户端身份"下拉 + 支持 OpenAI 兼容路径。Alternatives / 其他方案
ANTHROPIC_CUSTOM_HEADERS/OPENAI_CUSTOM_HEADERS环境变量(非 UI,且对大多数用户不可见);Additional context / 补充信息