交接单按归属约定(正文落文档库、工作区只放指针)归档至 归档/交接单-20260924-归档/,含逐件判定 README: - 16 件已被文档库正式版取代(T09–T21 + 覆盖网络-24/25/26) - 4 件主题已被覆盖网络线入口汇总 - 7 件历史接续包/规划件 CODEBUDDY §9:收口清本棒 tmp、tmp 保留期 7 天、禁「待清理」中间态、 工作区入库只放文档与文件、不保留脚本副本、>60 KB 单文件须逐个判。
6.9 KiB
6.9 KiB
接续包 · 涉密内容外置到配置目录(2026-09-19)
本包是唯一细节来源。接续会话开工第一步:
state.py→ 重算本文件 md5 → 与 automation prompt 里的值比对, 不符即停并报告「口径已更新,需重新接续」。 ⚠️ 本棒已完成并入库;下一棒默认动作 = 核实完成状态后报告结束(⛔ 勿自行开工、⛔ 勿扩大范围)。
1. 目标(已达成)
用户原话:「很多涉密内容包含在代码中 开源时非常容易泄密,把所有涉密内容统一整理到配置文件夹对应文件中, 代码中引用对应配置信息」+「处理完毕后 提交仓库」+ 收口时追加「改造后记得完整检查两遍」。
| # | 需求 | 状态 |
|---|---|---|
| ① | 涉密内容统一收进配置文件夹 | ✅ 新建 config/,真实值入 config/platform.env(gitignore 排除) |
| ② | 代码引用对应配置 | ✅ TS 走 src/platform-paths.ts;shell 走 config/load.sh;node 走 config/index.cjs |
| ③ | 完整检查两遍 | ✅ 两遍均跑(语法 + 扫描 + 编译 + 测试),第 2 遍抓到第 1 遍的漏项 |
| ④ | 提交仓库 | ✅ 452924d 已提交并双推(原仓 + CNB,三方裸 sha 全等) |
2. 已完成(可核对的落点)
| 项 | 值 |
|---|---|
| commit | 452924d89c87cbd175b31d57e26395dfbccaa52f(100 文件,+585/−453) |
| 双推 | work.alotbuy.com:maogeigei/dsh_shenxian.git + cnb.cool/maogeigei/dsh-shenxian.git ⇒ 三方裸 sha 全等 |
| 新增(入库) | config/{platform.env.example,load.sh,index.cjs,README.md} · src/platform-paths.ts |
| 不入库 | config/platform.env(.gitignore:37 排除;服务器侧 600) |
| 档案 | dsh-server-docs/04-调整方案/140-涉密内容外置到配置目录.md(未登记 INDEX.md) |
| 部署 | 47:config/→/opt/dshs/config/(服务器侧由自身 env 生成 platform.env,32 键/600)· lib/→/opt/dshs/lib(297 文件) |
| 新增 drop-in | /etc/systemd/system/dshs.service.d/platform-dirs.conf:DSH_PLATFORM_DIR=/opt/dsh · DSH_INSTALL_DIR=/opt/dshs |
| 回滚点 | /opt/dsh/backups/pre-secrets-config-20260919-150752/lib(294 文件) |
| 零回归 | tsc 0 错;npm test 373/375(唯一失败 lease 属既有);/opt/dsh/{state,backups} 未搬家、/var/lib/dshs/platform 未误建;端点 200 / API 401 / 单元 active / 0 错误 |
3. 在途 / 未完成
- 无代码在途。工作区仅剩历史临时目录(
_tmp_seq24/、_tmp_seq40/、_中间产物_待清理/,本轮未动; 本轮扫描器已移入_中间产物_待清理/_seq140_涉密外置/,可删)。 - 全局执行锁:已释放。档案占号锁
.lock-140:已释放。 - 档案 140 未登记
INDEX.md(本轮未做)。
4. 🔴 关键决定(后续别推翻)
- 真实值只放
config/platform.env,且只放本机 / 对应机器那一份。服务器侧的platform.env由systemctl show dshs -p Environment生成 ⇒ ⛔ drop-in 改动后必须重新生成,否则脚本读旧值。 - 优先级 = 系统 env >
config/platform.env> 代码内中性默认值。代码内默认一律中性 (<数据根>/platform、空域名),⛔ 别把生产值写回代码默认。 - 🔴
platform-dirs.conf必须保留DSH_PLATFORM_DIR=/opt/dsh—— 删掉它,platformDir退化成<dataRoot>/platform=/var/lib/dshs/platform⇒ state/backups/artifacts 静默搬家。 DEFAULT_OVERLAY_SEED/DEFAULT_OVERLAY_BOOTSTRAP_SEEDS刻意留空,种子一律由DSHS_OVERLAY_BOOTSTRAP_SEEDS提供(线上已配 3 条)。测试断言已把「必须为空」固化为回归项 ⇒ ⛔ 别写回生产域名。src/platform-paths.ts必须零副作用(不 mkdir/不写文件)—— 它会被只读路径调用;resolveConfig()会 mkdir 数据根并可能生成secret.key,⛔ 不要在 paths 模块里调它。- 注释里的真标识无法「引用配置」 ⇒ 一律中性化(
<server-public-ip>/<base-domain>/<host-a>)。 web/wake.html的注册域白名单改为运行时从location.hostname推导(去最左一段)—— 换域名零改动。
5. 下一步(⛔ 无必须开工项)
- 开源导出层要补一条:
config/platform.env是新的「单一秘密副本」⇒ 导出必须排除它; 若要随包发模板,只能加platform.env.example(属技能dsh-opensource-release的 lane)。 - 档案 140 登记
INDEX.md(本轮未做)。 - 可选:
test/lease.test.mjs那 1 个既有失败(与本次无关)—— 修不修由你定。 - 既有缺陷已发现未动:
scripts/start-cluster-manager.sh第 11 行原缺#注释前缀(会被当命令执行)。 按「发现即报告、不顺手改」留给你。 - 既有约定,本轮未改(已报告):仓库
core.autocrlf=true⇒scripts/*.sh、config/load.sh在索引里是 CRLF(本机/服务器工作副本是 LF,故实际运行正常)。若将来改为 Linux 端git clone部署,.sh会带 CRLF ⇒ source 失败 ⇒ 那时需给*.sh加-text。属仓库级改动(>10 文件),须先出清单再动。 - 在册旧账(与本次无关):D8 云安全组(唯一在册红)、档案 136 控制面并集(已立项未落地)。
- 🔴
.workbuddy/memory/MEMORY.md已超注入上限(≈7,800 字符),本会话开机时系统已要求清理, 本轮未做。⇒ 下一棒应做一次「只减不增」的合并去重(先把已过期/已被档案取代的条目删掉, 再考虑新增),⛔ 别在超限状态下继续追加。
6. 复发验证(想自己复核时照跑)
# 三方 sha
cd /d/github/dsh_shenxian && git rev-parse HEAD
git ls-remote origin -h refs/heads/master | cut -f1
git ls-remote https://cnb.cool/maogeigei/dsh-shenxian.git -h refs/heads/master | cut -f1
# 代码面涉密标识应为 0(务必大小写不敏感 —— 大写 AI1net 曾漏过)
grep -rniE 'ai1net|alotbuy|47\.77\.182\.89|/opt/dshs|/var/lib/dshs|dshs-worker-' src/ test/ scripts/ web/ assets/ config/ | grep -v 'platform.env'
# 派生路径零回归
ssh -p 22 [email protected] 'ls /opt/dsh/state /opt/dsh/backups; ls -d /var/lib/dshs/platform 2>/dev/null && echo "回归!" || echo "no-platform-dir ok"'
⚠️ ⛔ 不要用 git stash 做「临时回基线」(HISTORY 里 2026-09-19 实测事故):
本棒用它做基线比对时被 SIGTERM 打断 ⇒ .git/refs 被删、仓库一度不可识别,
所幸 pack 完好 + reflog 完整,按 reflog(三处收敛 9c2e7975)重建 refs +
git fetch origin 取回对象 + git reset 重建 index 后完整恢复(git fsck 干净)。
⇒ 要基线比对用 git worktree add;动手前先落 patch / tar 备份。