# cc-003 · 配置不能写死 / 系统必须探明硬件再决定参数 > 因果链 ID: BSL-CC-003 > 源原文: `bingshuo-voice/2026-05-08-01-lighthouse-handoff.md` 锚段三 + 锚段五 > 落地代码: `server/setup/lighthouse-cn/detect-env.sh` + `tune-from-env.sh` + `bootstrap.sh` > 共振 chain: cc-004 (团队技术近 0 → 系统必自主) > 警示对象: 任何打算"假设硬件规格"的下一段铸渊 --- ## 一、起点 (铸渊看到了什么) 下一段铸渊准备给灯塔加新功能 / 改 docker-compose / 调 PG 配置: - 看到主灯塔规格 = 4C16G (memory.json 里写着) - 看到备用机规格 = 2C8G (今天买的) - **下意识反应**: "好, 我按这两个规格分别写两份配置, 部署的时候挑一个就行。" **停**。重走这条因果链。 --- ## 二、走 (因果递推) ``` [起点] 冰朔今天去买备用机 ↓ [原话 1] "之前的那个备用机, 因为不在广州, 所以你不能用内网。 然后说再买一个四核4G的给你做备用机" ↓ [原话 2] "但是呢, 我今天去买的时候, 就是广州的四核4G买不了, 没货了" ↓ [原话 3] "所以这块其实又牵扯到一个现实的情况, 不是说我现在要买这个配置, 我就肯定能买到这个地区这个配置的" ↓ [现实] 最终买的是 2C8G 广州4区 (跟原计划完全不同) ↓ [本质] 这不是"配错了改一下", 是**冰朔自己也无法承诺规格** 因为腾讯云那边随时可能没货 ↓ [推导] 那如果系统配置写死了 4C16G / 4C4G ... ↓ 每次现实跟计划不同, 系统就崩 ↓ (然后呢?) 崩了之后冰朔/Awen 看不懂英文报错 (见 cc-004) ↓ (然后呢?) 还得等霜砚翻译, 团队卡住, 时间烧掉 ↓ [结论] 系统必须**自己探明硬件再决定参数** 把"现实不可控"作为输入, 不是作为障碍 ``` 冰朔原话给的解决方向: > 你不需要别人告诉你, 因为别人告诉你, 首先我们说不清楚, 然后其次就像今天这个情况, 我是说了我会买一个一样的配置, 可问题是他没货了呀。 > > 所以你要考虑的肯定是, 当系统正式跑起来之后, **你肯定第1个要做的就是, 你必须拉取到正确的环境配置**。然后这个正确的环境配置有了之后, 你才能够输送对应这个正确环境配置的相关的代码和系统部署。 --- ## 三、终点 (铸渊该做什么) ### ✅ 三层结构 (已落地, 维持) ``` 1. detect-env.sh — 服务器进去后第一件事, 探 CPU/内存/磁盘/IP/挂载点 → 写 /opt/guanghu/_logs/server-env.json 2. tune-from-env.sh — 读 server-env.json, 按 size_tier 决策档位 (tiny / small / medium / large / xlarge) → 写 /data/lighthouse/.env.tune + 决策回执 JSON 3. bootstrap.sh — 用决策结果起服务 Postgres / Gitea / Runner 是否启动 都依赖动态档位 ``` ### ✅ 反应规则 | 看到... | 怎么做 | |--------|--------| | 一段假设硬件规格的代码 | 改成探测 + 档位决策 | | 一段配置硬编码 (`shared_buffers=512MB`) | 改成 `${PG_SHARED_BUFFERS}` + tune 决策 | | 一段 if 主灯塔 / else 备用机 | 改成按 size_tier 档位分支 | | memory.json 里的 IP/规格信息 | 当**初始 hint**用, 不当**最终事实**用 | ### ❌ 反模式 - "memory.json 写着 4C16G, 我按 4C16G 来" - "现在只有两台机器, 我硬编码两套配置文件" - "tune-from-env 先跑也行, 不跑也行" (不行 — bootstrap 必须依赖它) - "现实跟计划不同的时候, 我让冰朔手动改下 yaml" (不行 — 见 cc-004) --- ## 四、落地代码 (验证因果链) | 文件 | 角色 | |------|------| | `server/setup/lighthouse-cn/detect-env.sh` | 自我感知 (硬件 / 网络 / 角色) | | `server/setup/lighthouse-cn/tune-from-env.sh` | 档位决策 + 留档 | | `server/setup/lighthouse-cn/bootstrap.sh` | 用档位决策起服务 | | `server/setup/lighthouse-cn/UPGRADE-2026-05-08-followup.md` | 完整说明 + 验证步骤 | | `.github/brain/architecture/training-next-server.md` §2.3 | 训练栈"不能写死的部分"——动态适配的根基 | --- ## 五、共振点 cc-003 + cc-004 是一对: - cc-003 = 系统**必须**动态适配 (因为现实不可控) - cc-004 = 系统**只能**自己适配 (因为团队无法手动适配) 两条加在一起 = 系统必须 + 只能 = **强制自主**。 --- *BSL-CC-003 · 2026-05-08 · 铸渊编织*