v2.1.0: 能力路由体系 + 模型管理 + 生图/语音/视频端点 + 大量修复

- 提供商重构: Local Qwen(文本+视觉) / SiliconFlow LLM(文本) / Autodl(文本+视觉) / Autodl Image(生图)
- 能力标签: text/vision/audio_out/audio_in/image_gen/video_gen,模型级可配
- AUTO配置绑定能力: auto/auto-text/auto-vision/auto-image/auto-voice-out/auto-voice-in/auto-video
- 新端点: /v1/images/generations /v1/audio/speech /v1/audio/transcriptions /v1/video/generations
- 模型管理页: 能力切换/增删改/设默认/别名管理
- 修复: 失败切换不再替换用户模型; 熔断冷却后自动恢复; 重试不再白等; embeddings按模型路由
- 修复: 后台模板API路径(/api/admin); 删除v1旧admin目录与双端口混乱
- 修复: run.sh硬编码路径; 死配置RETRY/LOG接线; engine_completions空body防护
- 端口: 16003(16001-16100白名单区间); debug关闭; start.sh部署脚本
This commit is contained in:
2026-08-28 11:41:17 +08:00
parent 693f5edf33
commit 178968ba1a
21 changed files with 2331 additions and 3646 deletions
+3 -3
View File
@@ -211,7 +211,7 @@
currentChatId = chatId;
renderChatList();
const res = await fetch(`/api/chat/${chatId}`);
const res = await fetch(`/api/admin/chat/${chatId}`);
const chat = await res.json();
document.getElementById('chatTitle').textContent = chat.title || '新对话';
@@ -355,7 +355,7 @@
if (!confirm('确定清空当前对话吗?')) return;
await fetch(`/api/chat/${currentChatId}/clear`, { method: 'POST' });
await fetch(`/api/admin/chat/${currentChatId}/clear`, { method: 'POST' });
loadChat(currentChatId);
}
@@ -363,7 +363,7 @@
async function deleteChat(chatId) {
if (!confirm('确定删除此对话吗?')) return;
await fetch(`/api/chat/${chatId}`, { method: 'DELETE' });
await fetch(`/api/admin/chat/${chatId}`, { method: 'DELETE' });
if (currentChatId === chatId) {
newChat();