Files
dsh_shenxian/dsh-server-docs/BRIEF.md
T

9.8 KiB
Raw Blame History

BRIEF — 现状卡(AI / 人 首读这一份)

用途:30 秒掌握「现在是什么样、正在做什么、该读哪一篇」。只写结论与指针,细节的单一来源见每行括注。 防漂移:本文件是人工维护的摘要层,不复制细节;scripts/docs-audit.py 会检查本文件引用的档案号是否存在、域名/阈值等关键串是否与来源文件一致。 最后人工核对:2026-09-16 10:5x


1. 一句话

多租户 DSH 托管平台:门户(alotbuy.com)+ 每用户一个独立 dsh 实例(bwrap 合成根 + 独立 uid + systemd scope)。 自 2026-09-15 起为集群形态:47.77.182.89 = Manager(cluster 模式,兼本地 Worker w-47)|106 = Worker w-106(经 SSH 反向隧道)。

2. 现行事实(结论层 · 改任何东西前先对齐这里)

项 现行值 单一来源
入口 门户 https://alotbuy.com;用户实例 https://<用户名>.alotbuy.com;旧域 dsh.alotbuy.com → 301 档案 22 / DEPLOY §1
服务 systemd dshs(127.0.0.1:3080)+ 宝塔 nginx 反代(CF 回源 443) DEPLOY §1
集群拓扑 47 = Manager(deployMode=cluster;控制面库 = 47 上 PG13 /var/lib/dshs-pg,单元 dshs-pg,127.0.0.1:15432)+ 本地 Worker w-47(19100)|106 = Worker w-106(19000,经 SSH 反向隧道落在 Manager loopback,DSHS_TUNNEL_TARGET)|存量用户锚 w-47、新用户按容量落 w-106(粘性优先,epoch fencing 防双写)。⛔ 47 兼作 Worker 是有意设计,勿当待修项。回滚 = rm -f /etc/systemd/system/dshs.service.d/cluster.conf && systemctl daemon-reload && systemctl restart dshs 交接单/T08 §10 / 集群化改造方案_Manager-Worker_20260914.md
运行时 dsh 0.1.5-rc.1(2026-09-14 由 0.1.2-rc.1 升级,走档案 07 五阶段全流程;官方包零改动)| Node 22.23.2 | pnpm 9.15.9 | nginx 1.28.3 | ⚠️ bwrap 逐机不同:47 = 0.4.0 / 106 = 0.11.0(--perms 属 0.5+ ⇒ 47 上 Unknown option ⇒ 沙箱起不来 = 所有实例全挂;要权限用 --tmpfs) DEPLOY §4 | 升级档案 04/90 | 交接单/T08 §10
隔离 ISOLATION_MODE=account;每用户 uid + bwrap 合成根(/usr /lib64 /etc 只读 + 私有 /tmp + --unshare-pid)+ scope(内存 = 基础 448 MiB、最多浮动到 1024 MiB(cgroup MemoryHigh=MIN 软限 + MemoryMax=MAX 硬限;与插件开关无关,2026-09-14,档案 96);CPU 150% / TasksMax 128;V8 堆另须 --max-old-space-size=256);loopback 127.0.0.0/8 已封 档案 16 / 39 / 58 / 94 / 96
实例页右下角 📁 我的文件(浏览工作区 + 下载 AI 产出)| 🧭 能力(权威能力清单)| 老会话档位过时会有顶部提示条 档案 56
回到实例页面 页面可见即自检:顶部提示条「正在检查工作区连接…」→ 若判定页面与实例已脱节(探针 2.5 s 无 200)则亮覆盖层并就地恢复(enter 带新 token 原地跳回、保留路径),不跳门户域、无需手动刷新;导航路径(刷新/首次进入)仍走 wake.html 过渡页 档案 77(承 72)
插件导入 / 上传 即做兼容性预检(semver 依赖范围 + 运行时导出符号比对),不兼容当场拒收,不再等实例崩 档案 71
普通用户可见 实例内:功能插件 section、目录选择器(根 = 自有 ws);技能 API /api/skills/mine 档案 36 / 41
admin 管理面 门户:服务 / 密钥 / 用户 / 技能 / 插件管理 + 运行环境;会话内 portal-entry 卡片一键整页跳门户 portal.html / 档案 47
清理阈值 ws ≥ 2048 MB → 清 T1 平台产物 + T2 超 90 天顶层脚本;sessions ≥ 1024 MB → 清超 365 天;回收站 30 天 档案 28 / 02 §C.7
定时任务 每小时 :05 用量快照 → 04:10 工作区清理 → 04:20 会话回收 → 04:40 回收站清空 → 每周日 05:00 全量备份 DEPLOY §6.5
证书 alotbuy.com + *.alotbuy.com,DNS-01 via /etc/cloudflare.ini,必须 --dns-cloudflare-propagation-seconds 60 档案 22 / 02 §C.1
红线 不自动升级 dsh;不改官方 dsh 主程序与缓存;client bundle 禁 exports.default;服务器 docs 保持 root 600;未明确要求不 commit/push;⛔ 禁止人工删锁 / 接管(R9) README §红线

3. 当前待办(单一来源 = 03-路线图与待办.md + 已规划的单子见 交接单/README.md §一)

T01–T08 全部完成归档;在途单 = 无。以下只列最相关的几条。

