chore(仓库对齐): 文档库结构治理 + IM/插件线落地
build / build-and-scan (push) Waiting to run

文档库:目录改为编号制(01-规范/02-架构设计/03-数据库/04-调整方案/
05-交接单/06-ops/07-scripts/08-skills/09-archive),顶层散文件归入 01-规范/;
INDEX.md 与 docs-manifest.json 重刷(档案 146 篇);旧目录名引用全量对齐。

IM 线:src/im/**(SDK / hub / store / presence / ws / gateway-token)、
src/web/routes/im.ts、src/db/plugin-data/**、src/supervisor/plugin-assembly.ts
及对应 test/**。

插件线:poc/{im-agent-bridge,im-connection-gateway,im-conversation-tabs,
business-plugins-im,carbon-mcp-probe}、src/web/routes/{sessions,overlay-device}.ts、
src/net/relay/{device-grant,instance-credential}.ts。

仓库卫生:清出 40 个历史误入库 / 已改名文件(34 个交接单归档 + 6 个旧结构,
本地均有副本);dsh-server-docs/.gitignore 补 tmp/;交接单不入库(政策)。
This commit is contained in:
admin committed 2026-09-24 07:25:16 +08:00
1 parent 3d8f50e366
commit e6207aa691
239 files changed
+34477 -14633

No files matched your search

+6
View File
@@ -57,9 +57,15 @@ cfg.installDir // 代码安装根
| `DSHS_DATA_ROOT` | 数据根(每用户 home/ws、平台库) | `~/.dshs` |
| `DSH_PLATFORM_DIR` | 平台私有目录的父目录 | `<dataRoot>/platform` |
| `DSH_INSTALL_DIR` | 代码安装根(`lib/`、`scripts/`) | 模块相对路径推导 |
| `DSHS_BUNDLED_PLUGIN_DIR` | 共享只读插件包库(节点一份;每节点需自建 0755 root:root) | `<dataRoot>/bundled-plugins` |
| `DSHS_BASE_DOMAIN` | 对外域名 | 空(子域功能关闭) |
| `DSHS_COOKIE_DOMAIN` | 会话 cookie 域 | 空(host-only) |
| `DSHS_OVERLAY_BOOTSTRAP_SEEDS` | 覆盖网络引导种子,逗号分隔 | 空(功能关闭) |
| `DSHS_OVERLAY_SIGNER_KEY_FILE` | 在线签名者私钥(签发 per-device grant) | `/etc/dshs/overlay-signer-key.pem` |
| `DSHS_RELAY_KEYS_FILE` | relay HMAC 密钥表(控制面写、relay 热加载) | `/etc/dshs/relay-keys.json` |
| `DESKTOP_GRANT_TTL_HOURS` | 设备 grant 租约(小时) | 24 |
| `DESKTOP_GRANT_MAX_DEVICES` | 每用户设备数上限 | 10 |
| `DSHS_INSTANCE_GRANT_RENEW_MS` | 服务器实例设备凭据的定时续签间隔(毫秒;`0` = 关) | 300000 |
| `DSHS_CLUSTER_HOST_ID` | 本机在 `dsh_hosts.id` 里的标识 | 空 |
| `DSHS_CLUSTER_AGENT_TOKEN` | Worker 注册凭据 | 空 |
| `DSHS_TUNNEL_TARGET` | 反向隧道目标 | 空(隧道关闭) |
+29
View File
@@ -17,6 +17,11 @@ DSH_PLATFORM_DIR=/opt/dsh
# --- 代码安装根(lib/ 与 scripts/ 所在)----------------------------------
DSH_INSTALL_DIR=/opt/dshs
# --- 共享只读插件包库(节点一份;默认 <DSHS_DATA_ROOT>/bundled-plugins)----
# 每个节点各自建目录:`install -d -m 0755 -o root -g root <该路径>`。
# 实例内以 `--ro-bind-try` 只读挂入;留空 = 关闭该功能。
DSHS_BUNDLED_PLUGIN_DIR=/var/lib/dshs/bundled-plugins
# --- 对外域名 -------------------------------------------------------------
DSHS_BASE_DOMAIN=example.com
DSHS_COOKIE_DOMAIN=.example.com
@@ -35,6 +40,30 @@ DSHS_CLUSTER_WORKER_DATA_ROOT=/var/lib/dshs
# --- 覆盖网络引导种子(逗号分隔;留空 = 功能关闭)------------------------
DSHS_OVERLAY_BOOTSTRAP_SEEDS=
# --- 覆盖网络 · 设备登录接入(序㊻ S0)------------------------------------
# 在线签名者私钥(签发 per-device grant 用)。⚠️ 只读、0600;留空 = 取代码内缺省路径。
DSHS_OVERLAY_SIGNER_KEY_FILE=
# relay HMAC 密钥表(控制面签发设备时写入;relay 侧**热加载**本文件)。
# ⚠️ 与 relay 单元的 DSHS_RELAY_KEYS_FILE **必须是同一个文件**,否则签了也不生效。
DSHS_RELAY_KEYS_FILE=
# 设备 grant 租约(小时)与每用户设备上限。
DESKTOP_GRANT_TTL_HOURS=24
DESKTOP_GRANT_MAX_DEVICES=10
# --- 会话并存的每用户上限(序㊼ S1 / E3)----------------------------------
# 同一账号**同时**可持有的平台会话数上限;超限淘汰 `created_at` 最小者并落
# `audit_log: session_evicted`。留空 = 取代码内中性默认 20。
# ⚠️ 它只约束**平台会话**;设备 grant 配额是上面的 DESKTOP_GRANT_MAX_DEVICES。
DSHS_MAX_SESSIONS_PER_USER=20
# --- 服务器实例的设备凭据(序㊼ S4/S5)------------------------------------
# 实例(role=main)设备凭据的**定时续签**扫描间隔(毫秒)。控制面按此间隔扫
# `overlay_devices`(kind='instance' 且 status='active'),租约剩余不足 TTL 一半即重签。
# 留空 = 取代码内中性默认 300000(5 分钟);0 = 关闭定时续签(只剩"实例启动时检查")。
# ⚠️ 实例凭据的**文件**落在实例 home(`.overlay-device.json`),平台不留私钥副本。
# ⚠️ 与浏览器会话的 TTL(DSHS_SESSION_TTL)无关:实例常驻靠**设备租约**续签。
DSHS_INSTANCE_GRANT_RENEW_MS=300000
# --- 本机地址(出网护栏脚本用;填自己的公网/内网地址)--------------------
DSH_HOST_PUBLIC_IP=<server-public-ip>
DSH_HOST_LAN_IP=<host-lan-ip>