Files
dsh_shenxian/dsh-server-docs/INDEX.md
T
admin bc0dd2c96d docs(dsh-server-docs): mksess 口径校正(DB 直插→PG 直插)+ 技能 dsh-auto-handoff-chain 三处同步建立(序⑰ S1/S2)
- 02-运维手册.md:mksess 命中处补「PG 直插 + 连接串来源」+ D1 勘误指针两行(档案 77 的旧形态说明,正文不改)
- skills/dsh-change-workflow/SKILL.md(146/395/495 三行)、skills/dsh-env-bootstrap/references/常驻规则-快照.md(55 行):同口径校正
- skills/dsh-auto-handoff-chain/:新建文档库副本(SKILL.md v1.3.2 + scripts/chain_report.py),此前该技能三处同步从未建立
- README.md / INDEX.md:登记该技能(技能表 + 「什么时候查什么」+ 技能清单表)

判据:E1 = 0 行、E2 两副本 md5 全同、E3 diff -r = 0 行、E4 登记命中 README 1 / INDEX 2、镜像 47 同值
2026-09-17 17:03:34 +08:00

35 KiB
Raw Blame History

dsh 平台文档导航(INDEX)

首读 BRIEF.md(现状卡):30 秒对齐现行事实;本文件只管"定位篇目 + 状态"。

双端模型:本机 D:\github\dsh_shenxian\dsh-server-docs\(工作树,git 仓库 dsh_shenxian_doc)↔ 服务器 /opt/dsh/docs(部署镜像,root 600,无 .git,靠 scp)。

对账:bash scripts/docs-sync-check.sh(退出码 0 = 全绿)。

最后核对:2026-09-12 — 篇数与规模不在此写死:本库由多会话并行改动,绝对值数十分钟即失效(同日实测 83 → 85 → 87,3 次作废);一律以 python3 scripts/docs-manifest.py 复跑结果为准。代码 HEAD 看服务器:git -C /opt/dshs log -1(最后核对值 ebe8075)。域名 alotbuy.com(旧域 dsh.alotbuy.com 已 301)。


一、按场景快速定位

| 我要做什么 | 先读 |

|---|---|

| 访问入口(当前域名) | 门户 https://alotbuy.com;用户实例 https://<用户名>.alotbuy.com | 04-22(迁移+回滚) |

| 重建 / 交接部署 | DEPLOY-本部署.md(拓扑·目录·env·依赖·脚本族·构建/部署/回滚) | 档案 19 §C9 |

| 理解架构 / 多租户隔离 | 01-规划与架构.md(一~五、九、十三) | archive/ 全文 |

| 日常运维(重启/备份/token/KEY/排障) | 02-运维手册.md | 03-路线图与待办.md |

| 做一次平台改造(完整流程) | skills/dsh-change-workflow/SKILL.md:六阶段 + 红线 R1-R11 + 档案模板 + 并行调度协议 |

| 开源导出 / 发新版本 | skills/dsh-opensource-release/SKILL.md:五条硬规则 R-O1–R-O5(源仓库只读 / 探针 0 命中 / 去插件 / 不带文档与 skill / 分层授权)+ 脱敏映射表 + 迭代 SOP + 验证六件套;产物在本机 _开源导出_20260913/ |

| 排查业务插件故障(没 UI / 装不上 / 改了没生效) | skills/dsh-plugin-diagnose/SKILL.md:三层归属 + 三把尺子(inject 差集 / glibc 直测 / 产物插探针)|

| 换电脑 / 改了工作区路径,规则会不会丢 | skills/dsh-env-bootstrap/SKILL.md:常驻规则快照 + --check 校验 / --inject 注入 / --env-check 环境自检(默认只报不改)| | 跑跨会话长任务(自动接力) | skills/dsh-auto-handoff-chain/SKILL.md:六件套 prompt 骨架 + 登记门禁 + 五条实测防护 + 复跑脚本 scripts/chain_report.py | | 看还有什么没做完 | 03-路线图与待办.md §二 | 交接单/README.md §一(已规划待执行) |

| 改前端页面(强制基线) | 06-工作台UI规范.md |

| 改实例 UI 分区(设置面板) | 07-实例UI分区登记表.md(哪个包提供 / 源码在哪 / 能不能改)+ 06-工作台UI规范.md |

| 红线与硬约束 | README.md §红线(含 R7 禁批量全仓写入、R8 中断用户须先知会)| 04-07 |

| 插件兼容性预检(导入/上传即判定) | 04-71(判据 + PoC + 三层防线)|交接单/T05(执行单)|scripts/plugin-compat-check.mjs(可在服务器直接跑) |

| 实例崩溃循环 / 插件不兼容 | 04-70(anysearch 与 dsh-llm assertNever 不兼容;判据「重启后错误是否变化」)|04-20(自愈熔断)|04-25(崩溃循环前例)|02 §C.4 |

| 锁机制(防并行冲突) | 04-73(强制钩子)|04-69(三把锁建立)|交接单/README.md §一·§三·§六|scripts/{handoff-guard.sh,op-lock.sh,lock-guard-hook.py} |

