- 变更规模:新增 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/ 知识文件,按口径入库)
99 lines
6.2 KiB
Markdown
99 lines
6.2 KiB
Markdown
# 心跳核对 · N9 红格已清 — 2026-09-29 22:3x
|
||
|
||
> 触发:监督程序心跳(主会话未在处理 ∧ 队列无待反馈 ∧ 需求未完成)
|
||
> 目标:手机查看并可回复桌面 WorkBuddy 中会话 | 关键路径:N5 → N8 → **N9** → N10
|
||
> 本棒:`[主]心跳核对-2230` | 域 `ai1net-dsh-server/tmp` + `ai1net-dsh-server/交付物`
|
||
> ⛔ 未替别线干活、⛔ 未改别线文件、⛔ 未接管会话、⛔ 未动服务器
|
||
|
||
---
|
||
|
||
## 0 结论先给判
|
||
|
||
| # | 判据 | 结果 |
|
||
|---|---|---|
|
||
| ① | 任务图核对:还剩几个未完 | **2 个** —— `N9`(V2 手机发出的消息进入桌面会话)、`N10`(V7 长时稳定性)。N1–N8、N11–N17 **全 done** |
|
||
| ② | N9 的红格是什么 | **设备侧覆盖网络节点守护不在** ⇒ relay 无 worker 通道 ⇒ 入口④闸 503 |
|
||
| ③ | 🔴 **红格本轮已清** | 守护 **22:26:56** 起、**22:26:58** `registered host=…-626dc095 accepted=[20090]`;47 relay `/status` 的 `u:bdf89014-…` 网络下**已出现该 host session**;垫片 20090 `health=200` |
|
||
| ④ | 谁清的 | 我 22:23 派的那一棒(`[协作]N9解卡-桌面线`,session `2d81f349`,**仍在跑**) |
|
||
| ⑤ | 下一步该派谁 | **本轮不派** —— 见 §3(唯一后继被在跑的棒持锁,且它口令里含自链) |
|
||
| ⑥ | 需用户介入? | **不需要**(真实读数见 §4) |
|
||
|
||
---
|
||
|
||
## 1 问题落在哪个环节(泳道图)
|
||
|
||
| 角色 ↓ / 阶段 → | 启动守护 | relay 注册 | 平台④闸 | 取 N9 读数 |
|
||
|---|---|---|---|---|
|
||
| **AI(桌面线棒 2d81f349)** | ✅ 22:26:56 | ✅ 22:26:58 | ⏳ 待复测 | ⏳ 待做 |
|
||
| **AI(手机接入线接续棒 c048a986)** | ⛔ 未做(别线域) | — | ❌ 22:23 实测 503 | ⛔ 按令不取 |
|
||
| **中继(47 / dshs-relay)** | — | 🟢 已有 session | — | — |
|
||
| **用户** | — | — | — | — |
|
||
|
||
**红格(原)=「启动守护」那一格**:22:23 之前是空的(`overlay-daemon.log` 自 11:06:48 后零行、设备侧进程 0)。
|
||
**现在的状态=该格已转绿**(22:26:58 registered)。
|
||
**唯一待办=④闸复测与 N9 本体读数**,落在正在跑的那一棒身上。
|
||
|
||
---
|
||
|
||
## 2 事故链(这次实际怎么坏的一步步)
|
||
|
||
| 步 | 事件 | 时间 |
|
||
|---|---|---|
|
||
| 1 | 设备侧守护(计划任务 `DSH-Overlay-Node-Dev`,client pid 52020)**活到 21:42 后消失** | 11:06:46 → ~21:42 |
|
||
| 2 | relay 上该 host 的 worker 通道不存在 ⇒ `refuse …:20090 (worker offline)` | ~22:02–22:03 |
|
||
| 3 | 平台④闸判「声明的端口全部离线(20090)」⇒ **503 device-unreachable** | 22:13、22:20、22:23 连测 |
|
||
| 4 | 两棒把红格**写成「计划任务 `DSH-Worker-Dev` 仍 Disabled」** ⇒ 指着**已退役的 S1 遗留** | 22:14、22:23 |
|
||
| 5 | 我 22:23 派桌面线一棒(口令里已纠正:⛔ 别启用 `DSH-Worker-Dev`) | 22:23:23 |
|
||
| 6 | 该棒 22:25:07 spawn 守护、**22:26:58 registered** | 22:26:58 |
|
||
|
||
### 本该拦住、却缺席的防线
|
||
|
||
| # | 防线 | 为何缺席 |
|
||
|---|---|---|
|
||
| D1 | **「根因任务名」应回源核对**(守护脚本 `TaskName = 'DSH-Overlay-Node-Dev'` 就在脚本第 75/89 行) | 两棒都凭印象写 `DSH-Worker-Dev`(那是 09-20 已退役的 S1 任务)⇒ **错断点跨两棒传播** |
|
||
| D2 | **进程消失应留证据** | 11:06 那轮守护消失于 21:42,**宿主/沙箱日志该时段无 kill/teardown 记录**,`sandbox_gc_*` 只有「另一实例已在运行」⇒ **谁杀的无从判定** |
|
||
| D3 | **关键进程的持久性应被 N10 覆盖** | N10=V7「连续 1h / ≥50 次」正是干这个 —— 但它排在 N9 之后,救不了 N9 当下的"临时绿" |
|
||
|
||
---
|
||
|
||
## 3 该谁动 —— 本轮不派,理由三条
|
||
|
||
1. **红格刚被在跑的棒清掉**:那一棒(`2d81f349`)口令里已含判据②「复测入口路径不再 503」,复测本就该它自己出读数。
|
||
2. **抢跑=假读数**:它仍在重启守护/垫片(22:24–22:26 之间垫片就掉过一次),此刻另起一棒复测会取到假 503。
|
||
3. **域被持锁**:唯一后继(④闸复测 / V2 读数 / 守护持久化)都在 `ai1net-dsh-desktop` 域,正被该棒持有 ⇒ 硬派撞锁(其口令收尾④已写「缺口 ⇒ 自链下一棒」)。
|
||
|
||
**兜底**:若该棒收口时**没有**接上,下一轮心跳我直接派「N9 复测+V2 取数」一棒(域 `ai1net-dsh-anywhere`,现为空闲)。
|
||
|
||
---
|
||
|
||
## 4 需用户介入?现在**不需要**
|
||
|
||
| 档 | 内容 |
|
||
|---|---|
|
||
| **① 现在** | **不用**。解卡走**测试身份**(凭据有效期至 **09-30 11:06**)⇒ AI 可自起 |
|
||
| **② 待触发** | 真账号验收要**「用户身份」**设备在线,其凭据 **09-28 20:35 已过期 ≈26 h** ⇒ 到那一步只能你登一次(命令见 `NEED-USER.md §②`) |
|
||
| **③ 待触发(本轮新登记)** | N10 长时验收若要**会话之外**的常驻形态 ⇒ 走计划任务 `DSH-Overlay-Node-Dev`;而本机 **`schtasks.exe` 被程序黑名单硬拦**(AI 不可绕过)⇒ 届时需你**放行**或**手工跑一次** `schtasks /Run /TN DSH-Overlay-Node-Dev`(见 `NEED-USER.md §③`) |
|
||
|
||
---
|
||
|
||
## 5 顺手纠正一处错误信号(防继续传播)
|
||
|
||
| 位置 | 错写 | 实际 |
|
||
|---|---|---|
|
||
| `tasks.json` N9 `block_reason`(`[协作]N9-接续` 22:23 写) | 「设备侧 worker(`DSH-Worker-Dev`)仍 Disabled、进程 0」 | **守护=`DSH-Overlay-Node-Dev`**;`DSH-Worker-Dev` 是 09-20 已 `/End`+`/Change /DISABLE` **退役**的 S1 遗留(桌面线记忆 `2026-09-20.md` 有原文),其 Disabled **属正常** |
|
||
| `ai1net-dsh-anywhere/.workbuddy/memory/2026-09-29.md:189` | 同上误写 | ⛔ 别线文件,**我不动**;建议该线自纠 |
|
||
|
||
> ⛔ 本轮**未改** `tasks.json`(它是报活棒写的;我 22:26 已见其会话仍在收尾)。纠正走 `blocked.json`(我域、进 digest)+ 本文档。
|
||
|
||
---
|
||
|
||
## 6 本棒动作清单
|
||
|
||
| 动作 | 对象 |
|
||
|---|---|
|
||
| 更新 | `tmp/supervise-inbox/blocked.json`(N9 改成「红格已清、待 V2 读数」+纠正任务名) |
|
||
| 更新 | `tmp/supervise-inbox/NEED-USER.md`(①无 ②真账号 ③`schtasks` 黑名单) |
|
||
| 新增 | 本文件 |
|
||
| 复跑 | `collabd.py --once`(刷新 digest/queue) |
|
||
| 锁 | 窄域 2 键 RC=0;收尾 `--release-exec` |
|