AGC 模型目录初始化改为从上游拉取:不再写死 gpt-6-astra/gpt-5.6-luna 与高质量/快速别名 #506

Closed
opened 2026-09-24 11:30:00 +08:00 by suzmii · 5 comments
Member

现象

AGC 官方模型目录在「数据库里还没有配置」时会回落到硬编码初始目录:quality=高质量=gpt-6-astra、fast=快速=gpt-5.6-luna,默认项 quality。而这两个模型已经从上游 Router 移除,导致:新环境 / 清库 / 后台从未保存过配置的实例,客户端下拉里直接给出两个已经不存在的模型,选中后上游 model_not_found,对话不可用,必须后台人工重新保存一次目录才恢复。

原因

# 位置 内容
1 server-rs/crates/spacetime-module/src/agc_models.rs:21-28 read_agc_model_catalog 在 agc_model_catalog 缺 id=0 行时,直接返回 module_runtime::AgcModelCatalog::default()
2 server-rs/crates/module-runtime/src/agc_models.rs:23-44 该 Default 硬编码 quality/高质量/gpt-6-astra、fast/快速/gpt-5.6-luna,default_model_id = quality
3 server-rs/crates/api-server/src/llm/mod.rs:188-202 /api/llm/models 把目录 alias 当 displayName 下发(所以客户端只看到「高质量/快速」)
4 server-rs/crates/api-server/src/config.rs:34、src/main.rs:210-214、src/external_api_keys.rs:1667-1679 OFFICIAL_LLM_ROUTER_MODEL = "gpt-6-astra" 仍被当作启动强校验常量(api-server 必须等于该模型名才允许启动),并写入 llm_router_account 的 route 元数据
5 apps/ai-game-creator-shell/src-tauri/src/main.rs:1461、apps/ai-game-creator-shell/game-creator.config.json:9 客户端默认 llm.model = "gpt-6-astra";该 json 被 include_str! 内嵌(main.rs:1490),首次启动原样落进用户私有配置(官方锁定构建下 llm.model 会被 selectedModelId 覆盖,但 debug/未锁定构建与落盘模板仍在写已移除的模型名)

补充事实:全仓库(含 platform-llm、external_api_keys.rs 的 Router 控制面调用面)没有任何“向上游查询模型列表”的实现;Router 控制面只用于 /api/user*、/api/token*、/api/subscription* 与额度 /api/status。唯一已有的“拉模型列表”代码在 AGC 客户端自定义 Provider 分支(src-tauri/src/config.rs:4340+,GET {base}/models 取 data[].id)。

目标

  1. 目录初始化不再写死模型:初始化时从上游拉取模型列表。
  2. 拉不到就报错,并且下次启动继续重试,直到目录里有数据。
  3. 不再填「高质量/快速」这类别名,直接用上游原始模型名展示。

拟改动

A. 目录初始化(server-rs)

  • 删除缺行兜底:spacetime-module/src/agc_models.rs:21-28 缺行时返回“未初始化”语义(procedure 报错或返回空),不再造默认目录。
  • 删除 module-runtime::AgcModelCatalog::default() 的硬编码内容(改为空/无默认),并同步删除 module-runtime/src/agc_models.rs:98-108 中 resolve("quality") == "gpt-6-astra" 一类断言。
  • api-server 启动期(ProcessRole::Api|All)新增「确保 AGC 模型目录已初始化」,挂在既有 try_restore_app_state_for_startup 钩子(api-server/src/main.rs:736-773,与 ensure_editor_generation_runtime_service_identity 同层):
    • 目录已有非空行 → 直接返回;
    • 缺失/空 → 查询上游模型列表 → 生成目录 → 走既有 save_agc_model_catalog procedure 落库(revision 0 → 1,保持乐观锁语义);
    • 上游失败或返回空列表 → 记录错误且不落库、不写任何硬编码目录;下次启动重试,直到成功;
    • 未初始化期间 /api/llm/models 返回明确的“模型目录未初始化”错误(当前是 503「模型目录暂不可用」语义可复用),/api/llm/responses 同样拒绝,而不是继续用写死目录放行。

