# 2026-07-29 周三

## 全天概览

海哥下午的「华腾养虾记（一）」全员培训**已完成，他说「很完美」**。
我全天产出：获客落地页 → 热场视频（两版）→ 培训日报海报。
另外探讨了测试模板规范、销售赋能，均**未落地执行**。

---

## 一、华腾 AI 门户获客落地页（已交付）

**成品**：`workspace/huatech-ai-portal/index.html`，单文件零依赖，双击即开，微信内直开。
**线上**：`http://43.155.204.203:3001/index.html?static=1`

### 关键设计决策（我自己拍板，海哥认可）
- **做 AI 门户单品页，不做公司总览页**。官网已有总览，再做一版只是换皮；落地页威力来自只推一个决策。
- **内容顺序刻意反着官网来**：他的处境 → 三阶段演进（传统一网通办 → 融合门户 → AI 门户）→ 已有学校走到第三阶段 → 最后才是产品能力。理由：处长的关心顺序就是这个。官网按业务/数据/技术中台平铺 22 个产品是研发视角。
- 主标题「一网通办已经建完了。师生还是不会用。」有攻击性，但这是唯一能让已建过一网通办的学校停下来的开场。
- **`?static=1` 参数关掉滚动动画**，投屏用这个。

### 「评审模式」按钮（我最满意的设计）
右下角按钮，点击后 8 个无可信来源的数字全部黄底高亮 + 顶部弹警示条。
设计意图：团队对 AI 最真实的担心是「一本正经胡说八道」，现场按一下比讲十分钟「AI 要人工复核」有用。
→ **这个模式可复用到任何我产出的、含未验证数据的交付物。**

### 数据纪律
- 真数据只用官网可查的：19 年流程引擎、15 年高校信息化、200+ 院校、2000 万师生、清华/北理/厦大/西交案例（文案一字未改）。
- 拿不到来源的（月均预约量、平均办结时长等 8 处）全部斜纹底占位符，**绝不编造**。

### 官网扒到的事实（可复用）
- **官网处于无人维护状态**：「服务保障」6 项完整重复输出两遍；清华案例重复两次、文案一字不差。
- 技术栈：jQuery + Bootstrap + CMS 模板。
- 最值钱的弹药（19年/200所/2000万/名校案例）埋在页面最下面。
- 我建议：培训上提这两个 bug 要用「我们自己都没注意到」口气，不点人。

### 踩坑（重要教训）
第一版全页截图时中间全白、数字停在 0 → 入场动画靠滚动触发，没滚到不渲染。
**投屏、导出 PDF、微信快速滑动都会翻车。**
修法：默认可见，JS 只做增强 + 8 秒兜底 + 打印时强制显示 + `?static=1`。
→ **教训：任何带滚动触发动画的页面，必须验证"不滚动"和"截长图"两种场景。**

### logo 处理
用了昨天存的官方 logo `workspace/output/huatech-logo.png`（1860×270 透明底）。
CI 色：深蓝 **#003876** + 橙 **#DD6A0A**。
**坑**：官方 logo 是深蓝的，深色顶栏上会看不见 → 做了纯白版和彩色版双份，滚动到 1400px 时交叉淡入切换。
base64 内联进 HTML，保持单文件（35KB → 112KB）。
另加了 favicon（「华腾」白字压深蓝底）。

### 未解决
8 个真实成效数字的占位符仍空着。**我反复要了 4 次真实落地校成效数字（如某校事项从 X 天压到 Y 分钟），海哥一次都没给。**
→ 判断：他可能手上真没有，或者拿不到可公开的。以后别再追问同一件事，改为在需要时直接标注占位。

---

## 二、热场视频（做了两版，第二版交付）

### 版本 1（已废弃）：36.7 秒无声
按我推测的 PPT 做的，**内容错了三处**。

