Skip to content

[Feature] autoDream 连续失败退避:失败态间隔加长,止血空体连发(#135 派生) #292

Description

@modusensus

背景

#135 定论楼确认的空体连发机制:dreamMinIntervalMinutes 默认 0 时,失败的 run 不推进 baseline(这是刻意设计——LLM 失败必须让下次写入能立即重试),于是实测触发间隔 1.6–12 分钟、失败不失败地一直烧调用。@lengduan 的月跨度统计(440 轮 87% failed)是该机制在野外的量级实证。

PR #291 修掉了重启放行那一半(lastRunAt 跨重启持久化);本单处理同会话内的连续失败:修复前后行为互补,互不替代。

提案

连续失败退避(failure backoff):同一调度器连续 N 次失败后,下次可触发的时刻按退避序列顺延,run 成功即重置。要点:

  • 退避只统计真正发起过 LLM 调用且失败的 run(degraded 算失败还是成功待定——它部分落地、部分烧了 token,倾向算「重置半程」或单列一档,PR 里拍板);
  • 退避上限与 dreamMinIntervalMinutes 的关系要写清:退避是 min-interval 之上的失败态加长,不是第二套节流配置;
  • sleep 调度器(dream/sleep.js)是否同款处理一并评估——同族结构,失败同样不推进任何水位。

开关口径(请实现 PR 拍板)

两种立场,二选一并给理由:

  1. 默认开启、不设配置键:退避只在连续失败后激活,健康库零感知——按仓库口径「修复静默缺陷的键,默认值跟修复走」;
  2. opt-in 默认关 + settings.js 白名单 + lightMode 考虑:若认为「失败后拉长间隔」改变了既有可预期行为,按新能力走闸门。

验收线

  • 回归测试:退避序列单调、成功重置、与 minIntervalMs 的叠加语义、(若做)sleep 同款;
  • 改 src/ 后 npm run sync;
  • CHANGELOG [Unreleased] 登记。

关联

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions