feat: Agent工具支持检查,不支持的工具提醒用户
This commit is contained in:
@@ -201,8 +201,8 @@
|
||||
</div>
|
||||
<div class="file-preview-area" id="filePreviewArea"></div>
|
||||
<div class="quick-phrases-bar">
|
||||
<div class="tool-toggle">
|
||||
<input type="checkbox" id="enableSearch" checked>
|
||||
<div class="tool-toggle" id="toolToggleArea">
|
||||
<input type="checkbox" id="enableSearch" checked onchange="showToolWarning()">
|
||||
<label for="enableSearch"><i class="ri-search-line"></i> 搜索</label>
|
||||
</div>
|
||||
<button class="add-phrase-btn" onclick="showAddPhraseModal()"><i class="ri-add-line"></i> 添加</button>
|
||||
@@ -291,6 +291,8 @@
|
||||
const res = await fetch('/api/v2/providers');
|
||||
const data = await res.json();
|
||||
providers = data.providers || [];
|
||||
// 加载后检查工具支持(如果agents已加载)
|
||||
if (agents.length > 0) showToolWarning();
|
||||
} catch (e) { console.error('加载Provider失败:', e); }
|
||||
}
|
||||
|
||||
@@ -302,6 +304,52 @@
|
||||
return provider?.supports_vision || false;
|
||||
}
|
||||
|
||||
// 检查当前Agent是否支持某个工具
|
||||
function checkAgentToolSupport(toolType) {
|
||||
const agent = agents.find(a => a.id === currentAgentId);
|
||||
if (!agent) return false;
|
||||
const agentTools = agent.tools || [];
|
||||
return agentTools.includes(toolType);
|
||||
}
|
||||
|
||||
// 获取当前Agent不支持的工具列表(用户已启用但Agent不支持)
|
||||
function getUnsupportedTools() {
|
||||
const unsupported = [];
|
||||
const enableSearch = document.getElementById('enableSearch').checked;
|
||||
if (enableSearch && !checkAgentToolSupport('search')) {
|
||||
unsupported.push('搜索');
|
||||
}
|
||||
return unsupported;
|
||||
}
|
||||
|
||||
// 显示工具不支持提示
|
||||
function showToolWarning() {
|
||||
const unsupported = getUnsupportedTools();
|
||||
const warningDiv = document.getElementById('tool-warning-tip');
|
||||
|
||||
if (unsupported.length > 0) {
|
||||
const agent = agents.find(a => a.id === currentAgentId);
|
||||
const agentName = agent?.display_name || agent?.name || '当前Agent';
|
||||
const msg = `<i class="ri-alert-line"></i> <strong>${agentName}</strong> 不支持 <strong>${unsupported.join('、')}</strong> 工具,请关闭或切换Agent`;
|
||||
|
||||
if (warningDiv) {
|
||||
warningDiv.innerHTML = msg;
|
||||
warningDiv.style.display = 'block';
|
||||
} else {
|
||||
const newWarning = document.createElement('div');
|
||||
newWarning.id = 'tool-warning-tip';
|
||||
newWarning.style.cssText = 'margin-top:8px;padding:8px 12px;background:#fff3cd;border:1px solid #ffc107;border-radius:6px;font-size:13px;color:#856404;';
|
||||
newWarning.innerHTML = msg;
|
||||
document.getElementById('toolToggleArea').appendChild(newWarning);
|
||||
}
|
||||
// 禁用发送按钮
|
||||
document.getElementById('sendBtn').disabled = true;
|
||||
} else {
|
||||
if (warningDiv) warningDiv.style.display = 'none';
|
||||
document.getElementById('sendBtn').disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 加载Agent
|
||||
async function loadAgents() {
|
||||
try {
|
||||
@@ -311,6 +359,8 @@
|
||||
const defaultAgent = agents.find(a => a.is_default) || agents[0];
|
||||
if (defaultAgent) currentAgentId = defaultAgent.id;
|
||||
renderAgentSelect();
|
||||
// 加载后检查工具支持
|
||||
showToolWarning();
|
||||
} catch (e) { console.error('加载Agent失败:', e); }
|
||||
}
|
||||
|
||||
@@ -333,6 +383,8 @@
|
||||
if (ws?.readyState === WebSocket.OPEN) ws.send(JSON.stringify({ action: 'switch_agent', agent_id: currentAgentId }));
|
||||
await createNewConversation();
|
||||
showAgentSwitchNotice();
|
||||
// 切换Agent后检查工具支持
|
||||
showToolWarning();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1034,6 +1086,16 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查工具支持
|
||||
const unsupported = getUnsupportedTools();
|
||||
if (unsupported.length > 0) {
|
||||
const agent = agents.find(a => a.id === currentAgentId);
|
||||
const agentName = agent?.display_name || agent?.name || '当前Agent';
|
||||
alert(`⚠️ ${agentName} 不支持 ${unsupported.join('、')} 工具\n\n请关闭不支持的工具,或切换到支持该工具的Agent。`);
|
||||
document.getElementById('sendBtn').disabled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
document.getElementById('sendBtn').disabled = true;
|
||||
input.value = '';
|
||||
input.style.height = 'auto';
|
||||
|
||||
Reference in New Issue
Block a user