fix(AgentConfigSidebar): 修复无效配置的检查错误的问题

This commit is contained in:
Wenjie Zhang 2025-09-02 19:53:12 +08:00
parent c47d0e9aab
commit dc8f48513f

View File

@ -470,42 +470,33 @@ const cancelToolsSelection = () => {
const validateAndFilterConfig = () => { const validateAndFilterConfig = () => {
const validatedConfig = { ...agentConfig.value }; const validatedConfig = { ...agentConfig.value };
const configItems = configurableItems.value; const configItems = configurableItems.value;
// //
Object.keys(configItems).forEach(key => { Object.keys(configItems).forEach(key => {
const configItem = configItems[key]; const configItem = configItems[key];
const currentValue = validatedConfig[key]; const currentValue = validatedConfig[key];
// //
if (configItem.template_metadata?.kind === 'tools' && Array.isArray(currentValue)) { if (configItem.template_metadata?.kind === 'tools' && Array.isArray(currentValue)) {
const availableToolIds = availableTools.value ? Object.values(availableTools.value).map(tool => tool.id) : []; const availableToolIds = availableTools.value ? Object.values(availableTools.value).map(tool => tool.id) : [];
validatedConfig[key] = currentValue.filter(toolId => availableToolIds.includes(toolId)); validatedConfig[key] = currentValue.filter(toolId => availableToolIds.includes(toolId));
if (validatedConfig[key].length !== currentValue.length) { if (validatedConfig[key].length !== currentValue.length) {
console.warn(`工具配置 ${key} 中包含无效的工具ID已自动过滤`); console.warn(`工具配置 ${key} 中包含无效的工具ID已自动过滤`);
} }
} }
// (type === 'list' options) // (type === 'list' options)
else if (configItem.type === 'list' && configItem.options && Array.isArray(currentValue)) { else if (configItem.type === 'list' && configItem.options && Array.isArray(currentValue)) {
const validOptions = configItem.options; const validOptions = configItem.options;
validatedConfig[key] = currentValue.filter(value => validOptions.includes(value)); validatedConfig[key] = currentValue.filter(value => validOptions.includes(value));
if (validatedConfig[key].length !== currentValue.length) { if (validatedConfig[key].length !== currentValue.length) {
console.warn(`配置项 ${key} 中包含无效的选项,已自动过滤`); console.warn(`配置项 ${key} 中包含无效的选项,已自动过滤`);
} }
} }
// ( options list )
else if (configItem.options && configItem.type !== 'list' && currentValue !== undefined) {
const validOptions = configItem.options;
if (!validOptions.includes(currentValue)) {
console.warn(`配置项 ${key} 的值 "${currentValue}" 不在有效选项中,将重置为默认值`);
validatedConfig[key] = configItem.default || validOptions[0] || null;
}
}
}); });
return validatedConfig; return validatedConfig;
}; };
@ -519,13 +510,13 @@ const saveConfig = async () => {
try { try {
// //
const validatedConfig = validateAndFilterConfig(); const validatedConfig = validateAndFilterConfig();
// store // store
if (JSON.stringify(validatedConfig) !== JSON.stringify(agentConfig.value)) { if (JSON.stringify(validatedConfig) !== JSON.stringify(agentConfig.value)) {
agentStore.updateAgentConfig(validatedConfig); agentStore.updateAgentConfig(validatedConfig);
message.info('检测到无效配置项,已自动过滤'); message.info('检测到无效配置项,已自动过滤');
} }
await agentStore.saveAgentConfig(); await agentStore.saveAgentConfig();
message.success('配置已保存到服务器'); message.success('配置已保存到服务器');
} catch (error) { } catch (error) {