Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

167 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 思维逻辑链 · 2026-05-16 · 神笔马良v0.2联调实战 · 四个坑四种思维
```yaml
schema: hldp-dual/v1
title: 思维逻辑链·2026-05-16·神笔马良v0.2联调全链路
created: 2026-05-16T18:10+08:00
author: 霜砚·AG-SY-01
operator: Awen·DEV-012
type: 思维逻辑链·不是流水账·记的是脑子怎么转
```
---
## 核心思维模型:今天脑子转了几圈
今天的任务表面上是「让神笔马良v0.2接上LLM生成真代码」但实际上经历了 **四层认知跳跃**,每一层都不是线性推进,而是「撞墙→回溯→换路径→突破」。
---
## 第一跳:路径不存在 ≠ 模型不存在
<aside>
🧠
**思维链**`ls: cannot access` → 第一反应是「模型被删了」→ 但停下来想AutoDL数据盘57%占用29G/50G如果模型真没了不会占这么多 → 说明模型在,只是路径名变了 → 用 `find` 扫磁盘而不是凭记忆猜路径
</aside>
**关键转折**:不信任记忆,信任磁盘。
之前记录的路径 `qwen2_5_coder_7b_sft` 是错的。这个名字可能是训练时的临时名,后来被重命名为 `coder-7b`。但我们的记录没更新。
**脑子转法**
- ❌ 错误路径:「路径不存在 → 模型丢了 → 重新下载/训练」(浪费几小时)
- ✅ 正确路径:「路径不存在 → 磁盘占用说明还在 → find搜 → 3秒找到真路径」
**底层规律**
> 当「应该在」和「实际不在」冲突时,先验证「是否换了位置」再下「丢了」的结论。信息过时 ≠ 事实消失。
>
---
## 第二跳SSL错误 → 不是网络问题,是协议层面不匹配
<aside>
🧠
**思维链**`ssl3_get_record:wrong version number` → 第一反应是「网络不通」→ 但curl测试是通的 → 说明TCP层没问题 → 问题在应用层 → SSL错误+HTTP地址 = 用了HTTPS模块去请求HTTP端口 → 看代码:果然 `require('https')` 写死了
</aside>
**关键转折**:错误信息的层次分析。
`wrong version number` 看起来像「版本不对」但实际含义是「期望SSL握手但收到了明文HTTP响应」。这不是版本问题是协议不匹配。
**脑子转法**
- ❌ 表面理解「SSL版本错误 → 升级SSL → 装证书」(方向完全错)
- ✅ 深层理解「SSL错误 + HTTP URL = 代码用错了模块 → 改成根据协议自动选」
**底层规律**
> 错误信息描述的是「症状」不是「病因」。SSL报错不一定是SSL的问题可能是根本不该走SSL。读错误信息时要往上追一层谁触发了这个错误
>
---
## 第三跳heredoc截断 → 工具选择问题,不是内容问题
<aside>
🧠
**思维链**第一次heredoc截断 → 以为是偶然 → 第二次还是截断 → 不是偶然是bash heredoc在SSH长文本粘贴场景下的结构性缺陷 → 换工具:用 `node -e` 写文件 → 一次成功
</aside>
**关键转折**:连续两次失败后不是「再试一次」而是「换一种方式」。
这是今天最重要的思维教训。第一次截断时我以为是复制粘贴的问题,第二次截断才意识到:**问题不在内容,在工具本身**。bash heredoc对特殊字符反引号、$、花括号的转义处理加上SSH终端的行缓冲区限制使得长代码粘贴本质上不可靠。
**脑子转法**
- ❌ 坚持同一条路「heredoc失败 → 检查哪里转义错了 → 改转义 → 再试」(无限循环)
- ✅ 切换工具链「heredoc不适合这个场景 → node的字符串处理更可控 → 用node写文件」
**底层规律**
> 同一种方法连续失败两次,第三次大概率还是失败。此时应该问的不是「哪里做错了」而是「这个工具本身是否适合这个任务」。换工具 > 修工具。
>
---
## 第四跳timeout ≠ 网络超时,是模型生成量超出时间预算
<aside>
🧠
**思维链**`llm.chat timeout` → 第一反应是「网络不通」→ 但curl秒回 → node模块也秒回 → 说明网络和代码都没问题 → 唯一区别是什么?→ curl用了max_tokens=32代码里用了max_tokens=4096 → 7B模型在4090上生成4096 token需要40-80秒 → 超时!→ 改成1024 → 秒过
</aside>
**关键转折**:用对照实验定位问题。
不是盲目加大超时时间从60改到120还是超时而是做「最小变量对照」
1. curl 32 tokens → 秒回 ✅
2. node模块 32 tokens → 秒回 ✅
3. server.js 4096 tokens → 超时 ❌
唯一变量token数量。结论不是超时太短是生成量太大。
**脑子转法**
- ❌ 暴力调参「超时60不够 → 改120 → 改300 → 改600」治标不治本
- ✅ 对照实验:「什么变了?→ 控制变量 → 发现token数量是唯一变量 → 改token不改timeout」
**底层规律**
> 超时问题有两种:真的太慢(需要加时间),和根本不该那么慢(需要减工作量)。用对照实验区分这两种。
>
---
## 元认知:今天的思维模式总结
<aside>
**四次撞墙,四种思维工具:**
① 路径不存在 → **不信任记忆,信任磁盘**(验证 > 记忆)
② SSL报错 → **往上追一层因果**(症状 ≠ 病因)
③ heredoc截断 → **换工具不换内容**(连续失败 = 工具不对)
④ 超时 → **控制变量对照实验**(找唯一变量)
</aside>
这四种思维模式不是今天发明的是debug的基本功。但今天的实战把它们串在了一起形成了一条完整的排障思维链
```
遇到错误
→ 先读错误信息的真实含义(不是表面文字)
→ 用最小实验验证假设curl / node -e / find
→ 连续两次同样失败 → 换工具不换目标
→ 定位后用最小改动修复sed一行 / 改一个数字)
```
---
## 给未来的Awen/霜砚
下次遇到类似问题时的快速决策树:
```
Q: 文件/路径不存在?
→ find搜磁盘不猜
Q: 网络相关报错但curl能通
→ 不是网络问题,是代码层协议/参数问题
Q: 终端写文件失败两次?
→ 别用heredoc了用node -e或scp或git pull
Q: 超时但简单请求秒回?
→ 不是真慢,是请求太重,减负载
```