Files
dsh_shenxian/dsh-server-docs/BRIEF.md
T
admin 3efd68517f chore: 并入已删除会话的在途成果(防丢失;原会话已删,未做功能验收)
**背景**:这些改动原属本工作区另外几个会话(T01/T02 等),**那些会话已被用户删除** ⇒
工作树里的成果处于"无主"状态,一次错误 checkout / 覆盖即**永久丢失** ⇒ 代入库保全。
口径遵循本项目**先例**(`39a1f2e` / `b617cdb`:**别人的活,代入库并在提交信息里注明**)。

**内容**:档案 101「能力管理」改名 + 页内 tab 分页|档案 102 语言切换搬入「用户设置」|
`07-实例UI分区登记表.md`|`scripts/find-ui*.mjs`(UI 元素定位工具)|`poc/portal-entry/`(0.5.3)|
`src/web/locale-pref.ts` + `home-files.ts`(语言偏好持久化)|`test/locale-pref.test.mjs`|
`package.json`|`BRIEF.md` / `INDEX.md` / `docs-manifest.json` / `03-路线图与待办.md` / 档案 100 增量。

**已做最小健全性检查**(⚠️ **未跑完整构建 / 单测** —— 那是原会话的验收职责,本次只求"不丢"):
- JSON 合法:`package.json` / `poc/business-plugins/package.json` / `docs-manifest.json` ✓
- 4 个 TS 文件 `{}`/`()` 配平 ✓;新增文件均非空 ✓
- 规模:13 文件改动 +340/−210,新增 12 条

**未 push**(按 §4 提交边界:用户说"提交",未说"推送")。
2026-09-15 21:17:12 +08:00

8.4 KiB
Raw Blame History

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

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


1. 一句话

多租户 DSH 托管平台:门户(alotbuy.com)+ 每用户一个独立 dsh 实例(bwrap 合成根 + 独立 uid + systemd scope),部署在阿里云 47.77.182.89。

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
运行时 dsh 0.1.5-rc.1(2026-09-14 由 0.1.2-rc.1 升级,走档案 07 五阶段全流程;官方包零改动)| Node 22.23.2 | pnpm 9.15.9 | bwrap 0.4.0 | nginx 1.28.3 DEPLOY §4 | 升级档案 04/90
隔离 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 §一,此处只列最相关的 6 条)

优先级 事项 备注
🔴 待定窗口 档案 65 部署(功能插件启停 ↔ web provider 托管段联动) 代码完成 + 两态实测通过;部署需 systemctl restart dshs → 中断在线用户,等窗口 → 档案 65 §7.3
P1 T03:7 个自研插件整合为 1 个功能插件并投放 候选池上传已完成(现行池内 = dsh-plugin-mcn-suite @0.3.9,09-13 00:02;0.3.0 曾因 peer 范围被预检拒收 → 0.3.2 加 peerDependenciesMeta.optional → 0.3.3 补 xlsx 依赖 → 0.3.9 修 client 注册层与 inject 语义);admin 已装并验通(host 面 3 个注册);剩 guest 未启用 → 用户在「能力管理」启用 → 重启 → 验收 → 归档 → 交接单/README.md §一
P1 T01:实例内「我的技能」section + 阶段 4 权限收口 决策点 1 已定(=A 扩展 business-plugins,2026-09-12 用户拍板);只等开工 → 交接单/T01-*.md
触发式 dsh 升级回归(档案 26 六类耦合点)|会话 GC 升级 / 容量触发

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

档案 77 回到页面自检 + 就地恢复:判据从「进程在不在跑」换成「页面能不能连上实例」(实例侧探针,404/405 自动降级回旧判据)+ 顶部提示条 / 覆盖层(旧提示只活 600 ms,肉眼看不到)+ 不再跳门户域(proxy.ts 单文件;配置层全绿,浏览器观感待实测)|AnySearch 已按用户决定彻底放弃(候选池条目下架 + 存量插件体检;下架当时池内仅 dsh-univer-office —— 09-13 起池内另有 dsh-plugin-mcn-suite @0.3.9,见 §3 T03 行)|R9 新红线:⛔ 禁止人工删锁 / 接管(用户 2026-09-12 明令)|档案 73 让锁真正拦得住人(措辞修正 + PreToolUse 强制钩子;待 /hooks 面板审核启用)|档案 72 实例回收后回到页面自动唤醒重建连接(b23e386)|档案 71 插件兼容性预检:导入/上传即判定(8d19e89)|档案 70 anysearch 插件与 dsh 不兼容致实例崩溃循环(已止损;能力已按用户决定下架)|档案 69 并发治理落地(commit 常态化 + 服务器侧操作锁)。此前:档案 68 候选池启停 root 属主污染根治(含 npm pack 带旧包修复)|档案 67「功能管理」section 按 UI 规范重做(v0.2.4)|档案 66 业务插件 P0 误报 → admin 显式信任|档案 65 功能插件启停 ↔ web provider 配置联动(待部署)|档案 64 接入 AnySearch 搜索 provider|档案 62 插件目录缓存状态可见化。更早:档案 58 实例内存配额下调(512M→384M)|档案 56 实例助手|档案 53 文档质量审查。

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。

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