fix: applyFullProviderFromVps 无变化时跳过写盘

apiKey + 模型列表 MD5 均未变化时不写 openclaw.json,
避免 BOX 每次重连都触发不必要的 gateway 重启。

Made-with: Cursor
This commit is contained in:
stswangzhiping
2026-04-23 08:22:32 +08:00
parent 4cf0e4e948
commit 18bea4ae38

View File

@@ -224,6 +224,21 @@ function applyFullProviderFromVps(provider, onDone) {
if (err) { if (err) {
log.warn('openclaw-provider', `拉模型失败,使用空列表: ${err.message}`); log.warn('openclaw-provider', `拉模型失败,使用空列表: ${err.message}`);
} }
// 校验 apiKey + 模型列表是否有实际变化,无变化则跳过写盘,避免触发不必要的 gateway 重启
try {
const existing = readJsonFile(configFile);
const cur = existing.models?.providers?.[name] || {};
const curApiKey = cur.apiKey || '';
const curMd5 = computeModelsMd5(cur.models || []);
const newMd5 = computeModelsMd5(list);
if (curApiKey === apiKey && curMd5 === newMd5) {
log.info('openclaw-provider', `provider 无变化apiKey + 模型列表相同),跳过写盘`);
if (typeof onDone === 'function') { try { onDone(); } catch (e) { log.warn('openclaw-provider', `onDone: ${e.message}`); } }
return;
}
} catch (_) { /* 读取失败则继续写盘 */ }
addProviderSync(configFile, name, baseUrl, apiKey, list, defaultModel); addProviderSync(configFile, name, baseUrl, apiKey, list, defaultModel);
if (typeof onDone === 'function') { if (typeof onDone === 'function') {
try { try {