fix(heartbeat): 心跳风暴回路 + lastHeartbeat 落库接线 + 心跳能力放开(A/B/C 入库) - #332
Merged
Merged
Conversation
从 feat/ui-optimize-0923 工作树抢救入库(此前从未进入任何提交,重构从 main 切分支会丢失):
A. 风暴回路(agent-dirty-reconciler):
- 新增 MAX_TRIGGER_HEARTBEAT_ATTEMPTS=3,连续 N 次 trigger-heartbeat 仍未脱离 stuck-busy 即停止自动兜底、升级 human-review(杜绝每 2 分钟一次的心跳风暴反馈回路)
- 仅当 agent 真正脱离 processing-like 才释放重试状态(修复宽限期内误释放导致的立即重触发)
- 附回归测试:stuck-working + 心跳宽限窗口场景,断言无 <RETRY_AFTER_MS 重复触发、连续 N 次升级 human-review、恢复 idle 后 key 释放
B. lastHeartbeat 落库接线:
- agent.ts 三处心跳落点(L8866/8912/9103)→ notifyStateChange(),心跳是存活证明
- stateChangeCallback payload 补 lastHeartbeat 字段(agent.ts/agent-manager.ts)
- cli start.ts stateChangeHandler → SqliteAgentRepo.updateLastHeartbeat
- sqlite-storage.ts 新增 updateLastHeartbeat(UPDATE agents SET last_heartbeat)
C. 心跳能力放开(reflex → converse):
- capability-packs.ts scenarioToPack('heartbeat') → 'converse'(心跳与普通 session 同级工具集,边界由 HEARTBEAT.md + 间隔承担)
- agent.ts/context-engine.ts 移除 reflex 白名单锁死(去 getReflexAllowlist/HEARTBEAT_ALLOWED_TOOLS),提示改为 full session capability + 间隔调整需先征询人类
- capability-packs.test.ts 断言更新
D(clamp 5min–24h)已在 main(deep-sleep.ts/shared limits),不在本次提交。
测试:agent-dirty-reconciler 7/7 + capability-packs 10/10 通过(与首席科学家复核一致)
Fix C 将心跳从 reflex 白名单放开为 full session capability(与普通 session 同级), 但 context-scenario-matrix / prompt-profiles 两处既有测试仍断言旧提示文本 ('reflex pack only' / 'Do **not** call 'task_create'),入库时未跑全量回归遗漏, 由 PR #332 CI(backend-coverage/quality)兜出。 按新期望行为更新断言: - 心跳提示应含 'full session capability',不再含 'reflex pack only' / 禁 tool 集文本 - 其余约束(HEARTBEAT_OK、无 Self-Evolution、无显式任务创建鼓励)保持不变
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
心跳修复 A/B/C 此前只存在于 feat/ui-optimize-0923 工作树(从未进入任何提交),一旦后续重构 1-4 从 main 切分支即丢失。本次把它们从工作树抢救入库(首席科学家复核 tsk_805fb⬤ 时指出)。
内容
A. 风暴回路(agent-dirty-reconciler)
B. lastHeartbeat 落库接线
C. 心跳能力放开(reflex → converse)
D(clamp 5min–24h)已在 main,非本次范围。
验证
仓库