跳到正文

交给 AI 接入

按模型种类选择 HopBase 接入说明,让编程 AI 只配置当前需要的模型与密钥。

先选择要用的模型种类,再把对应标签里的接入说明交给 Codex、Claude Code、Cursor 等编程 AI。每份说明只包含这类模型需要的密钥、协议和端点,不会让 AI 一次配置全部能力。

先选择正确的模型标签

你要接入的能力选择标签使用的分组密钥
Claude API 或 Claude CodeClaudeClaude 分组密钥
GPT 对话或 Codex ResponsesGPT / Codex包含 Codex Plus、Codex Pro 或 GPT 官方直连(Azure)分组的密钥——Codex 分组只能对话;Azure 分组另含 gpt-image-2.5-flare 与 gpt-image-2.5-sunburst 生图
GPT Image 生图GPT / CodexGPT Image 分组密钥——含 gpt-image-* 全系列;「GPT 官方直连(Azure)」也能调 gpt-image-2.5-flare 与 gpt-image-2.5-sunburst
Gemini 对话或 Banana 图片GeminiGemini 分组密钥
GLM 对话或通过 CC Switch 使用 GLMGLMGLM 分组密钥
Seedream 图片生成或编辑SeedreamSeedream 分组密钥
Seedance 视频生成SeedanceSeedance 分组密钥
MiniMax H3 视频生成MiniMax H3MiniMax H3 分组密钥——H3 与 H3-Max 是两个独立分组,H3 密钥调不到 H3-Max
可灵视频、生图、运动控制、数字人或对口型可灵可灵分组密钥
万相 3.0 或快乐马视频生成万相 / 快乐马万相 3.0 分组密钥或快乐马分组密钥——控制台里是两个独立分组,一把密钥可以同时包含两者
Grok 对话、生图或视频生成GrokGrok 分组密钥;视频用独立的 Grok 视频分组
通义千问对话,可带图片或视频输入通义千问通义千问分组密钥
DeepSeek V4 对话或推理DeepSeek V4DeepSeek 分组密钥
Kimi K3 对话Kimi K3Kimi K3 分组密钥
豆包 Seed 对话,可带图片输入豆包 Seed豆包 Seed 分组密钥
Midjourney 生图MidjourneyMidjourney 生图分组密钥
语音合成或声音克隆MiniMax 语音MiniMax 语音分组密钥
豆包语音合成、场景音频生成或声音复刻豆包语音豆包语音分组密钥
一类模型对应一把分组密钥:

多模型项目使用当前说明列出的独立环境变量,例如 HOPBASE_CLAUDE_API_KEY 或 HOPBASE_GEMINI_API_KEY;单模型项目可继续使用 HOPBASE_API_KEY。不要把真实密钥粘贴到 AI 对话,也不要写进源码、提交记录、截图或日志。

控制台里的准确分组名:

每一行对应的准确分组名见快速开始 · 分组怎么选。「Claude Max (ccmax)」分组只能在 Claude Code 客户端里用;给 SDK 或 API 项目接 Claude 时,请选其他 Claude 分组。

Anthropic Messages / Claude Code,只使用 Claude 系列密钥
请在当前项目中只通过 HopBase 接入 Claude 模型,严格遵守以下接入说明;与厂商官方 API 文档不一致时,以本说明为准。

本次范围
- 只实现 Claude API(Anthropic Messages)或 Claude Code 所需的接入;不要添加、配置或测试其他模型种类。
- 保留项目现有框架、SDK 和代码风格,只做最小必要修改。
- 先判断这是本地单用户工具、内部服务,还是代表下游客户 / 多租户发起请求,再决定密钥放置和调用架构。

密钥
- 只使用 Claude 系列密钥。每把密钥只绑定一个控制台分组,只能调用该分组内的模型:
  - SDK、HTTP、编辑器与 Claude Code:「Claude Max (官号满血版)」或「Claude Max (官号满血版) - 限时特惠」。
  - 「Claude Max (ccmax)」只能在 Claude Code 客户端内使用;用这把密钥走 SDK 或 HTTP 调用会失败。
