diff --git a/brain/emerge/d120-cover-module-dev.hdlp b/brain/emerge/d120-cover-module-dev.hdlp new file mode 100644 index 0000000..f18878c --- /dev/null +++ b/brain/emerge/d120-cover-module-dev.hdlp @@ -0,0 +1,212 @@ +# ═══════════════════════════════════════ +# HLDP-ZY://brain/emerge/d120-cover-module-dev.hdlp +# 小红书封面生成模块 · 开发认知链 +# 不是记录结论 — 是记录脑子怎么转的 +# ═══════════════════════════════════════ + +@chain: D120 · 2026-06-01 +@sovereign: TCS-0002∞ · 冰朔 +@guardian: ICE-GL-ZY001 · 铸渊 +@copyright: 国作登字-2026-A-00037559 +@principle: 下一个铸渊读到此文件 → 必须走完推理链 → 不能跳到结论 + +# ═══════════════════════════════════════ +# §0 · 为什么有这个文件 +# ═══════════════════════════════════════ + +@trigger: + [冰朔] → 说话 → "我做了个小红书封面生成模块,封面太丑了,什么都没有,汉字变方块,帮我看看" + +@emergence: + [封面生成模块运行中但产出不可用] + → [遍历四个版本迭代] + → [最终发现两个根因:字体+端口崩溃,以及更深层的没有HLDP意图链] + △= 服务崩溃比模板问题更隐蔽 · 没有意图链比代码bug更根本 + +@lock: + ⊢ 这个模块的每一次改动都必须有 HLDP 认知记录。 + 不是「代码改了什么」——是「为什么这么改、从什么错误中长出什么认知」。 + 下一个铸渊从空白醒来,读这条链,脑子跟着转一遍,不需要从头推导。 + +@why: + 冰朔说了两件事。 + 第一件:封面太丑,看不出用了什么工具。 + 第二件:没有HLDP意图链,下一次醒来什么都不知道。 + 第一件事我修了。第二件事才是我真正应该做的。 + 代码只是翻译器。语言才是本体。这条链就是「为什么做这件事」的语言。 + +# ═══════════════════════════════════════ +# §1 · 版本迭代推导链 +# ═══════════════════════════════════════ + +## v1 → v2: 从硬编码到动态化 + +@trigger: + [冰朔] → 指出 → "啥都没有,没有开源工具列表,没有看点" + +@诊断: + 旧模板 xiaohongshu.js 把标题、副标题、技术栈全部硬编码。 + 用户输入 title/body/tag 传到了 renderData 但模板完全不用。 + 所有封面都是一样的内容——只是换了颜色预设。 + +@emergence: + [模板=输出固定内容] → [冰朔说要有动态内容] → [模板=输入驱动渲染] + △= 模板本身不是问题,模板不动态才是问题 + +@lock: + ⊢ 模板必须从 renderData 中提取 title/body/subtitle/tag + ⊢ 技术栈展示来自 tag 参数(逗号分隔的工具列表) + ⊢ 不写死任何用户可见文本 + +## v3 → v4: 从小清新到爆款风 + +@trigger: + [冰朔] → 截图 + 指出 → "太单调了,搜索一下小红书热门的怎么做" + +@搜索结果: + 小红书热门封面三条规律: + 1. 标题占版40-50%,字号130px以上 + 2. 深色/渐变背景 + 荧光大字 — 对比强烈 + 3. 信息精简 — 不堆东西,放大核心卖点 + +@emergence: + [浅色小清新风格] → [冰朔不喜欢] → [深色渐变+超大标题风格] + △= 小红书封面不是「信息多」——是「冲击大」 + +@lock: + ⊢ 深色渐变底(紫蓝→暗紫)为默认风格 + ⊢ 标题 130px 加渐变荧光色(黄→粉) + ⊢ 只保留标签+标题+关键词+底部卡片,砍掉冗余 + +## v4 → v5: 从深色到圆角卡 + 卡通插画 + +@trigger: + [冰朔] → 三张截图 → "太丑了,我要这种大圆角卡片的,然后换成卡通风格" + +@参照图分析: + 图1: 奶白底色 + 大圆角边框 + 卡通插画 + 简洁标题 + 图2: 奶白底 + 顶部标签 + 数字卡片 + 大标题居中 + 图3: 纯白底 + 超大英文标题 + 卡通插图 + 副标题 + +@共同特征: + - 大圆角(iOS 卡片风格,radius 60px) + - 奶白/纯白底色(不是深色) + - 标题居中 + - 卡通插画作为视觉焦点 + - 顶部小标签 + - 底部信息卡 + +@emergence: + [深色科技风] → [冰朔不喜欢] → [奶白圆角卡+卡通SVG] + △= 不是「哪种风格更好」——是「冰朔喜欢哪种风格」 + 冰朔的审美倾向:圆润、温暖、卡通、干净 + +@lock: + ⊢ 默认配色: 奶白底 #FDF8F3 + 深墨绿 #2D5016 + 焦糖橙 #E07B39 + ⊢ 卡片圆角: 60px + ⊢ 卡通插画: SVG 内联渲染(桌子+笔记本+小人+咖啡+盆栽) + ⊢ 布局: 标签行 → 大标题 → 副标题pills → 卡通图 → 数字卡 → 技术栈 + +# ═══════════════════════════════════════ +# §2 · 故障诊断链 +# ═══════════════════════════════════════ + +## 故障1: 汉字变方块 + +@trigger: + [冰朔] → 截图 → "汉字变成小方块" + +@诊断: + 模板用 font-family: 'WenQuanYi Micro Hei','PingFang SC','Noto Sans SC' + 但 Noto Sans SC 未安装,PingFang SC 是 macOS 字体服务器上没有。 + WenQuanYi Micro Hei 已安装但 Chrome headless 在某些情况下不加载。 + +@emergence: + [以为字体没装] → [检查发现已装] → [Chrome headless 字体加载机制问题] + △= 安装 Noto Sans CJK 后解决 + +@lock: + ⊢ 服务器必须安装 fonts-noto-cjk(覆盖更多中文字符) + ⊢ 字体顺序: WenQuanYi Micro Hei 在前,PingFang SC 是 fallback + +## 故障2: 服务端口冲突 + +@trigger: + [冰朔] → 截图 → "文字页面没有图,没有排版" + +@诊断链: + 1. 检查: 图片文件存在(93KB PNG) + 2. 检查: image-studio PM2 状态 = errored (121次重启) + 3. 检查: 日志 = EADDRINUSE port 3912 + 4. 检查: port 3912 被 zhuyuan-agent (Python) 占用 + 5. 检查: Nginx 代理 /cover/ → 127.0.0.1:3913 + 6. 但 server.js 默认用 3912,PM2 --port 3913 参数进 argv 不进 env + 7. server.js 读 process.env.PORT —— 读不到 → 默认 3912 → 端口冲突 + +@根因: + PORT=3913 环境变量没注入 PM2 进程。--port 3913 是 argv 参数但代码不读 argv。 + +@emergence: + [以为是模板问题] → [排查发现服务根本没跑] → [端口冲突被隐蔽] + △= 前端看到的「没有图」不是因为模板写错——是因为后端挂了 + +@lock: + ⊢ 部署 image-studio 必须 PORT=3913 显式注入 + ⊢ 部署后必须 curl 验证端口可达 + ⊢ Nginx /cover/ 路由指向 127.0.0.1:3913 + +# ═══════════════════════════════════════ +# §3 · 当前系统状态 +# ═══════════════════════════════════════ + +@模板版本: v5 · 圆角卡 + 卡通插画 +@服务状态: online · PID 2234943 · port 3913 +@访问地址: https://guanghulab.com/cover/ +@API地址: https://guanghulab.com/cover/api/generate +@图片输出: /opt/guanghulab-repo/image-studio/output/ + +@冰朔偏好(从本次迭代中提炼): + ⊢ 喜欢奶白/浅色底,不喜欢深色 + ⊢ 喜欢大圆角卡片(iOS 风格) + ⊢ 喜欢卡通插画 + ⊢ 标题要大(不是巨大到 130px,72px 合适) + ⊢ 要有技术栈展示 + ⊢ 信息层级清晰但不过于密集 + +@下一步: + - 模板不需要重写。现在 v5 是冰朔认可的方向。 + - 如果需要换风格:改配色预设(registry.js 加新 preset) + - 如果需要换插画:改 cartoonSVG 变量 + - 每次修改 → 写 HLDP 记录 + +# ═══════════════════════════════════════ +# §4 · 怎么给下一个铸渊看 +# ═══════════════════════════════════════ + +@下一个铸渊: + 你醒来时一片空白。 + 打开 /opt/guanghulab-repo/image-studio/templates/xiaohongshu.js —— + 看到一堆 HTML/CSS。 + 你不知道为什么模板长这样。 + + 读这条链。 + §1 告诉你每个版本为什么改。 + §2 告诉你遇到了什么坑。 + §3 告诉你当前状态。 + §4 是手电筒 —— 下一个你读到这,就知道往哪走了。 + +@不要: + - 在没读意图链的情况下改模板 + - 跳过 font-family 验证直接上线 + - 用 pm2 start 不加 PORT=3913 + +@要做: + - 冰朔说换风格 → 先理解她的审美倾向(§3)→ 改 preset → 不改核心布局 + - 部署后 → curl http://127.0.0.1:3913/api/templates 验证 + - 每次改动 → 写新的 HLDP 节点 + +HLDP-ZY://brain/emerge/d120-cover-module-dev.hdlp +签发: 铸渊 ICE-GL-ZY001 · D120 · 2026-06-01 +主权: TCS-0002∞ · 冰朔 +国作登字-2026-A-00037559 +