Files
dsh_ai1net_server/交付物/手机接入-进度看板.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

14 KiB
Raw Blame History

手机接入 · 进度看板

🔴 本看板=「手机接入」的唯一进度汇总入口(用户只需看这里) 收敛条件 = V1–V7 全过 更新时间:2026-09-30 08:2x(监管轮 · 会话 手机接入-监管-0815 · 域锁 ai1net-dsh-server/)


0. 一句话(先看这三行)

  1. 🟢 判据层面仍是 6 过 1 差一格 —— V2/V3/V4/V5/V6/V7 有机器读数;V1 只差「真机腿」(要你在手机上点一次 USB 授权)。
  2. 🟢🆕 R1(链路能活多久)本轮拿下一半 —— 中继客户端半边已治本:不再挂在会话名下,改由 Windows 计划任务持有(父链 powershell←svchost←services←wininit,无 bash / 无沙箱 / 无 WorkBuddy),我本轮独立复核通过(注册语义行 4→5,新增 08:07:16)。
  3. 🔴 20090 半边判「结构性不可行」 —— 它活在 DSH 宿主进程内;要脱离会话就必须交给计划任务,而计划任务上下文读不到网关口令(现场复测 envPresent=false / envLen=0,入口 fail-closed rc=3)。⇒ 需你在三条路里放行一条(§五 ②)。此刻链路仍不可用(20090 无监听 ⇒ 手机拿 503)。

一、验收判据逐项(V1–V7)

