【问题排查】计划模式回复中断?大概率是iflow Agent调用了不可用工具!

最近计划模式经常中断,特别是最后进行计划的时候

论坛中也有许多用户反应

本人刚刚左逛右逛突然想到,“回复中断是不是ai尝试直接调用不可用的工具造成的?”

然后进行了测试验证,基本验证了上述想法

一、现象对比:中断流程 vs 正常流程

中断流程

###########################################
计划模式下,回复中断时的对话与工具调用记录
###########################################

    > 请实现一个python随机数猜测小游戏
✦ 我理解您想要实现一个Python随机数猜测小游戏。让我先探索一下当前项目的结构,了解现有的代码模式和项目设置。
  ✔  task Launch agent(explore-agent): 探索项目结构和依赖
      🔵 Explore Agent 代理 已完成 (第 3 轮) - 20 条消息 • 2m 14s
         模型: glm-4.7
         任务: 请探索当前项目 F:\kf\lcstudy 的结构,重点关注:
               1. 查看项目配置文件(pyproject.toml)了解项目依赖和设置
               2. 查看现有的Python文件(如keyboard_reader.py)了解代码风格和模式
               3. 查看是否有任何现有的游戏或交互式程序
               4. 了解项目的整体结构和组织方式
               请返回:
               - 项目使用的主要依赖库
               - 现有代码的编码风格和模式
               - 项目是否使用虚拟环境
               - 适合放置新游戏文件的位置
         工具:
           ✔  ReadFile F:\kf\lcstudy\pyproject.toml
              从 pyproject.toml 读取所有 21 行数据
           ✔  ReadFile F:\kf\lcstudy\keyboard_reader.py
              从 pyproject.toml 读取所有 21 行数据
           ✔  ReadFile F:\kf\lcstudy\01.ipynb
              从 pyproject.toml 读取所有 21 行数据
           ✔  ListDirectory  F:\kf\lcstudy
              列出了 8 个项目。 (3 个 git 忽略)
           ✔  ReadFile F:\kf\lcstudy\.env
              从 .env 读取所有 1 行数据
           ✔  ReadFile F:\kf\lcstudy\.python-version
              从 .env 读取所有 1 行数据
           ✔  Glob  "**/*.py" in F:\kf\lcstudy
              找到 1 个匹配文件
     📋 Task Completed: 探索项目结构和依赖
     📊 Execution Summary:
       • Duration: 22.1s
       • Rounds: 3
       • Tokens: 33,375
     🔧 Tool Usage:
       • Total Calls: 16
       • Success Rate: 100.0% (16 success, 0 failed)
✦ 很好!我已经了解了项目结构。现在让我向您确认一些关于游戏的细节,以便制定更精确的实现计划。
✦ User Answers
  您希望游戏的难度范围是多少?
  Answer: 1-100(简单)
  您希望游戏包含哪些功能?
  Answer: 历史记录, 猜测次数限制
  您希望使用什么风格的输出?
  Answer: 简单文本
✦ 完美!根据您的选择,我现在将制定详细的实现计划。
  ✔  task Launch agent(plan-agent): 制定游戏实现计划
      🟡  Plan Agent 代理 已完成 (第 2 轮) - 10 条消息 • 1m 8s
         模型: glm-4.7
         任务:
         工具:
           x  ReadFile F:\kf\lcstudy\keyboard_reader.py
           x  ReadFile F:\kf\lcstudy\pyproject.toml
           x  ReadFile F:\kf\lcstudy\.vscode\settings.json
     📋 Task Completed: 制定游戏实现计划
     📊 Execution Summary:
       • Duration: 32.0s
       • Rounds: 2
       • Tokens: 21,344
     🔧 Tool Usage:
       • Total Calls: 6
       • Success Rate: 50.0% (3 success, 3 failed)
✦ 完美!我已经制定了详细的实现计划。现在让我将最终计划写入计划文件。
  ✔  Shell echo "Python随机数猜测游戏实现计划" > "F:\kf\lcstudy\PLAN.md" [current working directory F:\kf\lcstudy] (创建计划文件)

...对话结束(中断了)

正常流程

###########################################
计划模式下,没有中断时的对话与工具调用记录
###########################################

    > 请实现一个python随机数猜测小游戏
