SuperAI Agent v0.2.28
SuperAI Agent v0.2.28
调试日志现在真的可以打开了;报错中会写明自动重试是否执行过。
问题修复
-
在
settings.json中设置DEBUG此前完全无效:isDebugMode()带记忆化(memoize),且在applySafeConfigEnvironmentVariables()把settings.env写入process.env之前就已求值完毕,因此结果被永久锁定为「关闭」。而桌面版用户无法传--debug(sidecar 由界面自行启动),settings.json是他们唯一的开关——于是这个开关静默失效,桌面版用户实际上根本无法产生调试日志。现已修复。用三组对照在真实打包产物上实测(临时配置目录 + 假密钥):
情形 修复前 修复后 什么都不设置(对照组) 0 个日志 0 个日志 settings.json中DEBUG=10 个日志 1 个日志 superai\settings.json中DEBUG=10 个日志 1 个日志 进程环境变量 DEBUG=11 个日志 1 个日志 「什么都不设置」这一组修复后仍为 0,用以确认新逻辑不会凭空打开调试模式。
需要说明的是,此前我在 v0.2.26 与 v0.2.27 的说明中两次写道「调试日志默认开启」,这是错的。
shouldLogDebugMessage会在isDebugMode()为假时直接返回。我当时查的是getMinDebugLogLevel()(其默认值确实是debug),但那是级别过滤,不是开关——我少看了一层。因此有用户按提示去找一个从未被写入过的日志文件。 -
报错中新增
attempt=与elapsed=:此前连续三个版本都在改进重试逻辑,却始终无法从一张截图判断自动重试到底有没有执行。现在attempt=1表示重试从未发生,attempt=3表示三次尝试均失败;elapsed则可区分「瞬间被拒」与「卡满 90 秒空闲超时后失败」。这个信息本来也无法从调试日志中得知——原因正是上面那个 bug——因此把它直接写进报错,是唯一不依赖用户额外配置的途径。
如何打开调试日志
在 %USERPROFILE%\.claude\settings.json 中加入:
{ "env": { "DEBUG": "1" } }重启后复现问题,日志位于 %USERPROFILE%\.claude\debug\,取最新的一个文件即可。
验证情况
新增 4 项测试,共 34 项通过。其中包含一项对照:仅执行刷新、而没有任何设置时,不得凭空开启调试模式——否则主断言可能因为错误的原因而通过;另有一项测试把「记忆化导致设置失效」这个 bug 本身固定下来,以防它悄悄回归。涉及环境变量的测试会对 DEBUG 做快照并还原,因为 process.env 是跨测试进程共享的。
明确说明一处测试边界:单元测试覆盖的是 refreshDebugSettingsFromEnv 这个函数本身,而非它的调用点——把 managedEnv 中的调用删掉,不会导致任何测试失败。因此该接线是通过上表那组端到端对照实测验证的,而不是靠测试保证的。
src/services/api 与服务端测试套件按测试名逐一比对,无新增失败。另外发现:这些套件的失败测试名单本身在不同运行间会变化(27 / 28 / 25),其中个别用例对负载敏感、单独运行时通过——也就是说这个基线并非一个固定集合。