109 lines
9.0 KiB
Markdown
109 lines
9.0 KiB
Markdown
# 保留 / 移除清单 · 脱敏映射表 · 保留未动(改口径先改这里)
|
||||
|
|
|
|||
|
|
> **归属**:技能 `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/ 静态页
|
|||
|
|
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-spawner` `k8s-user-fs` `leader` `reconcile` `tcp-bridge` `web/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/` | **已投放插件**(目录选择器) |
|
|||
|
|
| `scripts/ensure-anysearch-admin.cjs`<br>`scripts/ensure-anysearch-pool.mjs` | 特定插件投放脚本 |
|
|||
|
|
| `scripts/ensure-biz-plugins.cjs`<br>`scripts/ensure-portal-entry.cjs`<br>`scripts/install-workspace-picker.sh`<br>`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>` | `scripts/install-egress-guard.sh`(部署时按实际服务器填) |
|
|||
|
|
| `<INSTALL_DIR>` / `<baseDomain>` | 仅注释,可留 |
|
|||
|
|
|
|||
|
|
> `install.sh` 里的 `dsh.example.com` / `you@example.com` 是文档示例,符合惯例,**不改**。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 保留未动(刻意)
|
|||
|
|
|
|||
|
|
- **183 处「档案 NN」内部编号引用**(仅代码注释):属内部档案号,**不是**本机/服务器信息。已列入「可选后续」;要清需用户点头(做一次纯注释替换)。
|
|||
|
|
- 上游 `docs/` 内容虽为 MIT 可带走,但 R-O4「不带任何文档」⇒ 不带。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|