用户令逐字:「E:/ProgramData/.workbuddy/skills 提交仓库是指的这里」—— 即本目录就是仓库(2026-10-07 已在本目录建仓,见当日日志 §22),本轮把余下未纳管的 9 个技能一并提交。 本次入库(9 个技能,46 个文件): 1、`AI HOT` 2、`draw-ui` 3、`dsh-diagnose` 4、`dsh-knowledge` 5、`dsh-local-env` 6、`dsh-opensource-release` 7、`dsh-workflow` 8、`oil-motion` 9、`skills-security-check` 提交前核对: · **凭据类扫描**(`*.env` / `*token*` / `*.key` / `*secret*` / `*.pem`)⇒ **零命中** ✓; · 体积合计约 20 MB(`draw-ui` 12M + `oil-motion` 6.5M 是大头,形态为配图/素材 —— 仓库 `.gitignore` 里明写「`assets/*.png` 是内容不是产物」⇒ 属刻意入库); · 运行产物仍按既定规则排除(`__pycache__` / `logs/` / `tmp/` / `.venv/` / `*.egg-info` / `uv.lock` / `.workbuddy/`)。
9.0 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/ 静态页
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/ |
已投放插件(目录选择器) |
scripts/ensure-anysearch-admin.cjsscripts/ensure-anysearch-pool.mjs |
特定插件投放脚本 |
scripts/ensure-biz-plugins.cjsscripts/ensure-portal-entry.cjsscripts/install-workspace-picker.shscripts/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/[email protected]是文档示例,符合惯例,不改。
4. 保留未动(刻意)
- 183 处「档案 NN」内部编号引用(仅代码注释):属内部档案号,不是本机/服务器信息。已列入「可选后续」;要清需用户点头(做一次纯注释替换)。
- 上游
docs/内容虽为 MIT 可带走,但 R-O4「不带任何文档」⇒ 不带。