AxonHub 的 API key profile 到底在管什么

Question(问题)

Projects(项目)里能配 Profiles(配置),API Keys(API 密钥)里也能配 API Key Profiles(配置文件管理)。那 API Key Profiles(配置文件管理)这层到底在管什么?

Short Answer(简答)

API Key Profiles(配置文件管理)主要管这把 API Key(API 密钥)的“允许范围”,不是主路由优先级本身。

最重要的几项是:

  • modelIDs:允许请求哪些逻辑模型名
  • channelIDs / channelTags:允许这把 API Key(API 密钥)走哪些 Channel(渠道)范围
  • modelMappings:是否把一个请求模型名改写成另一个模型名

Facts(事实)

  • API Keys(API 密钥)页面里,英文文案是 API Key Profiles,中文文案是 配置文件管理
  • Projects(项目)页面里,英文文案是 Profiles,中文文案是 配置
  • 数据库里 api_keys 表直接有一个 profiles JSON 字段;每把 API Key(API 密钥)各自保存自己的 profiles(配置文件管理)。
  • 当前数据库里:沉浸式翻译这把 key 已有 轻量文本处理,闪电说这把 key 的 profiles 还是 null。
  • 前端打开 API Key Profiles(配置文件管理)弹窗时,直接读取当前选中 API Key(API 密钥)的 apiKeyDetail.profiles 作为初始数据,没有全局 profile 池可下拉复用。
  • 代码里 GetActiveProfile() 会先取 API Key(API 密钥)当前激活的 profile。
  • model_access.go 会用 profile 里的 modelIDs 检查请求模型是否允许。
  • select_candidates.go 会把 project profile 和 API key profile 的 channelIDs / channelTags 叠加到候选 Channel(渠道)过滤里。
  • model_mapper.go 只在有 modelMappings 时才会做模型名改写。
  • 模型 association 的 priority 定义在模型设置里,不在 API Key Profiles(配置文件管理)里。

Interpretation(解释)

所以 API Key Profiles(配置文件管理)更像“权限 / 范围 / 规则模板”,而不是“候选上游优先级表”。

你可以把它理解成:

  • 模型菜单:决定怎么路由
  • API Key Profiles(配置文件管理):决定这把 API Key(API 密钥)允许看到和碰到什么

Open Questions(待解问题)

  • 项目 profile 之后是否也值得单独整理一页?
  • 后续是否需要给不同用途的 key 统一命名 profile 规范?

Next Checks(后续核查)

  • 后续如果开始大量使用不同用途 key,再补一页 project profile 与 API key profile 的对照。