使用场景 / 要解决的问题
- 新建 AI 提供商基本靠手动:填名称、选类型、填 Base URL,再逐个加模型;
models.dev/api.json 已收录 213 家供应商(含 Base URL、协议类型线索、模型与定价),却没有「选预设自动填充」的入口;内置快照 api.official.json 只覆盖 12 家官方 provider。
- 自定义面板脚本参数无配置入口:「自定义面板(DIY)」脚本(如
demo_balance.py)只能消费系统固定注入的 AICODE_* 环境变量,脚本自身的业务参数(额度查询地址、账号 ID、阈值等)只能写死进脚本,换场景就得复制改脚本。
期望的解决方案
- 内置预设供应商数据库:扩展现有
scripts/update-models-dev-assets.py 生成种子数据,首次启动导入 Room 数据库,离线开箱即用;每家预设含名称、协议类型(由 npm 字段映射,如 @ai-sdk/anthropic → Anthropic、@ai-sdk/openai-compatible → OpenAI 兼容)、Base URL(api 字段)、关联模型与定价。
- 新建供应商入口「从预设库添加」:可搜索供应商名/模型名,选中后自动填充类型、Base URL,并列出其模型供勾选导入;「中转站/自建」场景可基于
openai-compatible 预设克隆后改 Base URL。
- 版本化 + 增量更新:APK 携带基准版本,运行时复用
ModelMetadataService 缓存逻辑做版本对比刷新(delta),不覆盖用户自建/已保存数据;保留现有 api.official.json 兼容路径。
二、自定义面板(DIY)脚本参数联动
- 提供商编辑页「自定义面板 (DIY)」新增**「脚本参数」配置**(Key-Value 列表或 JSON),随提供商配置一起持久化。
- 联动传入:执行脚本时按配置传入,两种方式可选——注入为额外环境变量(如
AICODE_SCRIPT_PARAM_<KEY>),或按配置顺序作为命令行参数追加(python3 demo_balance.py KEY=VALUE ...)。
- 占位符联动:参数值支持引用提供商配置,如
{{PROVIDER_API_KEY}}、{{BASE_URL}},避免敏感信息重复填写。
- 「运行测试」同步生效:测试与自动刷新(进会话/LLM 返回/手动刷新)均使用当前参数联动执行;参数随提供商配置一并备份/还原。
备选方案
- 仅运行时全量拉取 models.dev 数据:缓存 api.json 但不落库、不可检索、离线无保障。
- 面板脚本参数只支持环境变量或命令行参数其中一种形式。
- 维持现状:供应商手动填写 + 面板脚本参数写死。
本提案同时替代已关闭的 #7「常用提供商预设」:由 13 家写死静态列表升级为数据库驱动 + models.dev 全量数据源。
补充信息
- 数据源:https://models.dev/api.json(MIT;213 家供应商,含
name/api/npm 字段与各模型 context/cost 字段,项目已在用)
- 现状实现:
scripts/update-models-dev-assets.py、app/src/main/assets/api.official.json、ModelMetadataService.kt、ProviderEditorScreen.kt(「自定义面板 (DIY)」区块)
- 既有规范:
docs-site/docs/advanced/dashboard-cards.md(AICODE_* 环境变量注入体系与刷新触发机制)
- 示例脚本:
demo_balance.py
验收期望
- 新建供应商点「从预设库添加」可搜索到 213 家内的目标,一键完成类型 + Base URL + 模型配置;断网首次使用即可浏览/搜索预设(离线保障)。
- 面板脚本可配置多条参数,「运行测试」与自动刷新联动生效,无需修改脚本文件。
- 内置库原地更新与脚本参数修改,均不影响用户已保存/自建的供应商与模型。
使用场景 / 要解决的问题
models.dev/api.json已收录 213 家供应商(含 Base URL、协议类型线索、模型与定价),却没有「选预设自动填充」的入口;内置快照api.official.json只覆盖 12 家官方 provider。demo_balance.py)只能消费系统固定注入的AICODE_*环境变量,脚本自身的业务参数(额度查询地址、账号 ID、阈值等)只能写死进脚本,换场景就得复制改脚本。期望的解决方案
一、预设供应商库(数据源 https://models.dev/api.json)
scripts/update-models-dev-assets.py生成种子数据,首次启动导入 Room 数据库,离线开箱即用;每家预设含名称、协议类型(由npm字段映射,如@ai-sdk/anthropic→ Anthropic、@ai-sdk/openai-compatible→ OpenAI 兼容)、Base URL(api字段)、关联模型与定价。openai-compatible预设克隆后改 Base URL。ModelMetadataService缓存逻辑做版本对比刷新(delta),不覆盖用户自建/已保存数据;保留现有api.official.json兼容路径。二、自定义面板(DIY)脚本参数联动
AICODE_SCRIPT_PARAM_<KEY>),或按配置顺序作为命令行参数追加(python3 demo_balance.py KEY=VALUE ...)。{{PROVIDER_API_KEY}}、{{BASE_URL}},避免敏感信息重复填写。备选方案
补充信息
name/api/npm字段与各模型context/cost字段,项目已在用)scripts/update-models-dev-assets.py、app/src/main/assets/api.official.json、ModelMetadataService.kt、ProviderEditorScreen.kt(「自定义面板 (DIY)」区块)docs-site/docs/advanced/dashboard-cards.md(AICODE_*环境变量注入体系与刷新触发机制)demo_balance.py验收期望