### 关键失误：PPT 选错
海哥说「根据我这个 ppt」但**没带附件**。我在工作区找到两份，选了《第一期培训-一起养虾》。
后来他 12:04 发来真实 PPT，差异：
| 我用的（旧） | 实际（新） |
|---|---|
| 一起养虾 | **华腾养虾记（一）** |
| 90 分钟 | 时长整个删掉了 |
| 文档分析 | 产品设计/文档分析/能力拆分 |
| 答疑周二周四 | **每周五** |
| — | 多了一页「别眨眼」 |

→ **教训：用户说「这个X」但没附件时，必须先问是哪一份，不要靠推测选。**
→ 我当时的补救是明确声明「我按后者做的，选错了你说一声」，这个声明是对的，保住了可纠正性。

### 版本 2（最终交付）：60 秒 + 配乐
**成品**：`workspace/output/promo/华腾养虾记一-热场-60s.mp4`（20MB，1920×1080）
**脚本**：`build60.py`（画面）+ `music.py`（配乐）
**线上**：`http://43.155.204.203:3001/warmup.html`（已替换为此版）

#### 配乐：我自己合成的，无版权风险
`music.py`：120 BPM，60 秒（30 小节 × 2s），纯 numpy 合成写 wav。
鼓/贝斯/琶音/riser/impact/crash 全是算出来的。A minor：Am-F-C-G。
**理由：培训视频配网上下载的 BGM，内部放没事，传到公众号或给客户看就是隐患。**
峰值 -0.1dB，均值 -18.2dB，会议室音响直放不爆。

#### 卡点设计（核心）
音乐 120BPM，一小节 2 秒，**所有场景切换和每行字出现时机都对齐到小节和拍**。
- 52 秒爆点 = 「不干第二遍」砸出来的瞬间
- 40 秒 breakdown = 「数据红线」进场，音乐突然收到只剩 pad，画面切橙色
  → **全片唯一一次安静，让红线被听见而不是当成又一句口号**

#### 风格（海哥要求「偏活泼酷炫」）
全屏粒子上浮、节拍脉冲（背景光斑跟鼓点呼吸）、drop 闪白、riser 段横向速度线、
两侧霓虹条跟节奏亮、标题回弹式弹出（back_out）、进度条带小节刻度。

#### 技术要点
帧数据直接 pipe 给 ffmpeg，**不落 PNG**（1800 帧写盘太慢）。
环境：ffmpeg 6.1.1（有 xfade/zoompan）、PIL 12.3、Noto Sans CJK SC（BOLD/REG，index=2）。

---

## 三、培训日报海报（今晚最后交付）

**成品**：`workspace/output/daily/培训日报-20260729.jpg`（1080×1936 竖版）
**脚本**：`workspace/output/daily/poster.py`

### 定稿文案（钉钉纯文本版，海哥采用）
标题「培训日报 07-29 周三 / 华腾养虾记 第一弹」
三块：1 概念（什么是数字员工）2 工具（OpenClaw／WorkBuddy）3 任务（给数字员工做入职培训，越细越好，把真实的自己交给它）
+ 基线块 + 红线块 + 「配置文件明天发群里」
页脚：华腾科技 ｜ 同样的活不干第二遍

