新增三个层级的模型配置管理功能: - 平台级模型配置(管理台):配置列表、新增/编辑、删除(默认模型不允许删除)、设为默认(仅页面状态) - 项目级模型配置(工作台):配置列表、新增/编辑、删除(允许删除默认)、设为默认(仅页面状态) - 个人模型配置(工作台):配置列表、新增/编辑、删除(允许删除默认)、设为默认(仅页面状态) - 融合式模型选择器:在聊天输入框顶部集成,按层级分组展示模型列表(平台/项目/个人) 技术实现: - 新增项目级和个人级配置数据文件 - 扩展 api.js 数据访问层,添加 consoleModels.project 和 consoleModels.user 对象 - 新增 4 个页面组件(ProjectModelConfigsPage、AddProjectModelConfigPage、UserModelConfigsPage、AddUserModelConfigPage) - 修改 2 个现有页面(ModelConfigsPage、ChatPage、ConsoleLayout) - 修改 Modal 组件支持 cancelText 为空时隐藏取消按钮 - 在 App.jsx 中添加 6 条新路由 - 新增模型选择器样式文件(融合式设计、分组展示、响应式) - 更新 README.md 项目结构 样式特点: - 融合式模型选择器与输入框风格一致 - 下拉列表按层级分组(平台/项目/个人) - 默认标记使用渐变背景色 - 选中状态高亮(浅蓝色背景 + 左侧边框 + 右侧勾选) - 响应式设计(移动端适配) 数据示例: - 项目级:3 个示例配置(不同类型和状态) - 个人级:2 个示例配置(不同类型和状态)
9.3 KiB
模型配置管理业务设计
概述
模型配置管理是一个多层级模型配置系统,支持平台级、项目级、用户级三个层级的模型配置。各级配置独立管理,模型列表累加可见,默认模型按优先级链确定。
核心业务规则
模型配置层级结构
graph TB
subgraph Platform["平台级模型配置 (Platform Level)"]
P1[配置者: 平台管理员]
P2[可见性: 所有用户可见]
P3[用途: 作为所有用户的基础模型池]
P4[默认模型: 平台默认模型]
end
subgraph Project["项目级模型配置 (Project Level)"]
Pr1[配置者: 项目管理员]
Pr2[可见性: 仅项目成员可见]
Pr3[用途: 项目专用模型, 覆盖平台默认]
Pr4[默认模型: 项目默认模型]
end
subgraph User["用户级模型配置 (User Level)"]
U1[配置者: 用户自己]
U2[可见性: 仅自己可见]
U3[用途: 用户自定义模型, 覆盖项目/平台默认]
U4[默认模型: 个人默认模型]
end
Platform -->|继承| Project
Project -->|继承| User
权限边界
- 完全隔离:各级别只能管理本级别的模型配置
- 平台管理员:只能管理平台级模型配置
- 项目管理员:只能管理本项目模型配置
- 普通用户:只能管理个人模型配置
- 不可干预:平台管理员不可干预项目级或用户级模型配置
- 菜单可见性:项目成员看不到"模型管理"菜单(仅项目管理员可见)
- 安全性:模型调用由服务端统一处理,API密钥不暴露给前端
模型可见性规则
- 平台模型:所有用户可见
- 项目模型:仅项目成员可见
- 个人模型:仅自己可见
- 跨项目隔离:项目X的模型在项目Y内不可见
- 累加模式:用户可选模型 = 平台模型 ∪ 当前项目模型 ∪ 个人模型
模型选择规则
可选模型范围
用户在项目X内:
可选模型 = 平台模型 ∪ 项目X模型 ∪ 个人模型
默认模型优先级链
新建对话时:
默认模型 = 个人默认 ∨ 项目默认 ∨ 平台默认
已有对话时:
使用模型 = 上次使用的模型
模型失效时:
回退到默认模型优先级链 → 个人默认 ∨ 项目默认 ∨ 平台默认
默认模型规则
- 自动设置:新增第一个模型时,自动设为默认模型
- 删除规则:
- 平台级:默认模型不允许直接删除,必须先将另一个模型设为默认,然后才能删除
- 项目级:允许删除默认模型,删除后该级别没有默认模型
- 用户级:允许删除默认模型,删除后该级别没有默认模型
- 配置数量:各级别不限制模型配置数量
- 空列表处理:没有任何模型时,用户可以新建对话,但对话输入框的模型下拉列表为空
跨项目对话隔离
对话列表按项目维度隔离:
- 在项目A的对话列表中,只能看到项目A的对话
- 切换到项目B后,在项目B的对话列表中只能看到项目B的对话
- 不同项目的对话互不可见
配置内容
配置字段
所有级别的模型配置包含相同的字段:
基本信息
- 配置名称(必填)
- 配置类型(必填,新建时可选,编辑时只读)
- OpenAI 兼容接口
- 智算管理平台
API配置(根据类型不同)
OpenAI 兼容接口:
- API地址(必填)
- API密钥(必填,掩码显示)
- 模型名称(必填)
智算管理平台:
- API地址(必填)
- App ID(必填)
- App Secret(必填,掩码显示)
参数配置(仅OpenAI兼容接口)
- Temperature(0-2,默认0.7)
- Max Tokens(1-128000,默认4096)
- Top P(0-1,默认0.9)
附录:常见问题
📋 模型可见性问题
1. 用户在项目内能看到哪些模型?模型可见性有哪些规则?
用户在项目X内可见的模型采用累加模式:
可选模型 = 平台模型 ∪ 项目X模型 ∪ 个人模型
可见性规则:
- 跨项目隔离:项目X的模型在项目Y内不可见
- 多项目差异:用户在不同项目内看到的模型列表不同(平台模型和个人模型在所有项目可见,项目模型仅在本项目可见)
- 移出项目:用户被移出项目后,项目模型从列表消失,但数据保留;重新加入后恢复可见
- 项目成员权限:项目模型对所有成员可见,但只有管理员能管理,普通成员只能使用
- 模型下拉列表展示:同名配置在模型下拉列表中会分组展示
🎯 默认模型问题
2. 新增第一个模型时需要手动设为默认吗?
不需要。系统会自动将新增的第一个模型设为默认模型。各级别模型配置都遵循此规则:
- 平台新增第一个模型 → 自动设为平台默认
- 项目新增第一个模型 → 自动设为项目默认
- 用户新增第一个模型 → 自动设为个人默认
3. 默认模型可以删除吗?
根据配置级别不同,删除规则不同:
-
平台级:默认模型不允许直接删除,必须先将另一个模型设为默认,然后才能删除原来的默认模型
-
项目级:允许删除默认模型,删除后该级别没有默认模型
-
用户级:允许删除默认模型,删除后该级别没有默认模型
4. 如果某个级别没有配置任何模型,会怎样?
如果某个级别没有配置任何模型,该级别的默认模型为空,系统会按优先级链继续向上查找:
- 用户没有个人模型 → 使用项目默认模型
- 项目没有项目模型 → 使用平台默认模型
- 如果平台也没有模型 → 用户可以新建对话,但对话输入框的模型下拉列表为空
5. 项目管理员想更换项目默认模型,原来的默认模型会怎样?对已有对话有影响吗?
项目管理员将模型B设为新的默认模型后:
- 原默认模型A变为普通模型(is_default = false)
- 模型B变为新的默认模型(is_default = true)
原默认模型A不会被删除,仍然在项目模型列表中,项目成员可以继续使用。
已有对话不受影响,继续使用对话创建时选择的模型。
⚙️ 配置管理问题
6. 平台管理员能编辑或删除项目级、用户级的模型配置吗?
不能。各级模型配置权限完全隔离:
- 平台管理员:只能管理平台级模型配置
- 项目管理员:只能管理本项目模型配置
- 用户:只能管理个人模型配置
平台管理员无法查看、编辑、删除项目级或用户级的模型配置,确保各级模型配置的独立性和安全性。
7. 项目管理员能看到项目成员的个人模型配置吗?
不能。个人模型配置仅用户自己可见,项目管理员无法查看或管理项目成员的个人模型。
用户在项目内使用个人模型时,项目管理员只知道用户选择了某个模型,但无法查看模型的配置详情(如API密钥)。
8. 编辑模型配置时,配置类型可以修改吗?
不可以。配置类型(OpenAI 兼容接口 / 智算管理平台)在新建时选择,保存后不可修改。
编辑模型配置时,配置类型字段为只读状态,只能修改其他字段(如API地址、密钥、参数等)。
如果需要更换配置类型,必须删除原模型配置,重新创建新模型配置。删除已被对话使用的模型配置后,该对话会失效并触发模型回退逻辑。
9. 配置名称可以重复吗?
可以。配置名称仅用于展示和区分,不要求唯一性。同一个级别下可以有多个同名配置,但建议使用有区分度的名称便于管理。
系统通过配置ID唯一标识模型,不依赖名称唯一性。同名配置在模型下拉列表中会分组展示。
🔐 安全性问题
10. 项目成员能看到项目模型的API密钥吗?
不能。项目成员看不到"模型管理"菜单,无法访问模型配置页面,因此无法查看API密钥。
只有项目管理员能查看和管理项目模型的配置详情(包括API密钥),且密钥在表单中默认掩码显示,需要点击显示按钮才能查看明文。
11. 不同级别的模型配置,API密钥存储方式有区别吗?
没有区别。所有级别的模型配置,API密钥都存储在服务端数据库中,存储方式一致,安全级别一致。前端只知道模型ID,从未接触API密钥。
❓ 其他问题
12. 用户在项目X内使用项目模型D创建对话,后来项目模型D被删除,用户继续这个对话时会使用哪个模型?
系统会自动切换到默认模型(按优先级链):
个人默认 → 项目X默认 → 平台默认
用户打开对话时,系统检测到模型D已失效,自动切换并提示:"原模型已失效,已切换为XXX"。后续新消息使用切换后的模型,历史消息保持不变。
13. 用户在项目X内使用个人模型D创建对话,后来用户被移出项目X,个人模型D会被删除吗?
不会被删除。个人模型是用户级别的模型配置,跟着用户走,不会因为被移出项目就被删除。用户在其他项目仍然可以使用个人模型D。
最后更新:2026-04-10