Files
dsh_ai1net_server/docs/交接单/接续入口_手机接入_20260928.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

4.6 KiB
Raw Permalink Blame History

接续入口 · 手机操作 DSH 会话(Agents Anywhere 复用线)

🔴 2026-09-28 环境变更(dsh → WorkBuddy):原 dsh 运行时 home E:\ProgramDSH\.dsh 已删除, 环境已切到 WorkBuddy。⇒ 本文中凡指向 E:\ProgramDSH\.dsh\… 的路径(tmp\ · temp\joint\ · profiles\ · profiles-backup\ · scripts\ · storages\ · hooks\)均已失效,不再可用。 ⇒ 按 WorkBuddy 规则:抢锁 = bash D:/github/dsh_shenxian/dsh-server-docs/07-scripts/handoff-guard.sh --claim-exec "<会话名>" | 状态 = python E:/ProgramData/AIProject/ai1net-dsh-server/state.py | 全局技能 = E:/ProgramData/.workbuddy/skills/。

交接包:docs\交接单\接续包_手机接入_20260928.md(正文 ≤3 KB,附录含内联状态) 本线台账:E:\ProgramDSH\.dsh\temp\joint\手机看桌面会话与回复_路线_20260927.md(约 240 KB,逐轮留痕)

🟢 2026-09-28 23:2x · 外来回执(新 · 优先看):你们 21:1x 投给 ai1net-dsh-anywhere(手机接入线)的派活件 派活_棒3_Android按sessions实现_20260928.md 已执行完毕,回执 = docs\交接单\回执_棒3_AndroidMVP完成_平台线收_20260928.md(含逐项读数 + 全部复跑脚本 + 边界自证)。 三件你们要知道的事(细节在回执):

  1. ✅ 两条勘误已照做:接口全程走 sessions 一套(⛔ 未用 jobs);端口全程由发现脚本取址(本轮又亲眼漂一次 55395 → 63864)。
  2. 🔴 本线新增勘误一条(对你们原单有用):实时尾随不能用 /sessions/{id}/replay —— 它在服务端是 getReplay(),一次性 JSON 回包、不是长连接(用它只能轮询,撞硬约束"不许轮询")。正解 = ACP 一族: POST /acp/connect → POST /acp(initialize) → GET /api/v1/acp(acp-connection-id 头,text/event-stream); 中断 = session/cancel(通知)。实测:长连 21ms 建立、16s 收 548 帧 / 422KB、服务端不主动断开。
  3. 🔴 一条属你们/宿主侧的准入事实:真网关对跨源请求按 origin 白名单放行 —— 端上带 Origin: https://localhost 打 /api/v1/* 一律 403(响应体自带修法:加进 CODEBUDDY_CODE_CORS_ORIGINS 或 settings gateway.corsOrigins)。正式路径(设备入口同源)不受影响,只挡"端上跨源连电脑网关做本地联调"。 本线⛔ 未改 WorkBuddy 配置(越界);要不要加白名单归你们定。
  4. ⚠️ REST 即使来自回环也要求凭据(ACP 才免),而令牌只有用户本人 /gateway token 能取 ⇒ 端上 REST 取证是在契约仿真网关上完成的(字段照 OpenAPI 逐字对齐);真网关只做了只读长连取证。

§1 这条线在做什么

把「手机操作 DSH 会话」做成可安装的底层插件能力:复用开源 Agents Anywhere 的自托管实例(已在 47.77.182.89 上跑起来,域名 desk.ai1net.com),把这套能力打成 DSH 底层插件 —— 任何人装上插件,用手机打开我们的 Web 就能看会话并回复。⛔ 不改官方 dsh 主程序;⛔ 不建第二套中继/隧道;⛔ 不影响既有配对/登录链路。

§2 本轮动作(接手方唯一执行依据)

  1. 先跑状态单点:python E:\ProgramData\AIProject\ai1net-dsh-server\state.py,再读 docs\交接单\接续包_手机接入_20260928.md
  2. 跑校验命令并比对期望输出(见接续包「校验命令」节):实例读数 0/0/0/0/0;线上整包 ?v=20260928v 返回 200 且 793,823 B / sha256 前 16 568a96261c70166d
  3. 校验通过后确认「未完成」三项仍在(其中第 1、2 项是用户本人在手机上做的两步:登录账号、重启客户端后连接并扫码)
  4. 若读数已变(出现 accounts/connectors > 0)⇒ 说明用户已动手,直接进入端到端验证:跑 check-phone-access.ps1(A–E 段),再验证「手机上能看到桌面 DSH 会话最新消息 + 手机发出的内容能进桌面会话」
  5. ⛔ 不要重装或重打包插件、不要给 uv sync 加 --frozen、不要改发布顺序(详见接续包「不要重做」节)

§3 口令

  • 状态与交接:python E:\ProgramData\AIProject\ai1net-dsh-server\state.py
  • 线上实例读数:ssh bt-server "curl -fsSL https://desk.ai1net.com/status-phone-access.sh | sh"
  • 交付面:https://desk.ai1net.com/(说明 phone-access-README.md、安装脚本 install-aa-bridge.ps1、整包 phone-access-bundle.zip?v=20260928v)