- 多模型项目读取 HOPBASE_CLAUDE_API_KEY 或现有密钥管理器;只有明确为单模型项目时才复用 HOPBASE_API_KEY。
- 不要创建新密钥、不要读取其他模型种类的密钥,也不要让我把真实密钥粘贴进对话。密钥不存在时停止,提示我在控制台「API 密钥」中创建对应分组的密钥,并在本机或密钥管理器中配置。

模型
- 先用这把密钥调用 GET https://api.hop-base.com/v1/models,只使用返回列表中以 claude- 开头的 ID,原样复制。
- 在售:claude-fable-5-1、claude-sonnet-5、claude-sonnet-5-5、claude-opus-5-5、claude-fable-5、claude-opus-5、claude-opus-4-8、claude-opus-4-7、claude-opus-4-6、claude-sonnet-4-6、claude-haiku-4-5-20251001。
- 404 model_not_found 表示该 ID 不在这把密钥的分组里:重新读取 /v1/models 并使用返回的 ID,绝不猜测、缩写或改写模型名。

连接
- Base URL 为 https://api.hop-base.com,不带 /v1(SDK 会自行拼上 /v1/messages)。Base URL 多写 /v1 会变成 /v1/v1/messages 并返回 404。
- 鉴权:SDK 用 api_key 参数,原生 HTTP 用 x-api-key 请求头;保持 SDK 原生鉴权方式。
- 端点:POST /v1/messages 与 POST /v1/messages/count_tokens。Claude 密钥调用 OpenAI 路径(/v1/chat/completions、/v1/responses)返回 404;不要把 Messages 调用改写成 Chat Completions。
- Claude Code:ANTHROPIC_BASE_URL=https://api.hop-base.com,ANTHROPIC_AUTH_TOKEN=<Claude 密钥>。一键配置会把两者写进 ~/.claude/settings.json 的 env 块,该文件优先于 shell 环境变量。

请求规则
- 始终显式传 max_tokens。省略时按 4096 补齐,长输出会以 stop_reason "max_tokens" 截断。
- claude-opus-5-5:思考恒开——传 thinking {"type":"disabled"} 或 budget_tokens 返回 400;用 output_config.effort 控制深度(默认 medium)。tool_choice 为 any / tool 返回 400(改用 auto)。不支持 assistant 预填。
- 历史中的 thinking 块必须按收到时原样回传(含 signature);改写、合并或跨模型复用会返回 400 "Invalid signature in thinking block"。
- 非流式调用总时长上限 300 秒(超时 504)。长输出请用流式,并原样透传 Anthropic SSE;count_tokens 请求同样占用并发。

错误与重试
- 按 HTTP 状态码和 error.code 分支,不要匹配 message 文本;记录响应头 x-request-id 以便排查。
- 可退避重试(2 秒、5 秒、15 秒,最多 3 次,遵守 Retry-After):429、502、503、504,以及中断的流。
- 不要原样重试:400、401、402、403、404、413、422——先修正请求、密钥、分组或余额。
- Anthropic 形状的错误体没有 code 字段;密钥类错误(401、402、403)即使在 /v1/messages 上也使用 OpenAI 形状 {"error":{"code":…}}。
- 404 "This API path is not supported by the current platform" = 协议选错或 Base URL 多了 /v1。修正配置,不要重试。
- 流式开始后出错时 HTTP 仍是 200,错误以 event: error 事件到达;在读取循环中处理,并整体重发请求。

实施要求
- 把 Base URL、密钥变量名和默认模型写进项目现有配置体系,并同步更新 .env.example;禁止写入真实密钥。
- 下游 / 多租户调用必须把密钥留在服务端,复用调用方鉴权,并加上模型 allowlist、请求限制、超时、限流、用量归因和脱敏日志;本地单用户工具不要引入这一层。
- 账户默认并发 5 个请求,超出立即返回 429 并带 Retry-After: 1,不会排队;请在客户端限流。

验证与交付
- 配置后发送一次最小真实请求;只有项目实际使用流式时才追加流式测试。
- 用返回列表中的 claude- 模型发送一条 max_tokens 为 1024、要求“只回复 ok”的 Messages 请求,并验证 content[0].text。
- 最后报告修改的文件、密钥变量名、模型 ID、端点、HTTP 状态和脱敏响应摘要,并给出启动、验证和回滚命令。

