起因:用户 2026-09-17 明确「所有文档都要同步,都放在开发仓库 docs 对应文件夹下」。
判据:工作区根 *.md 中在仓库(git ls-files --quotepath=false)搜不到的那些。
入仓 33 份(一律复制,工作区根原件保留不动,避免引用断链):
- 04-调整方案/113–128(16 份 · 原子占号后落盘):覆盖网络 传输方案取舍 / 应用场景与待完善清单 /
插件化vs改内核 / 问题逐条推演 / 参数表与观测口径;会合中继拆分取证与改造方案;
集群化改造方案 Manager-Worker;跨节点迁移与节点自举;项目代码分层范式与迭代风险评估;
搬运与共享重建方案 guest w47→w106;方案规划方法提炼;文档无效信息审计报告;
会话接续机制复盘与修复;会话接续规范;dsh 客户端化部署方案;dsh 桌面客户端开发方案
- 交接单/archive/交接单-已完成/T09–T21(13 份 · 覆盖网络线已完成单归档)
- ops/(2 份运行态指针:接续入口 / 接续包 · 覆盖网络线)
- archive/(2 份临时与内部简报)
已排除(无需重复入仓):覆盖网络线 10 份方案正文已入档案 103–112(文件名不同)。
登记:INDEX.md §二 新增 04-113–128 共 16 行 + §四 追加 T09–T21 说明 + 机器摘要行刷新
(⛔ 未跑 docs-index-stats.py --write:该脚本会按 \r\n 归一化全文件行尾,故改为字节级单行替换);
README.md 追加 1 条入仓指针;docs-manifest.json 复跑 scripts/docs-manifest.py 刷新。
验收:工作区根 47 份 .md —— 同名已入仓 8 / 本次内容一致 29 / 已知改名映射 10 / 未入仓 0;
git status 待提交清单只含本次新增与登记 3 件(未涉 src/ 与 relay 代码面)。
67 lines
5.5 KiB
Markdown
67 lines
5.5 KiB
Markdown
# 接续包 · 覆盖网络线 · 2026-09-16 18:3x(**v3**)
|
||
|
||
> **用法**:新会话**只读这一份** —— ⛔ 不许先 Glob/Grep 全库摸底、⛔ 不许"再确认一下待办"。
|
||
> **v3 改了什么**:① 上次自动接续(17:03)**跑了 9 次调用 / 1.5 分钟 / 零产物** ⇒ **「下一步」已从"两件事混装"改成单一机械动作**(根因见「给下一棒」);② 全文压到 3KB 内;③ 传输选型结论已更新(**撤销"首选 frp"**)。
|
||
|
||
## 接续点 · 覆盖网络线 · 2026-09-16 18:3x
|
||
|
||
- **来源会话**:`408636f2`(覆盖网络线:规划复核 → 落地执行 → 收口)| **结束原因**:水位 **42 万**强制收口
|
||
- **原目标**(用户原话):①「查看覆盖网络任务的相关文档,规划落地步骤方案,检查方案确认有误调整,准备执行」②「有稳定可行的落地步骤方案了吗,确认是最佳落地方式就开始执行,保证每一步完成后项目都保持可用,逐步交付」③「覆盖网络的功能开发完成了吗」④「重新创建接续会话 看看是否有改善」
|
||
- **基线**:HEAD=`640813e` | 远端 master=`640813e`(15:0x 实测,**未复验**)| 全局锁=**已释放** | ⚠️ 工作区 **13 改 + 1 新增**,**未 commit(未授权)**
|
||
- **产物**:
|
||
1. `交接单_覆盖网络落地执行_20260916.md` —— **§8 = P1/P2/P3 执行记录 + 全部实测证据**
|
||
2. `覆盖网络_传输方案取舍_开放端口与自研relay_20260916.md` —— §7 成熟件对照 / **§8 撤销 frp + 六条判据 + R0**
|
||
3. `会合中继拆分_取证与改造方案_20260916.md` —— §9 第二轮勘误
|
||
4. 技能 `dsh-decision-method` **v2.8.0**(新增 §4.6 选型判据轴;三副本 md5 一致)
|
||
- **校验命令**(只读、≤30s):
|
||
```bash
|
||
ssh [email protected] 'md5sum /opt/dshs/lib/supervisor/spawn.js; grep INSTANCE_PORT /etc/dshs-worker.env; PGPASSWORD=dshs_cluster_2026 psql -h 127.0.0.1 -p 15432 -U dshs -d dshs -At -c "select id,via from dsh_hosts order by id"'
|
||
```
|
||
**期望**:`e75427d06fa94cadac800e1570cec273` + `DSHS_INSTANCE_PORT_BASE=20000` / `SPAN=1000` + `w-106|manager-ssh`、`w-47|local`。**不符 ⇒ 停下只报告,⛔ 不许照文字硬做。**
|
||
|
||
## 给下一棒(⛔ 先读这段:上次为什么零产物)
|
||
|
||
上次(17:03)自动化会话 **9 次调用 / 1.5 分钟 / 零产物**。根因 = **旧「下一步」把两件事(补判据表 + 测链路画像)混成一句话,且没给可交付的产物路径** ⇒ 会话做完开机四步就无从下手。**本次已改成单一机械动作(见下),照做即可闭合。**
|
||
|
||
## 下一步(**唯一动作 = R0-b 链路画像测量**,全程只读)
|
||
|
||
**要产出**:本机 ↔ 47 ↔ 106 的 **RTT / jitter / 带宽**实测,写进 `覆盖网络_传输方案取舍_开放端口与自研relay_20260916.md` 的新 **§9**(含命令原文 + 数字)。
|
||
|
||
命令骨架:
|
||
1. 本机 → 47 / 106:`ping -n 20 <ip>`(jitter 取 `mdev` 或手算标准差)
|
||
2. 下载带宽:`curl -o /dev/null -w '%{speed_download}\n' http://<47或106>/<一个 ~50MB 文件>`(无现成文件就先在 47 临时生成,用完删)
|
||
3. 47 ↔ 106 互联:在 47 上 `ping -c 20 106.54.21.172` + 同样方式测一次 TCP 吞吐
|
||
4. 记 **NAT / 公网可达性**结论:从本机能否直连 106 的 19000(决定"打洞"可行性)
|
||
|
||
⛔ 只做测量 + 写 §9;**不装任何 relay、不改配置、不开端口**。**工具调用 ≤ 8 次**。
|
||
|
||
## 未完成
|
||
|
||
1. **R0-b 链路画像** ← **= 下一步,唯一动作**
|
||
2. **R0-a 判据打分表**(把 §8.2 那六条补成可打分版)→ 排 R0-b 之后
|
||
3. **功能本体 0/3**:presence / 游戏服放 L1 / 块级内容寻址 —— 一个都没开工
|
||
4. **S5(443/TCP 兜底)** 未做;**relay 实现未定**(P4 SSH 版判不做)
|
||
5. **本机(客户端类型节点)三项验证** 未做
|
||
6. **未 commit**(13 改 + 1 新增;红线:未授权不得 commit/push)
|
||
7. ⏳ 待用户裁决:「自动接续」通道留不留(18:2x 已问,**未答**)
|
||
|
||
## 关键决定(勿推翻)
|
||
|
||
1. **S3 不回环别名、不 `portMap`** —— 实测被 sshd 静默改写;改用**实例端口区间隔离**(`w-47`=20000+ / `w-106`=21000+,避开 OS 临时段 32768-60999)—— **已上线**
|
||
2. **S2 只加 `via`**(不加 `address`);`via` 省略时 `COALESCE` 不覆盖旧值;回填 `w-47=local` / `w-106=manager-ssh`
|
||
3. `proxy.ts:109` = **发给上游 dsh 的 `Host` 头**,⛔ 永不可改(连接目标 `:136-137`)
|
||
4. **控制面已在 PG** ⇒ 不存在"改造为 PG"
|
||
5. **worker 永远只拨出、不开入站端口**;**relay 实现未定**(撤销 frp:`CVE-2026-40910` 影响 ≥0.53.0 / dashboard 默认弱口令 / **`proxyBindAddr` 默认绑公网** / 单一静态 token + frpc 明文存 / 服务端默认不强制 TLS)
|
||
6. ⛔ **P4(SSH 版中继 + 新开 32023)判不做**
|
||
|
||
## 回滚点
|
||
|
||
- **P1**:`/opt/dsh/backups/lib-pre-S0-20260916-1555.tgz` → `systemctl stop dshs` → 还原 `lib` → `start dshs`
|
||
- **P2**:`via` 列有默认值 ⇒ 旧代码读 `endpoint` 不受影响,**列可留着不删**
|
||
- **P3**:删 `/etc/dshs-worker.env` 的 `DSHS_INSTANCE_PORT_BASE/SPAN` ⇒ 回 `listen(0)`(**零代码回滚**)
|
||
|
||
## ⛔ 不要重做
|
||
|
||
**P1(47 对齐 `640813e`)/ P2(`via` 列 + 回填)/ P3(端口区间隔离)均已完成并验收** —— 证据在交接单 §8。
|
||
**也不要**再论证「S3 用回环别名」(已实测证伪)、「需要改造为 PG」(已经是 PG)、「首选 frp」(已撤销)。
|