From 496a0ca4c80190bf5aa212bb1b055ea1addab9d3 Mon Sep 17 00:00:00 2001 From: ymq Date: Sun, 30 Aug 2026 09:49:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(model-select):=20=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E5=80=BC=E6=94=B9llm.id=E6=98=BE=E7=A4=BAllm.name+start=5Fagen?= =?UTF-8?q?t=E8=A7=A3=E6=9E=90id=E2=86=92name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wwwroot/api/cockpit_agent.dspy | 10 ++++++++++ wwwroot/api/cockpit_model_options.dspy | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/wwwroot/api/cockpit_agent.dspy b/wwwroot/api/cockpit_agent.dspy index 9e4eeec..6231b91 100644 --- a/wwwroot/api/cockpit_agent.dspy +++ b/wwwroot/api/cockpit_agent.dspy @@ -25,6 +25,16 @@ if action == 'start_agent': model_id = (params_kw or {}).get('model_id', '') role = (params_kw or {}).get('role', 'develop') + # model_id 兼容 llm.id 与 llm.model_id 两种取值(下拉改为传 llm.id)→ + # 统一解析为 llm.name 落库/传给引擎,保证同名不同供应商不漂移。 + if model_id: + _r = await sor.sqlExe( + "SELECT name FROM llm WHERE status='active' AND (id=${m}$ OR model_id=${m}$) LIMIT 1", + {"m": model_id}) + await sor.sqlExe("COMMIT", {}) + if _r: + model_id = getattr(_r[0], 'name', '') or model_id + # Ensure agent config exists existing = await sor.sqlExe( "SELECT id FROM pipeline_project_agents WHERE project_id=${pid}$ AND role_name=${role}$", diff --git a/wwwroot/api/cockpit_model_options.dspy b/wwwroot/api/cockpit_model_options.dspy index 7da4a46..42ec47f 100644 --- a/wwwroot/api/cockpit_model_options.dspy +++ b/wwwroot/api/cockpit_model_options.dspy @@ -1,5 +1,7 @@ # cockpit_model_options.dspy - Returns active models with capabilities for dropdown # Used by cockpit model selector +# 下拉值 = llm.id(唯一主键);显示 = llm.name。不同供应商可有相同 model_id +# (API 模型名),只有 llm.id 唯一,避免同名供应商在下拉里被合并/解析漂移。 # org_id 多租户隔离:非系统级机构只看到本机构的模型(不含系统级兜底) # selected 标记 = 当前项目的已设模型(sd_projects.default_model,产线通用、跨会话持久); # 项目未设模型时回退个人全局选择(default_llm_id)。前端 UiCode 按 selected 恢复选中项, @@ -48,7 +50,8 @@ for r in recs: 'value': r.id, 'text': f"{r.name} ({r.provider})", 'provider': r.provider, - 'model_id': r.model_id, + 'model_id': r.id, # 下拉值:llm.id(唯一,区分同名不同供应商) + 'model_id_text': r.name, # 下拉显示:llm.name 'capabilities': r.capabilities or 'text', 'selected': (r.name == project_model) if project_model else (r.id == current_llm_id), })