diff --git a/pipeline_platform/platform_ability.py b/pipeline_platform/platform_ability.py index f126a28..72245a2 100644 --- a/pipeline_platform/platform_ability.py +++ b/pipeline_platform/platform_ability.py @@ -523,6 +523,17 @@ async def _h_apply_llm_config(sor, params, ctx): bu = (ep.get("base_url") or "").rstrip("/") if not bu: continue + # 裸域退化拦截(新增与回填打标两条路径都要拦,2026-09-05 e2e 实测: + # 提取 LLM 偶发把 base_url 提成裸域,回填打标会让裸域变「协议匹配」 + # 端点被运行时选中 → 拼出 https://host/services/... → 404) + pu = _urlparse(bu) + if not pu.path.strip("/"): + same_host = any(_urlparse((e.get("base_url") or "")).netloc == pu.netloc + and _urlparse((e.get("base_url") or "")).path.strip("/") + for e in merged) + if same_host: + skipped_eps.append("%s(裸域退化:同 host 已有带路径端点)" % bu) + continue # 同 base_url 已存在:只补协议标签(旧端点无 protocol 时回填) hit = None for e in merged: @@ -533,14 +544,6 @@ async def _h_apply_llm_config(sor, params, ctx): if protocol and not hit.get("protocol"): hit["protocol"] = protocol continue - # 裸域退化拦截:同 host 已有带路径端点 → 裸域跳过 - pu = _urlparse(bu) - if not pu.path.strip("/"): - same_host = any(_urlparse((e.get("base_url") or "")).netloc == pu.netloc - for e in merged) - if same_host: - skipped_eps.append("%s(裸域退化:同 host 已有带路径端点)" % bu) - continue merged.append({"base_url": bu, "region": ep.get("region") or "domestic", "timeout": int(_f(ep.get("timeout"), 60)), "protocol": protocol})