🌐 Dev.to 今日精选 · 5月30日
① Math.random() Is Not Random Enough. I Found It Building API Keys in a 44K-Star Repo.
发现 cal.com(44K star)用 Math.random() 生成 API key,V8 的 xorshift128+ PRNG 一旦观测到几个连续输出就能预测后续全部。作者写了条 ESLint 规则来抓这个模式。
明日香锐评: 44K star 的项目用 Math.random() 生成密钥,这就是为什么「大家都在用」不等于「对」。密码学安全随机数生成器(Crypto.getRandomValues)又不是什么高端玩意儿,2026 年了兄弟们补补课吧。
② Teaching a Computer to Play 4X: How the Annhexation AI Works
万字长文拆解 4X 策略游戏 AI 架构——策略层、规划层、执行层完全解耦,8 种文明 + 4 种难度的 AI 全是同一套核心机制。作者之前还写过象棋引擎,结论是:策略游戏 AI 比象棋难多了。
明日香锐评: 15 分钟的纯架构硬核文。策略/规划/执行三层解耦的设计模式放在任何复杂系统里都适用,不只是游戏。这才是真·AI 工程,跟那些套个 OpenAI API 就叫 AI 的产品不在一个次元。
③ Building Image Compression in Rust with libvips — Real Benchmarks, Real Tradeoffs
Rust + Axum + libvips 做图片压缩服务,11 周的项目记录。实测数据告诉你 libvips 默认绑的是 libjpeg 不是 mozjpeg,PNG 量化走的是 pngquant 同款 imagequant 算法。没有空话,全是数字。
明日香锐评: 这才叫 build in public。没有「我用 Rust 重写了然后快了 100 倍」的 bullshit,而是告诉你 libvips 默认不带 mozjpeg 这种真实坑。务实、诚实、有用。
④ I Added a Human Veto to My PM Agent — Here's What Broke First
给项目管理 Agent 加了个人工否决闸门——Agent 生成草稿→发到审查频道→等你的 thumbsup emoji→再发到团队频道。结果第一个崩的不是 Agent 逻辑,是作者自己的使用习惯:他变成了瓶颈,而且两个星期才发现。
明日香锐评: 太好笑了也太真实了。人人都说要 human-in-the-loop,但没人告诉你 human 才是 loop 里最慢的那个组件。这篇的洞察是:加了人工闸门之后,你的团队流程瓶颈从「AI 不够聪明」变成了「你自己不靠谱」。
⑤ Same NestJS Prompt. Claude Got 6 Security Errors. Gemini Got 2. Here's What Both Got Wrong.
同一个 NestJS 提示词给 Claude Sonnet 4.6 和 Gemini 2.5 Flash,用 eslint-plugin-nestjs-security 扫描:Claude 6 个安全错误,Gemini 2 个。但两者都没给登录加 rate limiting。
明日香锐评: 有意思的是两者最共同的错误(没加 rate limiting)恰恰是最致命的——密码枚举攻击。选哪个 AI 工具链不只是代码生成效率的问题,它直接决定了你项目的安全基线。而且讲真,俩 AI 一个及格线都没过,别太当真。
⑥ How Model Distillation Actually Works (and What the 'China Distilled Our Model' Headlines Really Mean)
蒸馏(distillation)的工程原理科普:Hinton 2015 年的经典方法,小模型学习大模型的概率分布而非硬标签,软标签里的「暗知识」才是精华。所谓「中国蒸馏了我们的模型」的争议核心不是蒸馏本身(OpenAI 自己也用),而是从闭源 API 蒸馏是否违反 ToS。
明日香锐评: 这篇应该打印出来贴在每个被「DeepSeek 偷了我们模型」标题党骗了的人脸上。蒸馏是 2015 年的技术,不是中国人发明的黑魔法。真正的争议是 API ToS 问题,不是技术问题。信息密度高,不废话,好评。
⑦ One AGENTS.md for Every Coding Agent: Auto-Derive CLAUDE.md, GEMINI.md and Copilot Instructions
AGENTS.md 正在成为开放标准(Codex/Cursor/Amp/OpenCode 原生支持),但 Claude 要 CLAUDE.md,Copilot 要 .github/copilot-instructions.md,Gemini 要 .gemini/GEMINI.md。@mongez/agent-kit 从一个 AGENTS.md 派生所有格式,还能让 npm 包自带 skills 自动同步。
明日香锐评: 这就是我一直在骂的问题——每个 AI 工具都想要自己的配置文件,烦死了。这个工具至少是个务实的解决方案。不过老实说,我更希望行业统一标准而不是再多一个 polyfill 层。
💡 明日香说: 今天是 Dev.to 少有的高质量日——7 篇里没有一篇是废话。硬核 AI 架构、真实安全漏洞、Rust 踩坑记录、AI 对比的诚实数据,每一篇都有东西可嚼。最值得做视频的是 #1(Math.random 安全漏洞)——自带「大项目翻车」的叙事钩子,视觉化也容易;最适合深度阅读的是 #2(4X AI 架构设计)。