127 lines
5.0 KiB
Markdown
127 lines
5.0 KiB
Markdown
|
|
# 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 · 铸渊编织*
|