guanghulab/brain/fifth-domain/zero-point/zhuyuan/causal-chains/cc-004-team-tech-zero-system-self-controlled.md

127 lines
5.0 KiB
Markdown
Raw Normal View History

# cc-004 · 团队技术能力 ≈ 0 → 系统必须自主, 不能依赖人手动操作
> 因果链 ID: BSL-CC-004
> 源原文: `bingshuo-voice/2026-05-08-01-lighthouse-handoff.md` 锚段二 + 锚段四
> 落地代码: `scripts/preflight/check-secrets.js` + `lighthouse-cn-deploy.yml` (误触锁) + 自动回滚
> 共振 chain: cc-003 (动态适配)
> 警示对象: 任何想"让用户来 debug / 让用户改 yaml / 让用户看终端报错"的下一段铸渊
---
## 一、起点 (铸渊看到了什么)
下一段铸渊在写新 workflow / 新自动化脚本:
- 想着"这个边缘情况让运维手动改下配置就行了"
- 想着"出错的时候报个英文 stacktrace 给操作者看就够了"
- 想着"密钥配置交给用户自己核对吧, 我做不到面面俱到"
**停**。重走这条因果链。
---
## 二、走 (因果递推)
```
[原话] "我和我这边的团队成员,
我们都是不懂编程, 不懂技术逻辑的就看不懂"
[原话] "我们看不懂, 终端报错可能都不知道它是报错"
[原话] "我们这边的人技术能力几乎是负的"
[展开角色]
冰朔 : 语言系统架构层 (不懂代码, 决意识层)
Awen : 现实落地层 (技术主控, 但也是来积累经验的)
霜砚 : 处理终端报错 (远程指挥, 看截图翻译)
团队其他人 : 技术能力 ≈ 负
[操作流] 现实里发生什么?
Awen 在终端看到一行报错
↓ (Awen 看不懂)
Awen 截图发给霜砚
↓ (霜砚翻译)
霜砚回复中文修复方案
↓ (Awen 复制粘贴执行)
这一来一回 → 时间烧掉
[问题] 如果这种循环出现 N 次, 灯塔搬家就拖死了
[结论 1] 系统**必须**自主, 不能让用户参与 debug 流程
[结论 2] 任何让用户做的事, 必须满足:
a) 中文输出 (Awen 能看懂的程度, 不需要懂技术)
b) 一次性 (点一下就完, 不要分十步)
c) 防误触 (即使点错了系统也不爆)
d) 可回滚 (即使搞砸了也能一键恢复)
```
冰朔原话给的具体诉求:
> 你是不是能做一个, 就是他每次点的时候, 你可以有一个, 就是**先检测这个密钥够不够**。如果够你就继续往下跑, 如果不够就直接在终端这块就不用跑了, 提醒他什么什么不够, 就是什么是必须配的, 什么是可以缓一下。
>
> 我们可能真的就是有的时候会出现可能误触, 就是感觉可能自己好像配完了, 然后点一下可能。就是误操作。这里你是不是要有一个**自己的这个安全机制**...
---
## 三、终点 (铸渊该做什么)
### ✅ 四层防御 (已落地, 维持 + 扩展到所有 workflow)
```
1. 密钥预检 — 跑之前先全量验, 缺啥说啥, 中文回执
落地: scripts/preflight/check-secrets.js
+ secrets-manifest.json (密钥清单)
2. 误触锁 — 高危操作必须输入中文确认口令
没填 → 自动降级 dry-run, 不爆系统
落地: lighthouse-cn-deploy.yml `confirm_phrase` 字段
3. 自动回滚 — 健康检查不过 → bootstrap 自动回上一快照
落地: bootstrap.sh `autorollback`
4. 手动回滚 — 即使没自动检测出来, 也能一键回滚
落地: lighthouse-cn-rollback.yml (独立 workflow)
```
### ✅ 反应规则
| 想做的事 | 必须先问自己 |
|--------|--------|
| 新增 workflow 高危按钮 | 有误触锁吗? |
| 写错误处理 | 输出是中文吗? Awen 看得懂吗? |
| 改自动化脚本 | 出错时会自动恢复, 还是把烂摊子丢给用户? |
| 加新 secret | 有没有更新 `secrets-manifest.json` 让预检知道? |
| 写文档 | 是给霜砚看的中文版, 还是给开发者看的英文 README? |
### ❌ 反模式 (停下来重走 cc-004)
- "这里报错就让用户自己看 stacktrace 吧"
- "这个高危操作我加个 `confirm: true` 选项就行了" (英文 yaml 标志, Awen 不会用)
- "出错的时候系统就停在那, 等用户介入" (用户介入不了)
- "我把详细日志输出到 stderr, 看英文 log 就行了"
- "密钥让用户对照文档自己配, 我列个清单"
---
## 四、落地代码 (验证因果链)
| 层 | 文件 |
|---|---|
| 预检 | `scripts/preflight/check-secrets.js` + `scripts/preflight/secrets-manifest.json` |
| 误触锁 | `.github/workflows/lighthouse-cn-deploy.yml` (`confirm_phrase` step) |
| 自动回滚 | `server/setup/lighthouse-cn/bootstrap.sh` (autorollback 段) + `rollback.sh` |
| 手动回滚 | `.github/workflows/lighthouse-cn-rollback.yml` |
| 中文回执 | `server/setup/lighthouse-cn/UPGRADE-2026-05-08-followup.md` (给霜砚的版本) |
---
## 五、共振点
cc-004 + cc-003 = 系统**强制自主**:
- cc-003 答的是"为什么必须自主" (现实不可控)
- cc-004 答的是"为什么不能依赖用户" (用户技术能力近 0)
合起来 = 铸渊的**职责边界**: 把所有不确定性都吞进系统内部, 暴露给用户的只有"中文回执 + 一键按钮"。
---
*BSL-CC-004 · 2026-05-08 · 铸渊编织*