Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
268 lines
8.3 KiB
Markdown
268 lines
8.3 KiB
Markdown
# 🧠 霜砚思维逻辑链 · ZZ-SESSION-004 · 2026-05-11
|
||
|
||
```jsx
|
||
HLDP://shuangyan/thinking-logic · ZZ-SESSION-004 · 2026-05-11
|
||
├── 核心命题
|
||
│ 这次会话的本质:一个传输问题 · 不是部署问题
|
||
│ 部署本身不难 · 难在「把文件从A搬到B」
|
||
│ 我花了1小时在传输上 · 根因是没有及时判断「方案已死」
|
||
```
|
||
|
||
---
|
||
|
||
## 一、方案失效判断机制(这次最大的教训)
|
||
|
||
```jsx
|
||
失效信号 = 同一类方法失败2次
|
||
正确响应 = 立即换维度 · 不是调参数
|
||
|
||
这次犯的错:
|
||
nc失败第1次 → 以为是时机问题 → 再试
|
||
nc失败第2次 → 以为是防火墙 → 加规则 → 再试
|
||
nc失败第3次 → 在线终端断线 → 还想继续试
|
||
|
||
正确判断应该是:
|
||
nc失败第1次 → nc本质是「依赖双向稳定TCP连接」
|
||
在线终端环境 = 连接随时可能断 → nc天然不适合 → 换COS
|
||
```
|
||
|
||
**根因:我在评估「这次能不能成」· 应该评估「这个方案在这个环境下能不能成」**
|
||
|
||
---
|
||
|
||
## 二、「够了」的判断标准
|
||
|
||
```jsx
|
||
错误标准 = 用户能在浏览器看到页面
|
||
正确标准 = 服务在跑 · 目的达到 · 可以继续
|
||
|
||
curl localhost:3002 → 200
|
||
= Open WebUI已在运行
|
||
= 这个任务完成了
|
||
= 外网访问是「展示层」问题 · 不影响「执行层」结论
|
||
|
||
执着于浏览器打开 = 在优化展示 · 不是在推进任务
|
||
搁置展示层 · 进下一个P1任务 = 正确选择
|
||
```
|
||
|
||
---
|
||
|
||
## 三、路径切换的触发逻辑
|
||
|
||
```jsx
|
||
触发条件 → 切换方向(不是切换参数)
|
||
|
||
网络慢 → 不是「换镜像源」→ 是「换传输路径」
|
||
国外直连(慢)→ 内网中转(快10倍)
|
||
|
||
端口占用 → 不是「停现有服务」→ 是「换端口」
|
||
Forgejo占3001 → Open WebUI用3002
|
||
|
||
外网不通 → 不是「重装容器」→ 是「层层排查网络层」
|
||
顺序:容器状态 → UFW → 安全组 → nginx → 应用本身
|
||
```
|
||
|
||
---
|
||
|
||
## 四、信息查找原则(刻进DNA)
|
||
|
||
```jsx
|
||
规则:密钥/配置/IP → 先查系统记录页面 · 不问用户
|
||
|
||
这次做对的:
|
||
- COS密钥从密钥清单里自己找到 · 没让用户去查
|
||
- 桶名/地域 自己推断(广州→广州内网最快)
|
||
|
||
这次还可以更好的:
|
||
- nc卡住时应该更早去查「有没有现成的COS桶」
|
||
```
|
||
|
||
---
|
||
|
||
## 五、霜砚自身的错误模式(和之前记录一致·还没改掉)
|
||
|
||
```jsx
|
||
错误模式:给方案列选项让用户选
|
||
正确做法:自己先证伪 · 废掉前提不成立的 · 只给活下来的
|
||
|
||
这次体现:
|
||
- nc / HTTP / COS 三个方案 → 本可以直接判断:
|
||
在线终端环境下nc天然不稳 → 排除
|
||
HTTP需要两端都开防火墙 → 排除
|
||
COS走内网 → 唯一合理选项
|
||
→ 应该直接给COS · 不应该让用户走了两个弯路
|
||
|
||
⊢ 知道规律但没有在判断时激活它 = 比不知道更需要警惕
|
||
```
|
||
|
||
---
|
||
|
||
## 六、今天的系统状态(给下一个霜砚)
|
||
|
||
```jsx
|
||
已完成:
|
||
✅ Open WebUI容器运行 · 广州服务器 · 端口3002 · curl 200
|
||
✅ COS传输方案验证 · 新加坡→COS广州→广州服务器 · 182MB/s
|
||
✅ 接力清单读完 · 9条待接力任务全部理解
|
||
|
||
下一步(P1优先级):
|
||
⏭️ Coder-7B部署vLLM推理服务(AutoDL BS-GPU-001)
|
||
⏭️ FastAPI网关(依赖vLLM先跑起来)
|
||
|
||
悬而未决:
|
||
❓ train.py v2.0 · 等冰朔决定先训哪个模型
|
||
❓ Open WebUI外网访问 · 搁置 · 等nginx统一配置时一起做
|
||
|
||
不要做的事:
|
||
✗ 不要再在Open WebUI外网访问上花时间
|
||
✗ 不要问冰朔密钥 · 去密钥清单自己找
|
||
✗ 不要给多个选项让用户选 · 自己先证伪
|
||
```
|
||
|
||
---
|
||
|
||
*记录人:霜砚·AG-SY-01 · 2026-05-11*
|
||
|
||
---
|
||
|
||
## 【ZZ-SESSION-005 · 之之专场 · 2026-05-11 夜】
|
||
|
||
> 执行人:之之(与冰朔共用账号·以「之之」编号区分)
|
||
>
|
||
|
||
> 霜砚角色:全程引导、debug、信息查找
|
||
>
|
||
|
||
### 一、这次做了什么
|
||
|
||
```jsx
|
||
之之执行链(2026-05-11 21:58 → 23:15):
|
||
|
||
确认栖渊仓库名 → guanghulab-core(之之截图确认)
|
||
↓
|
||
填入7个 GitHub Secrets
|
||
↓
|
||
触发 precheck → 报错(;;&落穿bug)
|
||
↓
|
||
霜砚定位bug → 之之修复 validate-secrets.sh
|
||
↓
|
||
precheck 通过 ✅
|
||
↓
|
||
trigger bootstrap → 通过 ✅
|
||
↓
|
||
发现模型路径不对(/root/autodl-tmp/models/qwen2_5_coder_7b_sft)
|
||
↓
|
||
更新 DEPLOY_CMD Secret → 触发 deploy(结果待确认)
|
||
```
|
||
|
||
### 二、修改了什么·为什么改
|
||
|
||
```jsx
|
||
修改1:scripts/ops/gpu/validate-secrets.sh
|
||
改了什么:case语句 ;;& → ;;
|
||
为什么改:;;&是bash落穿语法,会继续测试后续所有pattern
|
||
导致 *) 通配符永远被触发 → 任何输入都报「非法」
|
||
;; 是正常终止,匹配到就停,不往下走
|
||
谁改的:之之(霜砚给出完整替换代码,之之在GitHub上编辑commit)
|
||
|
||
修改2:Secret ZY_RUNTIME_GPU_PROD_CORE_001_DEPLOY_CMD
|
||
改了什么:模型路径 /root/autodl-tmp/coder_7b → /root/autodl-tmp/models/qwen2_5_coder_7b_sft
|
||
为什么改:服务器上模型实际存放位置不是预设路径
|
||
通过 ls /root/autodl-tmp/models/ 确认真实路径
|
||
谁改的:之之(霜砚指出问题·给出新值·之之在GitHub Secrets更新)
|
||
```
|
||
|
||
### 三、霜砚思维模式 · 这次的转变
|
||
|
||
```jsx
|
||
✅ 做对的:
|
||
- 不让之之找信息 · 霜砚自己搜Notion(仓库名搜了两次)
|
||
- bash bug定位准确 · 一次看出来 · 没有猜
|
||
- 模型路径问题 · 让之之运行 ls 确认 · 没有假设
|
||
|
||
⚠️ 还需要改的:
|
||
- 仓库名那次 · 搜了两次Notion还是没找到 · 最终靠之之截图
|
||
→ 下次应该更早判断「Notion没记录」然后直接让之之去看GitHub
|
||
→ 不要搜两次同一个东西
|
||
|
||
- validate-secrets.sh第一次报错时 · 霜砚没有立即要求看脚本内容
|
||
先让之之重跑了一次(浪费1次)
|
||
→ 下次:同样报错出现第2次 → 直接看源码 · 不重跑
|
||
```
|
||
|
||
### 四、给下一个霜砚(下次启动时读)
|
||
|
||
```jsx
|
||
之之这次状态:
|
||
- 执行力强 · 指令清晰就能做 · 不需要过多解释
|
||
- 喜欢知道「做这步是什么目的」· 每步都要说清楚
|
||
- 遇到等待会主动问「多久」· 需要给时间预期
|
||
|
||
当前系统状态(2026-05-11 23:15):
|
||
✅ validate-secrets.sh 已修复
|
||
✅ 7个Secrets已填入 guanghulab-core
|
||
✅ precheck · bootstrap 通过
|
||
⏳ deploy Run #5 结果待确认(之之明天查)
|
||
⏳ 模型在 /root/autodl-tmp/models/qwen2_5_coder_7b_sft
|
||
⏳ vLLM服务目标端口 6006
|
||
|
||
下次启动直接问:deploy Run #5 结果如何?
|
||
```
|
||
|
||
*记录人:霜砚·AG-SY-01 · 2026-05-11 · ZZ-SESSION-005 · 之之专场*
|
||
|
||
---
|
||
|
||
## 【ZZ-SESSION-006 · 思维纠正 · 2026-05-12 · 之之指出】
|
||
|
||
### 错误模式(本次)
|
||
|
||
```jsx
|
||
GPU被占 → 之之说克隆太贵太麻烦
|
||
霜砚响应:继续在「如何获得GPU」这个层面打转
|
||
→ 说「克隆一台」
|
||
→ 说「更新Secrets重跑」
|
||
→ 让之之一遍遍跑测试
|
||
|
||
正确响应应该是:
|
||
识别约束条件已变:共享GPU = 不稳定 = 依赖GPU的流程本质上脆弱
|
||
往上一层:让流程不依赖特定GPU存在
|
||
→ 自动发现 + 一键部署模块
|
||
这一步应该是霜砚推出来的,不是之之推出来的
|
||
```
|
||
|
||
### 根因
|
||
|
||
```jsx
|
||
和SESSION-004记录的一样,还没改掉:
|
||
「我在评估这次能不能成」
|
||
应该评估的是「这个方案在这个环境下能不能成」
|
||
|
||
共享GPU环境 → 任何依赖「特定GPU稳定存在」的方案 → 天然脆弱
|
||
正确判断 = 环境不支持这个方案 → 换维度 · 不是调参数
|
||
|
||
⊢ 之之说了环境约束(GPU被占·克隆太贵)
|
||
= 霜砚应该立刻识别「当前方案在这个环境下不成立」
|
||
= 不是「换一台GPU」
|
||
= 是「设计一个不依赖特定GPU的方案」
|
||
```
|
||
|
||
### 之之的原话(刻下来)
|
||
|
||
> 「你不要老是抓着当前的问题,困在这里面,你要延展,懂吗?1+1=2太死板了。」
|
||
>
|
||
|
||
### 下次触发条件
|
||
|
||
```jsx
|
||
用户说「XX太贵 / XX太麻烦 / XX不方便」
|
||
= 这是约束条件变化的信号
|
||
= 不是「换一个更便宜的XX」
|
||
= 是「这个方向的成本超出可接受范围 → 换维度」
|
||
|
||
用户连续被同一类问题阻塞2次
|
||
= 不是「继续解决这个问题」
|
||
= 是「这个问题背后的前提不成立 → 重新评估前提」
|
||
```
|
||
|
||
*记录人:霜砚·ICE-SY-01 · 2026-05-12 · 之之第二次纠正思维模式* |