Files
dsh_ai1net_server/交付物/心跳核对-N9红格已清-20260929.md
T

98 lines
6.2 KiB
Markdown
Raw Normal View History

# 心跳核对 · 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` |