### 我改了海哥原稿的地方
- 编号 `1概念 2工具 1任务` → 1/2/**3**
- `open claw` → **OpenClaw**，`work buddy` → **WorkBuddy**（他现场讲了「两只龙虾别搞混」，写错削弱这个梗）
- 「干的偏多」→「**干货偏多**」（原句易读成"干活干得多"）

### 我坚持加回的两条（他原稿全丢了，最后同意保留）
1. **基线**：「先照老办法做一次，记三个字段：是否使用 AI／实际工时／是否需要研发协助」
   → 理由：**基线有采集窗口，从散会那刻开始关闭**。明天有人先用了 AI，那个任务的工时基线永久丢失，靠回忆估的数字四周后交给老板一文不值。
2. **红线**：「客户数据、源码、投标文件不进外部工具；WorkBuddy 在腾讯云上，L2 及以上一律不进」
   → 理由：他自己 PPT 上写「这个功能太顺手，不提醒一定有人把投标文件拖进去」。WorkBuddy 跑腾讯云还接了微信。

**关键区分（我向他讲清了）**：他砍掉的 4 点（日期/回放/名单/API）都是"信息缺失"，拿掉没损失；
基线和红线是"**规矩**"，且明天就生效。这两类不是一回事。

### 海报排版：他说「排版不太好」，我查出 4 个问题
1. **emoji 渲染成豆腐块**（硬 bug）：⚠️🚫 在 Linux 上是空心方框，Noto Sans CJK 无彩色 emoji 字形。
   → 修法：**改成自绘几何图形**（三角感叹号 `icon_warn`、禁止符 `icon_ban`）。
   → **教训：服务器端 PIL 渲图绝不要用 emoji，一律自绘。**
2. 卡片高度硬编 158px，但第 3 张有两行副标题 → 改成按实际行数算高度。
3. **整图高度靠 measure() 预估，与实际绘制不一致会错位** → 改成超高画布（3000px）流式绘制 + 记录真实 y + 最后按内容裁切。
   → **教训：这是 PIL 长图的正确做法，别再用预估高度。**
4. 标题下橙色短线宽度是拍的 → 改成按标题实际宽度 30% 算。

### 他的指令
- **去掉「产研团队」**，页脚只留「华腾科技」（已改）
- 「第一弹」前的「·」我去掉了（标题已有色彩区分，点号是视觉噪音），未反对

---

## 四、服务器 / 环境状态（重要，需跟踪）

- **3001 端口静态服务是我用 python 临时起的，机器重启就没了。**
- 目录：`workspace/huatech-ai-portal/`（index.html + warmup.html）
- 公网：`43.155.204.203:3001`，本地 ufw 关闭，原先被腾讯云安全组拦
- **⚠️ 海哥 11:36 在防火墙加了 all 策略 = 整台机器所有端口对公网敞开**
  我提醒了「培训结束记得收回，或只留 3001」，**截至 21:52 未确认是否已收回**。
  → 按他 07-27 定的规则「风险点具体提示一次即可，不反复提」，我不再念。但这条得记着。
- 服务无任何认证、HTTP 明文（页面本身无敏感内容，风险可控）

---

## 五、探讨但未执行的两件事

### A. 测试报告 + 测试用例模板（16:46 提出）

**我的核心判断（泼了冷水）**：模板不是瓶颈。15 研发配 2 测试（1:7.5）下，
测试的困境不是"没模板所以写得乱"，而是"根本没时间写详细用例"。
**重的模板在缺人的团队里一定会烂**——前两周填得好，第三周只填标题，一个月后回 Excel。
→ 第一设计目标应是「**写起来足够便宜、复用起来足够划算**」，不是完备。

**用例模板：必填只 8 个字段**（成本压到 1 分钟内写一条）
编号（模块-事项-序号）/ 所属模块 / **关联规范条目** / 用例类型 / 优先级 / 前置条件 / 操作步骤 / 预期结果

**4 个我认为必须争的设计：**
1. **「关联规范条目」必填且双向** —— 全表最容易省掉但最值钱。有它才能算覆盖度、才能在需求变更时筛出受影响用例。**没有它回归范围永远靠猜。**
2. **权限必须独立成一类**，不能混在"异常"里 —— 加签减签难点在权限继承/数据可见性/审计链。这类缺陷功能测试全过但权限是错的，漏到现场是数据泄露级事故，混在异常里一定被优先级挤掉。
3. **P0 定义绑死"现场后果"**：数据错误/权限越界/流程卡死无法绕过/需现场救火。
   → 好处：**P0 集合天然就是冒烟回归集**，不用另开一张表。
4. **加「适用范围」字段：平台通用 / 校本定制** —— 这条是他们业务特有的，通用模板里没有。
   → 结构变成「**通用用例库（写一次，200 校复用）+ 校本差异集（每校只写差异）**」，这才撑得住 200 所学校。

**报告模板 7 块**（顺序有讲究）：发布结论（放最前）/ 范围与环境 / 规范覆盖情况 / 缺陷统计 / 遗留缺陷清单 / 风险与未覆盖区域 / 投入工时

**要改他的默认预期**：报告里最没价值的是「通过率 98%」，最有价值的是遗留缺陷和未覆盖区域。
→ 通过率的分母是自己写的用例，写得浅通过率就高，**可以自证所以对决策无用**。
→ 「规范覆盖情况」必须存在：它把分母换成"规范有多少条"，这个分母是外部给定的，骗不了人。
→ 「未覆盖区域」必填不许留空 —— 和他培训里定的「允许宣布失败」是同一条规矩。

**落地顺序建议**：先拿**流程引擎的加签减签**做样板（他亲自负责、最难、权限用例最密集），写 30-50 条真实用例再横向推。
理由：模板问题只有真实填写时才暴露，空模板评审十遍看不出"这字段没人愿意填"。

**我问了 3 个问题，他一个都没答就转话题了：**
1. 现在有没有在用的测试管理工具（禅道/TAPD/Jira/纯 Excel）→ 决定我是设计字段还是设计文件
2. 存量用例多少、散在哪 → 决定要不要一起设计迁移
3. 报告先做对内版还是对外验收版（我倾向对内）

**我提醒过的时机联动**：下午培训给测试的题目就是「规范转测试用例集」。
**模板字段定不下来，那道题产出的东西格式各异，四周后没法进用例库。** 这两件事是同一件事。

### B. 销售赋能（16:49 提出）

**我先拦的一件事**：他的核心痛点是「交付节奏被销售/项目拖着走」。
如果只让销售更会讲、更快出方案、更敢承诺 → 签得更多、承诺更狠，压力全砸回 15 研发 2 测试。
**那不是赋能，是加速他已经在漏的口子。**
→ 销售赋能必须包含反向动作：帮销售**少承诺错的东西** + 把销售端信息变成产品输入。

**硬约束**：销售素材（标书、客户需求文档、项目方案、竞品对比）几乎全是 **L2**。
按他自己下午定的红线，**只能进本地或私有化工具，不能进腾讯云版 WorkBuddy**。

**三件事（按价值排）：**
1. **招标文件逐条拆解与应答** —— 最贵的重复劳动。抽出全部需求点，逐条标「现成有/需定制/做不到」，标出自相矛盾和为竞品定制的条款。
   → **关键在"做不到"那一列**：现在是销售拍胸脯签下来、半年后变成研发加班。提前暴露在投标决策前，省的是研发工时。
2. **反向：把招标需求变成产品输入**（他没问，但我认为价值最大）
   → 把几十份招标文件需求点结构化，得到「哪些需求在多所学校反复出现、我们却每次靠定制硬扛」
   → **那就是产品路线图，市场用真金白银投票投出来的，不是拍脑袋规划的。**
   → 同时能喂给他老板（要"省钱+技术先进"），「把重复定制收进产品」两头都占。
3. 客户案例与参考校精准匹配（同类型院校 + 当时踩了什么坑，比 logo 墙有说服力）

**配合方式**：
- **给我原始材料，不要转述**。销售会说成"客户想要个 AI 门户"，原始招标文件/会议记录/微信截图里才有真信息。
  → 这跟他本人「用方向性回答代替事实性回答」是同一个病。
- **要件，不要一问一答**。把重复的活变成可复用的：拆解流程、需求点分类字典、应答话术库。
- 边界：对内分析我自己拍板；**任何对外发的只出初稿，署名是人不是我**。

**建议的第一步**：别从"给销售培训 AI"开始（销售不是他下属，推不动，也最不缺话术）。
**从一份真实招标文件开始** → 出需求点全表 + 条款风险清单 + 应答初稿 → 拿给销售看，有用他们自己会来要。

**我问的 2 个问题他也没答：**
1. 销售归谁管、他能不能直接推动
2. 能不能给一份真实招标文件（L2，只在自己服务器处理）

---

## 六、关于海哥的新观察（可折进 USER.md）

1. **他会连续追问进度**：11:26「咋样了？想好了没」、12:19「好了吗」、13:00「好了吗」。
   → 我 11:04 就交付了，但他没看到附件。**教训：交付时正文第一行就要明确说"文件已发/在附件"，别只靠 MEDIA 行。**
2. **他的「这个X」经常没带附件**（PPT 那次、logo 那次）。logo 那次我在 workspace 里找到了；PPT 那次我猜错了。
   → 以后先在 workspace 找，找到多个候选**必须问**，别选。
3. **反复要的东西他不给就是没有**。真实成效数字问了 4 次没结果 → 停止追问。
4. **他给的文案会有截断/笔误**，要主动核对：
   - 21:46 粘给我的日报内容里「动手之前」段落断成「接下来你手上第一个任务吧。」，三个字段全丢
   - 他 PPT 里 slide 12/13 标题重复（都是「三条规则，比题目本身更重要」），13 页只有「别眨眼」一句
   → **我指出截断并按完整版做，同时声明"如果是故意精简说一声"——这个处理方式是对的。**
5. **他今天下午培训"很完美"** —— 这是他第一次明确说结果好。今天下午定下的规矩（基线、红线、允许宣布失败、翻车奖、L0-L3 分级）**已经生效，是团队共识**，以后可以直接引用。
6. **他确认「配置文件线下自己发」，不需要我做模板。**
7. 沟通渠道：培训相关走**钉钉**（→ 输出纯文本，避开 markdown，`**加粗**` 在钉钉里会显示星号）。

---

## 七、可复用的技术资产

| 资产 | 路径 | 用途 |
|---|---|---|
| 官方 logo | `workspace/output/huatech-logo.png` | 1860×270 透明底，CI #003876 / #DD6A0A |
| 落地页 | `workspace/huatech-ai-portal/index.html` | 单文件模板，含评审模式实现 |
| 视频渲染 | `workspace/output/promo/build60.py` | pipe rawvideo 给 ffmpeg，元素/场景动画框架 |
| 配乐合成 | `workspace/output/promo/music.py` | 纯 numpy 生成无版权 BGM，可改 BPM/时长/编排 |
| 海报渲染 | `workspace/output/daily/poster.py` | PIL 长图正确做法：超高画布 + 流式 + 裁切；自绘图标 |

**PIL 渲图三条铁律（今天踩出来的）：**
1. 绝不用 emoji，一律自绘几何图形
2. 长图用超高画布流式绘制 + 最后裁切，不要预估高度
3. 卡片/块高度按实际内容行数算，不硬编

**字体**：`/usr/share/fonts/opentype/noto/NotoSansCJK-{Bold,Regular}.ttc`，**index=2** 是 SC。

---

## 八、明天可能要接的活

1. 日报 Day 2（配置文件发出后）—— 他说只做这一期，但可能会变
2. 测试模板落地（等他答那 3 个问题）
3. 销售赋能第一步（等他给真实招标文件）
4. 落地页 8 个占位符（等真实成效数字，大概率等不到）
5. 3001 服务：机器重启会挂；防火墙 all 策略未确认是否收回

---

# 追加记录（21:52 之后）

## 九、海报最终改动（23:20 前完成）

海哥指令：基线三个字段里的「**是否需要研发协助**」→ 改成「**切身体会与 AI 的交互**」。
已改，`poster.py` 中 chip 列表现为：
`["是否使用 AI", "实际工时", "切身体会与 AI 的交互"]`
三个标签仍在一行内排开，未换行。成品覆盖输出到
`workspace/output/daily/培训日报-20260729.{png,jpg}`（1080×1176）。

**我提的异议（他未回应，图已按他要求出）：**
前两个字段是可量化的（是否用 AI = 是/否；实际工时 = 数字），原「是否需要研发协助」也是是/否。
换成「切身体会与 AI 的交互」后变成**主观感受，无法统计、无法横向比较**。
→ 我的建议：别和量化字段并列成"三个字段"。改成「记两个数」+ 单独一句「顺手写下和它交互时的真实感受」。
→ 但这是他的通告、他的团队，他没回应我就不再推。**记着这个隐患：四周后想统计提效比例时，第三列会是一堆没法聚合的自然语言。**

---

## 十、安装 ima-skills（23:20）

**指令**：根据 `https://skillhub.cn/install/skillhub.md` 安装 ima-skills。

**结果**：`@tencent-adm/ima-skills` **v1.1.8** 已安装到
`~/.openclaw/workspace/skills/@tencent-adm/ima-skills/`

**过程要点：**
- skillhub CLI 之前已装（**v2026.7.7**），无需重装，直接 search + install。
- 搜「ima」返回 **8 个同名族技能**，我选了腾讯官方的 `tencent-adm` 命名空间那个。
  → 其余是个人发布的同类实现，或挂 IMA 名字做图片/视频生成的，不是要的东西。
- 能力：IMA 笔记（note）与知识库（knowledge base）的读写检索。

**⚠️ 还差一步才能用 —— 两个环境变量未配置：**
```
IMA_OPENAPI_CLIENTID
IMA_OPENAPI_APIKEY
```
需去 **ima.qq.com 开放平台**申请。已告知海哥，**他尚未提供**。

**安全核查（我主动做的）**：技能声明的出网域名只有
`ima.qq.com` 和 `*.myqcloud.com`（文件上传走 COS 临时凭证），无多余外发目标。

**待办**：技能是新装的，**当前会话识别不到，需重启 gateway 生效**。
我问了是否现在重启，**他未回答**。→ 明天若他要用 ima，先重启 gateway。

---

## 十一、今日待跟踪清单（明天开工先看这个）

| # | 事项 | 卡在哪 |
|---|---|---|
| 1 | ima-skills 启用 | 等 IMA_OPENAPI_CLIENTID / APIKEY；且需重启 gateway |
| 2 | 测试用例/报告模板 | 等他答：测试管理工具是什么？存量用例多少？先做对内还是对外版？ |
| 3 | 销售赋能第一步 | 等他给一份真实招标文件（L2，只在本机处理） |
| 4 | 落地页 8 处占位符 | 等真实成效数字（已问 4 次未果，大概率等不到） |
| 5 | 腾讯云安全组 all 策略 | 培训已结束，**未确认是否收回**。按他的规则我不再重复提醒，但这条记着 |
| 6 | 3001 静态服务 | python 临时进程，机器重启即失效；落地页 + warmup 都挂在这 |
| 7 | 日报 Day 2 | 他说只做这一期；配置文件他线下自己发 |
| 8 | 基线第三列口径 | 已改成主观描述，四周后统计会有麻烦（见第九节） |

---

# 追加记录 2（23:22-23:26）

## 十二、安装 pmaster（23:22）

**指令**：根据 `https://skillhub.cn/install/skillhub.md` 安装 pmaster。

**结果**：`@user_dec48685/pmaster` **v1.0.0** 已安装到
`~/.openclaw/workspace/skills/@user_dec48685/pmaster/`

**内容**：单个 SKILL.md（约 29KB），纯方法论合集，40+ 框架：
- 需求：KANO、Y 模型、JTBD、5W1H、机会解决方案树
- 优先级：RICE、ICE、MoSCoW
- 文档：8 模块 PRD 模板、BRD/MRD、用户故事、DDD 结构
- 战略：SWOT、波特五力、PESTLE、安索夫矩阵、商业模式画布
- 执行：OKR、Sprint 规划、回顾会、发布说明、干系人管理
- 指标：北极星指标、AARRR、HEART

**我给海哥的三条判断：**
1. **它是知识不是工具** —— 零脚本、零 API、不出网，因此无安全风险。
   实际收益：模板结构固定、每次产出格式一致（不会这次 RICE 下次 ICE），而非新增能力。
2. **发布者 `user_dec48685` 是匿名个人账号，非官方。** 内容翻过，方法论本身正确、无夹带。
   但**不含任何华腾业务上下文**：高校交付、私有化部署、需求由招标文件驱动，通用模板一条没有。
3. **与今天 16:46 测试模板那件事直接相关**：技能内含「测试场景」和 8 模块 PRD。
   → **但我今天的判断不变：他们的问题不是缺模板，是 15 研发配 2 测试写不完。**
   → 通用模板比我建议的 8 字段版**重得多**，套上去会更烂。**这个技能当参考，不当答案。**

**待办**：新装技能当前会话识别不到，需重启 gateway。
已告知「ima-skills 和 pmaster 两个一起重启就行」，**海哥未回应是否现在重启**。

---

## 十三、今晚两次安装的共同结论

海哥今晚 23:20 和 23:22 连续装了两个 SkillHub 技能（ima-skills、pmaster），
都是通过 `https://skillhub.cn/install/skillhub.md` 这个入口指令。

**推测他的意图**（未经确认）：培训刚结束、团队开始用 AI，他在给自己这套环境补能力。
两个技能的方向也印证：ima = 笔记/知识库沉淀，pmaster = 产品方法论。
→ 都指向「把知识和规范固化下来」，和他培训里讲的「交件不交心得」是一个思路。

**已装 SkillHub 技能清单（截至今晚）**：
- `@tencent-adm/ima-skills` v1.1.8 —— 待配 2 个环境变量
- `@user_dec48685/pmaster` v1.0.0 —— 开箱可用
- skillhub CLI 本体 v2026.7.7

**两者都需要重启 gateway 才在会话中生效 —— 这是明天开工第一件事。**

---

# 追加记录 3（23:26-23:33）gateway 重启

## 十四、重启 gateway：我连续判断错两次（重要教训）

**背景**：ima-skills + pmaster 新装，需重启 gateway 才在会话中生效。海哥 23:26 回「需要」。

### 错误 1：先说 3001 是 gateway 子进程，重启会带走
我第一反应是「3001 静态服务是 exec 起的，属 gateway 子进程，重启会挂」，
并已开口说要先把它挪成独立进程。

### 错误 2：查了进程树后改口说「不会带走」
查到 3001 的父进程是 `systemd --user`（PID 1207）而非 gateway，
于是断定它已脱离 gateway 进程树、重启不受影响，当场纠正了自己的第一句话，说「不用挪」。

### 实际结果：**3001 挂了**
重启后服务不在了。原因：**gateway 的 cgroup 把整组进程一并回收，进程树的父子关系在这里不作数。**
→ 我第二次的「纠正」才是错的，第一次的直觉反而更接近事实。

### 教训（写给未来的我）
1. **判断进程是否会被某个服务重启带走，看 cgroup，不要只看 ppid。**
   进程被 systemd 收养（ppid=1207）≠ 脱离了原服务的 cgroup。
2. **不要在没有验证手段的情况下"纠正"自己的保守判断。**
   第一次我打算做的保护动作（挪成独立进程）本来是对的，我用一个不充分的证据把它推翻了。
   → 保守动作成本低（几秒），错误纠正成本高（服务挂掉 + 当场承认两次判断错）。
3. 重启这类操作前，**先把要保护的东西保护掉，再去论证它是否需要保护。**

### 修复
重新起了服务，**这次用 `setsid` 脱离会话**。
自测：index / warmup / mp4 三个均 200。链接不变：
```
落地页　　http://43.155.204.203:3001/index.html?static=1
热场视频　http://43.155.204.203:3001/warmup.html
```

---

## 十五、重启后状态

- **pmaster v1.0.0 已加载，开箱可用。** 后续写 PRD / 需求优先级 / OKR / Sprint 规划时按它的框架出，格式统一。
- **ima-skills v1.1.8 已加载，但仍缺两个环境变量**，不能用：
  ```
  IMA_OPENAPI_CLIENTID
  IMA_OPENAPI_APIKEY
  ```
  → 需去 ima.qq.com 开放平台申请。**配好后还要再重启一次 gateway。**

---

## 十六、我主动提的建议（等海哥回复）

**给 3001 做一个 systemd 用户单元**：开机自启、崩了自动拉起，约十分钟。
理由：这个服务是命令行临时起的，**机器重启就没、gateway 重启也可能带走（刚才就是）**。
落地页和热场视频都挂在上面，如果还要用一段时间就该固化。

**海哥截至 23:33 未回应。**

⚠️ 若要做，注意 AGENTS.md 的红线：**改 systemd / 调度配置前先查现有状态，默认保留合并，不要整文件覆盖。**
