服务商与 BYOK
五个内置服务商、自定义兼容 OpenAI 的端点、带定价的模型目录,以及你的 API 密钥如何存储。
Cordy for Mobile 从不代理你的流量。你自带 API 密钥,Cordy 从你的设备直接与该服务商通信,而你的密钥保存在设备安全存储中——绝不写入对话数据库或日志。本页覆盖每一种服务商选项,以及模型目录与密钥存储的工作方式。
BYOK 原则
- 账户归你所有。 密钥来自服务商控制台;你直接向服务商付费。
- 每个服务商一把密钥。 每个服务商各自保存独立密钥。切换服务商即切换密钥。
- 直接请求。 提示词作为携带你密钥(
Authorization头)的 HTTPS 调用发往所选服务商。没有任何内容经由 Cordy 中转。
内置服务商
Cordy 内置五个服务商预设,默认选中 OpenRouter。
| 服务商 | API 家族 | Base URL | 说明 |
|---|---|---|---|
| OpenRouter(默认) | 兼容 OpenAI | https://openrouter.ai/api/v1 | 一把密钥,100+ 模型;目录含实时定价 |
| OpenAI | 兼容 OpenAI | https://api.openai.com/v1 | OpenAI 第一方模型 |
| Anthropic | Anthropic(原生) | https://api.anthropic.com | 原生 API,支持扩展思考 |
| Vercel AI Gateway | 兼容 OpenAI | https://ai-gateway.vercel.sh/v1 | 路由到你 Vercel 网关背后的模型 |
| 火山方舟 Ark | 兼容 OpenAI | https://ark.cn-beijing.volces.com/api/v3 | 火山引擎的模型服务 |
OpenRouter
默认项,也是最容易上手的第一把密钥。OpenRouter 是一个兼容 OpenAI 的聚合器:一把密钥即可触达多家厂商的模型。其 /models 响应包含定价,因此 Cordy 能显示真实的每模型成本。模型 ID 采用 厂商/模型 形式,例如 anthropic/claude-sonnet-4-5。
OpenAI
通过 api.openai.com/v1 第一方访问 OpenAI 模型。模型 ID 为普通名称(如 gpt-4o)。当 /models 响应不含定价时,OpenAI 模型的价格取自内置的 LiteLLM 快照。
Anthropic(原生)
Anthropic 使用 Cordy 的 原生 Anthropic 客户端,而非兼容 OpenAI 的路径。正是这一点启用了带可配置思考预算的 扩展思考。由于走的是原生 API(而非 OpenAI 风格的 /models 端点),Anthropic 的模型条目为内置,而非实时拉取。
Vercel AI Gateway
一个兼容 OpenAI 的网关;用 Vercel AI Gateway 密钥将 Cordy 指向它,即可触达你网关所暴露的模型。
火山方舟 Ark
火山引擎的兼容 OpenAI 模型服务(ark.cn-beijing.volces.com/api/v3)。使用 Ark API 密钥。
启用与停用服务商
在设置 → 可用性下,你可以开启或关闭任意服务商。停用的服务商会从对话的模型选择器中隐藏,直到重新启用。这有助于让选择器只保留你实际使用的服务商。
自定义兼容 OpenAI 的端点
除内置项外,你还可以添加自己的兼容 OpenAI 端点——自托管的模型服务、内部网关,或其他讲 OpenAI API 的厂商。
添加方式: 设置 → 自定义服务商 → 填写名称与 Base URL(字段提示“Base URL(以 /v1 结尾)”)→ 添加服务商。之后它便与内置项一样:保存密钥、加载其目录、选择其模型。自定义服务商带 Custom 标记,也是唯一可删除的服务商。
Base URL 规则
URL 会在保存前被解析与校验,因此格式错误或明文的 URL 不会悄悄把你的密钥发往错误主机:
- 必须是带主机名的合法
http(s)URL。 - 对公网主机必须使用 HTTPS——你的密钥绝不明文发送。
- 明文
http://仅允许用于回环 / 内网开发主机。 - 拒绝内嵌凭据(
user:secret@host)。 - 末尾斜杠会被去除;存储的是规范化后的 URL。
允许的明文(http://)主机,用于本地开发:
| 主机模式 | 示例 |
|---|---|
localhost | http://localhost:11434/v1 |
127.0.0.1 / 0.0.0.0 | http://127.0.0.1:1234/v1 |
10.x.x.x | http://10.0.0.5:8000/v1 |
192.168.x.x | http://192.168.1.20:8080/v1 |
172.16.x.x–172.31.x.x | http://172.16.0.10:8000/v1 |
*.local | http://my-box.local:8000/v1 |
其他任何主机都必须使用 https://。这样你可以将 Cordy 指向本机或局域网上的模型服务,同时保持每个云端端点加密。
模型目录
当某个服务商已保存密钥时,Cordy 会拉取并缓存其模型列表:
- 拉取。 对兼容 OpenAI 的服务商,Cordy 用你的密钥调用
GET {baseUrl}/models,并映射每个模型的上下文窗口、能力与定价。Anthropic(原生)改用其内置条目。 - 能力。 每个模型会依据响应(响应稀疏时回退到内置 LiteLLM 快照)标记 视觉、思考 / 推理、工具调用 与 长上下文(上下文窗口 ≥ 100k)。这些标记驱动界面——例如图片仅允许在视觉模型上发送,思考预算控制仅在思考模型上出现。
- 缓存。 拉取到的目录会在设备上缓存,下次启动即时可用且可离线。使用刷新模型可重新拉取。
- 尚无密钥时。 保存密钥前,Cordy 会展示已缓存的内容(或一小份初始列表),不访问网络。
定价
价格统一为 每 1,000,000 token 的美元数,并按如下顺序解析:
- 服务商原生——服务商
/models响应中携带的定价(OpenRouter 提供)。 - LiteLLM 快照——一份内置价格表,按规范化的模型 ID 变体查找(可容忍厂商前缀与 OpenRouter 后缀)。
- 未知——模型显示
—/ “价格未知”。
Cordy 在模型列表中以“In $… / Out $… per 1M”显示,并在用量页面按回复记录成本。请将应用内成本视为估算,并与服务商自己的账单核对。
模型 ID 格式
- OpenRouter:
厂商/模型(例如anthropic/claude-sonnet-4-5)。 - OpenAI / Vercel / Ark / 自定义: 服务商自身的模型名称。
- Anthropic 原生: Anthropic 模型 ID(例如
claude-sonnet-4-5-20251022)。
你的密钥如何存储
API 密钥仅保存在平台安全存储中,并按服务商隔离:
- Android——由密钥库持有的 AES-256-GCM 密钥加密每个值,以 Base64(IV ‖ 密文 ‖ GCM 标签) 形式存于私有偏好文件。旧版
EncryptedSharedPreferences写入的值会在首次读取时透明迁移到新方案,因此应用升级不会丢失任何密钥。 - iOS——钥匙串,采用
AfterFirstUnlockThisDeviceOnly可访问性:绑定设备,并排除在 iCloud 钥匙串与加密备份之外。
密钥绝不写入对话数据库、绝不记入日志,除了作为发往你所选服务商请求上的 Authorization 头之外,绝不离开设备。保存空密钥等同于删除它。完整的数据处理说明见隐私与安全。
暂未提供
- 工具 / 函数调用已在消息格式中建模(应用可渲染工具调用与工具结果块),但本版本尚未执行。
- 跨服务商的自动网关 / 回退路由为后续工作。
目前,每个会话只与一个服务商和一个模型通信。