| 多会话并行 / 冲突治理 | 04-69(两级文档锁 + 服务器侧操作锁 + commit 常态化)|交接单/README.md(占用锁 / 写者归属 / §六 服务器侧锁)|scripts/handoff-guard.sh、scripts/op-lock.sh |

| 插件管理面 | 04-16(三层归属)| 04-31(门户双 Tab)| 04-57/04-60(设置面板分区) |

| 搜索 provider / 联网搜索 | 04-64(接入 AnySearch)|04-65(启停与 web provider 联动)|04-66(P0 误报与 admin 显式信任) |

| 「能力管理」section UI | 04-67(按 UI 规范重做)|04-36/04-38b(分区铺开 / 术语统一)|04-68(启停属主污染根治)|04-100(「我的技能」分组 · 09-15)|04-101(改名「能力管理」+ tab 分页 + 卡片三行 + DeepSeek 改名 · 09-15) |

| 安全 / 暴露面 | 04-14(出网护栏)|04-39(可见面收窄·封 loopback)|04-41(上传加固) |

| 技能共享层 / 管理面 | 04-10(bundledSkillDir)|04-11(API+页面)|04-40(挂载修复) |

| 会话/登录跳转 · 断连恢复 | 04-13(冷启动 404)|04-24(实例侧 401)|04-49(回收后反馈)|04-51(401 透明重放)|04-72(回收/关闭后回到页面自动唤醒) |

| 实例易用性 | 04-45(老会话档位提示)|04-56(实例助手)|04-59(启动动画) |

| 实例资源 / 配额 | 04-58(内存口径 + 配额 384M)|04-38a(边界:无磁盘配额) |

| VoxEMW | 04-12(摘要)| archive/工作区草案/ 两份全文 |

| 历史全量时间线 | archive/dsh-improvement-plan-20260909-full.md |


二、全量清单

状态摘要(机器生成,勿手改):档案 89 份(04-*),另含根级编号 4 条(01/02/03/06),另有非编号行 12 条(README / INDEX / 技能 / poc 等)—— ✅ 70 | 🔄 8 | 🧪 1 | 🔧 1 | 未标记 13。复跑 python3 scripts/docs-index-stats.py 取数,--write 就地刷新本行。 分层与机读明细(路径 / 日期 / 字符数 / 被引次数 / tier,可 jq 先筛后读):docs-manifest.json;复跑 scripts/docs-manifest.py 即刷新。

图例:✅已落地 | 🔄维护中 | 🧪PoC | 📝待开发 | 🔍核查完成 | 📋评估 | 🟡保留兜底 | 🗄归档|🔧修复|🔴|🚧|❓

| 号 | 状态 | 一句话 |

|---|---|---|

| README | 🔄 | 文档库总说明、模块一览、红线、使用约定(档案清单唯一来源)|

| INDEX | 🔄 | 本文件:场景速查 + 状态总览 |

| 01 | ✅ | 背景/架构/目录布局/dsh 分层/归属矩阵/安全边界 |

| 02 | ✅ | 迁移、备份恢复、域名接入、uid 排障、命令速查(正文为历史,现行以附录 C 为准)|

| 03 | 🔄 | OQ 结论、已完成清单、进行中/待办、历史决策 |