B. 目录内容与 id / 别名词义

  • 每项:id = 上游模型名、alias = 上游模型名(原名直出,不再人工写别名)、modelId = 上游模型名、enabled = true。
  • 放宽 module-runtime/src/agc_models.rs:47-78 的校验:上游模型名常含 .、/、:(如 gpt-5.6-sol、provider/model),当前 id 只允许 [A-Za-z0-9_-] 且 ≤64、alias ≤40 且唯一,必须同步放宽(platform-default 继续保留为保留 id)。
  • default_model_id = 列表首项(或按可配置默认项,见待确认 3)。
  • GET /api/llm/models 契约保持 {id, displayName, defaultModelId, revision},但 displayName 语义变为“上游原始模型名”。需同步改:
    • api-server/src/llm/mod.rs:39-52 的 assert!(!payload.contains("gpt-")) 断言;
    • docs/technical/【技术方案】AGC后台模型别名与对话选择-2026-09-05.md:36,38;
    • docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md:510-512。

C. 后台「AGC 模型」页

  • 别名列失去意义(apps/admin-web/src/pages/AdminAgcModelsPage.tsx:166-190):去掉别名列 / 只读展示原名,保留启用、默认、删除与新增;顶部摘要(:87-107)“默认模型 = 别名”文案同步调整。

D. 清理写死的 gpt-6-astra

  • api-server/src/config.rs:34 的 OFFICIAL_LLM_ROUTER_MODEL 不再作为“必须等于某模型名”的启动强校验(main.rs:183-244、external_api_keys.rs:1663-1680 同步调整);或改为不绑定具体模型名。
  • AGC 客户端清掉 DEFAULT_GAME_CREATOR_LLM_MODEL(main.rs:1461)与 game-creator.config.json:9 的写死模型名,并同步 scripts/check-config.mjs、src-tauri/src/tests/configuration.rs:711-744 的断言。

E. 客户端

  • 展示链路不用改:ConversationModelSelect 只渲染 displayName(src/features/project-workspace/ConversationModelSelect.tsx:388,415-419),原名会直接显示出来。
  • 需要确认的点:selectedModelId 现在会是含 .// 的模型名,会经 src-tauri/src/config.rs:3751-3757 写进 llm.model 并作为 model 发给 /api/llm/responses,需核对客户端与 api-server 两侧对该字符集的处理。

待确认

  1. 上游列表的来源与凭据:Router 是 New API 实例,服务端只有 llm_router_admin_token(控制面)和每用户 Router Key;仓库里没有模型列表端点的规格/样例,实现前需要确认上游允许的读端点、鉴权方式与返回形状。另需确认“以哪个用户分组的可见模型为准”——AGC 账号的 Router Token 分组是 taonier(external_api_keys.rs 的 LLM_ROUTER_TOKEN_GROUP),目录必须与 AGC 账号实际能用的模型集合一致,否则仍会出现“目录里有、上游 404”。
  2. 初始化失败的行为:只在“下次启动”重试一次,还是走既有 DependencyUnavailable 5s 循环在本次启动内持续重试?
  3. 默认项:取列表首项,还是允许显式指定默认模型名(env / 后台)?
  4. 后台页面去留:去掉别名列保留启用/默认,还是整页退化为只读同步视图?
  5. 是否跟随上游变化:只在缺失/空时初始化一次,还是每次启动都与上游同步(覆盖增删)?当前按“只在缺失/空时初始化”描述。

验收

  • 空库 + 上游可达:启动后 agc_model_catalog 自动填充为上游模型列表,/api/llm/models 的 displayName 即原始模型名,无「高质量/快速」。
  • 空库 + 上游不可达:启动报错日志、目录保持未初始化、/api/llm/models 明确报错且不回退任何硬编码模型名;下次启动成功后自动可用。
  • 已存在的合法目录不被初始化流程破坏(按待确认 5 的结论验证)。
  • 生产代码中不再存在 gpt-6-astra / gpt-5.6-luna / 高质量 / 快速 作为默认模型或初始目录(测试 fixture / 历史文档除外)。
