fix: 修复工具调用确认后卡死问题

根本原因:
1. 模型能力检测缺少 tools 检查 — gemma4 等模型不支持 Tool Calling 但代码允许启用
2. 流式调用无超时保护 — 模型无限思考时无法自动恢复
3. AbortController 竞态 — 确认对话框后状态同步问题

修复内容:
- 模型能力检测增加 tools 字段检查,模型栏显示 🔧 Tools 标签
- Agent Loop 流式调用增加 2 分钟单次超时保护
- 开启 Tool Calling 时自动检测模型兼容性并警告
- 设置面板开启 Tool Calling 时检查并提示不兼容模型
- 输入区域 Agent Loop 分支增加模型支持检测和用户提示
This commit is contained in:
Metona Fix
2026-04-06 19:02:34 +08:00
parent 43c827e9ff
commit 0f25921fb9
8 changed files with 123 additions and 52 deletions
+10 -1
View File
@@ -113,7 +113,16 @@ export function initSettingsModal(): void {
const db = state.get<ChatDB | null>(KEYS.DB);
state.set('toolCallingEnabled', toggleToolCalling.checked);
if (db) await db.saveSetting('toolCallingEnabled', toggleToolCalling.checked);
showToast(toggleToolCalling.checked ? '工具调用已开启' : '工具调用已关闭', 'info');
if (toggleToolCalling.checked) {
const modelSupportsTools = state.get<boolean>('modelSupportsTools', false);
if (!modelSupportsTools) {
showToast('⚠️ 当前模型可能不支持 Tool Calling,建议使用 Qwen3、Llama 3.1+ 等模型', 'warning', 5000);
} else {
showToast('工具调用已开启', 'info');
}
} else {
showToast('工具调用已关闭', 'info');
}
});
}