优化: 子代理体验与纪律注入

- 工具纪律段抽共享同源注入
- 子代理轨迹浮层与完成卡身份
- 分离窗会话切换修复
- 960s 统一出口报告不再蒸发
This commit is contained in:
lxy
2026-10-04 16:27:31 +08:00
parent b2d44f85e9
commit 01d231c39d
12 changed files with 1150 additions and 152 deletions
+16 -1
View File
@@ -32,6 +32,7 @@ use crate::commands::ai::agentic::sub_agent::{
SUB_AGENT_DEFAULT_MAX_ROUNDS, SUB_AGENT_MAX_ROUNDS_CAP,
};
use crate::commands::ai::AiSession;
use crate::commands::ai::conversation::SaveMetaOverride;
use crate::state::LlmConcurrency;
use df_storage::db::Database;
@@ -253,7 +254,19 @@ async fn spawn_agent_handler(
let child_id = next_child_id(&parent_conv_id);
let task_prompt = build_task_prompt(&task, &allowed, &trimmed);
let system_prompt = sub_agent_system_prompt();
// P2-3:系统提示词注入实际生效的预算值(父可传 1..20,子代理按真实预算规划)
let system_prompt = sub_agent_system_prompt(max_rounds);
// P3-5:spawn 时刻快照父会话 save 元数据(active provider/created_at)。子代理后台
// 长跑收尾时用户可能已切走会话,出口落库若读 active_* 会继承别的会话元数据;
// 快照随子循环传入,出口经 save_conversation_meta 显式落库。
let parent_save_meta = {
let session = ctx.session.lock().await;
SaveMetaOverride {
provider_id: session.active_provider_id.clone(),
created_at: session.active_conv_created_at.clone(),
}
};
// 级联注册(父停止/强制发送/删除会遍历 children 级联取消)
sub_agents_register(&ctx.sub_agents, &parent_conv_id, &child_id);
@@ -287,9 +300,11 @@ async fn spawn_agent_handler(
system_prompt,
task_prompt,
tool_defs,
allowed,
max_rounds,
child_model,
ctx.llm_concurrency.clone(),
parent_save_meta,
)
.await;