## 现象 AGC 官方模型目录在「数据库里还没有配置」时会回落到**硬编码初始目录**:`quality=高质量=gpt-6-astra`、`fast=快速=gpt-5.6-luna`,默认项 `quality`。而这两个模型已经**从上游 Router 移除**,导致:新环境 / 清库 / 后台从未保存过配置的实例,客户端下拉里直接给出两个已经不存在的模型,选中后上游 `model_not_found`,对话不可用,必须后台人工重新保存一次目录才恢复。 ## 原因 | # | 位置 | 内容 | |---|---|---| | 1 | `server-rs/crates/spacetime-module/src/agc_models.rs:21-28` | `read_agc_model_catalog` 在 `agc_model_catalog` 缺 `id=0` 行时,直接返回 `module_runtime::AgcModelCatalog::default()` | | 2 | `server-rs/crates/module-runtime/src/agc_models.rs:23-44` | 该 `Default` 硬编码 `quality/高质量/gpt-6-astra`、`fast/快速/gpt-5.6-luna`,`default_model_id = quality` | | 3 | `server-rs/crates/api-server/src/llm/mod.rs:188-202` | `/api/llm/models` 把目录 `alias` 当 `displayName` 下发(所以客户端只看到「高质量/快速」) | | 4 | `server-rs/crates/api-server/src/config.rs:34`、`src/main.rs:210-214`、`src/external_api_keys.rs:1667-1679` | `OFFICIAL_LLM_ROUTER_MODEL = "gpt-6-astra"` 仍被当作**启动强校验常量**(api-server 必须等于该模型名才允许启动),并写入 `llm_router_account` 的 route 元数据 | | 5 | `apps/ai-game-creator-shell/src-tauri/src/main.rs:1461`、`apps/ai-game-creator-shell/game-creator.config.json:9` | 客户端默认 `llm.model = "gpt-6-astra"`;该 json 被 `include_str!` 内嵌(`main.rs:1490`),首次启动原样落进用户私有配置(官方锁定构建下 `llm.model` 会被 `selectedModelId` 覆盖,但 debug/未锁定构建与落盘模板仍在写已移除的模型名) | 补充事实:全仓库(含 `platform-llm`、`external_api_keys.rs` 的 Router 控制面调用面)**没有任何**“向上游查询模型列表”的实现;Router 控制面只用于 `/api/user*`、`/api/token*`、`/api/subscription*` 与额度 `/api/status`。唯一已有的“拉模型列表”代码在 AGC 客户端自定义 Provider 分支(`src-tauri/src/config.rs:4340+`,`GET {base}/models` 取 `data[].id`)。 ## 目标 1. 目录**初始化**不再写死模型:初始化时从上游拉取模型列表。 2. 拉不到就报错,并且下次启动继续重试,直到目录里有数据。 3. 不再填「高质量/快速」这类别名,**直接用上游原始模型名展示**。 ## 拟改动 ### A. 目录初始化(server-rs) - 删除缺行兜底:`spacetime-module/src/agc_models.rs:21-28` 缺行时返回“未初始化”语义(procedure 报错或返回空),不再造默认目录。 - 删除 `module-runtime::AgcModelCatalog::default()` 的硬编码内容(改为空/无默认),并同步删除 `module-runtime/src/agc_models.rs:98-108` 中 `resolve("quality") == "gpt-6-astra"` 一类断言。 - api-server 启动期(`ProcessRole::Api|All`)新增「确保 AGC 模型目录已初始化」,挂在既有 `try_restore_app_state_for_startup` 钩子(`api-server/src/main.rs:736-773`,与 `ensure_editor_generation_runtime_service_identity` 同层): - 目录已有非空行 → 直接返回; - 缺失/空 → 查询上游模型列表 → 生成目录 → 走既有 `save_agc_model_catalog` procedure 落库(revision `0 → 1`,保持乐观锁语义); - 上游失败或返回空列表 → 记录错误且**不落库、不写任何硬编码目录**;下次启动重试,直到成功; - 未初始化期间 `/api/llm/models` 返回明确的“模型目录未初始化”错误(当前是 503「模型目录暂不可用」语义可复用),`/api/llm/responses` 同样拒绝,而不是继续用写死目录放行。 ### B. 目录内容与 id / 别名词义 - 每项:`id = 上游模型名`、`alias = 上游模型名`(原名直出,不再人工写别名)、`modelId = 上游模型名`、`enabled = true`。 - 放宽 `module-runtime/src/agc_models.rs:47-78` 的校验:上游模型名常含 `.`、`/`、`:`(如 `gpt-5.6-sol`、`provider/model`),当前 id 只允许 `[A-Za-z0-9_-]` 且 ≤64、alias ≤40 且唯一,必须同步放宽(`platform-default` 继续保留为保留 id)。 - `default_model_id` = 列表首项(或按可配置默认项,见待确认 3)。 - `GET /api/llm/models` 契约保持 `{id, displayName, defaultModelId, revision}`,但 `displayName` 语义变为“上游原始模型名”。需同步改: - `api-server/src/llm/mod.rs:39-52` 的 `assert!(!payload.contains("gpt-"))` 断言; - `docs/technical/【技术方案】AGC后台模型别名与对话选择-2026-09-05.md:36,38`; - `docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md:510-512`。 ### C. 后台「AGC 模型」页 - 别名列失去意义(`apps/admin-web/src/pages/AdminAgcModelsPage.tsx:166-190`):去掉别名列 / 只读展示原名,保留启用、默认、删除与新增;顶部摘要(`:87-107`)“默认模型 = 别名”文案同步调整。 ### D. 清理写死的 `gpt-6-astra` - `api-server/src/config.rs:34` 的 `OFFICIAL_LLM_ROUTER_MODEL` 不再作为“必须等于某模型名”的启动强校验(`main.rs:183-244`、`external_api_keys.rs:1663-1680` 同步调整);或改为不绑定具体模型名。 - AGC 客户端清掉 `DEFAULT_GAME_CREATOR_LLM_MODEL`(`main.rs:1461`)与 `game-creator.config.json:9` 的写死模型名,并同步 `scripts/check-config.mjs`、`src-tauri/src/tests/configuration.rs:711-744` 的断言。 ### E. 客户端 - 展示链路不用改:`ConversationModelSelect` 只渲染 `displayName`(`src/features/project-workspace/ConversationModelSelect.tsx:388,415-419`),原名会直接显示出来。 - 需要确认的点:`selectedModelId` 现在会是含 `.`/`/` 的模型名,会经 `src-tauri/src/config.rs:3751-3757` 写进 `llm.model` 并作为 `model` 发给 `/api/llm/responses`,需核对客户端与 api-server 两侧对该字符集的处理。 ## 待确认 1. **上游列表的来源与凭据**:Router 是 New API 实例,服务端只有 `llm_router_admin_token`(控制面)和每用户 Router Key;仓库里没有模型列表端点的规格/样例,实现前需要确认上游允许的读端点、鉴权方式与返回形状。另需确认“以哪个用户分组的可见模型为准”——AGC 账号的 Router Token 分组是 `taonier`(`external_api_keys.rs` 的 `LLM_ROUTER_TOKEN_GROUP`),目录必须与 AGC 账号实际能用的模型集合一致,否则仍会出现“目录里有、上游 404”。 2. **初始化失败的行为**:只在“下次启动”重试一次,还是走既有 `DependencyUnavailable` 5s 循环在本次启动内持续重试? 3. **默认项**:取列表首项,还是允许显式指定默认模型名(env / 后台)? 4. **后台页面去留**:去掉别名列保留启用/默认,还是整页退化为只读同步视图? 5. **是否跟随上游变化**:只在缺失/空时初始化一次,还是每次启动都与上游同步(覆盖增删)?当前按“只在缺失/空时初始化”描述。 ## 验收 - 空库 + 上游可达:启动后 `agc_model_catalog` 自动填充为上游模型列表,`/api/llm/models` 的 `displayName` 即原始模型名,无「高质量/快速」。 - 空库 + 上游不可达:启动报错日志、目录保持未初始化、`/api/llm/models` 明确报错且**不回退任何硬编码模型名**;下次启动成功后自动可用。 - 已存在的合法目录不被初始化流程破坏(按待确认 5 的结论验证)。 - 生产代码中不再存在 `gpt-6-astra` / `gpt-5.6-luna` / `高质量` / `快速` 作为默认模型或初始目录(测试 fixture / 历史文档除外)。
suzmii added the Kind/Bug
Priority
High
2
Kind/Enhancement
labels 2026-09-24 11:30:00 +08:00
Member