| 04-01 | ✅ | 登录直达 URL 自动带 launch token | | 04-02 | ✅ | 权限边界收紧 + DB 加固 | | 04-03 | ✅ | API KEY 收归管理员统一管控 | | 04-04 | ✅ | 注册/审核/删除用户闭环 | | 04-05 | PoC 实证完成(插件 v0 | 插件化可行性 + PoC(PoC-2 三项已复核:①不做 ②已实现 ③作废) | | 04-06 | 已上线 | 登录直达会话窗口 v1+v2 | | 04-07 | 生效 | 升级红线(禁自动取最新版)与独立升级流程 | | 04-08 | ✅ | last-wins 单活跃会话 + idle-reap 常驻上限 | | 04-09 | 已落地 | 角色化 profile patch 裁剪 client 插件 | | 04-10 | 已实施 | 共享只读技能目录(bundledSkillDir)env 注入 | | 04-11 | 已实施 + API 全链路验 | 技能管理面 API + 页面(zip-only 两阶段替换) | | 04-12 | 已冻结 | VoxEMW 全云 API 化调研 + M1 落地 | | 04-13 | 已落地 + 验证通过 | 登录直达冷启动竞态 404 修复 | | 04-14 | 审计已完成 → 加固项待用户 | 会话敏感信息暴露面审计 + nftables 出网护栏 | | 04-15 | 已上线,页面全部 200 | 三页 401 守卫跳登录 + 核心插件开关收归 admin | | 04-16 | 已封板,实施中 | 页面导航定稿 + 插件三层归属模型(folder_plugins 废弃) | | 04-17 | 核查完成 → 收敛项 H1- | 工作区选择器暴露面核查(P1/P2 边界判定) | | 04-18 | ✅ 已实施并在 admin/ | 目录选择器收敛为仅见自有目录(v3 定稿实测,含 admin) | | 04-19 | 🔄 批次 1 因改走 bun | 方案与代码全面审查(代码 10 项 + 文档 8 项) | | 04-20 | 方案 A + handoff | 崩溃自愈:指数退避 + 熔断 + 观测(含 live 实测) | | 04-21 | 根因已定位并修复(nginx | guest「卡顿」排查(根因=nginx proxy_buffering 已修) | | 04-22 | 已上线 | 域名迁移到 alotbuy.com(含 4 个踩坑与回滚) | | 04-23 | 修复已编译(CI ✅),待重 | 实例内 AI 能力与权限限制核查(合成根补 /bin 修复) | | 04-24 | 已实施并上线 | 实例侧 401 自动恢复(freshAuthUrl 302 带新 token) | | 04-25 | 已修复并上线(服务已重启 | 实例崩溃循环修复 + not_running 兜底 | | 04-26 | 清单建立 | dsh 升级耦合点与回归清单(官方包零改动) | | 04-27 | ❓ | MCN 工作台插件平台化评估(3 处 P0 必改) | | 04-28 | ✅ | 用户数据清理三件套(ws-cleanup / session-gc / purge-trash) | | 04-29 | ✅ 已实施并端到端验证 | 官方白名单插件来源(awesome-dsh-plugin,仅预构建可导入) | | 04-30 | ✅ 已实施并 live 验证 | 编排器孤儿实例清理(spawn 前清 stale scope) | | 04-31 | ✅ 已实施并视觉验证 | 插件管理页双 Tab + 说明为主视觉 | | 04-32 | 🔍 核查完成,P0 待决策 | mcntimo 会话取证与沙箱 P0 核查 | | 04-33 | ✅ 已实施(commit 见 | 实例权限默认档位改为完全权限(env 开关) | | 04-34 | ✅ 已实施(commit | 功能插件启用探活 + 逐插件隔离 | | 04-35 | ✅ 已修复(commit | ws-cleanup 误删平台 bundle 包修复 | | 04-36 | ✅ 已实施(commit | 「功能插件」分区铺给普通用户 + 新用户自动铺 | | 04-37a | 🔍 取证完成 | guest 会话取证与平台缺陷清单(P0-1 档位/P0-2 零技能) | | 04-37b | ✅ 已实施(commit | 功能插件分区 v0.2:官方 token + i18n + 交互升级 | | 04-38a | 🔍 核查完成 | 实例软件安装共享 / 网络与安全边界核查(S1-S3 缺口) | | 04-38b | ✅ 已实施(`99de8c5 | 术语统一「业务插件」→「功能插件」 | | 04-39 | ✅ 已落地 | 实例可见面收窄(/etc 白名单)+ 封宿主访问(H5) | | 04-40 | ✅ | 共享技能层挂载修复(补 bwrap --ro-bind) | | 04-41 | ✅ | 技能上传安全加固(symlink/zip bomb)+ 用户技能启停 | | 04-42 | ✅ 已修复 | 实例共享 Python 运行时 + 会话取证复核(修 /etc/alternatives) | | 04-43 | ✅ | root 污染用户工作区 → 属主自愈 | | 04-44 | ✅ | 基础运行时版本冻结(PYTHONNOUSERSITE + USERBASE) | | 04-45 | ✅ | 存量会话「新开会话」提示(选提示不选迁移) | | 04-46 | ✅ | 实例共享工具 jq / ripgrep / ffmpeg | | 04-47 | ✅ | admin「运行环境」管理页(含版本漂移告警) | | — | ⚠️ | 编号 48 未使用(跳号;不影响检索,勿补占)|

| 04-49 | ✅ 已落地 | 实例回收后首次访问的反馈与自愈(wake.html 过渡页) | | 04-50 | ❓ | 会话过期自愈注入脚本(已被 04-51 在传输层取代,保留兜底) | | 04-51 | 已落地并实测验证 | 实例侧 401 透明重放(含 SSE 自动重连) | | 04-52 | 已落地并端到端验证 | 新用户实例无法启动(picker 三处连锁缺陷) | | 04-53 | 🔄 第一批已修复 | 文档质量审查与精简(含 37/38 编号冲突立项) | | 04-54 | ✅ 已实施(两批):第一批 | 文档信息架构优化(BRIEF 现状卡 + 机读清单) | | 04-55 | 🔍 取证完成 | guest 最新会话取证与优化项(档位会话级播种) | | 04-56 | ✅ 已实施并端到端验证(co | 实例助手:我的文件 / 能力清单 / 档位提示 + 文件下载端点 | | 04-57 | ✅ 已实施并验证(服务器已生 | 设置面板「用户管理」入口 + 全员安装 | | 04-58 | ✅ 已实施并验证(服务器已生 | 实例内存优化与配额下调(512M→384M + 编译缓存) | | 04-59 | ✅ 已实施并验证(服务器已生 | 重连反馈:实例启动中的加载动画 | | 04-60 | ✅ 已实施并验证(服务器已生 | 设置面板分区改名:功能插件 → 功能管理 | | 04-61 | ✅ 已实施并验证(服务器已生 | 插件管理页:官方插件列表加高 + 页面底部留白 200px | | 04-62 | ✅ 已实施并验证(服务器已生 | 插件目录:缓存状态可见化 + 「重新拉取目录」按钮 | | — | ⚠️ | 编号 63 未使用(跳号;该号只出现在当日工作日志的「事故 63」里,无档案,勿补占)|

| 04-64 | admin 侧已实施 | 接入 AnySearch 搜索 provider(admin 侧已实施;待端到端确认 → 铺普通用户) | | 04-65 | ✅ 已部署并生效(服务器 | 功能插件启停与 web provider 配置联动(**已部署生效**:服务器lib/00:13 构建 → **00:15:23 重启即载入**,08:02 再载入;§7.3 第 3 条「anysearch 覆写 | | 04-66 | ✅ 已实现、已验证、已部署 | 业务插件 P0 误报 → admin 显式信任(fail-closed + 逐条回显 + 留痕) | | 04-67 | ✅ 已完成并部署 | 「功能管理」section 按 UI 规范重做 v0.2.4 | | 04-68 | ✅ 全部完成并验证 | 候选池启停的 root 属主污染根治(setpriv 降权 + 属主自愈 + 清存量) | | 04-69 | ✅ 已完成(2026-09- | 并发治理落地(文档库 commit 常态化 + 服务器侧操作锁 + 权限统一 + 代码库留路标) | | 04-70 | ✅ 已止损 | **anysearch 插件与 dsh 0.1.2-rc.1 不兼容 → 实例崩溃循环**(已止损;**待决:能力保留/下架**) | | 04-71 | ✅ 已落地并部署(2026- | **插件兼容性预检**:导入/上传即判定(判据 A semver 依赖范围 + 判据 B 运行时导出符号;已部署8d19e89) | | 04-72 | ✅ 已完成并部署(2026- | **实例被回收/关闭后,回到页面自动唤醒并重建连接**(不再需要手动刷新;b23e386) | | 04-73 | ✅ 已实现并单点验证 | **让锁真正拦得住人**:措辞修正(guard/交接单)+ **PreToolUse 强制钩子**(无锁拒写;⚠️ 待 /hooks审核启用) | | 04-74 | ✅ 已落地并实测验证(配置 | **实例内存治理**:V8 老生代上限 **256→160 MiB**(走平台预留的DSH_INSTANCE_NODE_OPTIONS,**零代码改动**)+ 采样脚本加**阈值告警**(85% × 连续 3 次 | | 04-75 | 📋 标准已立 | **插件评估新增两维度**(接档案 71):**托管友好性** H1–H4(**向浏览器交付绝对 URL = 阻断**;硬编码 loopback / 自建监听 = 警告)+ **资源成本**(加载 rss 增量,>3 | | 04-76 | ✅ 代码改造 + 组件级验证 | **dsh-univer-office 平台适配改造**(**档案 75 首个落地样本**):gateway 加 **unix socket** 传输(UNIVER_DSH_GATEWAY_SOCKET,**不设则完 | | 04-77 | ✅ 已落地并验证(服务器 | 回到页面自检 + 就地恢复(恢复过程可见化):判据从「进程在不在跑」改为「页面能不能连上实例」(新增实例侧探针 GET /,2.5 秒超时;404/405 → 降级回旧判据,绝不误报)+ | | 04-78 | ✅ 已部署并验证(2026- | 崩溃熔断:冷却期 + 告警(修档案 77 §八 遗留 1):熔断态改为跨轮存活(不再被 resetCrashState() 清空)+指数冷却(10 min × 2^(n-1),封顶 6 h), | | 04-79 | ✅ 已修复并部署 | 插件启停的两处平台缺陷(2026-09-13 发现,P0 未修):① 隔离定位循环 uninstall 缺 await → unhandled rejection 把整个 orches | | 04-80 | 📋 评估中 | 架构与功能优化评估(保留功能前提下的重构方向)+ 去平台痕迹:不推倒重来 —— 平台本体就是要保留的功能;今天几次事故根因全是「层层补丁叠加」(模板转义把注入脚本写崩 ×2、配额与插件集合脱钩致 | | 04-81 | 🚧 执行中(R0 已完成 | ① 定下一套命名**:对外叫「工作台」、内部统一前缀 dshs(替换 dshs); | | 04-82 | 🚧 代码完成、产物已出 | ① R2 的 R5 权限影响评估已在档案 81 §9.2 出齐并获批(扩大点=实例内出现可操作的管理入口 ⇒ 仅 admin 可见 + 只读 + 写操作回跳)。⚠️ 本档内部 16 份重复(1 | | 04-83 | ✅ 已完成并上线验证 | ① 查实:登录页用的是 design.css —— 一套深色 OS-desktop 体系**,与 06-工作台UI规范(强制基线、冲突时以它为准)全面冲突; | | 04-84 | ❓ | 实例内存配额口径统一(消灭「388 MiB」误报) | | 04-85 | ✅ 已上线并端到端验证(后端 | ① 原先平台是「统一 KEY」——resolveApiKey() 显式忽略入参 userId,不管谁 spawn 都注入 admin 那一把;② 本轮改为两层:用户自己的 key 优先,没 | | 04-86 | ✅ 已上线并端到端验证(后端 | ① 平台所有服务/文件 API 都是 request.user.id 语义(desktop.ts 头注释原文 "one user can never address another user's file | | 04-87 | ✅ 已上线并端到端验证(后端 | 平台自建「模型设置」(官方「设置 → 模型」页在平台环境必然报错** ⇒ 弃用它):① 官方「模型」分区对全角色(含 admin)隐藏 —— 判据是浏览器页面的 loopback 判定(真实域 | | 04-88 | ✅ 已修复并验证(源仓 c | **内置 dsh 安装路径按序探测(修 P1 静默失效)**:平台**三处**把内置 dsh 目录写死成 /usr/local/lib/node_modules/@deepseek-ai/dsh—— 而npm | | — | 🔍 | 档案 82–86 尚未登记进本表(本轮发现;属别人 lane 故未代加):82 R2 管理面就地化|83 登录注册页对齐|84 内存配额口径统一|85 模型密钥开放给用户自配|86 admin 跨用户实例管理 + 两处改名。待收口会话补 |

| — | 🧪 | 04-调整方案/poc/portal-entry/:portal-entry 插件源码(v0.5.1)|

| 06 | 🔄 | 前端 UI 强制基线:Token/布局/组件/交互/9 条已知坑 |

| 07 | ✅ | 实例 UI 分区登记表:settings.section 的 id/order/label → 提供者 → 源码 → 可改性 + 定位套路(含"中文文案要同时搜 UTF-8 与 \uXXXX") |

| 04-89 | 🔄 进行中(L2 机制级已验 | 对话内文件预览:采纳官方推荐库现成插件 @softspark/dsh-file-preview(65 KB,包住官方 openWorkspacePath 接管"点文件"手势;兼容预检 ok、已启用、L5 | | 04-103 | 📋 | 客户端安装 + 覆盖网络互联 · 可行性评估(规划态 · 未实施):判定 ✅ 可行,且现有架构已给出约 80% 形状(soft 档实例=裸子进程 ⇒ 无需 root;Worker 拨出式反向隧道 ⇒ 节点本来就不需要公网 IP);缺口 4 条(客户端运行时落点 · 节点身份 · 信任模型反转 · 分发与版本矩阵);形态三档已按用户口径收窄为单机自用(B 档);6 步落地、每步可单独回滚。⚠️ 真正硬阻塞点修正 = 平台调用层(Windows 下裸名 spawn ENOENT / .cmd EINVAL),非 dsh 运行时 | | 04-104 | 📋 | 覆盖网络 · 全球架构复盘(规划态 · 未实施):五层架构(控制面 / 会合 / 骨干·中继 / 数据面 / 观测)+ 12 条必须内建特性 + 10 类风暴类型学 + 流量组织五原则 + 流量预算表 + 7 步落地顺序。🔑 三句结论:控制面与数据面彻底分离 · 失败不要变成重试(退避+抖动+判死) · 放大点必须前置治理。🟢 范围声明:只做技术实现,跨境数据合规由使用者自负(⛔ 不再作前置条件或上抛项) | | 04-105 | 📋 | 覆盖网络 · 骨干层方案(规划态 · 未实施):多中心骨干(≤10–20 成员、全互联;每节点只连 1–2 个骨干)+ 选择性加入。三条硬约束:接入 / 成员 / 可见三分离 · 骨干资格只能控制面签发(否则出现第二权威源、骨干沦为公网跳板) · 骨干不得被默认征用(命中 R5)。⚠️ §7 唯一待拍板 = 骨干服务范围(A 只服务自己名下设备 / B 服务全网;倾向 A→B 渐进) | | 04-106 | 📋 | 覆盖网络 · 百台规模推演 v2(规划态 · 纯文字推演):⚠️ 含前提级纠错(v1 作废)—— 用户纠正「单机用也要互联」;错因 = 把「租户维度收窄」误当成「网络维度收窄」。100 台异构画像:L1 10 / L2 30 / L3 需中继 40–55 ⇒ 中继按 45% 设计、55% 留余量(⛔ 不用同构假设的 15%);必须补 443/TCP 兜底(否则企业/校园网整类进不来);L1 自动升格为中继候选;仍不建全互联(4,950 vs 100) | | 04-107 | 📋 | 覆盖网络 · 千台全场景推演(规划态 · 纯文字推演):1000 台异构 × 11 场景 + 流量预算总表 + 瓶颈排序。🔥 第一瓶颈 = presence(1000 人大房 ≈ 16,700 次/秒,是其消息扇出的 16 倍;普通房合计 8,200/s);💰 最大成本杠杆 = 游戏服放 L1(放家宽 ⇒ 中继 600 Mbps 常驻、峰值 1.2–2.0 Gbps;放公网 IP ⇒ 0);游戏的真正门槛是 jitter < 20 ms 而非带宽;agent 为本方案独有放大源 | | 04-108 | 📋 | 覆盖网络 · 游戏专项(MMORPG 2D/2.5D · MUD · 传奇类)(规划态 · 未实施):⚠️ 判定由「不合适」修正为「最匹配」(该类游戏天生服务端权威 + tick 驱动 + AOI 九宫格 + 分区/分线;每玩家仅数 KB/s~数十 KB/s、几百 ms 无感)—— 原"不合适"只针对 3D 大世界强实时竞技。⭐ 核心简化:玩家之间不需要互联 ⇒ 中继容量按「服数」算、不按「玩家数」算。含 12 条设计细节 + 参考方案(Evennia/Skynet/Pomelo/Nakama…)+ 8 条反模式 | | 04-109 | 📋 | 覆盖网络 · 调研:游戏网络特征与单房间群聊上限(规划态 · 全网调研稿,数值均标来源):游戏侧每玩家 2–20 KB/s、同步 5–20 Hz、jitter > 20 ms 即 desync;群聊侧 Telegram 20 万 / WhatsApp 2,048 / Discord 单频道 100K+;🔑 上限不是「人数」而是「扇出预算」,且 presence(N²) 比消息更早爆(1000 人房 ≈16,700/s)。本方案实际上限 = min(扇出预算, presence 预算, agent 预算) | | 04-110 | 📋 | 覆盖网络 · 答疑(群聊+agent / 备份 / 迁移提速 / 传输保密)(规划态 · 未实施):① 群聊=应用层的事(覆盖网络只给「可达」);agent 四条硬约束(⛔ 禁止 agent 直接触发 agent);② ✅ 备份主层用对象存储,覆盖网络只当搬运通道与第三副本(P2P 副本无 SLA、可误删,不适合当存档);③ 迁移 7 条按收益排,最大一招 = 只搬不可再生(46.3 MB vs 2.9 GiB ≈ 64×);④ 保密 = 三层加密 + 元数据保护,最大缺口 = 身份(共享令牌 → 一机一钥) | | 04-111 | 📋 | 覆盖网络 · 补遗与参考方案(规划态 · 未实施):互联游戏 ✅ 但由游戏形态决定(锁步/回合/异步最友好;FPS/MOBA 64+ ❌ 不合适,P2P 无法反作弊);补遗 24 条(身份与账户 / 寻址与名字 / 接入与可见性 / 自检与选路 / 流量与公平 / 移动端弱网 / 升级版本自愈 / 可观测)+ 10 个能力域的参考方案 + 反模式 12 条。⭐ 最划算的架构复用:群聊房间与游戏对局是同一个模型(一次投资,群聊 + 游戏 + 协作 + 看板共用) | | 04-112 | 📋 | 覆盖网络 · 九大瓶颈落地方案(规划态 · 未实施):把 107 的九大瓶颈逐个给成可执行做法 + 验收判据(含 Slack / SCCM·BranchCache·Delivery Optimization 官方照抄点)。🎯 只做三件 = presence 改造 + 游戏服放 L1 + 块级内容寻址分发(覆盖最大三个瓶颈,且都不需要改传输协议)。🔑 分水岭:必须做「块级」内容寻址,⛔ 别做「包级」(包级 = 版本一发所有 peer 源失效 ⇒ 正是全量重拉风暴的成因) | | — | 🗄 | archive/dsh-improvement-plan-20260909-full.md:拆分前 19 章 |

| — | ✅ | skills/dsh-change-workflow/SKILL.md:六阶段 + 红线 R1-R11(工作副本在本机 .workbuddy/skills/)|

| — | ✅ | skills/dsh-decision-method/SKILL.md:改造决策方法论(用户有效决策 U1-U12 / AI 有效决策 A1-A13 / 反例 X1-X8 + 确认最优解十问 + 交互 UI 专项清单)(工作副本在本机 .workbuddy/skills/)|

| — | ✅ | skills/dsh-feature-first/SKILL.md:功能优先协作协议(用户只提功能卡 4 问 · AI 自主决策 9 类白名单 · 只上抛功能语义分叉与红线门禁 · 报障闭环前置 · 交付回执格式)(工作副本在本机 .workbuddy/skills/)|

| — | ✅ | skills/dsh-opensource-release/SKILL.md:开源导出与版本迭代(五条硬规则 R-O1–R-O5 · 脱敏映射表唯一口径 · 分层授权与其 MIT 法律前提 · 迭代发布 SOP · 验证六件套 · 8 条实测坑)(工作副本在本机 .workbuddy/skills/)|

| — | ✅ | skills/dsh-plugin-diagnose/SKILL.md:业务插件故障诊断(三层归属 host / client / 网关·原生绑定 · 三把尺子 inject 差集 / glibc 直测 / 产物插探针 · 8 条实测坑)(工作副本在本机 .workbuddy/skills/)|

| — | ✅ | skills/dsh-env-bootstrap/SKILL.md:环境引导 / 迁移(常驻规则快照 references/常驻规则-快照.md + scripts/resident-rules.py 的 --check / --inject / --env-check / --snapshot;权威方向单向:CODEBUDDY.md 为权威、快照为副本)(工作副本在本机 .workbuddy/skills/)| | — | ✅ | skills/dsh-auto-handoff-chain/SKILL.md:多棒自动接力编排法(规划棒 ↔ 执行棒交替 · 一次性 automation 链条 · 六件套 prompt 骨架 · 登记门禁 · 五条实测防护 · 断链 / 双开 / once 不转完成态 等 · scripts/chain_report.py 复跑)(工作副本在本机 .workbuddy/skills/)|

待办与优先级不在本文件维护(单一来源):未规划的见 03-路线图与待办.md §二;已规划待执行的见 交接单/README.md §一。


三、变化与更新状态:怎么追

| 手段 | 怎么做 |

|---|---|

| 双端对账 | bash scripts/docs-sync-check.sh(一致/不一致/仅本地/仅服务器 + 退出码 0=全绿)|

| 机读清单 | python3 scripts/docs-manifest.py → docs-manifest.json(状态/日期/tier/引用数)|

| 质量审计 | python3 scripts/docs-audit.py(9 类判定;编号冲突与悬空引用会返回非 0)|

| 代码侧变更 | git -C /opt/dshs log --oneline(平台代码是 git 仓库,比文档更细)|

| 文档侧变更 | 本目录是 git 仓库:git log --oneline;服务器镜像无 .git,靠 scp 单向推送 |

| 时间线溯源 | 03-路线图 §已完成 + 各档案 commit 列 + archive/ 全文 |


四、归档与工作区残留

| 文件 | 位置 | 状态 |

|---|---|---|

| 已完成的交接单(规划/执行分离的单子)| archive/交接单-已完成/ | T02(文档库收尾:37/38 编号消歧 + INDEX 瘦身 28,809→7,468)|T03(7 插件整合投放:dsh-plugin-mcn-suite 上传候选池 + guest 启用成功,实例重启探活通过)|T04(并发治理:commit 常态化 + 服务器侧操作锁 /opt/dsh/state/.op-lock + 权限 700/600 + 代码库 ebe8075→06e63ac)|T05(插件兼容性预检:04-71 落地 + 档案 66 源码回填)— 均 2026-09-12 完成|T06(平台自建「模型设置」:04-87 落地 + 插件 0.3.11 铺发 + 迁移 V6 + 官方模型分区全角色隐藏;验收四件事全绿,顺手修角色补丁整文件覆盖与陈旧断言两颗雷)— 2026-09-13 完成|T07(内置 dsh 安装路径按序探测:04-88 落地;三处写死路径(第 3 处是提出方漏的)改为按序探测 + 降级留痕;测试服 test106 三种姿势验证通过)— 2026-09-14 完成 |

| 三份工作区草案(插件管理面 / VoxEMW×2)| archive/工作区草案/ | 已归档防丢;插件草案 v5 被档案 16 取代 |

| scripts/docs-{sync-check.sh,audit.py,manifest.py} | 本库 scripts/ | 随库分发,在用 |

| .workbuddy/memory/YYYY-MM-DD.md | 工作区 .workbuddy/ | 过程日志,不入库 |

| *.bak* | 各处 | 已纳入 .gitignore;服务器侧勿生成结尾带点号的备份名(Windows 落不了地)|


五、仓库与同步拓扑

| 资产 | 路径 | 仓库 / 状态 |

|---|---|---|

| 平台代码 | 服务器 /opt/dshs(git,上游 fork,浅克隆)| [email protected]:maogeigei/dsh_shenxian.git — master @ ebe8075 ✅ 已推送 |

| 改造文档 | 本机 dsh-server-docs/(本目录即工作树)↔ 服务器 /opt/dsh/docs(镜像,root 600)| [email protected]:maogeigei/dsh_shenxian_doc.git — main @ 43e4ae9 ✅ 已推送 |

| 上游基线 | 上游骨架仓库(已按要求不再具名)(123 提交,HEAD 04bc832)| 本机 remote 名 upstream |

| 本机代码副本 | D:\github\dsh_shenxian | 上述代码仓库的 clone |

约定

  1. 推送只能从本机执行:服务器无 Gitea 凭据 → 服务器改码后 git bundle(区间)→ 本机 fetch/merge → push。

  2. 同步链路(文档):编辑本目录 → docs-sync-check.sh 对账 → scp 到 /opt/dsh/docs(chmod 600,README 保持 644)→ 复跑脚本确认全绿。

  3. 权限:服务器 docs 树 root 600(README 644);/opt/dsh 为 drwx------ root(用户 uid 读不到,需先暂存到用户 home 再安装)。

  4. 行尾:本机 git 的 system 级 core.autocrlf=true 会把工作树写成 CRLF,而仓库 blob 是 LF → scp 单文件前看 file 输出;脚本类必须 LF(否则 shebang 带 \r 执行失败)。


六、新增文档的落位规则(约定)

  1. 功能类改造 → 04-调整方案/ 新建档案,编号递增(复跑取号,勿写死:ls 04-调整方案/ | sort -n | tail -1;63 为空号,勿补占);模板:目标 → 改动 → 验证 → 红线遵守 → 回滚。

  2. 规范 / 基线类(跨页面长期生效)→ 根级编号文档(01~06),不入 04-调整方案/;入库时登记 §一 场景表 + §二 清单。

  3. 排障记录 → 追加 02-运维手册.md 排障小节。

  4. 状态 / 待办变化 → 更新 03-路线图与待办.md 与本文件 §二。

  5. 保留原章节编号,便于与 archive/ 完整版对查。

  6. 同步:见 §五.2(对账 → scp → chmod → 复跑)。

  7. UI 规范优先:涉及前端改动先读 06-工作台UI规范.md;沉淀了新"为什么"要回写源侧并回拷 06。

  8. 规划/执行分离的任务单 → 交接单/(约定见其 README.md):规划会话产出单子,执行会话按单开工(不读规划会话上下文);完成后 git mv 入 archive/交接单-已完成/ 并在 §四 加行。

| 04-90 | 🔄 进行中(阶段 1 通过 | > 目标版本 = 0.1.5-rc.1(npm latest;用户材料里插件 peer 也是 ^0.1.5-rc.1,三方自洽)。 | | 04-91 | ✅ 已上线(busines | **「模型设置」页复刻官方交互**:换行根因是 **4 列表格 auto 列宽** ⇒ 改官方**卡片行**(两侧 nowrap)+「新增」改**两步式**(两个虚线按钮 → 卡片主字段只剩「API 密钥」);顺修「由 | | 04-92 | ✅ 已上线 | **官方推荐插件列表按 dsh 版本过滤**:官方目录**不带** dsh 版本字段 ⇒ 平台侧逐包查 npm 声明与**平台真实版本**比;默认隐藏「仅兼容更旧版本」,「需更高版本」橙色标注。⚠️ 两处静默降级已钉住: | | 04-93 | ✅ 已上线(平台后端已构建重 | **兼容判定收口**:① 「单测长期红」真相 = **服务器源码落后于 git**(本机 48/0 全绿)⇒ 同步即修;② 伞包 @deepseek-ai/dsh收口到dsh-install.platformP | | 04-94 | ✅ 已上线(平台后端已 n | **实例内存口径定案**(用户裁定 base 448 / max 1024):两侧常量(编排器 instanceMemMb()↔ 插件客户端MEM_)收成一份事实 = **BASE 448 / MIN 44 | | 04-95 | ✅ 已上线 | **HTML 外壳缓存治理 —— 修「Failed to load plugins」根因 + 流程违规自审**:页面报 client-modules: bundle script …&rev=… failed to l | | 04-96 | ✅ 已上线(平台后端已重建重 | 实例内存与插件开关解耦 → 「基础 MIN、最多浮动到 MAX」(用户两段原话:先「不要受插件开关影响,只受 min 和 max 值影响」,再「改成基础 min 最大可以浮动到 max」):平台侧 = cgrou | | 04-97 | ✅ 已上线 | /plugins/ 合并脚本补 ETag + 304 短路(承 96 之后查出的真缺陷,与当日故障无关):官方 dsh-client-modules 把全部客户端插件拼成一条 11 MB 脚本(| | 04-98 | ✅ 已上线 | **治本:陈旧dsh-auth-cookie 回写清理**:dsh 每次实例(重)启动都换dsh-auth-<随机>的 cookie 名,平台此前只在转发时丢弃旧的、**从不回写浏览器** ⇒ jar | | 04-99 | 🔄 已落地待生效(钩子已装 | > 1. **根因 = 拦截点错位**(不是"AI 不听话"):既有「提问闸门」hook 的 matcher 是^AskUserQuestion$,只能拦**工具调用**;实测本工作区宿主日志 tool=AskU | | 04-100 | ✅ 已实施并投放(busi | **结论**:在**既有「功能管理」section 内新增「我的技能」分组**(**不新开 section**),用户在同一页看完并管理「功能插件 + 我的技能」两类功能;技能行支持 上传 / 启用 / 停用 / 删除, | | 04-101 | ✅ 已实施并投放 | **结论**:分区改名「**能力管理**」(label 级),页内改为 **tab 分页**(功能插件 / 我的技能,各自独立操作),插件卡片的**中文用途描述从 1 行放宽到 3 行**(.bp-plugDesc) | | 04-102 | ✅ 已实施并投放 | **结论**:语言切换搬进 **@dsh-local/portal-entry的「用户设置」分区**(iduser-settings`,order 103), |