# 接入格式 — 自动探测 + 专家可覆盖

配套 plan：2026-06-06-wire-protocol-onboarding-fix.md（评审后定稿）。核心转向：不让非专家选协议。点「测试连接」时主进程按 Chat→Responses→Anthropic 自动探测，替用户选对并显式告知。选择器默认收起，仅专家展开或测试失败时露出（逃生口）。

为什么改向：真实用户（买中转 key 的视频创作者）反馈「这三个词一个不认识，我不想选，想让它告诉我它替我选对了」。让非专家声明 wire protocol = 让用户干系统的活，违反 P4 通用第一。改为系统探测 + 专家覆盖。
状态 A — 具名预设「foxcode codex」（协议内置，无选择器）
供应商
选一个自动填地址；中转站选「自定义」粘贴地址
OpenAI Claude Gemini foxcode codex✓ OpenRouter SiliconFlow Kimi 智谱 GLM DeepSeek 火山 / Doubao 阿里百炼 Groq 自定义 / 中转站
接入地址已自动填好 · Responses 协议/responses 自定义
你的 API Key
sk-...
模型
输入模型 id 回车，或先拉取可用模型
测试连接保存
预设路径：foxcode 预设内置 providerKind=openai-responses。用户选名字即用，协议术语 0 暴露。
供应商
选一个自动填地址；中转站选「自定义」粘贴地址
OpenAI Claude foxcode codex 自定义 / 中转站✓
接入地址（BaseURL）
到 /v1 为止
https://your-relay.com/v1
你的 API Key
sk-...
模型
输入模型 id 回车，或先拉取可用模型
接口协议：保存时自动探测 · 手动指定
测试连接保存
状态 B — 自定义默认：选择器收起。90% 用户不碰协议，点测试即由后台探测。术语藏在「手动指定」后。
状态 C — 点了「测试连接」后
供应商 · 自定义 / 中转站
接入地址（BaseURL）
https://api.fox-code.com/v1
你的 API Key
sk-fox-••••••••
模型
gpt-5-codex
接口协议：保存时自动探测 · 手动指定
✓ 已连上 · 用的是 Responses 协议 保存
探测成功：后台试 Chat→404→试 Responses→200。绿勾告诉用户系统替他选对了，保存即用该协议。这就是真实用户要的「告诉我它替我选对了」。
供应商 · 自定义 / 中转站
接入地址（BaseURL）
https://api.weird-relay.com/v1
你的 API Key
sk-••••••••
模型
some-model
接口协议
不确定就留给自动探测；codex 类中转选 Responses；Claude 官转选 Anthropic
Chat Completions Responses Anthropic
改回自动探测
✕ 连不上：HTTP 404。可在上方「接口协议」手动指定再试 保存
状态 D — 探测全失败：三协议都没通 → 覆盖区自动展开，错误指路换协议（不只甩红字）。专家可强制指定再试，或「改回自动探测」。
对账锚点（实现必须逐项对上）

· 默认不露选择器：custom 路径只显示「接口协议：保存时自动探测 · 手动指定」一行（OnboardingWizard 的 `showKindOverride=false` 分支）。
· 探测在主进程：测试连接按 chat→responses→anthropic 探测，返回 `detectedKind`，绿勾显示「用的是 X 协议」（main.ts `probeOneProtocol` + auto-probe handler）。
· 失败展开逃生口：测试失败 → `showKindOverride=true`，露出 SegmentedControl + 指路文案。
· 专家覆盖：手选协议 → `kindForced=true`，测试强制走该协议、BaseURL 输入不再 hostname 覆盖；「改回自动探测」复位。
· 具名预设无选择器：foxcode 等预设内置 providerKind，`presetId!=='custom'` 不渲染协议区。
· 根因：UI 只是露出口；真正修的是删掉 main.ts 3 处吞掉第 3 值的 clamp + 全链路走 normalizeProviderKind，否则探测出 Responses 也会被静默降级。