渠道概念
Hoshimi 如何组织上游:渠道(供应商)、账号、账号池和模型路由,各类渠道怎样添加账号,以及怎样选择合适的渠道。
Hoshimi 把每个上游服务当作一个渠道(代码和配置中称为 provider,用一个 ID 表示,例如 cline、opencode、agg)。渠道下面挂着一个或多个账号,同一渠道的账号组成账号池,请求在池内轮换。本页说明这些概念和通用的添加方式;各类渠道的细节见本节其他页面。
渠道的种类
| 类别 | 渠道 ID 示例 | 账号怎么来 | 详见 |
|---|---|---|---|
| 匿名入口 | opencode、kilo | 不需要账号,默认开启 | 匿名入口 |
| 免费站点与订阅登录 | cline、gemini、zcode、minimax、trae、qoder、qodercn、buddy、workbuddy、codearts、loomy、raccoon、lobsterai、codex、eac、zhipu | 浏览器或设备码登录(zhipu 用 API 密钥) | 免费站点 |
| 通用兼容入口 | agg | 自填地址或选 22 个预设之一,加 API 密钥 | 聚合入口 agg |
| 云平台与特殊协议 | azure、cloudflare-workers-ai、cloudflare-ai-gateway、google、google-vertex、amazon-bedrock、radius、typesafe | 平台密钥、Google/AWS 凭据 | 云平台 |
| NVIDIA NIM | nvidia | API 密钥 | NVIDIA NIM |
| 常规 API 服务与本地后端 | openai、anthropic、openrouter、deepseek、groq……;lmstudio、ollama、llamacpp | API 密钥,部分支持登录;本地服务密钥可选 | 本地与兼容端点 |
所有渠道与其来源的对照见渠道清单。清单记录的是“有入口”,不代表上游当前一定可用。
名字相近、ID 不同的服务
同一家公司的不同产品、不同套餐、不同协议使用不同的渠道 ID,凭据不能互换:
minimax是 MiniMax Agent 的登录账号;minimax-api、minimax-cn、minimax-chat是三个按密钥计费的公开 API。gemini是 Gemini Code Assist(Google 账号登录);google是 Gemini Developer API(API 密钥);google-vertex是 Vertex AI。amazon-bedrock(ConverseStream)和bedrock-mantle(OpenAI 兼容端点)分别配置。zhipu是 bigmodel.cn 的通用 API;zai、zai-coding-cn、zai-api是 Z.AI 的编码套餐和国际站 API;zcode是 ZCode 客户端的登录通道。cline是 Cline 的免费登录通道;cline-pass是 ClinePass 订阅密钥。typesafe提供分类,不是聊天模型。
添加账号
三种方式写入的是同一个文件:数据目录下的 config.json(用 hoshimi config path 查看位置)。网页界面和 hoshimi login 写入后立即生效;直接编辑文件需要重启服务。
- 打开 渠道 页面,选中一个渠道。还没有账号的渠道在 未设置 筛选下。
- 支持登录的渠道点 登录,按对话框提示在浏览器中完成授权;其余渠道点 添加账号,选择 鉴权方式 并填写表单,然后点 保存账号。
- 账号出现在 账户 列表中。添加账号会顺带开启被关闭的渠道。
同一站点身份重新登录时,会更新原有账号,而不是再叠加一个。删除账号用账号菜单中的 删除,凭据会同时从 config.json 和运行中的账号池移除。
config.json 就是凭据库
账号的令牌和密钥都以明文保存在 config.json 中。不要提交或分享填过真实凭据的文件;分享示例时用占位符替换。
每个渠道的配置键
| 键 | 说明 |
|---|---|
providers.<id>.enabled | false 完全关闭该渠道(匿名入口也用它关闭)。省略时为开启。 |
providers.<id>.accounts | 账号列表,每项是一个对象,字段由渠道决定。 |
providers.<id>.accounts[].id | 账号名,用于界面、用量统计和日志。省略时由网关命名(登录产生的账号形如 cline-1a2b3c,按位置推断的形如 <id>-0)。 |
providers.<id>.options | 渠道级选项,例如 TRAE 的 channel、agg 的能力声明、本地服务的 models。 |
providers.<id>.options.network | 该渠道自己的网络线路,默认继承全局设置,见网络与代理。 |
选择模型:路由规则
客户端在请求的 model 字段中指定模型:
- 写成
渠道/模型(例如opencode/big-pickle、nvidia/<model-id>)会直接交给该渠道。 - 只写模型 ID 时,网关按固定顺序查找第一个列出该 ID 的渠道:
cline、opencode、kilo、gemini、zcode、minimax、trae、qoder、qodercn、buddy、workbuddy、codearts、loomy、raccoon、lobsterai、eac、agg、zhipu、nvidia,然后是其他渠道。 - 只开启了一个渠道时,未知的 ID 也会原样转给它。
GET /v1/models 中每个 ID 只出现一次,owned_by 是按上述顺序胜出的渠道。模型 ID 本身含有 / 时(例如 Kilo 的 openrouter/free),建议加上渠道前缀:kilo/openrouter/free,避免第一段被当成渠道名。客户端配置见接入客户端。
账号池与轮换
同一渠道的多个账号按配置顺序使用。一次请求遇到账号层面的失败时,网关会换下一个账号重试,每次请求最多尝试 server.max_account_retries 个账号(默认 3):
- 额度用尽或限流:该账号暂停轮换,时长取上游给出的重置时间,没有则为一小时。
- 凭据被拒:先尝试续期,再换账号。续期令牌本身被拒绝时,账号标记为 需要登录,不再参与轮换,直到重新登录。
- 已经向客户端输出内容后,请求不会自动重放。
这些规则的完整说明见模型行为。
续期与签到
很多登录型站点的令牌会过期。开启 凭据续期(server.auto_refresh,默认开启)后,网关每 30 分钟检查一次,续期一小时内到期或没有记录到期时间的账号。开启 每日签到(server.auto_checkin,默认开启)后,网关每天按北京时间日期为支持签到的站点领取免费额度。哪些站点支持续期、签到和余额查询,见免费站点。