SuperAI Agent v0.2.33
SuperAI Agent v0.2.33
自定义服务商新增一种认证方式:OAuth2 客户端凭据 + X-API-KEY,用于接入企业内部的 AI 网关。
新功能
-
「添加服务商 → 自定义」中的「认证方式」选项。除原有的 API 密钥(Bearer)之外,可选择 OAuth2 客户端凭据。填入五个参数即可:Token URL(
AUTH_URL)、Client ID、Client Secret、X-API-KEY、接口地址(BASE_URL)。这正是许多企业网关下发给用户的那一组配置。 -
工作方式:本地代理用 Client ID/Secret 向 Token URL 申请令牌(
grant_type=client_credentials),以Authorization: Bearer发送,同时把 X-API-KEY 作为请求头附上。令牌在过期前 20 秒自动刷新;并发请求共用同一次申请;若上游返回 401(令牌被提前吊销),自动换新令牌重试一次——第二次 401 视为真实拒绝,不会在 Token 端点上打转。 -
「测试连接」走同一条路径。测试成功或失败的原因与真实会话完全一致,包括 OAuth 换令牌这一步。
-
接口地址容错:企业网关给出的
BASE_URL通常已经以/v1结尾,直接粘贴不会再拼出/v1/v1/chat/completions——之前这会得到一个看似「地址写错」的 404。
为什么是这样做
这类网关位于公司内网,请求不经过外网代理,也就不会遇到外网代理带来的 407 与拦截页。但它们只认 OAuth 令牌,而命令行本身只会带 ANTHROPIC_API_KEY,做不了这套握手。因此认证放在本地代理里完成——也正因如此,该选项只在 API 格式为 OpenAI 兼容(经本地代理)时出现;原生 Anthropic 格式由命令行直连,服务端会拒绝为其配置 OAuth。
Claude 与 Codex 的原有实现不受影响:使用 API 密钥的服务商,发出的请求头逐字节与之前相同(有回归测试保证);providers.json 中未启用 OAuth 的条目结构不变。
关于密钥
- Client Secret 与 API 密钥同级,返回给界面时一律打码;编辑时留空即表示保持不变。
- 密钥只保存在
~/.claude/superai/providers.json;写入settings.json供命令行读取的仅是本地代理地址,不含任何凭据。
验证情况
新增 42 项测试:令牌源(缓存、宽限期刷新、并发合并、失效重取、错误分类)13 项;上游认证(Bearer 回归、OAuth 请求头、401 重试一次、/v1 去重)13 项;持久化与打码 17 项;桌面端表单 6 项(仅在代理格式下出现、切回原生格式自动收起、必填校验、发送的字段)。按测试名与基线比对,无新增失败。前端产物已实际构建并确认新代码存在于 dist/assets。