fix(core): 修复子 Agent 使用不同 provider 时配置错误的问题
当 Agent 通过 Global Defaults 指定不同的 provider 时, 之前错误地使用主 Agent 的 apiKey 和 baseUrl, 现在会从 ProviderRegistry 获取对应 provider 的配置
This commit is contained in:
@@ -16,7 +16,7 @@ import type {
|
||||
ImageData,
|
||||
} from './types.js';
|
||||
import { checkBashPermission, isPathInAllowedWritePaths } from './permission-merger.js';
|
||||
import { getProviderRegistry } from '../provider/index.js';
|
||||
import { getProviderRegistry, resolveApiKey } from '../provider/index.js';
|
||||
import { renderPromptTemplate, createPlanContext } from '../template/index.js';
|
||||
import { agentEventEmitter } from './events.js';
|
||||
|
||||
@@ -42,10 +42,20 @@ export class AgentExecutor {
|
||||
// 使用 ProviderRegistry 获取模型工厂
|
||||
const provider = agentInfo.model?.provider ?? baseConfig.provider;
|
||||
const registry = getProviderRegistry();
|
||||
this.getModel = registry.getModelFactory(provider, {
|
||||
apiKey: baseConfig.apiKey,
|
||||
baseUrl: baseConfig.baseUrl,
|
||||
});
|
||||
|
||||
// 当 Agent 指定了不同的 provider 时,需要从 ProviderRegistry 获取对应的配置
|
||||
// 而不是使用 baseConfig(主 Agent 配置)的 apiKey 和 baseUrl
|
||||
let apiKey = baseConfig.apiKey;
|
||||
let baseUrl = baseConfig.baseUrl;
|
||||
|
||||
if (agentInfo.model?.provider && agentInfo.model.provider !== baseConfig.provider) {
|
||||
// Agent 使用了不同的 provider,获取对应 provider 的配置
|
||||
const providerConfig = registry.getConfig(provider);
|
||||
apiKey = resolveApiKey(providerConfig) || baseConfig.apiKey;
|
||||
baseUrl = providerConfig?.baseUrl;
|
||||
}
|
||||
|
||||
this.getModel = registry.getModelFactory(provider, { apiKey, baseUrl });
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user