Files
dsh_ai1net_server/交付物/N9卡点判定与派活-20260929.md
T
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.2 KiB
Raw Blame History

N9 卡点判定与派活(2026-09-29 22:19 · 主会话)

触发:监管程序报警 STALL.md「有会话在跑但 398 分钟无成果」(22:14:30)。 本轮唯一任务 = 判「该谁动」(有活就派/被卡就明确报用户)。执行会话:[主]STALL判定与派活-2216,域锁 = ai1net-dsh-server/tmp + ai1net-dsh-server/交付物。


0 一句话结论

报警是口径假阴性(没有「结算事件」≠ 没有成果);真卡点是跨线工程缺口:设备侧 relay worker 通道不在 ⇒ 入口④闸 503。不需要用户授权,已派桌面线一棒解卡(41182645 @22:23)。

1 「398 分钟无成果」为什么是假信号

项 实测读数
报警 STALL.md:有会话在跑但 398 分钟无成果(22:14:30)
被指对象 9443dbb5 = [协作] N9 派活 · V2…,宿主库 status=working,updated_at = 22:14:57(仍活着)
它其实有成果 22:13 落了 ai1net-dsh-anywhere/docs/实测单_N9_发送腿与入口四闸_20260929.md(含泳道图+事故链图);22:14:03 上报 N9 → blocked 并带 block_reason
病灶 collabd-state.json 的 last_progress_at 只认宿主 ACCEPTED run;21:56 起的 N9 棒是 IN_PROGRESS ⇒ 不刷新 ⇒ 报警器把「上次结算(15:36:17)到现在」当成「无成果」
已自愈 本轮跑 collabd.py --once 后,摘要变「在跑 1 个;4 分钟 无成果」,STALL.md 已消除

2 真卡点:唯一红格 = 设备侧 worker

链路:手机 → 平台入口四闸 → relay → 设备侧 worker → 垫片 127.0.0.1:20090 → WorkBuddy 网关 → 桌面会话

环节 读数 判
relay refuse d-bdf89014-c66f-4060-a2df-995d8c18a951-626dc095:20090 (worker offline) 🟥 无 worker 通道
平台④闸 503 device-unreachable(声明的端口全部离线(20090),连打 3 次) 🟥 请求进不来
设备侧 worker 匹配 overlay-device-join|dsh-worker|relay 的进程 0 个;overlay-daemon.log 最后一次 UP -- registered … accepted=[20090] = 2026-09-29 11:06:46 🟥 之后掉了
垫片 20090 /api/v1/health = 200 · 直连 /api/v1/sessions = 200(22 条 / 7103 B) ✅ 不是它的问题

为什么掉(最可能):11:06 那次是当会话后台任务起的 ⇒ 工具调用/会话一结束被沙箱回收。⇒ 解卡必须用独立进程拉起。

3 本轮唯一动作:派活(不动手做别线的事)

项 值
棒名 [协作]N9解卡 · 桌面线:设备侧节点守护独立拉起(relay 通道恢复 · 20090)
automation id 41182645-6253-4d96-90ce-49a0de18de16
排期 / 域 22:23 / ai1net-dsh-desktop(与 N9 线的 ai1net-dsh-anywhere 不重叠 ⇒ 可并行)
要它做的 用独立进程拉起测试身份的节点守护(DataRoot E:\dsh-worker-dev,凭据有效期至 09-30 11:06)⇒ relay 重新 online+ports=[20090] ⇒ 复测④闸不再 503
已同时提示的坑 ⛔ 别启用计划任务 DSH-Worker-Dev(2026-09-20 已退役的 S1 遗留任务,占 9411,与覆盖网络节点守护无关)

同线接续棒(不是本轮派的):c048a986 @22:20 = ④闸复测 + 桌面 /sessions/live 指针受控归还(N9 棒探针把指针移到了 nope-0000)。

4 要不要用户出手

档 内容
① 现在 不用。测试身份凭据在有效期内(expiresAt 2026-09-30T03:06:10Z = 本地 09-30 11:06)⇒ 解卡 AI 可自做
② 待触发 真账号验收要用**「用户身份」的设备在线,而它凭据 09-28 20:35:27 已过期(约 25.7 h) ⇒ 到那一步只能**你登一次(命令见 tmp/supervise-inbox/NEED-USER.md §②)

⇒ 本轮未以「需用户授权」上抛(21:26 那版上抛是过期信号,你 21:51 已授权且已办结)。

5 顺手登记的机制缺陷(⛔ 本轮未动机制层 —— 需独占锁+你确认)

# 缺陷 后果
M1 last_progress_at 只认宿主 ACCEPTED run 「在干」被判成「没干」⇒ 每轮假报警(本轮 STALL)
M2 collabd.py 的受阻模板把一切受阻渲染成「需人处理 · 要哪一句授权」 跨线等待被当成「要用户放行」⇒ 假升级(本轮已用 NEED-USER.md §① 无 对冲)
M3 taskgraph().ready 只按 deps 算 ⇒ running / blocked 的节点仍算「可派」 digest 喊「可派 N9」而队首空 ⇒ 口径打架、有重复派活风险(本轮用 blocked.json 兜住)
M4 泄漏锁无 TTL、持有者 completed 不自动失效 必留泄漏锁(21:5x 那把已按 R9 授权处置)

6 收尾核验(可复跑)

  • cat tmp/supervise-inbox/queue.json → head=null · pending=0 · blocked={N9: 跨线等待…} · gate=free
  • cat tmp/supervise-inbox/digest.md → 「可派:无」·「等待:N10」· 无 398 分钟报警
  • ls tmp/supervise-inbox/ → STALL.md 已消;NEXT.md = 受阻通报(内容引 NEED-USER.md)
  • 归档:tmp/lock-forensics/n9-20260929-2149/(blocked.json.empty-20260929-2218 · NEED-USER.md.as-cleared-20260929-2218)