修复: checkpoint 参数化 + 压缩 permit 死锁降级 + 密钥归一化 + SSE CRLF/多字节
This commit is contained in:
@@ -643,18 +643,20 @@ pub(crate) async fn run_agentic_loop(
|
||||
// 去重复 keyring resolve 调用。逻辑等价于 secret::build_provider_for(resolve→ensure→build 三步),
|
||||
// 仅因 build_provider_for 隐藏 resolved key 无法复用而在此内联(未改 secret.rs 锁边界)。
|
||||
let resolved_key = super::secret::resolve_provider_secret(&primary_provider);
|
||||
let key_len = resolved_key.len();
|
||||
let provider: Box<dyn LlmProvider> = match super::secret::ensure_resolved_key(
|
||||
let normalized_key = match super::secret::ensure_resolved_key(
|
||||
&primary_provider.name, &resolved_key,
|
||||
) {
|
||||
Ok(()) => df_ai::build_provider(
|
||||
&primary_provider.provider_type,
|
||||
&primary_provider.base_url,
|
||||
&resolved_key,
|
||||
&primary_provider.default_model,
|
||||
),
|
||||
Ok(k) => k,
|
||||
Err(msg) => return Err(ProviderResolveError::EnsureKeyFailed(msg)),
|
||||
};
|
||||
// key_len 用归一化后长度(剥引号/trim 后),与实际发往 provider 的 key 一致
|
||||
let key_len = normalized_key.len();
|
||||
let provider: Box<dyn LlmProvider> = df_ai::build_provider(
|
||||
&primary_provider.provider_type,
|
||||
&primary_provider.base_url,
|
||||
&normalized_key,
|
||||
&primary_provider.default_model,
|
||||
);
|
||||
Ok::<_, ProviderResolveError>((primary_provider, candidates, provider, key_len))
|
||||
},
|
||||
).await;
|
||||
|
||||
Reference in New Issue
Block a user