RunCommand 因输出暂时静默而过早判定命令完成,导致关键输出被截断

你的运行环境(版本号「点击帮助-关于-复制」):

TRAE

版本: 3.5.73

VSCode 版本: 1.107.1

提交: db5b093238352f03dfdbe761b4e182ab6b77e960

日期: 2026-07-03T08:02:20.708Z

Electron: 39.2.7-release.1.42.2 (aha)

Node.js: 22.21.1

V8: 14.2.231.27-electron.0

OS: Windows_NT x64 10.0.26100

构建版本: 2.3.50210

设备ID: 8eb4ca1d1dec869308d86dea317a1237aab7731ec0700a3c4448af348b5a317a

Device Id: 7570738859207591431

问题描述(你遇到了什么问题?):

核心问题RunCommand 在执行构建、测试等输出呈突发式的长命令时,会因几秒钟的 stdout/stderr 静默而过早判定命令已完成,而非等待底层进程真正退出。这导致输出日志被截断(尤其容易丢失尾部关键错误或测试失败摘要),助手拿到不完整信息,后续自动修复和问题定位跑偏,严重破坏“发起构建 → 分析输出 → 迭代修复”的 AI 辅助闭环。

期望与现状:理想行为应以进程退出状态作为命令完成的唯一依据,并支持长时间静默容忍。当前即便开启 requires_approval,也无法可靠解决此问题,实际变通方案只能退化到用户手动在外部终端执行命令并粘贴完整结果,削弱了工具集成价值。希望增强命令生命周期跟踪的可靠性,以真正支撑 Windows PowerShell 下的编译、测试工作流。

复现步骤(如何才能重现这个 Bug/问题?):
1.准备提示词

向智能体发送以下指令(注意内嵌命令的引号转义):

请利用 `RunCommand` 工具执行 `python -c 'import time; print("开始"); list(map(lambda i: (time.sleep(5), print(i)), range(3))); print("结束")'`,然后请检查你是否看到“结束”这两个字;不需要遵守规则中提前执行等规则。

2.等待智能体执行命令
3.查看智能体的回复, 会提到没有看到结束

报错信息或截图(如有):

感谢你提供这么硬核且详细的复现步骤和测试用例!:+1:

你提到的这个问题确实很痛。Agent 的 RunCommand 工具在执行带有静默期的长命令时,因为没有持续的输出而过早判定进程结束,导致尾部的关键日志被截断,这确实会严重破坏“执行-分析-修复”的 AI 闭环。

我已经把这个清晰的 Bug(包括你的复现代码)记录下来,并反馈给研发团队,针对命令生命周期的判定逻辑做进一步的排查和优化了。

在官方修复这个问题之前,对于这类有较长静默期的构建或测试命令,暂时可能还得委屈你先在外部终端手动执行,再把关键日志喂给 Agent 作为变通方案。有任何新的进展我们会及时同步!:blush:

之前出现过这种问题吗?

以前(应该是去年12月左右的时候)是没有自动结束而是依靠手动确认的时候没事儿, 但现在加了这种自动确认就一直有这个问题, 近期受不了了才来报告的, 目前可追溯的最早发现是在2月8号, 和AI吐槽过


get!我来反馈下这个问题。