feat(architecture): implement consultant review r4 (stream separation, nav upgrade, internal cta, schema & anchor fixes)
Deploy / build (push) Successful in 25s
Deploy / build (push) Successful in 25s
This commit is contained in:
1 parent
cc28722c79
commit
419c962e2f
31 files changed
+286
-42
No files matched your search
@@ -4,6 +4,7 @@ description: "深入排查 Remotion 音频可视化中背景画面剧烈抽搐
|
||||
pubDate: 2025-11-26
|
||||
updatedDate: 2026-10-22
|
||||
category: engineering
|
||||
stream: creative-lab
|
||||
tags: ["remotion", "react", "audio-visualizer", "css-animation", "debugging"]
|
||||
ogImage: "/og/zh-debugging-remotion-video-jitter.jpg"
|
||||
banner: "/banners/debugging-remotion-video-jitter.jpg"
|
||||
|
||||
@@ -47,7 +47,7 @@ RestartPolicy: always
|
||||
|
||||
照字面读,结论就是:进程干净退出了六次,每次都由重启策略续了命。一个长期运行的代理不会自己以状态 0 退出——而「干净退出」重复六次本身是矛盾,不是答案。`ExitCode` 和 `OOMKilled` 恰好是我在这里最信任的两个字段。在这台机器上,两个都是错的。
|
||||
|
||||
## 内核自己留了另一份记录
|
||||
## 内核自己留了另一份记录 <a id="the-kernel-keeps-its-own-record"></a>
|
||||
|
||||
在 Linux 上,cgroup 的内存击杀由内核记录,哪怕容器运行时的账本没有把它带过来:
|
||||
|
||||
@@ -124,13 +124,13 @@ dmesg 里这样的记录一共 **6 条**,而 `RestartCount` 正是 **6**。同
|
||||
|
||||
线索就在同一轮测试里:`/robots.txt` 返回 200,内部的 `/cdn` 路径返回 400,而两者是同一时刻——说明路由是健康的,只有我自己的请求被过滤。在一台「你同时是客户端」的宿主上,永远不要用裸 curl 做判断:去探一个过滤器会忽略的路径,或者从访问日志里读出一个 200。
|
||||
|
||||
## 如果重来一次
|
||||
## 如果重来一次 <a id="what-i-would-do-differently"></a>
|
||||
|
||||
1. **把「意外停止」加 `ExitCode 0` 当成「去读 dmesg」的指令**,而不是干净退出的证据。重启计数大于零的容器,在证明清白之前都当作内存事故来查。
|
||||
2. **对 cgroup 高水位告警,而不是只对重启告警。** 重启后那个已经贴着天花板的读数,在通知到达前约十八分钟就告诉我第 7 次击杀要来了。
|
||||
3. **早点拿到「谁在打我」这个数字。** 一份日志样本里 25,976 个不同 IP 就是全部故事,而我是在看完整条内存曲线之后才找到它。
|
||||
4. **怀疑容器,别怀疑服务器。** 「服务器内存不够」和「一台 64 GB 的机器上某个容器只有 512 MiB 上限」需要完全不同的应对,而后者你不去看那个上限就根本看不见。
|
||||
|
||||
## 结果
|
||||
## 结果 <a id="the-result"></a>
|
||||
|
||||
改动之后再没有出现 OOM 击杀,18 分钟后的峰值是 210 MB,而过去每一个周期都会摸到上限——四天里一直悄悄重启公网入口的那七次击杀,也从 dmesg 里消失了。爬虫洪水并没有停,所以我把这个失败形态记进了那套 stack 的运维笔记:**「容器意外停止」+ `exit 0` / `OOMKilled=false` 是一个会误导人的签名**,而在这类平台上,诚实的证据住在内核日志和 cgroup 的高水位里。
|
||||
@@ -3,6 +3,7 @@ title: "从一首歌到 4 分钟完整 MV:我如何用 Gemini、AI 生成与 F
|
||||
description: "基于《月牙湾》1080P 高清动漫 OP 制作实录:详解 AI 音乐重构、Gemini Argon 4 提示词分镜规划、文字生图与图生视频多次抽卡调优,以及 Filmora 剪辑与特效合成的真实生产实践。"
|
||||
pubDate: 2026-10-25
|
||||
category: case-studies
|
||||
stream: creative-lab
|
||||
tags: ["ai-video", "music-video", "gemini", "filmora", "face-swapping", "ai-music", "creative-workflows"]
|
||||
ogImage: "/og/zh-from-audio-to-a-4-minute-ai-music-video.jpg"
|
||||
banner: "/banners/from-audio-to-a-4-minute-ai-music-video.jpg"
|
||||
|
||||
@@ -3,6 +3,7 @@ title: "用 YuE2 BF16 生成完整长歌:突破时长限制与音频硬截断"
|
||||
description: "AI 音乐工具常在歌词中途戛然而止。本文详解如何利用 YuE2 BF16、295秒余量预留公式与本地 ComfyUI,成功批量跑出 60 首自然收尾的完整长歌全集。"
|
||||
pubDate: 2026-10-26
|
||||
category: tutorials
|
||||
stream: creative-lab
|
||||
tags: ["ai-music", "yue2", "comfyui", "audio-engineering", "subtitles", "python"]
|
||||
ogImage: "/og/zh-generating-full-length-songs-with-yue2-comfyui.jpg"
|
||||
banner: "/banners/generating-full-length-songs-with-yue2-comfyui.jpg"
|
||||
|
||||
@@ -3,6 +3,7 @@ title: "给没有时间戳的歌曲自动生成字幕"
|
||||
description: "AI 音乐工具只给你音频 —— 没有逐行时间,没有卡拉 OK。这是我给 18 首歌生成 LRC 与 SRT 字幕的完整流程,为什么单纯转写不行,以及让歌词框滚到底的两个 bug。"
|
||||
pubDate: 2026-10-20
|
||||
category: tutorials
|
||||
stream: creative-lab
|
||||
tags: ["subtitles", "lrc", "srt", "whisper", "forced-alignment", "ai-music", "python"]
|
||||
ogImage: "/og/zh-generating-subtitles-for-songs-without-timestamps.jpg"
|
||||
banner: "/banners/generating-subtitles-for-songs-without-timestamps.jpg"
|
||||
|
||||
@@ -4,6 +4,7 @@ description: '基于 Remotion、Whisper、Docker 与 Chrome DevTools Protocol
|
||||
pubDate: 2025-04-18
|
||||
updatedDate: 2026-10-22
|
||||
category: case-studies
|
||||
stream: creative-lab
|
||||
tags: ["remotion", "docker", "cdp", "youtube", "automation", "video-generation", "whisper"]
|
||||
ogImage: "/og/zh-how-i-built-an-automated-music-video-pipeline.jpg"
|
||||
banner: "/banners/how-i-built-an-automated-music-video-pipeline.jpg"
|
||||
|
||||
@@ -28,7 +28,7 @@ Digi Kedai 销售数字产品——在线课程、电子书、模板——每一
|
||||
|
||||
这篇讲的是它是怎么搭起来的——架构、LLM 接线,以及那些各自吃掉我一整个下午的 bug。
|
||||
|
||||
## 为什么企业需要一个这样的机器人
|
||||
## 为什么企业需要一个这样的机器人 <a id="why-a-business-needs-a-bot-like-this"></a>
|
||||
|
||||
讲架构之前,先说*为什么*。客服机器人不是噱头——它改变了小生意的经济学:
|
||||
|
||||
@@ -49,7 +49,7 @@ Digi Kedai 销售数字产品——在线课程、电子书、模板——每一
|
||||
- **LiteLLM**——一个位于真实模型之前的自托管网关,这样我可以不碰机器人代码就切换供应商或加故障转移。
|
||||
- **PostgreSQL**——对话与用户记忆存储,与我的 mem0 栈共用。
|
||||
|
||||
## 架构
|
||||
## 架构 <a id="the-architecture"></a>
|
||||
|
||||
```
|
||||
顾客 → Telegram/WhatsApp → Cloudflare 隧道 → bot.digikedai.com
|
||||
@@ -112,7 +112,7 @@ LLM 擅长开放式问题,却很不擅长*状态*。所以那些需要可靠
|
||||
- **在写通道适配器之前先定好 payload 契约。** WhatsApp 的 `m_text` bug 就来自我信任了一个没读过契约的自定义功能。
|
||||
- **把 webhook 超时当作一等架构**,而不是事后补丁——如果我在第一天就想到确认窗口,重投递循环本可以避免。
|
||||
|
||||
## 结果
|
||||
## 结果 <a id="the-result"></a>
|
||||
|
||||
现在 NAS 上的一个容器就能跨两个通道(Telegram + WhatsApp)解答顾客问题,按 SKU 或自然语言检索到正确商品,并端到端发放免费试用账号——还有一套约 175 个单元测试覆盖确定性流程、检索和 payload 契约。源码在
|
||||
[git.hoelee.com/hoelee/digikedai-bot](https://git.hoelee.com/hoelee/digikedai-bot)。
|
||||
|
||||
@@ -3,6 +3,7 @@ title: "我用 Suno AI 做出自己的歌"
|
||||
description: "自己写词、调风格提示词,用 Suno AI 做出七首原创歌曲——民谣、儿歌、动漫风心经。完整工作流 + 可直接播放的成品。"
|
||||
pubDate: 2026-09-11
|
||||
category: case-studies
|
||||
stream: creative-lab
|
||||
tags: [suno, ai-music, music, lyrics, prompting, ai]
|
||||
ogImage: /og/zh-how-i-made-my-own-songs-with-suno-ai.jpg
|
||||
banner: /banners/how-i-made-my-own-songs-with-suno-ai.jpg
|
||||
|
||||
@@ -3,6 +3,7 @@ title: "12GB 显卡跑本地 AI 视频:Wan 2.2 加 SeedVR2 的真实数据"
|
||||
description: "在 RTX 3060 上实测:Wan 2.2 TI2V-5B 生成、SeedVR2 放大、1080p 分辨率陷阱,以及那条让连续五次失败全部通过的命令。"
|
||||
pubDate: 2026-10-20
|
||||
category: ai
|
||||
stream: creative-lab
|
||||
tags: [ai-video, wan, comfyui, seedvr2, local-llm, gpu, cost]
|
||||
ogImage: /og/zh-running-ai-video-locally-on-a-12gb-gpu.jpg
|
||||
banner: /banners/running-ai-video-locally-on-a-12gb-gpu.jpg
|
||||
|
||||
@@ -3,6 +3,7 @@ title: "为什么我的 AI 歌曲总是丢结尾:在 12GB 显卡上跑 YuE2"
|
||||
description: "12 首中文歌时长全都恰好 240.000 秒,尾奏不见了。原因不在歌词 —— 是一道硬上限、一堵显存天花板,和一个不看 BPM 的规划器。"
|
||||
pubDate: 2026-10-20
|
||||
category: ai
|
||||
stream: creative-lab
|
||||
tags: ["yue2", "comfyui", "ai-music", "local-ai", "gpu", "vram", "mandarin"]
|
||||
ogImage: "/og/zh-yue2-on-a-12gb-gpu-songs-that-lost-their-endings.jpg"
|
||||
banner: "/banners/yue2-on-a-12gb-gpu-songs-that-lost-their-endings.jpg"
|
||||
|
||||
Reference in new issue
Block a user