Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 92c187d576 | |||
| 9eeeace88c |
66
www/app.js
66
www/app.js
@@ -118,13 +118,11 @@ async function loadBackendConfig() {
|
|||||||
|
|
||||||
// 加载工具列表
|
// 加载工具列表
|
||||||
if (backendConfig.allTools) {
|
if (backendConfig.allTools) {
|
||||||
allTools = backendConfig.allTools;
|
// 过滤掉联网搜索(已有单独按钮)
|
||||||
|
allTools = backendConfig.allTools.filter(t => t.type !== 'search');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载默认启用的工具
|
// 不加载默认启用的工具,所有工具默认未启用
|
||||||
if (backendConfig.tools) {
|
|
||||||
enabledTools = backendConfig.tools.map(t => t.tool_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateAgentsDisplay();
|
updateAgentsDisplay();
|
||||||
console.log('后台配置已加载', backendConfig);
|
console.log('后台配置已加载', backendConfig);
|
||||||
@@ -3044,6 +3042,9 @@ async function openAgent(agentId) {
|
|||||||
currentAgent = systemAgents.find(a => a.id === agentId);
|
currentAgent = systemAgents.find(a => a.id === agentId);
|
||||||
if (!currentAgent) return;
|
if (!currentAgent) return;
|
||||||
|
|
||||||
|
// 加载该智能体的工具选择状态
|
||||||
|
loadToolsState();
|
||||||
|
|
||||||
// 检查未登录用户的智能体限制
|
// 检查未登录用户的智能体限制
|
||||||
if (!currentUser) {
|
if (!currentUser) {
|
||||||
const check = canUseAgent(agentId);
|
const check = canUseAgent(agentId);
|
||||||
@@ -3130,22 +3131,10 @@ function showAgentChatPage() {
|
|||||||
<div class="messages" id="messages"></div>
|
<div class="messages" id="messages"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 功能开关栏 -->
|
<!-- 功能栏(智能体对话不需要工具选择,工具由后台配置) -->
|
||||||
<div class="feature-bar" id="featureBar">
|
<div class="feature-bar" id="featureBar">
|
||||||
<div class="feature-left">
|
<div class="feature-left">
|
||||||
<button class="feature-btn thinking-btn" id="thinkingBtn">
|
<!-- 智能体工具由后台配置,不显示选择按钮 -->
|
||||||
<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>
|
|
||||||
<span>深度思考</span>
|
|
||||||
</button>
|
|
||||||
<button class="feature-btn search-btn" id="searchBtn">
|
|
||||||
<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 7 9.5 7 14 9.01 14 9.5 11.99 14 9.5 14z"/></svg>
|
|
||||||
<span>联网搜索</span>
|
|
||||||
</button>
|
|
||||||
<button class="feature-btn tools-btn" id="moreToolsBtn">
|
|
||||||
<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z"/></svg>
|
|
||||||
<span>更多工具</span>
|
|
||||||
${enabledTools.length > 0 ? `<span class="tools-count">${enabledTools.length}</span>` : ''}
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="feature-right">
|
<div class="feature-right">
|
||||||
<button class="feature-btn nav-btn" id="scrollTopBtn">
|
<button class="feature-btn nav-btn" id="scrollTopBtn">
|
||||||
@@ -3599,6 +3588,10 @@ function openConversation(id) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 普通对话,加载普通对话的工具状态
|
||||||
|
currentAgent = null;
|
||||||
|
loadToolsState();
|
||||||
|
|
||||||
// 渲染对话页面
|
// 渲染对话页面
|
||||||
const chatHtml = `
|
const chatHtml = `
|
||||||
<div id="chatPage">
|
<div id="chatPage">
|
||||||
@@ -4232,6 +4225,9 @@ function confirmToolsSelection() {
|
|||||||
|
|
||||||
enabledTools = selectedTools;
|
enabledTools = selectedTools;
|
||||||
|
|
||||||
|
// 保存工具选择状态
|
||||||
|
saveToolsState();
|
||||||
|
|
||||||
// 更新按钮显示
|
// 更新按钮显示
|
||||||
const moreToolsBtn = document.getElementById('moreToolsBtn');
|
const moreToolsBtn = document.getElementById('moreToolsBtn');
|
||||||
if (moreToolsBtn) {
|
if (moreToolsBtn) {
|
||||||
@@ -4254,6 +4250,38 @@ function confirmToolsSelection() {
|
|||||||
showToast(`已启用 ${enabledTools.length} 个工具`);
|
showToast(`已启用 ${enabledTools.length} 个工具`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存工具选择状态
|
||||||
|
function saveToolsState() {
|
||||||
|
if (currentAgent) {
|
||||||
|
// 智能体对话:保存到 localStorage(按智能体ID)
|
||||||
|
localStorage.setItem(`agentEnabledTools_${currentAgent.id}`, JSON.stringify(enabledTools));
|
||||||
|
} else {
|
||||||
|
// 普通对话:保存到 localStorage
|
||||||
|
localStorage.setItem('chatEnabledTools', JSON.stringify(enabledTools));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加载工具选择状态
|
||||||
|
function loadToolsState() {
|
||||||
|
if (currentAgent) {
|
||||||
|
// 智能体对话:加载该智能体的工具状态
|
||||||
|
const saved = localStorage.getItem(`agentEnabledTools_${currentAgent.id}`);
|
||||||
|
if (saved) {
|
||||||
|
enabledTools = JSON.parse(saved);
|
||||||
|
} else {
|
||||||
|
enabledTools = [];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 普通对话:加载普通对话的工具状态
|
||||||
|
const saved = localStorage.getItem('chatEnabledTools');
|
||||||
|
if (saved) {
|
||||||
|
enabledTools = JSON.parse(saved);
|
||||||
|
} else {
|
||||||
|
enabledTools = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 渲染头像(支持 emoji 和上传的图片)
|
// 渲染头像(支持 emoji 和上传的图片)
|
||||||
function renderAvatar(avatar) {
|
function renderAvatar(avatar) {
|
||||||
if (!avatar) return '👤';
|
if (!avatar) return '👤';
|
||||||
|
|||||||
Reference in New Issue
Block a user