id = 上游模型名

所以也不是随机值了呗😁️

> id = 上游模型名 所以也不是随机值了呗😁️
Author
Member

id = 上游模型名

所以也不是随机值了呗😁️

线上的一般是调过的,默认值一般是本地新建worktree的时候用到,懒得每次都开后台调了所以希望默认直接显示所有模型

> > id = 上游模型名 > > 所以也不是随机值了呗😁️ 线上的一般是调过的,默认值一般是本地新建worktree的时候用到,懒得每次都开后台调了所以希望默认直接显示所有模型
Author
Member

已按 issue 描述实现并开 PR #507(分支 enhance/default-model,4 个提交,已推送)。

落地结果:

  • 目录项收敛为「上游原始模型名 + 启用状态 + 默认项」,退役稳定标识/别名/实际模型名三层映射;read_agc_model_catalog 缺行不再返回内置目录。
  • api-server(API/All)启动期若目录缺失/结构不符/校验不通过,用 Router 管理员 Token 调 GET {Router}/models 建目录并写回(revision 自增);拉不到只记 error、不写替代目录,下次启动重试。
  • 目录未初始化期间 /api/llm/models、/api/llm/responses、/api/llm/chat/completions、后台 /admin/api/agc-models 返回 503「模型目录未初始化」,不回退任何内置模型名。
  • GET /api/llm/models 的 DTO 形状不变,id/displayName 都是上游原始模型名,存量客户端不发版即可显示原名。
  • 后台页面去掉别名列;AGC 客户端清掉写死的 gpt-6-astra(模板与 Rust 默认改为 platform-default 占位)。