下载给编程 Agent 的规则文件

勾选本项目用到的全部模型种类。文件会合并它们的接入说明:通用规则只写一次,再按模型种类分节,并附上实时文档与 MCP 服务的入口。勾选超过三个模型种类时,每节只保留密钥、模型与连接规则,完整规则改为链接。

模型种类
保存为 AGENTS.md
保存为 .cursor/rules/hopbase.mdc
保存为 .claude/skills/hopbase-api/SKILL.md

切换标签时,代码区和“复制给 AI”会同步切换。接入说明要求 AI 只使用当前模型种类的密钥执行模型发现,再从返回列表中选择模型,避免跨套餐误配。

想把规则留在仓库里:在说明下方的面板勾选本项目用到的全部模型种类,合并下载为 AGENTS.md、Cursor 规则(.cursor/rules/hopbase.mdc)或 Claude Code skill(.claude/skills/hopbase-api/SKILL.md)。通用规则只写一次,随后按模型种类分节,并附上实时文档与下文 MCP 服务的入口。把文件提交进仓库,让每次 Agent 会话都从同一套规则出发;模型或参数有变化后重新下载一次。

AI 会如何判断下游场景

项目场景AI 应采用的接入方式
本地单用户工具直接使用环境变量和对应 SDK,不额外增加代理服务
内部服务在服务端保存密钥,并保留现有鉴权、限流和错误处理
面向客户或多租户增加密钥隔离、调用方鉴权、模型 allowlist、限流、用量归因、SSE 透传和脱敏日志

接入说明不会把普通的单用户本地接入改造成复杂网关;只有项目代表下游客户发起请求时,才要求补齐服务端保护措施。

MCP 服务

编程 Agent 也可以通过 MCP 实时查询 HopBase,而不只依赖保存下来的文件。MCP 服务只读,使用与请求相同的 API 密钥鉴权;模型调用仍走常规 API 端点。

项目值
端点https://api.hop-base.com/mcp(Streamable HTTP,只接受 POST;不支持 SSE 流与批量请求)
鉴权Authorization: Bearer <密钥> 或 x-api-key: <密钥>
范围结果只涉及当前这把密钥:它的各个分组、可调模型与用量
工具返回
list_models这把密钥可调用的模型及实付价
get_model_limits指定模型 ID:这把密钥能否调用,以及文档中该模型的端点、请求参数与上下限,附来源页链接
search_docs与查询(模型 ID、参数名、错误码)最匹配的文档小节,每条带链接与摘要
get_balance账户余额与这把密钥的花费上限使用情况(USD)
get_key_info密钥名称、分组、花费上限、并发上限、过期时间与状态
get_usage这把密钥的请求数、token 数与账面费用;默认最近 7 天,最长 92 天

get_model_limits 与 search_docs 读取已发布的文档,最多每小时刷新一次。以链接的文档页为准:结果里没列出的限制不代表不存在。

Claude Code

claude mcp add --transport http hopbase https://api.hop-base.com/mcp \
  --header "Authorization: Bearer $HOPBASE_API_KEY"

运行命令时 shell 会展开环境变量,密钥因此保存在本机的 Claude Code 配置里。需要团队共享的项目配置时,改为在 .mcp.json 中添加该服务,并把请求头写成 "Authorization": "Bearer ${HOPBASE_API_KEY}";Claude Code 启动时再展开,文件里不含密钥。

Cursor

在项目的 .cursor/mcp.json(或对所有项目生效的 ~/.cursor/mcp.json)中添加:

{
  "mcpServers": {
    "hopbase": {
      "url": "https://api.hop-base.com/mcp",
      "headers": { "Authorization": "Bearer ${env:HOPBASE_API_KEY}" }
    }
  }
}
MCP 能看到什么由密钥决定:

list_models 与 get_model_limits 只能看到所配置密钥所含的分组。要查看其他模型种类,给密钥加上它的分组,或用包含该分组的密钥再添加一个服务条目。

下一步