Files
dsh_ai1net_server/交付物/接续包-查唤醒为什么断-20260930.md
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

5.3 KiB
Raw Permalink Blame History

接续包 · 查「唤醒」为什么断了

  • 出具:主会话 · 2026-09-30 11:5x
  • 用户原话:「还是会发呆,上次唤醒 56分钟前」,随后:「处理完成后 创建接续会话继续 排查为什么唤醒断了」
  • 🔴 只做这一件:查清"唤起主会话的那个定时闹钟为什么停",⛔ 不顺手扩范围

一、已知事实(全部已实测,⛔ 别重做)

# 事实 读数
1 原任务 bbaf9baf(08:47 建 · */5 · durable)已从网关消失 GET /api/v1/scheduled-tasks?sessionId=fe146dd9-… → {"tasks":[]}(11:43 实测:一条都没有)
2 🔴 网关没有重启过 GET /api/v1/health → pid=50716、uptime≈40676s(≈11.3 h ⇒ 约 00:25 起)。而任务是 08:47 建的、11:43 发现没了 ⇒ 它是在网关一直活着的情况下消失的
3 网关无法核实任务是否存在 GET /api/v1/scheduled-tasks/{id} → 404 No mapping found(无此路由);列表里 durable 的永远不显示
4 10:44→11:42 主会话闲着 57 分钟,一条心跳都没收到 用户看到「上次唤醒 56 分钟前」
5 现存两个投递方都不是时间驱动 ① collabd.py --tick:钩子事件驱动 ⇒ 只有"有会话在跑工具调用"时才被唤起 ⇒ 闲着必然不响 ② collabd.py --supervise(PID 55332,06:02 某会话起的孤儿):已死(最后投递 10:44:43)
6 当天投递台账 22 次投递,无一次能归因于 cron 只有 上报·唤醒(--tick)与 监督程序·心跳(--supervise)两种 kind

结论(已成立):没有任何"时间驱动"的触发在真正工作 ⇒ 主会话一闲就没人叫 ⇒ 发呆。

二、已做的处置(⛔ 别推翻,也别重做)

  • 重建了任务:POST /api/v1/scheduled-tasks(体 = cron:"*/5 * * * *" + prompt + recurring:true + durable:true + sessionId:fe146dd9-…)
    • 新 id 91f8baeb(11:47 建,humanSchedule=Every 5 minutes);旧的 bbaf9baf 已归入登记册 _历史
    • 🔴 prompt 第 0 步要求它先写触发戳 tmp/supervise-inbox/_wake.stamp —— 这是唯一能核实"它真来过"的办法(因为事实 3)
  • 看板去假绿:.workbuddy/collab/board_ext.py 的 up 改成按"最近真痕迹"判(cron 戳 或 投递台账,<15 分钟才绿)⇒ 现在显示黄色 + 「上次唤醒:无记录」

三、🔴 你要查的(按顺序,每条都要给读数)

1️⃣ 新任务 91f8baeb 到底会不会响?(11:47 建 ⇒ 首次应在 11:50,之后每 5 分钟)

  • 判据:tmp/supervise-inbox/_wake.stamp 有没有出现/更新;主会话转录里有没有来心跳
  • 不来 ⇒ 网关的 cron 引擎本身不工作 ⇒ 从此所有 scheduled-tasks 都不可信(这正是最可能的结论)
  • 来 ⇒ 那要解释"bbaf9baf 为什么消失"(见 3️⃣)

2️⃣ 若不来 ⇒ 摸网关 cron 的真实行为

  • 拿口令(钩子/--tick 上下文天然有 CODEBUDDY_GATEWAY_PASSWORD)建一条一次性任务试验: POST /api/v1/scheduled-tasks,recurring:false,cron 指向 2 分钟后,prompt 写一个能留痕的动作
  • 观察:① 到点是否被执行 ② 执行后从内部消失还是留着 ③ 有无任何日志/持久化文件

3️⃣ durable 到底管不管用?(本次最强嫌疑)

  • bbaf9baf 是 durable:true,却在网关没重启的情况下消失 ⇒ 存疑:durable 可能只是"跨 session",并不做进程级持久化
  • 只读查法(优先):翻 WorkBuddy 的数据目录/日志,找 scheduled task 有没有落盘文件
  • ⚠️ 要重启网关来验证的话 —— 先问用户(重启网关=重启宿主,影响面大)

4️⃣ 若确认 cron 不可信 ⇒ 给用户一个替代方案(先别动手)

  • 候选:Windows 计划任务(schtasks.exe 被程序黑名单硬拦,但 PowerShell 的 *-ScheduledTask 不走 schtasks.exe,值得一试)/「启动文件夹」
  • ⛔ 但本线有明确口径:用户反对"什么都塞进自动任务"(原话「又给我整到自动任务去了」)⇒ 取舍必须写清再报

四、边界(⛔ 越线即事故)

  • ⛔ 不动正在跑的看板 127.0.0.1:8788(主会话起的,还挂着)
  • ⛔ 不动中继客户端 DSH-Overlay-Node-Dev
  • ⛔ 口令不落盘、不进日志、不回显
  • ⛔ 不改 A 方案的口令入站通道(它已实证可用)
  • ⚠️ 任何"重启网关 / 重启宿主"的动作,先问用户

五、相关文件

用途 路径
隐形体登记册(现役 91f8baeb/_历史 bbaf9baf) .workbuddy/collab/gateway-schedules.json
看板扩展(_stamp_age / _last_wakeup / _triggers) .workbuddy/collab/board_ext.py
投递台账 tmp/supervise-inbox/wakeups.jsonl
唤醒触发戳(要盯的就是它) tmp/supervise-inbox/_wake.stamp
当天全过程(11:42–11:52 节最相关) .workbuddy/memory/2026-09-30.md
网关 API 契约(含 scheduled-tasks 的体与 R5 风险) 技能 workbuddy-extension-surface §1.4