验证:本地隔离 SpacetimeDB + loopback 假上游跑通四条路径(空库+可达→自动填充 revision=1 且接口返回原名;空库+不可达→启动 error + 接口 503;同库换成可达上游重启→同步成功;目录已存在时重启→不重写),另有 Rust 定向测试(module-runtime 3、api-server 30+18、AGC 客户端 45)、admin-web 页面测试与 typecheck、check:spacetime-schema / check:server-rs-ddd / 编码与文档索引检查全部通过。

待真实环境确认(PR 已标注为残留项):

  1. 真实 Router 是否接受管理员 Token 调 GET /v1/models,以及 taonier 分组的可见模型集合是否是我们要暴露的集合。
  2. OFFICIAL_LLM_ROUTER_MODEL = "gpt-6-astra" 仍作为部署配置校验常量与 provisioning 元数据存在(已与目录解耦),是否移除建议单独评估。
  3. 存量旧结构目录会在部署后首次启动时按未初始化重建,owner 之前的启用/默认选择需要重新设置一次。
已按 issue 描述实现并开 PR #507(分支 `enhance/default-model`,4 个提交,已推送)。 落地结果: - 目录项收敛为「上游原始模型名 + 启用状态 + 默认项」,退役稳定标识/别名/实际模型名三层映射;`read_agc_model_catalog` 缺行不再返回内置目录。 - api-server(API/All)启动期若目录缺失/结构不符/校验不通过,用 Router 管理员 Token 调 `GET {Router}/models` 建目录并写回(revision 自增);拉不到只记 error、不写替代目录,下次启动重试。 - 目录未初始化期间 `/api/llm/models`、`/api/llm/responses`、`/api/llm/chat/completions`、后台 `/admin/api/agc-models` 返回 503「模型目录未初始化」,不回退任何内置模型名。 - `GET /api/llm/models` 的 DTO 形状不变,`id`/`displayName` 都是上游原始模型名,存量客户端不发版即可显示原名。 - 后台页面去掉别名列;AGC 客户端清掉写死的 `gpt-6-astra`(模板与 Rust 默认改为 `platform-default` 占位)。 验证:本地隔离 SpacetimeDB + loopback 假上游跑通四条路径(空库+可达→自动填充 revision=1 且接口返回原名;空库+不可达→启动 error + 接口 503;同库换成可达上游重启→同步成功;目录已存在时重启→不重写),另有 Rust 定向测试(module-runtime 3、api-server 30+18、AGC 客户端 45)、admin-web 页面测试与 typecheck、`check:spacetime-schema` / `check:server-rs-ddd` / 编码与文档索引检查全部通过。 待真实环境确认(PR 已标注为残留项): 1. 真实 Router 是否接受管理员 Token 调 `GET /v1/models`,以及 `taonier` 分组的可见模型集合是否是我们要暴露的集合。 2. `OFFICIAL_LLM_ROUTER_MODEL = "gpt-6-astra"` 仍作为部署配置校验常量与 provisioning 元数据存在(已与目录解耦),是否移除建议单独评估。 3. 存量旧结构目录会在部署后首次启动时按未初始化重建,owner 之前的启用/默认选择需要重新设置一次。
Author
Member

