Skip to content

SuperAI Agent v0.2.28

Choose a tag to compare

@github-actions github-actions released this 22 Aug 10:28

SuperAI Agent v0.2.28

调试日志现在真的可以打开了;报错中会写明自动重试是否执行过。

问题修复

  • settings.json 中设置 DEBUG 此前完全无效isDebugMode() 带记忆化(memoize),且在 applySafeConfigEnvironmentVariables()settings.env 写入 process.env 之前就已求值完毕,因此结果被永久锁定为「关闭」。而桌面版用户无法传 --debug(sidecar 由界面自行启动),settings.json 是他们唯一的开关——于是这个开关静默失效,桌面版用户实际上根本无法产生调试日志。

    现已修复。用三组对照在真实打包产物上实测(临时配置目录 + 假密钥):

    情形 修复前 修复后
    什么都不设置(对照组) 0 个日志 0 个日志
    settings.jsonDEBUG=1 0 个日志 1 个日志
    superai\settings.jsonDEBUG=1 0 个日志 1 个日志
    进程环境变量 DEBUG=1 1 个日志 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),其中个别用例对负载敏感、单独运行时通过——也就是说这个基线并非一个固定集合。