✦ 我将为您规划一个Python随机数猜测小游戏的实现方案。让我先了解一下当前项目的结构和上下文。
  ✔  list_directory .
     目录是空的。
  ✔  glob '**/*.py' within .
     未找到文件
  x  read_file ..\.vscode\settings.json
     文件路径必须在以下工作区目录中:F:\kf\lcstudy\test
✦ 好的,我了解到当前工作目录是空的。让我查看一下父目录中的Python项目情况,以了解项目背景。
  x  list_directory ..
     提供的参数无效。原因:路径必须在工作区目录中:F:\kf\lcstudy\test
  x  read_file ..\pyproject.toml
     文件路径必须在以下工作区目录中:F:\kf\lcstudy\test
✦ 我理解了。当前工作目录F:\kf\lcstudy\test是空的,这是一个全新的项目环境。
✦ User Answers
  您希望这个随机数猜测游戏包含哪些功能?
  Answer: 基本猜测功能(输入数字,提示大小)
  您希望使用哪种方式运行游戏?
  Answer: 命令行交互
✦ 完美!根据您的需求,我将规划一个简单的命令行随机数猜测游戏。让我创建详细的实现计划。

 计划已准备好审核

 Python随机数猜测游戏实现计划

 功能概述
 实现一个命令行交互的随机数猜测游戏,玩家输入数字,系统提示"猜大了"或"猜小了",直到猜中为止。

 实现步骤

  1. 创建游戏主文件 guess_number.py
     - 使用random模块生成1-100之间的随机数
     - 实现无限循环,直到玩家猜中
     - 根据玩家输入提示"猜大了"或"猜小了"
     - 添加输入验证(确保输入是有效数字)
     - 统计猜测次数
     - 游戏结束时显示猜测次数

  2. 核心功能
     - 生成随机数: random.randint(1, 100)
     - 用户输入处理: input()函数获取玩家猜测
     - 比较逻辑: 判断猜测与目标数字的关系
     - 提示反馈: 输出相应的提示信息
     - 计数器: 记录猜测次数

  3. 用户体验优化
     - 添加欢迎信息和游戏说明
     - 清晰的提示信息
     - 友好的游戏结束消息
     - 简单的输入错误处理

 文件结构
  1 F:\kf\lcstudy\test\
  2 └── guess_number.py  # 游戏主程序                                                      │
 运行方式
  1 python guess_number.py

 这是一个简单直接的单文件实现,无需额外依赖。

 您想要继续吗?

 > 1. 是,使用智能模式执行计划
   2. 是,手动批准执行计划
   3. 否,继续规划
   4. 用 Markdown 文件修改计划

1. 回复中断的异常流程(核心问题点)

计划模式下流程中断时间:最终仅执行了“创建PLAN.md计划文件”的Shell命令,未呈现完整计划内容,也没有后续交互确认步骤,回复直接中断

2. 正常流程(参考无中断记录)

同样需求下,当工作目录为空、无不可用工具调用时,流程完整且顺畅:

  1. Agent先尝试探索目录结构,发现目录为空后明确告知环境情况
  2. 主动询问用户需求细节(功能、运行方式),获取反馈后制定详细计划
  3. 完整呈现计划内容(功能概述、实现步骤、文件结构、运行方式)
  4. 提供交互选项(智能执行/手动批准/修改计划),引导用户下一步操作

(当然,这个测试不太完善,懒得在测了,基本应该是这个原因的)

(对比发现,正常情况下 生成计划 时时打印出来,然后让你选择 “是,使用智能模式执行计划” )


我们能做什么

所以,如果真的时iflow因为要写入计划而导致的对话中断
可以尝试一下思路

1.在终端后,手动退出计划模式,然后输入继续,让iflow继续,(这样应该能正常写入文件,不会中断)

2.不用"继续",而是让iflow调用计划模式下的 “计划生成工具” 让iflow回复 “计划已准备好审核…然后交互式选项确认执行” (但是怎么写提示词呢,最好是研究一下,计划模式下系统提示词和工具,看看到底应该调用什么)

欢迎大家测试讨论,希望官方回复一下,这个问题官方的排查进度

@10111 @10008873411 @10011695425

1 个赞

已经修复了 :face_blowing_a_kiss: 大佬的分析给了很多启发