重构: F-09 batch5 llm_concurrency会话级改造(决策c)

- state.rs: per_conv HashMap<conv_id,Semaphore>(每对话permits=2) + per_conv_permits热改 + acquire_per_conv(conv_id) + release_conv
- agentic.rs: loop入口acquire_global+acquire_per_conv(conv_id)整loop持有(会话级并发上限3) + 删每轮acquire/drop
- compress/title/knowledge_inject: acquire_per_conv(conv_id)+签名conv_id
- project.rs: 扫描合成key + ai_conversation_delete release_conv
global: LLM调用并发→并发会话数上限;F-260616-12 retry permit自洽
主代兜底: cargo check --workspace 0 + test 96 + grep印证
This commit is contained in:
lxy
2026-06-19 02:12:08 +08:00
parent 2a4d745c5b
commit d96041721a
7 changed files with 97 additions and 35 deletions
+3 -1
View File
@@ -48,6 +48,7 @@ pub(crate) async fn compress_via_llm(
provider_config: &AiProviderRecord,
active_msgs: Vec<ChatMessage>,
lang: &str,
conv_id: &str,
llm_concurrency: &LlmConcurrency,
) -> Result<String, String> {
if active_msgs.is_empty() {
@@ -79,8 +80,9 @@ pub(crate) async fn compress_via_llm(
};
// LLM 并发限流(压缩属独立调用,纳入双层 Semaphore)
// F-09 B 批5: per_conv 改 HashMap<conv_id>,压缩在 loop 内针对本对话,用 conv_id 共享限流槽。
let _global_permit = llm_concurrency.acquire_global().await;
let _per_conv_permit = llm_concurrency.acquire_per_conv().await;
let _per_conv_permit = llm_concurrency.acquire_per_conv(conv_id).await;
let resp = provider
.complete(request)