📦 部署方式
Docker
📌 软件版本
4.1.2_bata
💻 系统环境
Windows
📌 系统版本
4.1.2_bata
🐛 问题描述
Claude code工作1小时多完成不了任务,以下AI自己写的issues
问题描述
在时长超过 1 小时、存在大量工具调用的长会话中,读取工具为跳过重复读取未变动文件而做的优化逻辑,会触发死锁,导致后续编辑操作完全无法执行。
若会话初期读取过某个文件,时隔多轮对话后需要编辑该文件时,读取工具会返回如下提示:
“自上次读取后文件无变更。本次对话中此前读取工具返回的内容仍为最新版本,请直接引用历史内容,无需重新读取。”
但在长会话里,当初读取返回的原始文件内容,可能已被上下文窗口淘汰清理。此时模型无法获取文件真实完整内容,也就无法生成编辑指令(编辑指令要求精确字符串匹配),进而陷入循环死锁:
模型发起编辑请求 → 需要完整原文 → 调用读取工具
读取工具仅回复「文件未变更,请引用历史记录」,不返回文件内容
模型看不到已被清理的历史读取内容
模型反复重试调用读取工具 → 得到同样回复
无限循环往复,持续消耗令牌与时间,任务毫无进展
📷 复现步骤
复现步骤
新建一次会话
会话初期读取多个文件(用于项目梳理、代码浏览等场景)
进行长时间多轮对话,包含大量工具调用与逻辑推理(时长 1 小时以上)
再次尝试读取并编辑之前已读过的文件
🚦 期望结果
预期表现
读取工具应采用以下任一方案:
无论文件是否变动,始终返回完整文件真实内容;
同时返回「文件未变更」提示 以及 完整文件内容,保证模型能正常生成编辑指令。
实际表现
读取工具仅返回「文件未变更」提示,不附带任何文件内容。在长会话中,若历史文件内容已被上下文窗口清理,该文件当前状态会彻底无法访问,后续任何编辑操作都被阻断。
造成影响
时间损耗:陷入读取重试循环,浪费一小时以上计算时长且任务停滞;
令牌浪费:重复的读取调用与逻辑推理,消耗大量无效令牌;
打断使用:用户只能手动中断会话、重新新建会话;
任务失败:涉及前期浏览读取、后期批量编辑的多文件重构任务,最容易受此问题影响。
📝 补充信息
补充说明
以下情况会加剧该问题:
会话初期批量读取大量文件做前期调研,后续再逐个编辑;
读取工具的行偏移 / 行数限制局部读取功能,也会被判定为「文件未变更」,导致即便只想读取同一文件的其他段落,也被拦截;
本质问题:只要会话中曾经读取过某文件,无论当初读取的是文件哪一部分,在长会话后期都无法再次重新读取。
📦 部署方式
Docker
📌 软件版本
4.1.2_bata
💻 系统环境
Windows
📌 系统版本
4.1.2_bata
🐛 问题描述
Claude code工作1小时多完成不了任务,以下AI自己写的issues
问题描述
在时长超过 1 小时、存在大量工具调用的长会话中,读取工具为跳过重复读取未变动文件而做的优化逻辑,会触发死锁,导致后续编辑操作完全无法执行。
若会话初期读取过某个文件,时隔多轮对话后需要编辑该文件时,读取工具会返回如下提示:
“自上次读取后文件无变更。本次对话中此前读取工具返回的内容仍为最新版本,请直接引用历史内容,无需重新读取。”
但在长会话里,当初读取返回的原始文件内容,可能已被上下文窗口淘汰清理。此时模型无法获取文件真实完整内容,也就无法生成编辑指令(编辑指令要求精确字符串匹配),进而陷入循环死锁:
模型发起编辑请求 → 需要完整原文 → 调用读取工具
读取工具仅回复「文件未变更,请引用历史记录」,不返回文件内容
模型看不到已被清理的历史读取内容
模型反复重试调用读取工具 → 得到同样回复
无限循环往复,持续消耗令牌与时间,任务毫无进展
📷 复现步骤
复现步骤
新建一次会话
会话初期读取多个文件(用于项目梳理、代码浏览等场景)
进行长时间多轮对话,包含大量工具调用与逻辑推理(时长 1 小时以上)
再次尝试读取并编辑之前已读过的文件
🚦 期望结果
预期表现
读取工具应采用以下任一方案:
无论文件是否变动,始终返回完整文件真实内容;
同时返回「文件未变更」提示 以及 完整文件内容,保证模型能正常生成编辑指令。
实际表现
读取工具仅返回「文件未变更」提示,不附带任何文件内容。在长会话中,若历史文件内容已被上下文窗口清理,该文件当前状态会彻底无法访问,后续任何编辑操作都被阻断。
造成影响
时间损耗:陷入读取重试循环,浪费一小时以上计算时长且任务停滞;
令牌浪费:重复的读取调用与逻辑推理,消耗大量无效令牌;
打断使用:用户只能手动中断会话、重新新建会话;
任务失败:涉及前期浏览读取、后期批量编辑的多文件重构任务,最容易受此问题影响。
📝 补充信息
补充说明
以下情况会加剧该问题:
会话初期批量读取大量文件做前期调研,后续再逐个编辑;
读取工具的行偏移 / 行数限制局部读取功能,也会被判定为「文件未变更」,导致即便只想读取同一文件的其他段落,也被拦截;
本质问题:只要会话中曾经读取过某文件,无论当初读取的是文件哪一部分,在长会话后期都无法再次重新读取。