# 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 · 铸渊编织*
