May Reading List

Alex O'Callaghan

五月阅读清单

这是我本月读到的一些有趣内容的五月版,你也可以在这里阅读上个月的文章

又有 npm 软件包遭到入侵

又一个月过去了,又发生了更多供应链攻击(supply chain attacks)。多个TanStack 软件包遭到了入侵,攻击名为“Mini Shai-Hulud”。Tanner Linsley(坦纳·林斯利)分享了一篇详细的事后分析,介绍了攻击者如何通过 GitHub actions 配置漏洞发动攻击。之后,又有317 个 npm 软件包遭到入侵,攻击者使用了同一个凭据窃取脚本。该脚本会利用它找到的任何 npm 凭据,在软件包之间自我复制。

这再次有力地提醒我们,应当采取措施强化供应链安全。我们已经将所有项目升级到了最近发布的pnpm v11,它默认将 minimumReleaseAge 设置为 1 天。大多数此类攻击都会很快被发现,预留一定的缓冲时间应该有助于防范这些攻击。

出于类似的安全考虑,我本月还发现了Varlock,这是一个有趣的工具,可以让 agents 了解有哪些机密信息可用,同时阻止它们访问实际的机密值。确保机密信息不会以明文形式留在你的机器上,也有助于防范凭据窃取攻击,以免你真的拉取了这些软件包中的某一个。

模型训练与 Opus 4.8

Anthropic 发布了一篇博客文章,介绍其对齐训练方法(alignment training approaches)的变化,详细说明了根据伦理选择背后的原则和推理来训练 Claude,如何改善智能体对齐(agentic alignment)。这也让我思考,这种方法是否同样适用于我们创建的 skills:当 agents 遇到新情况时,仅仅列出一些期望行为的具体示例可能还不够。

OpenAI 发布了一篇有趣的文章,介绍“Where the goblins came from”。“nerdy”人格功能的训练无意中让生物隐喻获得了很高的奖励,以至于他们最终不得不添加一条系统提示,告诉模型不要谈论 goblins。

Anthropic 还在月底发布了Claude Opus 4.8,距离 4.7 发布仅一个多月。

使用 agents 构建软件

Addy Osmani(阿迪·奥斯马尼)发表了一篇文章,介绍长时间运行的 agents(long running agents)的不同策略,不过我仍然不相信这种策略适合编写生产代码。

Birgitta Böckeler(比尔吉塔·贝克勒尔)关于面向 coding agents 的可维护性传感器(Maintainability sensors)的文章,介绍了一些对于让 agents 实现自我纠正至关重要的防护机制和检查措施,值得一读。

我还读了 Helio Medeiros(赫利奥·梅代罗斯)关于使用 DORA 指标衡量 AI 采用影响的文章。这与我通过构建一个回顾性 agent,在 Mintel 系统化开展的工作方法类似。

有趣的思考

Mark Erikson(马克·埃里克森)分享了一篇长文,讲述了自己从怀疑、恐惧到采用 AI coding tools 的经历。

Tuhin Nair(图欣·奈尔)写了一篇关于高级开发者如何传达专业能力的文章。其中有一些关于工程师如何思考,以及如何向业务其他部门进行沟通的观点,我很赞同。文章推荐建立一个用于快速实验的“speed”系统,这个想法可能很有吸引力,但没有说明实践中如何为它设置足够的防护机制,也没有说明如何处理那个已经卖给客户的“speed”版本,以及这会带来多少额外工作。

Lalit Maganti(拉利特·马甘蒂)分享了一篇关于不要回答第一个问题的文章。我认为这对任何在平台团队工作,或为其他工程师构建工具的人来说都很有共鸣。

Web 平台与前端

Chrome 团队发布了一篇关于Declarative Partial Updates(声明式局部更新)的文章。该提案试图让乱序 HTML 流式传输和更高效的 HTML 插入成为 Web 平台的一部分。本质上是让islands architecture(岛屿架构)成为 Web 的一等公民。

Storybook 10.4 发布了。对我来说,最有趣的变化是新增了对TanStack React的一等支持。

Yangshun Tay(杨顺·泰)撰文介绍前端开发正在发生怎样的变化,并建议前端开发者应该将学习和发展重点放在哪里。

我还发现了D2。我一直在用Mermaid为博客绘制图表,但在自定义样式方面遇到了一些问题。D2 看起来是一个功能强大的替代方案,我很想试试。

有趣的技术文章

How 2004 RuneScape fit a multiplayer RPG into 56k dial-up深入介绍了 2004 年的 RuneScape 客户端如何在浏览器中的 Java applet 里实现高效的客户端-服务器通信。这篇文章很有意思;RuneScape 是我早期的游戏记忆之一,也让我第一次认识到 Web 可以有多么强大。

Netflix technology blog 发布了一篇关于构建实时服务地图的文章。它采用的方法很有意思,尽管技术实现部分比较简略,而且明显有不少 AI 生成的内容。这让我很有共鸣,因为我正在尝试让 agents 能够跨系统进行遍历,并逐渐意识到,有多少跨系统依赖没有在任何地方得到清晰记录,以及有多少这类知识只存在于人们的脑中。

最后是 Google 博客上的一篇短文,介绍如何为代码审查回复补充上下文。文章提供了一些非常有帮助的指导,说明应该如何回应代码审查反馈,并交代你是如何以及为什么处理这些反馈的。

原文由 Alex O'Callaghan 发布

本文章由 gpt-5.6-luna 进行翻译