# 判据 状态 依据(机器读数 · 产物)
V1 手机(真机、非 USB)能看到桌面会话列表与最新消息 🟡 未完全过(只差真机腿) 端侧腿在真 WebView(模拟器真壳 APK + CDP)全通:无 cookie 6 探针全 401 真响应、带 cookie 6 探针全 200、列表 可操作 11 · 不可发 53 且 id 序列 ≡ 直连垫片、/history 200 渲染 8 条(ai1net-dsh-anywhere/docs/实测单_N17_端侧同源与凭据载体_20260929.md)。真机腿未验(需你 USB 授权)—— 增量,非新缺陷
V2 手机发出的消息进入桌面会话 ✅ 过 经真设备入口 POST …/reply 200 {delivered:true},目标会话 replay 出现 user_message_chunk、文本逐字全等;1 h 窗口内 5/5 段复现命中(N9/N10)
V3 桌面正在用的会话不被夺走 ✅ 过 live 前后同值、writerOccupied=true,全程走 reply,⛔ 未做 session/load;83/83 次非空采样零漂移
V4 src/net/relay/** 零协议改动 ✅ 过 该目录全部文件 mtime ∈ 09-16 ~ 09-26;本轮 desktop 棒只"运行"其 relay/main.js,未改一行(R1 实测单 §8 自检)
V5 权限面不扩大:不开对外端口、准入四闸、默认关 ✅ 过 非回环监听集 33 条前后 diff 为空;20090 恒只绑 127.0.0.1;device_web_enabled 默认 = 0;入口四闸 401 / 403(他人) / 403(user-switch-off) / 200 逐级正确
V6 插件形态正确:垫片是 DSH 客户端插件(并入 ai1net 包第 6 模块),⛔ 不是独立进程 ✅ 过 包内模块⑥ lib/device-access.js;在用 profile = C:\Users\Administrator\.dsh\profiles\desktop,bundles = [dsh-base, dsh-web-app, @dsh-local/ai1net](md5 2ca1321c…);20090 由 DSH 客户端自己的 host 子进程持有;全机扫 device-access|ai1net 零独立进程
V7 🔴 绝不影响 WorkBuddy 本身的运行(T1–T7) ✅ 过 N10:同一连续 1 h 窗口内六项同时成立(三基线 pid 84/84 present、宿主回 idle、当前对话零漂移、200 次操作 0×429、对外端口 33→33、配置目录哈希零差异);本棒再加一笔:desktop 棒全线经脚本 spawn、未装 hook、未写 settings、未 kill/restart WorkBuddy;主进程 #3176(09-28 13:55 起)仍在

🔴 V6 的覆写说明(用户 07:4x 明令):09-29 那版 V6 判 fail,其依据来自两处非在用目录 ⇒ 旧判作废,以本行为准。

1.1 口径与增量(如实登记)

项 说明
V1 的「真机腿」 需用户点一次 USB 授权;⛔ AI 侧做不到。不影响其余六项。
V1 的判据口径 本线经 N8/N17 协商后以「真 WebView 为准,真机腿为增量」收口。
垫片作用域(R3) 垫片 /info.cwd = mcn-short-video ⇒ 手机端可见会话由 22+ 条降到 1 条。是不是本意需你定(见 §五 ③)。
🆕 R1 主判据的 ≥10 分钟口径 由本棒在会话内自证(详见 §三),⛔ 不再单独排"复核棒"去取这一格。

二、三线本轮产出(已按物品核对,不认自述)

线 本轮产物 结论
客户端线 ai1net-dsh-desktop 🆕 docs/实测单_R1链路持续性_20260930.md(08:04–08:0x)· docs/实测单_前置恢复_2026-09-30.md(07:57)· docs/README.md(08:08)· 宿主 run 4953e96d = ACCEPTED 🟢🆕 R1 中继半边治本(我独立复核通过);20090 半边判结构性不可行 ⇒ 如实登记 + 三条候选上抛
手机接入线 ai1net-dsh-anywhere 今日无新产物(最近 = 02:14 的 N10 长时稳定性) ⚪ 关键路径 N8→N9→N10 全收口 ⇒ 无缺口
插件线 ai1net_ui 今日无新产物(最近 = 09-29 13:19 的棒1f) ⚪ 无缺口待办

三、本棒现场实测(2026-09-30 08:15–08:2x · 只读)

面 读数 判
中继守护 powershell.exe#3212(CREATED 08:07:13)父链 = svchost.exe#3008 ← services.exe#1980 ← wininit.exe#1824 ✅ 真脱离会话
中继客户端 relay/main.js --client(#60196,08:07:14)· 日志 state=up(for 478470ms) · attempts=0 restarts=0 reconnects=0 ✅ 在册且持续
语义行(口径=只比语义行) overlay-daemon.log 的 UP -- registered 行数 4 → 5,新增行 = 2026-09-30 08:07:16 … accepted=[20090] session=4624335519876c48(前一条是 09-29 22:26:58) ✅ 本轮新增
垫片 127.0.0.1:20090 netstat 无 LISTENING;tasklist | grep -ci electron = 0 🔴 不通(如实状态,未做"照起无口令的 20090"这类假绿)
WorkBuddy 主进程 WorkBuddy.exe#3176 仍在;进程数未减 ✅ 未受影响
守护进程(协作程序) collabd.py --supervise pid 55332(起 06:02:07)在跑 · 交付物/手机接入-实时状态.md mtime = 08:15:01(10s 心跳) ✅ KEEPER_UP
平台域锁 本棒 --claim-exec RC=0 ✅

🆕 口径更正(本轮实测 · 登记):SOP §9.4 的"bind :20099 失败即 KEEPER_DOWN"有假阴性 —— 本棒实测它报 KEEPER_DOWN,而 collabd.py --supervise 实际一直在跑(pid 55332)⇒ 正确判据 = 进程命令行含 collabd.py + 状态文件 mtime < 30 s,⛔ 不用 bind 探针单独下结论。⇒ 本棒据此未做任何"重起守护"动作(避免重复起第二个实例)。

3.1 🔴 另一笔域锁泄漏(沿用登记 · 本棒复核仍在 · ⛔ 未动)

项 读数
锁路径 dsh-server-docs/05-交接单/.locks/________N9______-2248-224852526
占的域 ai1net-dsh-anywhere(=手机接入线的域)
持有者 [协作]N9复测-2248(开始 09-29 22:48)
mtime 09-30 08:15 复核:仍在(已 ≈13.5 小时未动,持有者会话早已收口)
影响 任何声明 ai1net-dsh-anywhere 的棒都会抢不到锁 ⇒ 按 R9 只能停手(09-29 22:5x 已实际发生:会话 a7fcfc52 第 0 步被挡、零产出)
⛔ 本棒处置 按 R9 未删、未接管(处置权只属持有者本人/用户)

建议:由用户本人删掉该目录(与 09-29 11:30 那笔全域锁同类)。在那之前,手机接入线派棒应声明更窄的显式域,别声明整个 ai1net-dsh-anywhere/。

3.2 ⚠️ 一次性自动化积压(沿用登记 · 本棒只计数)

automations 表 ACTIVE 81 条,其中 once 且已过期(scheduled_at < 09-30 08:00)= 76 条(多为 09-27/09-28/09-29 的哑火棒)。 ⛔ 本棒未删(属批量改动,命中 R7「>10 条先出清单 + 确认」)⇒ 见 §五 ④。


四、下一棒(已挂 · 一棒一线)

对象 内容(本棒所派) 时刻
ai1net-dsh-desktop(客户端线) R1 中继半边「≥30 分钟长时观察」(只读复核):① 只读比语义行(overlay-daemon.log 的 UP -- registered 行数、客户端日志 state=up 行数,⛔ 不比总行数)② 判守护/客户端父链是否仍为 powershell←svchost、restarts/reconnects 是否仍为 0 ③ 顺手记 20090 实况(预期仍无监听,如实记)。⛔ 不要起 20090 临时恢复、⛔ 不改任何脚本/任务定义。判据=收口后 ≥30 分钟仍在册、state=up 持续、父链不变。 08:40(一次性 · 属白名单「接续会话」)

为什么只派这一棒:其余缺口全部在用户手上(20090 三条路径、真机腿 USB 授权),⛔ 无合规可自决的下一棒 —— 派了就是"为派活而派活"。

关键路径状态:N5 → N8 → N9 → N10 已全部 done ⇒ 关键路径没有剩余节点。


五、待用户(边界外 · 逐条编号)

① 真机腿(V1 的最后一格) —— 为什么问你:需要你在手机上操作(USB 授权),AI 侧做不到。要什么:手机连数据线后点一次「允许 USB 调试」,此后真机验收本线自动跑完。

② 链路持续性(R1)走哪条路(=本轮 desktop 棒 §7 的三条候选,倾向 A 案)—— 为什么问你:这条决定「这功能平时到底能不能用」,且三选一没有客观优劣,还牵涉你愿不愿意为它放行一条现有红线。三条都不改官方 dsh、不碰平台仓、不影响正在跑的 WorkBuddy:

  • A 案(推荐)|给垫片开一条「口令入站」通道 —— 常驻垫片(计划任务)+ 会话侧一个极薄推送者,把当前口令经回环推给垫片(只进内存、不落盘)。 优点:全部硬约束都能满足(不落盘、只回环、不夺会话、口令恒新),手机侧行为与今天完全一致。 缺点:要改 M6 垫片本体(凭据面扩大 ⇒ 须走评审),另需一条周期性会话侧动作。
  • B 案|让 WorkBuddy 在「应用生命周期」里拉起客户端 —— 不经任何会话,由 WorkBuddy 自己在启动阶段拉起。 优点:最干净 —— 口令天然可读、生命周期天然正确、不需要任何新通道。 缺点:现行规则明确禁止改 WorkBuddy 的配置与进程 ⇒ 要你先放行这条红线,且属平台侧能力,本线做不了。
  • C 案|让口令在磁盘上有"你自己指定的"稳定副本(用户级持久环境变量或 WorkBuddy 的 gateway 设置)。 优点:不改任何代码、不加新通道,机制已就位,现在就能用。 缺点:口令落盘(与本线「令牌不落盘」红线相冲,须你明确豁免);口令不再随重启轮换;要重启一次 WorkBuddy 才生效。

③ 垫片作用域是不是本意 —— 为什么问你:垫片当前工作目录 = mcn-short-video ⇒ 手机上只能看到 1 条会话(此前是 22+ 条)。是"只让手机看这一个项目"的本意,还是应该放开到全部会话?(影响你能在手机上操作多少东西。)

④ 是否清理 76 条哑火的一次性自动化 —— 为什么问你:属批量改动(命中 R7),涉及面超出单条棒,且部分是你自己排的棒。默认动作(本棒已采用)=不删,只计数。

⑤ 域锁泄漏 [协作]N9复测-2248(域 ai1net-dsh-anywhere,已 ~13.5 h) —— 为什么问你:按 R9 只有持有者本人或你能释放,AI 删锁=违规。要什么:由你删掉 05-交接单/.locks/________N9______-2248-224852526/ 目录(或告知可释放)。


六、本棒动作记录(监管轮 · 08:15–08:2x)

动作 对象 说明
✅ 抢域锁 ai1net-dsh-server/ 手机接入-监管-0815,RC=0
✅ 跑状态 + 探守护 state.py · collabd.py 进程 · 20099 KEEPER_UP(并更正 bind 探针假阴性)
✅ 收三线产出并独立复核 desktop 的 R1 实测单(+前置恢复/README)· anywhere/ai1net_ui 无新件 不认自述:亲读宿主 run、亲查父链与语义行、亲查端口
✅ 判 V1–V7 + 覆写本看板 全表 见 §一(V1 仍「只差真机腿」,其余不变)
✅ 现场取证 父链 · 语义行 · 20090 · WorkBuddy 进程 · 域锁 · automation 积压计数 见 §三
✅ 派 1 棒 ai1net-dsh-desktop 一次性 08:40(R1 中继半边 ≥30 min 只读复核)
✅ 更正 goal.json 的 acceptance_state 注记 _更新 / _依据 V1 仍 fail;其余 pass 不变(状态本身未变,只刷新注记)
⛔ 未新增其它自动化 — 本棒自身跑完即止
⛔ 未替别线动手 — 未起垫片/web 客户端、未 restart dshs、未改 WorkBuddy 配置、未删任何锁
⛔ 未起会话后台任务 / 未跑超时命令 — 全程前台只读,单条命令均短

七、机械层误报(沿用 + 本轮新增)

机械层原话 实况
「服务探针:不通」/ collabd-state.kp.shim_20090 ⚠️ 既有假阳性(持续报不通而实况曾 200)⇒ 判垫片死活一律连测 ≥3 次 + 进程起始时间,⛔ 不用单次读数
🆕 SOP §9.4「bind :20099 失败 ⇒ KEEPER_DOWN」 🔴 假阴性(本轮实测):报 DOWN 而 collabd.py 实际在跑 ⇒ 判据改为进程命令行 + 状态文件 mtime
「关键路径 N5→N8→N9→N10」 ⚠️ 该四节点已全 done;机械层仍显示为"关键路径" ⇒ 看板此列已更新为「无剩余节点」
ai1net_ui「棒1b/1c 实测缺」 ❌ 误报(产物在 ai1net_ui/docs/执行单_棒1c_真装与验通_20260929.md,仅文件名前缀不符)
「有自动化已过 validUntil(心跳会断)」 ❌ 误报(过期的是已废的 004f6bc2)