文档库:目录改为编号制(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/;交接单不入库(政策)。
9.1 KiB
保留 / 移除清单 · 脱敏映射表 · 保留未动(改口径先改这里)
归属:技能
dsh-opensource-release的详情档(按需读,不是每次都要读)。 本档覆盖:保留 / 移除清单 · 保留 · 移除 · 本就不在代码仓(别去找) · 特许保留项 · 待决项 · 脱敏映射表 · 保留未动(刻意)(原行 L382–L480)。 主文件 / 判据与流程主干 =../SKILL.md(§0.5 事故清单 · §0 事实 · §1 硬规则 R-O1–R-O17 · §1.5 用户当场纠正的硬口径 · §5 授权结构 · §6 发布 SOP 主干 · §7 验证八件套 · §相关)。 来源:2026-09-22「技能重组线」把../SKILL.md的 L382–L480 段逐行原样下沉到本文件,未改一字。 跨档引用:正文里的「§N / 见 §8 坑 N / 见下表」等编号,用../SKILL.md末节「详情索引」的原章节列定位。 维护:本文件与../SKILL.md的指针行成对;改内容时同时核对主文件的指针描述是否仍准确。
2. 保留 / 移除清单(delta · 改口径先改这里)
保留
assets/ 注入脚本(2:inject/recovery.js · inject/assist.js)—— ⚠️ **proxy.ts 的 loadInject 按包根解析 ⇒ 缺了平台启动即抛错**,必须随包
src/ 控制面 TS 源码(**已剔除 6 个 K8s 后端模块**,见下)
web/ 静态页
07-scripts/ 运维与冒烟脚本(**已剔除 5 个 K8s / 已排除插件相关脚本**)
test/ 单测(**已剔除 2 个 K8s 模块的测试**)
.github/workflows/build.yml
package.json package-lock.json tsconfig.json cordis.patch.yml
Dockerfile .dockerignore .gitignore(重建)
mksess.cjs ensure-role-profile-patch.cjs(临时会话 / profile 补丁)
🔴 K8s 相关一律不带(2026-09-14 用户定稿,2026-09-15 升级为长期策略): ⛔ 不再保留
deploy/(11 个 K8s 清单)·poc/(4 个 K8s 可行性验证件)·Dockerfile.dsh(每用户 Pod 镜像)· 6 个 K8s 后端模块(k8s-spawnerk8s-user-fsleaderreconciletcp-bridgeweb/file-service)· 2 个 K8s 测试 ·smoke-file-service.mjs· CI 里的 dsh 镜像步骤 ·config.ts的 K8s 专属配置项 · 以及全部 k8s 注释与语义描述。 ✅ 保留src/db/pg.ts(Postgres = 共享 HA,不是 K8s 专属)。 📌 权威清单与处置办法:_K8s排除台账.md(本工作根下),含「下次取新版本怎么做」的步骤与判读表; 扫描器_k8s_scan.py(--source扫源仓 / 不给参数扫导出物);判定标准 = 构建blocking hits: 0。
移除
| 路径 | 理由 |
|---|---|
poc/business-plugins/ |
已投放插件(功能管理分区插件,含全部 .tgz) |
poc/workspace-scoped-picker/ |
已投放插件(目录选择器) |
07-scripts/ensure-anysearch-admin.cjs07-scripts/ensure-anysearch-pool.mjs |
特定插件投放脚本 |
07-scripts/ensure-biz-plugins.cjs07-scripts/ensure-portal-entry.cjs07-scripts/install-workspace-picker.sh07-scripts/provision-new-users.sh |
插件 / 本平台专属投放与开通脚本 |
docs/(7 篇) |
R-O4:项目文档 |
STANDARD.md · poc/README.md · poc/*/README.md |
R-O4:文档 |
.workbuddy/ · lib/ · node_modules/ · data/ |
本地状态与构建产物 |
.git |
⛔ 历史里含全部内部信息 ⇒ 必须全新仓库 |
全部 *.tgz |
构建产物 |
本就不在代码仓(别去找)
MCN 工作台(dsh-plugin-mcn-suite)、douyin-accounts、vision-router、各 skill 本体(含 MCN 相关 skill) 都不在 dsh_shenxian 里,它们在其他仓库 / 实例 profile。收尾探针会复核 mcn / douyin / 抖音 / vision-router 0 命中。
⚠️ 特许保留项(不要在脱敏里动它)
| 项 | 处置 | 依据 |
|---|---|---|
dsh-univer-office(插件名 + 实例侧 unix-socket 适配) |
保留原名、保留代码:src/supervisor/orchestrator.ts 的 DSH_INSTANCE_UNIVER_SOCKET / UNIVER_DSH_GATEWAY_SOCKET 段不得删;src/web/routes/whitelist.ts 注释里点名 dsh-univer-office;探针 LEAK_PROBES 里不得出现 dsh-univer / UNIVER |
用户 2026-09-13:「univer 可以保留这个插件 专门讲讲如何把开源插件改造为可在多租户平台运行」 |
| ↳ 为什么值得保留 | 它是 PLUGIN-PORTING.md(插件移植指南)的唯一实证样本:一个「静态预检通过但在托管平台完全不可用」的真实案例,含两层根因、3 条设计决策、2 个平台侧机制坑 |
同上 |
待决项(用户没拍板前维持现状)
poc/business-plugins+poc/workspace-scoped-picker:现按严格口径移除(「所有已投放的插件」)。若判定它们属「平台自带界面」而非投放插件 → 加回,并同步改本节 + 探针。
3. 脱敏映射表(唯一口径,改只改这里 + 脚本里的 GLOBAL)
| 类别 | 原值 | 替换为 | 命中 |
|---|---|---|---|
| 平台域名 | dsh.alotbuy.com / *.ai1net.com / ai1net |
<baseDomain> |
3 文件 |
| ↳ 特例 | web/wake.html 的 safeNext() 正则 |
改成运行时从 location.hostname 推导注册域(split('.') 去最左一段),彻底去硬编码 |
— |
| 服务器公网 IP | 47.77.182.89 |
<SERVER_PUBLIC_IP> |
1 |
| 宿主内网 IP | 172.18.16.212 |
<HOST_LAN_IP> |
1 |
| 服务器代码路径 | /opt/dshs |
<INSTALL_DIR> |
8 |
| ↳ 特例 | require('/opt/dshs/node_modules/better-sqlite3') |
require('better-sqlite3')(等价且更规范) |
— |
| 服务器平台目录 | /opt/dsh/{state,artifacts,backups} |
/var/lib/dsh-web-platform/{state,artifacts,backups}(与上游文档一致的数据根) |
6 |
| 内部档案号 | 全角/ASCII 括号里的 档案 NN(含 档案 81 · R1、(档案 20)、backoff (档案 20)) |
整块删(号无对外意义);残渣(空括号 () / ().)由后续规则清掉 |
183 |
| 悬空文档引用 | docs/k8s.md §5.2 / docs/blueprint.md / docs/domain-config.md |
映射到 README 真实小节(README「部署形态」 / README「架构」 / README「配置」);§号 一并去掉 |
42 |
| ↳ 实现位置 | 以上两项由 _build_export.py 的 REGEX_RULES 做(不是 GLOBAL);⛔ 清理规则只准碰全角标点,唯一放开的两条 ASCII 规则:① (档案 NN)(模式里必须有档案号 ⇒ 不会误伤 foo())② ().+句末标点((): void 后面是 : ⇒ 不命中)。每次改 REGEX_RULES 必须重建 + tsc 复核(第一次踩过:ASCII 括号进字符类把 foo() 删了,tsc 报 Invalid character) |
— | |
| ↳ tar 相对写法 | opt/dsh*(无前导斜杠) |
var/lib/dsh-web-platform* |
— |
| 账号 / 私有仓库 | maogeigei、[email protected]:...dsh_shenxian_doc.git |
<YOUR_GITHUB_ACCOUNT>;文档库引用随 README 重写整体移除 |
1 |
| 云厂商标识 | 「阿里云内网 DNS」「BT-Panel 58888/8765」「sshd 22/32022」 | 「云厂商内网 DNS」「面板」「sshd」 | 1 |
| 插件具体名 | anysearch / @anysearch/anysearch-dsh / @liustack/modlens / mcn-workstation |
「该插件」/「某第三方插件」→ 再整行重写成中性描述 | 6 |
| ↳ 例外(保留原名) | dsh-univer-office 与其实例侧适配(DSH_INSTANCE_UNIVER_SOCKET / UNIVER_DSH_GATEWAY_SOCKET) |
不脱敏、不删代码(用户 2026-09-13 明确「可以保留这个插件」);它同时是 PLUGIN-PORTING.md 的实证样本 ⇒ 其 env 名、注释、DELETE_LINES 条目都不得再动 |
3 |
| 项目改名 | dshs 全部自指标识 |
dsh-web-platform(规则顺序:dshs.db → dshs.db → /var/lib/dshs → DSHS_ → dshs) |
149 |
| ↳ 必须保留 | 上游骨架仓库(已按要求不再具名)、上游 \dshs`` |
原样不动(出处/致谢);LICENSE(AGPL-3.0 官方全文)逐字节不动 |
— |
发布前必须替换的占位符(写在台账里):
| 占位符 | 出现位置 |
|---|---|
<YOUR_GITHUB_ACCOUNT> |
README.md、package.json → repository |
<CONTACT_EMAIL> |
原为 README.md 授权章节 / LICENSE,授权章节与 LICENSE 已于 2026-09-13 移除,该占位符随之消失(见 §5) |
<COPYRIGHT_HOLDER> |
LICENSE |
<SERVER_PUBLIC_IP> / <HOST_LAN_IP> |
07-scripts/install-egress-guard.sh(部署时按实际服务器填) |
<INSTALL_DIR> / <baseDomain> |
仅注释,可留 |
install.sh里的dsh.example.com/[email protected]是文档示例,符合惯例,不改。
4. 保留未动(刻意)
- 183 处「档案 NN」内部编号引用(仅代码注释):属内部档案号,不是本机/服务器信息。已列入「可选后续」;要清需用户点头(做一次纯注释替换)。
- 上游
docs/内容虽为 MIT 可带走,但 R-O4「不带任何文档」⇒ 不带。