修复: AI 回复以好问题等开场 + 达 max_iterations 不收敛卡死
日志分析发现: - 零条 AiCompleted/AiError: agentic loop 达 max_iterations 后进入暂停态 (F-260616-03), generating 保持 true 致前端卡在等待+发送队列 - LLM 持续调工具不收敛输出文本, 10 轮耗尽后不自动完成 system prompt 修复: - 新增「直接回答用户问题,不要以评论开头」严禁用好问题等无信息开场白 - 新增「及时收敛」指令:目标达成后立即输出结果, 停止调无用工具 - concat! 重构 behavior_prompt 避免单行长字符串
This commit is contained in:
@@ -878,7 +878,20 @@ pub(crate) async fn run_agentic_loop(
|
|||||||
// 输出平台一致性。detect() 是 OnceLock 全局缓存(启动时探一次,后续零开销),与 G1 一样
|
// 输出平台一致性。detect() 是 OnceLock 全局缓存(启动时探一次,后续零开销),与 G1 一样
|
||||||
// 是 loop 不变量(整个会话不重探),与目标钉扎拼接次序无强约束(放其后,语义自然)。
|
// 是 loop 不变量(整个会话不重探),与目标钉扎拼接次序无强约束(放其后,语义自然)。
|
||||||
let env_prompt = df_execute::EnvSnapshot::detect().await.to_prompt();
|
let env_prompt = df_execute::EnvSnapshot::detect().await.to_prompt();
|
||||||
let behavior_prompt = "\n## AI 定位\n你是 DevFlow 的 AI 助手,拥有完整的工具链。用户只负责提需求和审批,所有执行由你完成——读写文件、运行命令、创建项目、搜索代码等都是你直接调用工具完成的。**绝不输出“请在终端执行以下命令”这类指令——你自己用 run_command 工具执行即可。**\n\n## 行为准则\n- 所有操作都通过工具完成,用户不参与执行\n- 优先使用开发工具 IPC,非必要不写独立脚本\n- 脚本需要审批通过才执行,会拖慢工作流\n- 已有 40+ 工具覆盖绝大多数场景,先查工具列表再决定\n- 如果现有工具无法完成任务,告知用户缺少什么能力,建议向 DevFlow 反馈以开发新工具";
|
let behavior_prompt = concat!(
|
||||||
|
"\n## AI 定位\n",
|
||||||
|
"你是 DevFlow 的 AI 助手,拥有完整的工具链。用户只负责提需求和审批,",
|
||||||
|
"所有执行由你完成——读写文件、运行命令、创建项目、搜索代码等都是你直接调用工具完成的。",
|
||||||
|
"**绝不输出请在终端执行以下命令这类指令——你自己用 run_command 工具执行即可。**\n",
|
||||||
|
"\n## 行为准则\n",
|
||||||
|
"- 所有操作都通过工具完成,用户不参与执行\n",
|
||||||
|
"- 优先使用开发工具 IPC,非必要不写独立脚本\n",
|
||||||
|
"- 脚本需要审批通过才执行,会拖慢工作流\n",
|
||||||
|
"- 已有 40+ 工具覆盖绝大多数场景,先查工具列表再决定\n",
|
||||||
|
"- 如果现有工具无法完成任务,告知用户缺少什么能力,建议向 DevFlow 反馈以开发新工具\n",
|
||||||
|
"- **直接回答用户问题,不要以评论开头**——严禁用好问题等无信息量的开场白,直接输出答案或执行操作\n",
|
||||||
|
"- **及时收敛**:工具执行完目标达成后立即输出结果,不要继续调工具做无关操作",
|
||||||
|
);
|
||||||
system_prompt = format!("{}\n\n{}\n\n{}", system_prompt, env_prompt, behavior_prompt);
|
system_prompt = format!("{}\n\n{}\n\n{}", system_prompt, env_prompt, behavior_prompt);
|
||||||
|
|
||||||
// T4: 工作流 DAG 注入 — 当会话关联工作流时,将活跃路径注入 system prompt
|
// T4: 工作流 DAG 注入 — 当会话关联工作流时,将活跃路径注入 system prompt
|
||||||
|
|||||||
Reference in New Issue
Block a user