补充实测结论与一处修正(PR #507 已更新):

  • 真实 Router 上 /v1/models 用管理 token 是 401(该端点要用户 Key),管理面 /api/models/ 会带出已下线、无路由绑定的 gpt-6-astra/gpt-6-luna,所以目录来源最终定为分组定价列表 GET {Router 控制面}/api/pricing?group=taonier(公开只读,不带凭据)。
  • 实测该列表返回顺序不稳定,已把目录建法改为按模型名字典序排序、默认项取排序后第一个,保证重复同步结果一致。
  • 真实上游验收:清空 agc_model_catalog 后启动 api-server → revision=1 model_count=6,GET /api/llm/models 返回 deepseek-flash / deepseek-v4-pro / glm-5.3 / glm-5.3-flash / qwen-image-3.0 / qwen3.8-flash,默认项 deepseek-flash;未初始化期间接口 503,不回退内置模型。
补充实测结论与一处修正(PR #507 已更新): - 真实 Router 上 `/v1/models` 用管理 token 是 401(该端点要用户 Key),管理面 `/api/models/` 会带出已下线、无路由绑定的 `gpt-6-astra/gpt-6-luna`,所以目录来源最终定为**分组定价列表** `GET {Router 控制面}/api/pricing?group=taonier`(公开只读,不带凭据)。 - 实测该列表返回顺序不稳定,已把目录建法改为按模型名字典序排序、默认项取排序后第一个,保证重复同步结果一致。 - 真实上游验收:清空 `agc_model_catalog` 后启动 api-server → `revision=1 model_count=6`,`GET /api/llm/models` 返回 `deepseek-flash / deepseek-v4-pro / glm-5.3 / glm-5.3-flash / qwen-image-3.0 / qwen3.8-flash`,默认项 `deepseek-flash`;未初始化期间接口 503,不回退内置模型。
Author
Member

按讨论后的最终口径重做了这一版(PR #507 已强推干净历史,5 个提交):

  • 只改“目录初始值从哪来”:缺配置时不再回退写死的 高质量/快速 → gpt-6-astra/gpt-5.6-luna,改为 api-server 启动期从上游分组定价列表 GET /api/pricing?group=taonier(公开只读)同步;拉不到就报错、不写替代目录,下次启动重试,直到目录里有数据。
  • 格式与契约没动:目录字段仍是 id/alias/modelId/defaultModelId,后台页面与 DTO、/api/llm/models 形状、客户端标识校验全部保持原样。id 用模型名 slug(glm-5.3 → glm-5-3)、alias/modelId 用上游原名,所以已发布客户端不需要发版。
  • 真实上游验证:清空目录后启动 → revision=1 model_count=6,落库 {id:"glm-5-3",alias:"glm-5.3",modelId:"glm-5.3"},GET /api/llm/models 返回 displayName 为上游原名、默认项 deepseek-flash;目录已存在时重启不重写。
  • 残留:上游模型超过 32 条时同步会失败(目录上限未改);qwen-image-3.0 是否对 AGC 隐藏由 owner 后台停用;module 与 api-server 需同批发布/回滚。
按讨论后的最终口径重做了这一版(PR #507 已强推干净历史,5 个提交): - **只改“目录初始值从哪来”**:缺配置时不再回退写死的 `高质量/快速 → gpt-6-astra/gpt-5.6-luna`,改为 api-server 启动期从上游分组定价列表 `GET /api/pricing?group=taonier`(公开只读)同步;拉不到就报错、不写替代目录,下次启动重试,直到目录里有数据。 - **格式与契约没动**:目录字段仍是 `id`/`alias`/`modelId`/`defaultModelId`,后台页面与 DTO、`/api/llm/models` 形状、客户端标识校验全部保持原样。`id` 用模型名 slug(`glm-5.3` → `glm-5-3`)、`alias`/`modelId` 用上游原名,所以已发布客户端不需要发版。 - **真实上游验证**:清空目录后启动 → `revision=1 model_count=6`,落库 `{id:"glm-5-3",alias:"glm-5.3",modelId:"glm-5.3"}`,`GET /api/llm/models` 返回 `displayName` 为上游原名、默认项 `deepseek-flash`;目录已存在时重启不重写。 - 残留:上游模型超过 32 条时同步会失败(目录上限未改);`qwen-image-3.0` 是否对 AGC 隐藏由 owner 后台停用;module 与 api-server 需同批发布/回滚。
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GenarrativeAI/Genarrative#506