Files
dsh_ai1net_server/交付物/心跳核对-N9红格已清-20260929.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

99 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 心跳核对 · 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` |