{ "adding-a-domain-to-someone-elses-mail-server": { "slug": "adding-a-domain-to-someone-elses-mail-server", "title": "Adding a Domain to Someone Else's Mail Server", "zh_title": "给别人家的邮件服务器加一个域名", "category": "notes", "pub_date": "2025-05-06", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 7886, "zh_chars": 3603 }, "adding-english-mode-to-a-chinese-only-web-app": { "slug": "adding-english-mode-to-a-chinese-only-web-app", "title": "No API for Browser Translation: Adding an English Mode to a Chinese-Only Web App", "zh_title": "浏览器翻译没有 API:我给一个纯中文网页应用加上了英文模式", "category": "engineering", "pub_date": "2025-06-11", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 11914, "zh_chars": 6253 }, "ai-furniture-compositing-with-flux-kontext": { "slug": "ai-furniture-compositing-with-flux-kontext", "title": "How I Built an AI Furniture Compositing Demo With FLUX.1 Kontext", "zh_title": "我如何用 FLUX.1 Kontext 打造 AI 家具合成演示", "category": "case-studies", "pub_date": "2026-09-11", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 12512, "zh_chars": 7237 }, "authentik-css-greater-than-bug": { "slug": "authentik-css-greater-than-bug", "title": "The Character That Silently Broke My authentik CSS", "zh_title": "一个字符让我的 authentik CSS 静默失效", "category": "devops", "pub_date": "2026-09-20", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 9317, "zh_chars": 5589 }, "authentik-forward-auth-gate-wasnt-live": { "slug": "authentik-forward-auth-gate-wasnt-live", "title": "The Forward-Auth Gate That Verified Perfectly — and Wasn't Live", "zh_title": "验证完全正确的 Forward-Auth 网关——其实并未上线", "category": "devops", "pub_date": "2026-08-12", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 16526, "zh_chars": 8746 }, "authentik-major-upgrade-gotchas": { "slug": "authentik-major-upgrade-gotchas", "title": "Authentik 2025.8 to 2026.8: The Breakable Parts Nobody Warns You About", "zh_title": "Authentik 从 2025.8 升级到 2026.8:那些没人提醒你会坏掉的部分", "category": "devops", "pub_date": "2026-09-09", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 11710, "zh_chars": 6147 }, "automating-cyberpanel-without-the-ui": { "slug": "automating-cyberpanel-without-the-ui", "title": "Automating CyberPanel Without the UI: Reverse-Engineering an Undocumented v2 API", "zh_title": "不用界面管理 CyberPanel:逆向一个没有文档的 v2 API", "category": "devops", "pub_date": "2026-09-09", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 8474, "zh_chars": 5205 }, "best-ai-video-generators-2026": { "slug": "best-ai-video-generators-2026", "title": "Best AI Video Generators in 2026: Free vs Paid, and My LTX-2.3 Test", "zh_title": "2026 年最佳 AI 视频生成器:免费与付费对比,以及我的 LTX-2.3 实测", "category": "ai", "pub_date": "2026-09-11", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 24245, "zh_chars": 12700 }, "calibrating-intel-quick-sync-hevc-quality": { "slug": "calibrating-intel-quick-sync-hevc-quality", "title": "Calibrating Intel Quick Sync HEVC: A Cliff at 28, and a Preset That Does Nothing", "zh_title": "校准 Intel Quick Sync HEVC:28 与 30 之间的悬崖,和一个毫无作用的 preset", "category": "tutorials", "pub_date": "2026-10-14", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 10968, "zh_chars": 5968 }, "chainlink-vrf-v2-lottery-contract": { "slug": "chainlink-vrf-v2-lottery-contract", "title": "An Automated Lottery Contract on Chainlink VRF v2.5 and Automation", "zh_title": "一个基于 Chainlink VRF v2.5 与 Automation 的自动化彩票合约", "category": "web3", "pub_date": "2024-12-10", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:11", "notes": "Batch-04 review: performUpkeep external-callable correction, _ownerOf dead-code fix, storage vs EIP-170 split, RDAP -L + ASN blocklist, subs-15 retimed from re-run ASR, cross-links, dynamicCta", "en_chars": 16252, "zh_chars": 9707 }, "debugging-remotion-video-jitter": { "slug": "debugging-remotion-video-jitter", "title": "Debugging Remotion Video Jitter: Why Bass Scaling Ruins Background Transitions", "zh_title": "排查 Remotion 视频抽搐:为什么在背景图挂载音频低频 Scale 会毁了转场", "category": "engineering", "pub_date": "2025-11-26", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 9836, "zh_chars": 5653 }, "docker-reported-exit-0-the-oom-killer-disagreed": { "slug": "docker-reported-exit-0-the-oom-killer-disagreed", "title": "Docker Reported Exit 0. The Kernel Had Already OOM-Killed It.", "zh_title": "Docker 报告退出码 0,内核却早已执行 OOM-Kill", "category": "devops", "pub_date": "2026-10-16", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 10200, "zh_chars": 5488 }, "does-hevc-actually-shrink-your-files": { "slug": "does-hevc-actually-shrink-your-files", "title": "Does Re-encoding to HEVC Actually Shrink Your Files? I Measured It.", "zh_title": "转成 HEVC 到底会不会让文件变小?我实测了", "category": "tutorials", "pub_date": "2026-10-08", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 8042, "zh_chars": 4159 }, "embedding-fonts-so-a-pdf-looks-the-same-everywhere": { "slug": "embedding-fonts-so-a-pdf-looks-the-same-everywhere", "title": "Embedding Fonts So a PDF Looks the Same on Every Machine", "zh_title": "把字体嵌进 PDF,让它在任何机器上都长一样", "category": "engineering", "pub_date": "2026-10-15", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 8591, "zh_chars": 3747 }, "every-player-stuttered-the-file-was-fine": { "slug": "every-player-stuttered-the-file-was-fine", "title": "Every Player Stuttered on the Same Video. The File Was Blameless.", "zh_title": "每个播放器都在同一个视频上卡顿,而文件本身是无辜的", "category": "devops", "pub_date": "2026-10-08", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 8459, "zh_chars": 4296 }, "five-step-ai-roadmap-what-i-actually-run": { "slug": "five-step-ai-roadmap-what-i-actually-run", "title": "The Five-Step AI Roadmap Everyone Shares — and What I Actually Run in Production", "zh_title": "全网都在转的 AI 五步学习路线 —— 我真正在生产里跑的是哪几步", "category": "ai", "pub_date": "2026-10-13", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 13155, "zh_chars": 5483 }, "from-audio-to-a-4-minute-ai-music-video": { "slug": "from-audio-to-a-4-minute-ai-music-video", "title": "From Audio to a 4-Minute Music Video: Orchestrating Gemini, AI Diffusion, and Filmora Editing", "zh_title": "从一首歌到 4 分钟完整 MV:我如何用 Gemini、AI 生成与 Filmora 剪辑串起全流程实操", "category": "case-studies", "pub_date": "2026-10-25", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 11027, "zh_chars": 5168 }, "fully-on-chain-svg-nfts": { "slug": "fully-on-chain-svg-nfts", "title": "Fully On-Chain SVG NFTs: Putting the Artwork Inside the Contract", "zh_title": "全链上 SVG NFT:把艺术作品放进合约里", "category": "web3", "pub_date": "2024-10-08", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:11", "notes": "Batch-04 review: performUpkeep external-callable correction, _ownerOf dead-code fix, storage vs EIP-170 split, RDAP -L + ASN blocklist, subs-15 retimed from re-run ASR, cross-links, dynamicCta", "en_chars": 16205, "zh_chars": 10281 }, "generating-full-length-songs-with-yue2-comfyui": { "slug": "generating-full-length-songs-with-yue2-comfyui", "title": "Generating Full-Length Songs with YuE2 BF16: Overcoming Duration Limits and Audio Truncation", "zh_title": "用 YuE2 BF16 生成完整长歌:突破时长限制与音频硬截断", "category": "tutorials", "pub_date": "2026-10-26", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 06:04", "notes": "第3批微调项落地并通过:时长校正283.1s/单调时间戳与防死锁/专业人设去二次元俚语/B2B转化增强", "en_chars": 134821, "zh_chars": 127730 }, "generating-subtitles-for-songs-without-timestamps": { "slug": "generating-subtitles-for-songs-without-timestamps", "title": "Generating Subtitles for Songs That Ship Without Timestamps", "zh_title": "给没有时间戳的歌曲自动生成字幕", "category": "tutorials", "pub_date": "2026-10-20", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:11", "notes": "Batch-04 review: performUpkeep external-callable correction, _ownerOf dead-code fix, storage vs EIP-170 split, RDAP -L + ASN blocklist, subs-15 retimed from re-run ASR, cross-links, dynamicCta", "en_chars": 47576, "zh_chars": 42677 }, "giving-ai-your-mouse-and-keyboard-safely": { "slug": "giving-ai-your-mouse-and-keyboard-safely", "title": "Giving AI Your Mouse and Keyboard: Safe Guardrails for Windows Desktop MCP", "zh_title": "把鼠标和键盘交给 AI 之前:Windows 桌面 MCP 的安全边界与实战防线", "category": "ai", "pub_date": "2025-10-22", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 5906, "zh_chars": 3149 }, "hardening-a-tor-onion-service": { "slug": "hardening-a-tor-onion-service", "title": "Hardening a Tor Onion Service: What Actually Matters", "zh_title": "加固 Tor 洋葱服务:真正重要的是什么", "category": "devops", "pub_date": "2025-12-10", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 14907, "zh_chars": 7041 }, "hello-world": { "slug": "hello-world", "title": "Hello, World — About This Blog", "zh_title": "你好,世界 —— 关于这个博客", "category": "notes", "pub_date": "2024-09-24", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 1938, "zh_chars": 1074 }, "how-i-built-an-automated-music-video-pipeline": { "slug": "how-i-built-an-automated-music-video-pipeline", "title": "How I Built an Automated Music Video Pipeline with Remotion and Dockerized YouTube CDP", "zh_title": "我是如何用 Remotion 与 Docker CDP 打造全自动 MV 生成与多语种油管发布流的", "category": "case-studies", "pub_date": "2025-04-18", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 9265, "zh_chars": 4931 }, "how-i-built-the-digikedai-telegram-bot": { "slug": "how-i-built-the-digikedai-telegram-bot", "title": "How I Built the DigiKedai Telegram AI Bot", "zh_title": "我是如何构建 DigiKedai Telegram AI 客服机器人的", "category": "case-studies", "pub_date": "2026-09-06", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 10719, "zh_chars": 5271 }, "how-i-host-this-blog": { "slug": "how-i-host-this-blog", "title": "How I Host This Blog: Astro, Gitea Actions, and Self-Hosted CI/CD", "zh_title": "我是如何托管这个博客的:Astro、Gitea Actions 与自托管 CI/CD", "category": "case-studies", "pub_date": "2026-09-04", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 5908, "zh_chars": 4145 }, "how-i-made-my-own-songs-with-suno-ai": { "slug": "how-i-made-my-own-songs-with-suno-ai", "title": "How I Made My Own Songs with Suno AI", "zh_title": "我用 Suno AI 做出自己的歌", "category": "case-studies", "pub_date": "2026-09-11", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 16935, "zh_chars": 11737 }, "how-i-vetted-20-vps-providers-with-parallel-subagents": { "slug": "how-i-vetted-20-vps-providers-with-parallel-subagents", "title": "How I Vetted 20 VPS Providers in Three Hours with Parallel Subagents", "zh_title": "如何用并行子代理在三小时内核查 20 家 VPS 服务商", "category": "case-studies", "pub_date": "2025-11-12", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 8593, "zh_chars": 3613 }, "how-to-verify-a-hosting-provider-before-you-buy": { "slug": "how-to-verify-a-hosting-provider-before-you-buy", "title": "How to Verify a Hosting Provider Before You Buy", "zh_title": "购买主机前,如何核实一家服务商的真实情况", "category": "tutorials", "pub_date": "2025-11-26", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:11", "notes": "Batch-04 review: performUpkeep external-callable correction, _ownerOf dead-code fix, storage vs EIP-170 split, RDAP -L + ASN blocklist, subs-15 retimed from re-run ASR, cross-links, dynamicCta", "en_chars": 7710, "zh_chars": 3405 }, "i-let-an-agent-manage-my-shopee-vouchers": { "slug": "i-let-an-agent-manage-my-shopee-vouchers", "title": "I Let an Agent Manage My Shopee Vouchers — And It Created One I Never Approved", "zh_title": "我让 AI 助手管我的 Shopee 优惠券 —— 它建了一张我没批准的券", "category": "ai", "pub_date": "2025-07-08", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 9981, "zh_chars": 4824 }, "it-reported-success-nothing-had-changed": { "slug": "it-reported-success-nothing-had-changed", "title": "It Reported Success. Nothing Had Changed.", "zh_title": "它报告了成功,可实际上什么都没变", "category": "devops", "pub_date": "2026-10-08", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 8349, "zh_chars": 3886 }, "jpa-version-field-lost-update": { "slug": "jpa-version-field-lost-update", "title": "The JPA Field That Turns a Silent Lost Update Into a 409", "zh_title": "那个把静默丢失更新变成 409 的 JPA 字段:@Version 乐观锁", "category": "engineering", "pub_date": "2026-08-19", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 12536, "zh_chars": 7506 }, "loop-engineering-without-a-coding-agent": { "slug": "loop-engineering-without-a-coding-agent", "title": "Loop Engineering Without a Coding Agent: The 11 Cron Jobs That Run My Infrastructure", "zh_title": "没有 Coding Agent 的 Loop Engineering:撑起我这套基础设施的 11 个定时任务", "category": "case-studies", "pub_date": "2026-10-01", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 14249, "zh_chars": 6609 }, "migrating-codeigniter-iis-to-openlitespeed": { "slug": "migrating-codeigniter-iis-to-openlitespeed", "title": "Migrating a CodeIgniter 4 App From IIS to OpenLiteSpeed", "zh_title": "把 CodeIgniter 4 应用从 IIS 迁移到 OpenLiteSpeed", "category": "engineering", "pub_date": "2026-09-27", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 14943, "zh_chars": 8425 }, "my-backup-was-using-someone-elses-api-quota": { "slug": "my-backup-was-using-someone-elses-api-quota", "title": "My Backup Was Crawling Because I Was Using Someone Else's API Quota", "zh_title": "我的备份爬得比爬虫还慢,因为我在用别人的 API 配额", "category": "notes", "pub_date": "2026-10-15", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 8572, "zh_chars": 4527 }, "n8n-v1-to-v2-upgrade-gotchas": { "slug": "n8n-v1-to-v2-upgrade-gotchas", "title": "Upgrading n8n v1 to v2: Seven Deprecations in One Log File", "zh_title": "n8n v1 升级到 v2:一个日志文件里的七项废弃警告", "category": "devops", "pub_date": "2026-09-18", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 12262, "zh_chars": 6712 }, "nocodb-sso-is-a-licensed-feature": { "slug": "nocodb-sso-is-a-licensed-feature", "title": "NocoDB SSO Is a Licensed Feature — and the Env Vars Won't Tell You", "zh_title": "NocoDB SSO 是授权功能:环境变量不会告诉你的事", "category": "notes", "pub_date": "2026-09-29", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 9937, "zh_chars": 5421 }, "one-hostname-public-tracker-sso-dashboard": { "slug": "one-hostname-public-tracker-sso-dashboard", "title": "One Hostname for a Public Tracker and an SSO-Gated Dashboard", "zh_title": "公开的埋点与要 SSO 的仪表盘,怎么共用一个域名", "category": "devops", "pub_date": "2026-09-30", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 14400, "zh_chars": 6837 }, "one-prometheus-for-unraid-synology-and-a-vps": { "slug": "one-prometheus-for-unraid-synology-and-a-vps", "title": "One Prometheus for unRaid, a Synology NAS, and a VPS: What I Got Wrong", "zh_title": "用一个 Prometheus 监控 unRaid、群晖 NAS 和 VPS:我做错的四件事", "category": "case-studies", "pub_date": "2026-07-29", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 8358, "zh_chars": 4690 }, "passbolt-hang-three-failure-modes": { "slug": "passbolt-hang-three-failure-modes", "title": "Passbolt UI Kept Hanging — Three Failure Modes From One Missing Config File", "zh_title": "Passbolt 界面反复卡死——一个缺失的配置文件引发的三种故障模式", "category": "devops", "pub_date": "2026-01-07", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 7864, "zh_chars": 4187 }, "patching-workbench-26-for-mariadb": { "slug": "patching-workbench-26-for-mariadb", "title": "When Your Database Client Lies to You: Patching Workbench 26 for MariaDB", "zh_title": "当数据库客户端对你撒谎:为 MariaDB 修补 Workbench 26", "category": "devops", "pub_date": "2026-09-19", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 15965, "zh_chars": 9501 }, "php2shell-patching-every-php-runtime-i-manage": { "slug": "php2shell-patching-every-php-runtime-i-manage", "title": "PHP2Shell: I Measured Every PHP Runtime I Manage. All of Them Were Vulnerable.", "zh_title": "PHP2Shell:我管的每台机器,PHP 运行时全都中了", "category": "devops", "pub_date": "2026-10-23", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 22354, "zh_chars": 12531 }, "plugging-windows-desktop-control-into-four-ai-agents": { "slug": "plugging-windows-desktop-control-into-four-ai-agents", "title": "Plugging Windows Desktop Control into Four AI Agents: Hermes, OpenCode, Claw, and Claude", "zh_title": "把 Windows 桌面控制接进 4 款 AI Agent:Hermes、OpenCode、Claw 与 Claude 的实战架构", "category": "ai", "pub_date": "2025-12-23", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 6554, "zh_chars": 5030 }, "putting-a-front-door-on-an-app-you-cant-modify": { "slug": "putting-a-front-door-on-an-app-you-cant-modify", "title": "Putting a Front Door on an App You Can't Modify", "zh_title": "给自己改不了源码的应用装一扇前门", "category": "devops", "pub_date": "2025-06-24", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 13927, "zh_chars": 7415 }, "read-only-nocodb-dashboard-for-a-remote-database": { "slug": "read-only-nocodb-dashboard-for-a-remote-database", "title": "A Read-Only NocoDB Dashboard for a Database on Another Machine", "zh_title": "给另一台机器上的数据库配一个 NocoDB 只读看板", "category": "devops", "pub_date": "2026-09-29", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 12009, "zh_chars": 6287 }, "reading-a-containers-own-api-docs": { "slug": "reading-a-containers-own-api-docs", "title": "Read a Container's Own API Docs Instead of the Vendor's", "zh_title": "与其看供应商文档,不如直接读容器自带的 API 文档", "category": "notes", "pub_date": "2025-10-01", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 8382, "zh_chars": 5489 }, "replacing-rdpguard-with-ipban": { "slug": "replacing-rdpguard-with-ipban", "title": "Replacing RDPGuard With IPBan: The Traps Nobody Documents", "zh_title": "用 IPBan 替换 RDPGuard:没人写出来的三个坑", "category": "devops", "pub_date": "2026-09-19", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 04:09", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/技术细节修补)", "en_chars": 13131, "zh_chars": 7795 }, "running-ai-video-locally-on-a-12gb-gpu": { "slug": "running-ai-video-locally-on-a-12gb-gpu", "title": "Running AI Video Locally on a 12 GB GPU: Real Numbers for Wan 2.2 and SeedVR2", "zh_title": "12GB 显卡跑本地 AI 视频:Wan 2.2 加 SeedVR2 的真实数据", "category": "ai", "pub_date": "2026-10-20", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 18508, "zh_chars": 12878 }, "running-production-infrastructure-solo": { "slug": "running-production-infrastructure-solo", "title": "Running Production Infrastructure Solo: 162 Containers Across Three Hosts", "zh_title": "一个人跑生产基础设施:三台主机、162 个容器", "category": "case-studies", "pub_date": "2026-10-06", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 7975, "zh_chars": 3722 }, "running-tts-as-a-service-with-token-sidecars": { "slug": "running-tts-as-a-service-with-token-sidecars", "title": "I Ran a Text-to-Speech Service for a Year on Two Cron Containers", "zh_title": "我用两个 Cron 容器跑了一年的语音合成服务", "category": "ai", "pub_date": "2026-09-18", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 14141, "zh_chars": 7929 }, "scraping-bot-walled-marketplace-warm-browser-session": { "slug": "scraping-bot-walled-marketplace-warm-browser-session", "title": "Scraping a Bot-Walled Marketplace With a Warm Browser Session", "zh_title": "用「热浏览器会话」爬取有反爬墙的电商网站", "category": "engineering", "pub_date": "2026-09-13", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 11313, "zh_chars": 5734 }, "self-healing-digital-goods-entitlements": { "slug": "self-healing-digital-goods-entitlements", "title": "Self-Healing Access Control for Digital Goods: NocoDB, n8n, and AList", "zh_title": "数字商品的自愈式访问控制:NocoDB、n8n 与 AList", "category": "case-studies", "pub_date": "2026-09-18", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 14765, "zh_chars": 6819 }, "self-hosted-speech-to-text-api": { "slug": "self-hosted-speech-to-text-api", "title": "Your Own Speech-to-Text Server: Faster Than Typing, Private by Default", "zh_title": "自建语音转文字服务:打字速度的 3 倍以上,而且数据不出内网", "category": "case-studies", "pub_date": "2026-09-19", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 14708, "zh_chars": 7794 }, "self-hosted-tts-cosyvoice2-n8n-gpu": { "slug": "self-hosted-tts-cosyvoice2-n8n-gpu", "title": "How I Replaced Cloud TTS with a Self-Hosted Neural Voice Stack on an RTX 3060", "zh_title": "从云端转本地:在 12GB 显卡与群晖 N8N 上搭建中英混读高保真 TTS 语音栈", "category": "case-studies", "pub_date": "2026-10-22", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 8913, "zh_chars": 4773 }, "self-hosting-mem0-memory-stack": { "slug": "self-hosting-mem0-memory-stack", "title": "How I Self-Hosted a Mem0 Memory Stack (So My AI Agent Remembers)", "zh_title": "我如何在私有存储节点上自托管 Mem0 记忆栈(让 AI 助手拥有持久记忆)", "category": "case-studies", "pub_date": "2026-09-16", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 8057, "zh_chars": 4849 }, "shipping-an-ai-photo-editor-as-a-wordpress-plugin": { "slug": "shipping-an-ai-photo-editor-as-a-wordpress-plugin", "title": "Shipping an AI Photo Editor as a WordPress Plugin: 22 Versions of Hard Lessons", "zh_title": "把 AI 修图工具做成 WordPress 插件:22 个版本换来的经验", "category": "case-studies", "pub_date": "2026-09-18", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 13879, "zh_chars": 6861 }, "slashing-agent-context-with-a-code-graph": { "slug": "slashing-agent-context-with-a-code-graph", "title": "Slashing Agent Context and Token Churn With a Code Graph", "zh_title": "别再把整个 Repo 喂给 Agent:用 Code Graph 斩断 Token 膨胀与遗忘陷阱", "category": "ai", "pub_date": "2026-04-28", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 8122, "zh_chars": 5040 }, "smartctl-exit-code-32-skips-the-disks-that-matter": { "slug": "smartctl-exit-code-32-skips-the-disks-that-matter", "title": "smartctl Exit Code 32: The Code That Skips the Disks You Care About", "zh_title": "smartctl 退出码 32:专门跳过你最该看的硬盘的那个“错误”", "category": "notes", "pub_date": "2026-04-14", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 5475, "zh_chars": 2881 }, "space-reclamation-wasnt-stuck-it-was-waiting": { "slug": "space-reclamation-wasnt-stuck-it-was-waiting", "title": "Space Reclamation Wasn't Stuck. It Was Waiting for Tomorrow at 09:29.", "zh_title": "空间回收没卡住,它只是在等明天早上 09:29", "category": "devops", "pub_date": "2026-10-14", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 6574, "zh_chars": 3505 }, "stop-writing-agent-prompts-for-deterministic-work": { "slug": "stop-writing-agent-prompts-for-deterministic-work", "title": "Stop Writing Agent Prompts for Deterministic Work", "zh_title": "确定性的活,别再用 Agent Prompt 去跑", "category": "notes", "pub_date": "2026-10-01", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 05:22", "notes": "外部顾问审阅通过并落地修改", "en_chars": 4951, "zh_chars": 2216 }, "syncing-a-self-improving-ai-agent-across-machines": { "slug": "syncing-a-self-improving-ai-agent-across-machines", "title": "Syncing a Self-Improving AI Agent Across Machines", "zh_title": "在多台机器之间同步一个会自我学习的 AI Agent", "category": "case-studies", "pub_date": "2026-02-18", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 04:22", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/架构蓝图对齐/排版折叠)", "en_chars": 8861, "zh_chars": 4541 }, "synology-api-401-with-the-correct-password": { "slug": "synology-api-401-with-the-correct-password", "title": "Why Your Synology API Login Returns 401 With the Correct Password", "zh_title": "密码正确,Synology API 登录却返回 401,问题出在哪", "category": "notes", "pub_date": "2025-09-10", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 5053, "zh_chars": 3063 }, "synology-spreadsheet-api-is-a-container": { "slug": "synology-spreadsheet-api-is-a-container", "title": "The Synology Spreadsheet API Is a Container, Not an API Endpoint", "zh_title": "Synology 电子表格 API 是一个容器,不是一个 API 端点", "category": "devops", "pub_date": "2025-08-20", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 16101, "zh_chars": 9200 }, "that-dying-ssd-was-just-a-bad-sata-cable": { "slug": "that-dying-ssd-was-just-a-bad-sata-cable", "title": "I Was About to RMA This SSD — the Fault Was a SATA Cable", "zh_title": "我差点把这颗 SSD 送修——真正坏的是 SATA 数据线", "category": "devops", "pub_date": "2026-09-16", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 7471, "zh_chars": 3940 }, "the-cause-was-trim-not-the-ssds": { "slug": "the-cause-was-trim-not-the-ssds", "title": "The Corruption Came Back on Different Drives — the Cause Was TRIM, Not the SSDs", "zh_title": "换了不同的硬盘,同样的损坏又来了——真凶是 TRIM,不是 SSD", "category": "devops", "pub_date": "2026-09-18", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 13042, "zh_chars": 7310 }, "the-nocodb-attachment-that-wouldnt-update": { "slug": "the-nocodb-attachment-that-wouldnt-update", "title": "The NocoDB Attachment That Wouldn't Update (and a Regex That Missed)", "zh_title": "NocoDB 附件字段怎么改都不生效,和一个漏网的正则", "category": "notes", "pub_date": "2026-02-04", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 3798, "zh_chars": 2312 }, "the-single-writer-rule-for-coding-agents": { "slug": "the-single-writer-rule-for-coding-agents", "title": "The Single-Writer Rule: Orchestrating Coding Agents Without Multi-Agent Chaos", "zh_title": "代码只让一个 AI 改:我是如何避开多 Agent 协同踩坑的「单写多审」架构", "category": "case-studies", "pub_date": "2026-08-26", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 13331, "zh_chars": 6954 }, "the-upstream-was-deleted-then-came-back-rewritten": { "slug": "the-upstream-was-deleted-then-came-back-rewritten", "title": "The Upstream Was Deleted, Then Came Back as a Rewrite", "zh_title": "上游被删了,然后带着一个重写版回来", "category": "devops", "pub_date": "2026-10-06", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 11636, "zh_chars": 5229 }, "two-ways-a-javascript-file-stops-working-and-looks-fine": { "slug": "two-ways-a-javascript-file-stops-working-and-looks-fine", "title": "Two Ways a JavaScript File Stops Working and Looks Fine", "zh_title": "JavaScript 文件静默失效的两种方式:而页面看上去一切正常", "category": "engineering", "pub_date": "2025-02-20", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 8293, "zh_chars": 3881 }, "unraid-stop-array-hangs-on-swapfile": { "slug": "unraid-stop-array-hangs-on-swapfile", "title": "Why Unraid Hangs When You Stop the Array With a Swapfile — and the Fix", "zh_title": "Unraid 停止阵列时卡死的真相:Swapfile 锁住挂载点 — 附修复方案", "category": "devops", "pub_date": "2026-09-15", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 10470, "zh_chars": 6376 }, "upgrading-codeigniter-46-to-47": { "slug": "upgrading-codeigniter-46-to-47", "title": "Upgrading CodeIgniter 4.6 to 4.7: The Breaking Changes the Guide Misses", "zh_title": "CodeIgniter 4.6 升级到 4.7:官方指南没说到的破坏性变更", "category": "notes", "pub_date": "2026-09-27", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 05:22", "notes": "外部顾问审阅通过并落地修改", "en_chars": 9469, "zh_chars": 5411 }, "uploading-large-videos-to-youtube-via-cdp": { "slug": "uploading-large-videos-to-youtube-via-cdp", "title": "Uploading 100MB+ Videos to YouTube via CDP: The Docker Archive Pattern", "zh_title": "用 CDP 自动化上传百兆视频到 YouTube:跨越 DevTools 内存墙的 Docker 归档法", "category": "devops", "pub_date": "2025-08-22", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 11267, "zh_chars": 7173 }, "using-chinese-llm-apis-from-malaysia": { "slug": "using-chinese-llm-apis-from-malaysia", "title": "Using Chinese LLM APIs From Malaysia: What Actually Works", "zh_title": "从马来西亚使用中国大模型 API:真正可行的方法", "category": "ai", "pub_date": "2026-09-11", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 03:00", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 7540, "zh_chars": 3536 }, "verifying-a-pdf-report-page-by-page": { "slug": "verifying-a-pdf-report-page-by-page", "title": "Verifying a 19-Page PDF Report Page by Page", "zh_title": "逐页验证一份 19 页的 PDF 报告", "category": "engineering", "pub_date": "2026-09-28", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 12525, "zh_chars": 6685 }, "vetting-an-open-source-dependency-before-you-bet-on-it": { "slug": "vetting-an-open-source-dependency-before-you-bet-on-it", "title": "How I Vet an Open-Source Dependency Before Betting On It", "zh_title": "如何在押注前验证一个开源依赖:我用的六项检查", "category": "devops", "pub_date": "2026-09-29", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 8512, "zh_chars": 4201 }, "when-smart-says-healthy-but-your-raid-is-corrupting-data": { "slug": "when-smart-says-healthy-but-your-raid-is-corrupting-data", "title": "When SMART Says Healthy and Your RAID Is Silently Corrupting Data", "zh_title": "SMART 显示健康,RAID 却在悄悄损坏数据", "category": "devops", "pub_date": "2026-09-16", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 14160, "zh_chars": 6246 }, "when-to-give-your-agent-physical-clicks": { "slug": "when-to-give-your-agent-physical-clicks", "title": "When to Give Your Agent Physical Clicks (And When to Never Touch Them)", "zh_title": "什么时候该让 AI 操控物理鼠标(以及什么时候绝对不要用)", "category": "case-studies", "pub_date": "2026-05-28", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 6882, "zh_chars": 3608 }, "why-500000-lines-of-commit-churn-only-left-230000-in-production": { "slug": "why-500000-lines-of-commit-churn-only-left-230000-in-production", "title": "I Committed 518,000 Lines in 30 Days. Production Kept 235,000.", "zh_title": "30 天提交 51.8 万行,生产环境只留下 23.5 万行", "category": "engineering", "pub_date": "2026-10-18", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 8949, "zh_chars": 4197 }, "why-chrome-forgets-its-tabs-in-a-container": { "slug": "why-chrome-forgets-its-tabs-in-a-container", "title": "Why Chrome Forgets Its Tabs in a Container — And How I Fixed It", "zh_title": "为什么容器里的 Chrome 会忘记标签页 —— 以及我是怎么修好的", "category": "devops", "pub_date": "2026-09-29", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 15430, "zh_chars": 9234 }, "why-i-built-a-video-knowledge-base": { "slug": "why-i-built-a-video-knowledge-base", "title": "Why I Built a Video Knowledge Base: Turning Saved Short Videos into Searchable Notes", "zh_title": "为什么我要做视频精读知识库:把收藏夹吃灰的短视频变成可检索笔记", "category": "case-studies", "pub_date": "2024-11-28", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 5770, "zh_chars": 2924 }, "why-i-still-bought-a-local-gpu": { "slug": "why-i-still-bought-a-local-gpu", "title": "Why I Still Bought a GPU to Run AI When Claude and GPT Are Obviously Stronger", "zh_title": "Claude 和 GPT 明明更强,我为什么还是买了 GPU 跑本地 AI", "category": "ai", "pub_date": "2026-09-21", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 11811, "zh_chars": 4924 }, "why-is-my-tts-model-repeating-percent": { "slug": "why-is-my-tts-model-repeating-percent", "title": "Why Is My TTS Model Repeating \\\"Percent\\\"? The URL-Encoding Trap in Speech Pipelines", "zh_title": "为什么本地语音合成一直在念 “Percent”?语音管线里的 URL 编码与沙盒避坑记", "category": "notes", "pub_date": "2026-10-22", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 7728, "zh_chars": 4968 }, "why-multi-agent-coding-fails": { "slug": "why-multi-agent-coding-fails", "title": "Why Multi-Agent Coding Fails: The Telephone Game and Architectural Drift", "zh_title": "为什么多个 AI 一起写代码总会烂尾?传话失真与隐式决策困境", "category": "notes", "pub_date": "2025-07-29", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 6364, "zh_chars": 3353 }, "why-my-on-chain-nft-art-changed-on-windows": { "slug": "why-my-on-chain-nft-art-changed-on-windows", "title": "Why My On-Chain NFT Art Changed When I Cloned It on Windows", "zh_title": "为什么在 Windows 上克隆后,我的链上 NFT 图像变了", "category": "web3", "pub_date": "2026-08-19", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:11", "notes": "Batch-04 review: performUpkeep external-callable correction, _ownerOf dead-code fix, storage vs EIP-170 split, RDAP -L + ASN blocklist, subs-15 retimed from re-run ASR, cross-links, dynamicCta", "en_chars": 8423, "zh_chars": 4585 }, "why-telegram-bot-notifications-die": { "slug": "why-telegram-bot-notifications-die", "title": "Why Telegram Bot Notifications Die: IPv6, DNS, and a 400 That Took a Day", "zh_title": "Telegram 机器人通知为什么发不出去:IPv6、DNS 和一个追查了一整天的 400", "category": "devops", "pub_date": "2026-03-25", "status": "approved", "batch_id": "Batch-02", "approved_at": "2026-10-27 06:10", "notes": "顾问二次审阅(其编号Batch-05)已落地:修正Multipart join原理解释与源码转义、Btrfs csum字段位置与字节序、losetup -p误用、UDMA_CRC机制、CONFIG_CFS_BANDWIDTH、GiB/h算术;补齐blueprint与机型待确认。详见 reports/report-batch-05-rereview.md", "en_chars": 10753, "zh_chars": 6005 }, "why-your-cdp-clicks-silently-fail": { "slug": "why-your-cdp-clicks-silently-fail", "title": "Why Your CDP Clicks Silently Fail: Smooth Scroll, Minimised Windows, and JS-Dispatched Events", "zh_title": "为什么你的 CDP 点击会静默失效:平滑滚动、最小化窗口与 JS 派发事件", "category": "devops", "pub_date": "2025-03-19", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 8054, "zh_chars": 4536 }, "why-your-grafana-dashboard-shows-no-data": { "slug": "why-your-grafana-dashboard-shows-no-data", "title": "Why Your Grafana Dashboard Shows No Data (When Prometheus Is Fine)", "zh_title": "Prometheus 明明有数据,Grafana 面板却全是 No data 的原因", "category": "devops", "pub_date": "2026-05-17", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 7456, "zh_chars": 3919 }, "why-your-headless-browser-cant-scrape-everything": { "slug": "why-your-headless-browser-cant-scrape-everything", "title": "Why Your Headless Browser Can't Scrape Everything", "zh_title": "为什么你的无头浏览器不是万能爬虫", "category": "case-studies", "pub_date": "2026-01-21", "status": "approved", "batch_id": "Batch-03", "approved_at": "2026-10-27 03:49", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见", "en_chars": 8076, "zh_chars": 3792 }, "why-your-windows-mcp-calls-silently-fail": { "slug": "why-your-windows-mcp-calls-silently-fail", "title": "Why Your Windows Desktop MCP Calls Silently Fail: Taming the 10-Second Idle Gate", "zh_title": "为什么你的 Windows 桌面 MCP 调用会静默失败:攻破 10 秒空闲门禁与避坑实录", "category": "notes", "pub_date": "2026-03-12", "status": "approved", "batch_id": "Batch-04", "approved_at": "2026-10-27 05:21", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含数字矛盾/OPSEC脱敏/双语CTA/排版折叠/禁用词清理)", "en_chars": 5663, "zh_chars": 3857 }, "your-disk-full-alert-is-lying": { "slug": "your-disk-full-alert-is-lying", "title": "Your Disk-Full Alert Is Lying: Stop Alerting on Percentages", "zh_title": "你的“磁盘将满”告警在说谎:别再按百分比告警", "category": "devops", "pub_date": "2026-06-24", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 06:09", "notes": "第一批外部顾问审阅完成,已全量采纳并落地修改(含数字矛盾纠正/OPSEC与禁用词清理/并发异常409映射/双语CTA补齐)", "en_chars": 6139, "zh_chars": 3090 }, "yue2-on-a-12gb-gpu-songs-that-lost-their-endings": { "slug": "yue2-on-a-12gb-gpu-songs-that-lost-their-endings", "title": "Why My AI Songs Kept Losing Their Endings: Running YuE2 on a 12 GB GPU", "zh_title": "为什么我的 AI 歌曲总是丢结尾:在 12GB 显卡上跑 YuE2", "category": "ai", "pub_date": "2026-10-20", "status": "approved", "batch_id": "Batch-01", "approved_at": "2026-10-27 05:26", "notes": "外部顾问审阅完成,已采纳并落地全量修改意见(含GPU/Token成本算账、Gemini净化、双语CTA、代码折叠与简繁转换)", "en_chars": 28955, "zh_chars": 24414 } }