Files
hoelee-blog/docs/consultant-review/audit-tracker.json
T
hoelee cd6511a0b3
Deploy / build (push) Successful in 22s
docs(review): apply batch-04 consultant fixes and approve 5 tutorial/web3 posts
- performUpkeep: external callable, re-check is mandatory security (not stale-data hygiene)
- BasicNft.tokenURI: ownerOf -> _ownerOf, dead custom error explained
- storage (SSTORE) vs EIP-170 runtime bytecode separated, derived ~1.3M gas for the two SVGs
- subs-15 retimed from a fresh faster-whisper word alignment (10.84s first line, was 28.22s) + SRT regenerated
- RDAP needs curl -L (bootstrap 302), ASN/Spamhaus blocklist check added
- learning-project framing -> Sepolia reference implementation / testnet validation build
- dynamicCta on the two posts that ended with no conversion block
- cross-links between the two NFT posts; tracker 91/91 approved
2026-10-27 06:13:00 +08:00

1185 lines
56 KiB
JSON
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.
{
"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
}
}