[错误]: ctx_batch_execute 超时未对索引/搜索进行限制,因此 Claude 代理可能会长时间卡死
作者: stgmt创建于 2026年7月10日更新于 2026年9月17日
□ 总结
ctx batch execute'接受超时'参数,但实际上并不约束整个MCP处理器。 在 Claude 中 : (韩语) 代码,我注意到ctx batch execute'的电话,其中超时:120 000'在命令阶段后仍然飞行4个多小时,显然是在上下文模式索引/搜索/格式编制工作期间,与膨胀的SQLite/FTS内容DB相对立。
□ 环境
- 上下文模式:1.0.169
- Claude代码:2.1.202
- 操作系统:Windows 11
- 存储:默认 QQ/.Claude/context-mode/content '
□ 来自真实的Claude的证据 代码会话
三个背景特工在上下文模式的电话里卡住了几个小时:
页:1 代理商-aee8e6d09a69e41c7 QQ ctx search | 2026-07-10T15:01:51Z - > 18:50:37Z | 228.8分 代理 - a5ba93371b699a949 QQ Ctx batch execution QQ 2026-07-10T14:33:39Z - > 18:50:42Z QQ 257.1分QQQ的通话暂停:120000 代理 - ae18a471c25b61a57 → ctx batch execution → 2026-07-10T15:02:27Z - > 18:51:51Z → 2.29.4分
当时的项目内容DB被大量膨胀:
页:1
内容 DB: 645,128,192 字节
WAL: 349 454 312 字节最大块的 " 圆 " :
页:1 36,754,737字节 追踪和运行时间可观察性证据(2) 36,163,374字节 * * * 视觉和后交付文物术语(2) 35,988,924字节 QQ 完整当前未分级 diff 索引用于定向查询
这些巨大的块与#878有关,但这个问题具体涉及超时语义:即使#878是固定的,工具也不应该保留一个Claude 密码特工被永远封锁了
□ 为什么今天`超时 ' 是误导
从源头检查来看,`SolveExecTimeout'可能会省略Claude的超时 除非有明确规定,否则即为守则。 当`ctx batch execute'确实获得超时时,它似乎适用于命令执行(`runBatchCommands'),但不一定适用于后期:
- 储存/索引
- FTS/三角搜索
- 反向搜索
- 结果格式化
这些后期阶段可以是同步的 SQLite 工作. JavaScript 计时器仅围绕命令跑取器,不能中断被屏蔽的同步 DB/index/搜索路径.
□ 预期
带有`超时:120 000'的`ctx batch execute'电话应在大约120秒内完成或返回超时错误。 它不应在飞行中停留数小时。
□ 实际
" ctx batch-execute " 的电话, " 超时:120 000 " 机内停留约**257分钟**。
□ 建议修正
1. 使 " 超时 " 成为整个MCP处理器的硬墙小时预算,而不仅仅是子进程执行。
2. 运行 DB/index/search/format阶段的可杀死工人的过程,或以其他方式使同步SQLite工作中断。
3. 在每个相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相
4. 增加 " ctx doctor " 检查大块、DB/WAL bloat和在飞行中停止检查。
5. 将此与# 878合并:在FTS插入前执行最大块大小,因此单行/捆绑/活塞有效载荷不能毒害DB。
□ 相关问题
- 878号:
. . . . . . .内容来源: mksglu/context-mode