fix(ai-assistant): respect model visibility settings

This commit is contained in:
kuaifan 2026-07-20 10:48:33 +00:00
parent 44bd541d00
commit 6f22fd2706
3 changed files with 7 additions and 11 deletions

View File

@ -24,7 +24,7 @@ negative:
- 配置入口不在「系统设置」菜单而在「AI 助手」应用内的设置面板(仅管理员可见)
- v1.4.35 起旧接口 setting__ai 已废弃AI 模型配置全部迁移到 AI 助手应用的设置面板
- 不安装 ai 插件「AI 助手」应用不出现
last_verified: v1.7.90
last_verified: v1.8.69
---
# AI 模型配置
@ -40,9 +40,11 @@ DooTask 的 AI 能力由独立的 **ai 插件**`dootask-ai`)提供。系统
## 操作步骤
1. 管理员在应用商店安装并启用 ai 插件(生成 `dootask-ai` 容器)
2. 打开「AI 助手」应用选择要配置的供应商ChatGPT/OpenAI、Claude、DeepSeek、Gemini、Grok、Ollama、智谱、通义千问、文心一言等
3. 在设置面板填写API Key、模型列表(一行一个模型名,可点「使用默认模型列表」一键填入)、默认模型、Base URL可选、代理可选、Temperature、默认提示词
3. 在设置面板填写API Key、模型列表、默认模型、Base URL可选、代理可选、Temperature、默认提示词;不希望普通用户选择的模型可设为隐藏
4. 保存后该供应商的模型立即可在 AI 对话中选用,并可被 [[system-setting.ai-bot.howto]] 的「AI 机器人」使用
AI 助手的模型下拉会按供应商展示全部可见模型,不限制每个供应商的模型数量。设为隐藏的模型不会出现在 AI 助手或 AI 机器人的模型选择列表如果原默认模型或用户缓存的模型已隐藏AI 助手会自动改选可见模型。
## 与其他模块的关系
- 提供模型给 [[system-setting.ai-bot.howto]] 的默认模型选择
- 「AI 整理汇报」、AI 助手浮窗等都依赖此处配置

View File

@ -622,18 +622,11 @@ export default {
}
const defaultModel = data[`${type}_model`] || '';
const label = AIBotMap[type] || type;
const options = list.slice(0, 5);
if (defaultModel) {
const defaultOption = list.find(option => option.value === defaultModel);
if (defaultOption && !options.some(option => option.value === defaultOption.value)) {
options.push(defaultOption);
}
}
const group = {
type,
label,
defaultModel,
options: options.map(option => {
options: list.map(option => {
const id = `${type}:${option.value}`;
const item = Object.assign({}, option, {
id,

View File

@ -181,7 +181,7 @@ const withLanguagePreferencePrompt = (prompt) => {
/**
* 解析模型列表文本为选项数组
* 新格式JSON 数组 [{id,name,thinking}]旧格式每行 "id|name"
* 新格式JSON 数组 [{id,name,thinking,hidden}]旧格式每行 "id|name"
*/
const AIModelNames = (str) => {
if (typeof str !== 'string') {
@ -195,6 +195,7 @@ const AIModelNames = (str) => {
const parsed = JSON.parse(trimmed);
if (Array.isArray(parsed)) {
return parsed
.filter(item => !item?.hidden)
.map(item => ({
value: String(item?.id ?? item?.value ?? '').trim(),
label: String(item?.name ?? item?.label ?? '').trim()