修复: checkpoint 参数化 + 压缩 permit 死锁降级 + 密钥归一化 + SSE CRLF/多字节

This commit is contained in:
lxy
2026-08-01 11:30:05 +08:00
parent c4ba920cf5
commit 20ec571dbb
9 changed files with 232 additions and 42 deletions
+10 -8
View File
@@ -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;