优先级 事项 备注
🔴 第一件实事 会合 / 中继从 Manager 拆成可独立部署的组件 现状 = 绑在 Manager 上的单中心 SSH 反向隧道;是所有后续(多区域 / 多中心 / 骨干层)的前置。只读取证 + 改造方案已产出(工作区根 会合中继拆分_取证与改造方案_20260916.md,S0–S4 分步 + 每步验收/回滚)⇒ 下一步 = 从 S0(抽接口,零行为变更) 开工
🟡 待排期 T08 收尾项:join-worker.sh 一键装机 | 集中日志 / metrics | smoke-domain 定性 | drop-in 里 PG 口令收权(现 root 可读)| 106 上的旧控制面单元待清理 03-路线图 §二 🟡 / 交接单/T08 §16.5
🟡 待排期 106 的 provisioner 未铺 ⇒ 新用户落到 106 后无人建号(uid 须由 Manager 下发;47 上那套读 SQLite 的脚本在集群下失效) 工作区根 跨节点迁移与节点自举_完整流程方案_20260916.md
🟡 待排期 覆盖网络线后续:MEMORY.md 精简(已超体量上限、每轮都被注入)| 之后按档案 112「只做三件事」(presence + 游戏服放 L1 + 块级内容寻址)开工 03-路线图 §二
⏳ 待拍板 骨干节点的服务范围 = A 只服务自己名下设备 / B 服务全网(倾向 A→B 渐进) 档案 105 §七
⏳ 待拍板 D6(集群化最后一问,不阻塞) 集群化改造方案_Manager-Worker_20260914.md
❓ 待复核 档案 65(功能插件启停 ↔ web provider 托管段联动)是否已随 09-13~09-15 各轮上线 —— 本节原行停在 09-12「等窗口」,未确认 档案 65 §7.3

4. 最近动作(详见 03-路线图 §已完成)

09-16 覆盖网络 / 客户端化线:10 份规划转正式档案 103–112(4e3a1a4)+ 会合/中继拆分的只读取证与改造方案产出(工作区根 会合中继拆分_取证与改造方案_20260916.md;零代码、零服务器改动)|guest 用户迁至 w-106(epoch 4)|106 补齐实例运行能力(/var/lib/dshs/users 权限 711 —— 原 drwx------ 会致实例必崩)+ ffmpeg/ffprobe。 09-15 T08 集群化 + 生产整体切换:47 = Manager、106 = Worker,控制面库换成 47 上的 PG13;guest 迁移;实例内存配额与插件开关解耦(档案 96);文档库并入代码仓(R4 选 a);开源导出 K8s 残留清零。此前:档案 100/101 实例内「我的技能」+ 分区改名 + 页内 tab(business-plugins 0.3.22)|档案 102 语言切换搬入「用户设置」(0.3.23 + portal-entry 0.5.5)|档案 93 兼容收口|档案 88 内置 dsh 安装路径探测|档案 77 回到页面自检 + 就地恢复|档案 73 让锁真正拦得住人|档案 72 实例回收后自动唤醒重建连接|档案 71 插件兼容性预检|档案 69 并发治理(commit 常态化 + 服务器侧操作锁)。

5. 高频问题 → 读哪一篇

想做的事 读
理解平台架构 / 为什么这样隔离 01-规划与架构 + 档案 16 / 39
域名、证书、Cloudflare 档案 22 + 02 §C.1
实例起不来 / 崩溃循环 / 401 档案 20 / 52 / 51 + 02 §C.4
用户看不到目录 / 工作区选择 档案 18 / 34
功能插件的投放与启停 档案 16 / 36 / 37
技能共享 / 上传 / 启停 档案 10 / 11 / 41
磁盘用量与清理策略 档案 28 + 02 §C.7
备份与恢复 02 §C.8 + DEPLOY
准备升级 dsh 档案 26(六类耦合点回归清单)
重建 / 交接部署 DEPLOY-本部署.md

6. AI 读取顺序(4 步,避免读全库 ≈30 万 tokens)

  1. 本文件(BRIEF)→ 2. INDEX.md 场景表(定位篇目)→ 3. 目标档案头部(日期/状态/结论)→ 4. 需要时再读全文。
  • 默认不读:archive/(历史全文)、scripts/ ops/(工具与配置)、*.bak*、04-调整方案/poc/(源码,按需)。
  • 过滤工具:python3 scripts/docs-manifest.py → 产出 docs-manifest.json(每份文档的 状态 / 日期 / tier / 被引用次数 / 字符数),可用于先筛后读。
  • 改文档后:python3 scripts/docs-audit.py(编号冲突 / 悬空引用 / 重复 / 体量;退出码非 0 即需处理)。

7. 文档层约定

单一来源:清单与状态 = INDEX.md §二|待办 = 03-路线图|部署事实 = DEPLOY-本部署.md|术语以档案 38b 为准|域名以 alotbuy.com 为准。详见 README §阅读约定 与档案 53 / 54。 归档编号:至 112(其中 103–112 = 覆盖网络 / 客户端化 10 份规划);编号 63 是空号,勿补占。

本机工作区(2026-09-13 起):E:\ProgramData\AI技能\aliyun-dsh-server(文档库工作树 = dsh-server-docs/);代码仓仍为 D:\github\dsh_shenxian。历史文档里出现的 D:\AI技能\... 一律是迁移前旧值,勿照抄执行。