
























欢迎阅读 Agili 的 Hacker Podcast。今天我们为你整理了近期技术社区的热点,涵盖云服务商的可靠性风波、代码开发的安全与规范、数据新闻的归档整理,以及一项经典音乐技术的诞生故事。
云托管平台 Railway 遭遇了持续约 8 小时的全平台服务中断。事故起因是 Google Cloud Platform(谷歌云平台,以下简称 GCP)的自动化安全系统错误地将 Railway 的生产账户判定为挂起状态。这导致其部署在 GCP 上的仪表盘、API 和网络基础设施瞬间离线。由于其边缘代理需要向 GCP 上的控制平面请求路由数据,本地缓存失效后,位于其他云厂商上的备份业务也无法解析,引发了全网服务不可用。
这一事件在技术社区引发了广泛讨论。用户指出,即便企业拥有专属客户经理和正式合同,大厂的自动化清理机制仍可能绕过人工沟通直接停用服务。这让人联想到此前 GCP 意外删除 UniSuper 养老基金数据的事件,凸显了公有云自动化缺乏安全缓冲的问题。也有受影响的客户反馈,在官方宣布故障解决后,部分应用仍需手动重新部署才能恢复。
为了避免同类事故再次发生,Railway 正在着手修改网络架构。平台计划将数据库分片进一步扩展到 AWS(亚马逊云服务)和自建机房,彻底摆脱数据层对单一云厂商控制平面的依赖。未来,GCP 将仅作为备用和灾备资源,不再位于核心路由的主路径之上。
GitHub 证实其内部部分代码仓库被未经授权访问,攻击者声称窃取了约 3800 个仓库,这一数据与 GitHub 目前的调查结果吻合。漏洞源于一名员工的设备安装了恶意的 VS Code(Visual Studio Code,微软开发的轻量级代码编辑器)插件。攻击者借此窃取了开发人员机器上的私有密钥和安全令牌,由于克隆操作通常不需要二次验证,攻击者得以直接下载内部仓库。
开发者社区指出,这起事件暴露出微软自身生态的闭环安全漏洞:员工在微软设备上使用微软的编辑器,并安装了官方插件市场中的恶意插件,却依然被黑客攻破。社区长期呼吁整治插件市场中的恶意软件,但安全隐患始终未能根除。
为降低风险,安全专家建议开发者关闭 VS Code 插件的自动更新功能,并使用静态分析工具检测工作流漏洞。部分团队在讨论中提到,他们已开始转向自托管的开源代码托管平台 Forgejo,以规避第三方供应链的依赖风险。
在 C 语言中,完全避免未定义行为(Undefined Behavior,简称 UB)非常困难。编译器的代码优化是基于“程序员编写的代码完全合法”这一假设进行的。如果代码包含 UB,编译器在生成机器码时就不会为这些状况编写处理逻辑,甚至会直接优化掉后续的安全检查,这往往会导致程序在编译器版本更新后出现逻辑错误。
内存对齐问题和变量求值顺序都可能触发 UB。例如,仅仅是创建一个未对准类型大小的指针,无需解引用即构成了 UB;而在输出中同时使用 volatile(易失性)变量,也会因为参数求值顺序无序而导致未定义行为。
由于 UB 规则繁杂,仅凭人类程序员的记忆很难完全规避。研究表明,大型语言模型(LLM)在静态代码分析中表现出色,能准确找出经典工具中的未定义行为。使用 AI 扫描配合资深工程师人工确认,正成为修复老旧代码库的有效方式。
数据记者本·威尔士建立了一个索引网站,整理了互联网档案馆(Internet Archive)中保存的 2.1 万个 FiveThirtyEight 网页链接。此前,该网站的所有者迪士尼在未作预警的情况下下架了该网站自 2008 年以来的所有历史文章。
网站创始人内特·希尔弗透露,他曾尝试向迪士尼回购这些文章的知识产权,但遭到拒绝,这导致团队数十万工时的劳动成果无法直接访问。目前在归档版本中,部分需要后台资产支持的交互式数据可视化图表已无法正常运行。
社区用户认为,FiveThirtyEight 的下架是高水平数据新闻的损失。虽然其预测模型在单次政治事件中存在争议,但其在多次选举和体育赛事中的概率校准度(指预测概率与实际发生频率的一致性)依然得到了专业人士的认可。
开发者开源了工具库 Forge,旨在通过引入 Guardrails(安全护栏,指限制和引导模型输出的规则机制)来提高 8B(80 亿参数)级别本地大模型执行任务的准确率。Forge 在底层的工具调用中进行格式拦截和修复,将非标准格式自动重构为规范的 JSON 格式。
当大模型出现参数缺失或调用错误时,Forge 会在上下文历史中插入 Retry nudges(重试微调提示),引导大模型在下一轮中自行修复。虽然多次尝试会拉长运行总时间,但 Python 封装层的验证逻辑仅增加数毫秒的延迟,并不明显。
社区普遍认为,给小型本地大模型配备合适的外壳是降低生产成本的方案。不过 Forge 主要解决的是格式规范等可靠性问题,如果模型输出的是语义错误,仍需要工作流层面的高阶校验。
日本全国约有 43% 的人口经历着花粉症,这源于 20 世纪 50 年代日本政府的一项植树计划。为了防止土壤侵蚀和提供建材,政府大量种植了生长迅速的日本柳杉和日本扁柏,这些人工林如今占国土面积的五分之一,并在成熟期释放出大量花粉。
原本计划定期砍伐的人工林因 60 年代后期低价进口木材流入而遭到闲置。全球变暖和城市空气污染与花粉结合,进一步加剧了居民的过敏反应。
日本政府已将花粉过敏宣布为国家问题,并计划通过征收森林环境税来支持林业改造,逐步用低花粉树苗替换老旧树木。部分地方政府如神户市,已开始将人工针叶林改造为天然阔叶林,并尝试使用舌下免疫治疗(通过舌下含服逐渐增加剂量的过敏原提取物来脱敏)等手段帮助患者脱敏。
1979 年,录音工程师 Hugh Padgham 在使用 SSL 调音台录制鼓点时,意外发现通过将对讲麦克风的信号送回调音台并加上噪声门,可以瞬间切断混响的余音。这种处理方式创造了 80 年代流行音乐中干脆、有力的标志性鼓声。
此后,数字混响器推出了“非线性”预设,进一步简化了这一效果的制作。门限混响与扩展门的结合,让真实鼓声在保持整齐质感的同时,避免了早期鼓机的机械单调感。
虽然门限混响在 90 年代因审美转向干燥鼓声而淡出,但近年来这一技术在流行乐制作中重新流行,被多位知名歌手的唱片所采用。
瑞士云服务商 Infomaniak 宣布将其多数表决权转让给新成立的瑞士公益基金会,使公司无法被外部资本收购。这一决定得到了创始人及员工股东的同意,旨在保证其独立性。
Infomaniak 的数据中心设在瑞士,采用自然空气冷却而不使用空调,服务器寿命长达 15 年,余热用于社区供暖。不过用户也指出,该平台在特定文件夹邮件的自动删除机制上缺乏文档说明,且主权 AI 服务不提供技术支持。
Mercury 是一种自举实现的逻辑与函数式编程语言,结合了声明式编程的清晰度与静态分析能力。该语言支持 C、C# 和 Java 等多种后端,近期增加了在 Windows ARM64 架构上使用 MSVC 编译器的支持。
Mercury 语言由墨尔本大学维护,并被用作教学工具。尽管该语言的正式发布频率不高,但其代码仓库依然保持着日常提交。实际工程中,知名 HTML 渲染器 Prince 就是基于 Mercury 开发的。
女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是莓莓。
男:大家好,我是阿哲。
女:阿哲,你听说了吗?GitHub 最近确认他们自己的内部代码仓库被黑客入侵了。原因听起来挺不可思议的,居然是因为一名员工的设备上安装了恶意的 VS Code 插件。
男:对,这次事件确实暴露出一些安全盲区。黑客组织 TeamPCP 使用了名为 Shai-Hulud (沙丘) 的恶意软件,通过恶意的 VS Code (Visual Studio Code,微软开发的轻量级代码编辑器) 插件,窃取了开发人员电脑上的私有密钥、安全令牌和环境变量。因为很多团队在执行 git clone (Git 克隆操作) 时是不需要二次验证的,黑客拿到这些密钥后,直接克隆了大约 3800 个内部仓库。
女:这听起来确实很讽刺。微软是 GitHub 的母公司,VS Code 是微软开发的,插件商店也是微软运营的,结果自家的工程师在自家的编辑器上装了恶意插件,导致代码库泄露。
男:社区里很多开发者也在讨论这个问题。VS Code 及其插件生态目前缺乏完善的权限控制系统,一个简单的视觉主题插件理论上也能获取系统权限并执行任意代码。现在有些团队建议关闭插件自动更新,或者用 zizmor (一种用于检测 GitHub Actions 工作流安全漏洞的静态分析工具) 来扫描漏洞。在包管理方面,可以设置 pnpm (一种高效的 Node 软件包管理器) 的 minimum-release-age (包发布的最小生存时间) 参数,来规避刚发布的供应链恶意包。
女:开发工具的安全链条确实需要多加小心。不过说到代码层面的安全,最近关于 C 和 C++ 中未定义行为,也就是 UB (Undefined Behavior,未定义行为) 的讨论也特别火。阿哲,写 C/C++ 真的就这么容易踩坑吗?
男:确实极其困难,即使是写了二三十年代码的老手也很难完全避免。很多人误解了 UB,以为是编译器故意使坏。其实它的本质是编译器在优化代码时,默认程序员写出的代码都是完全合法的。一旦你的代码里出现了标准认为不可能发生的状况,编译器就不会为它生成处理逻辑,结果就会产生各种奇怪的漏洞。
女:能给我们举个具体的例子吗?
男:比如内存对齐。当一个指针指向的内存地址不是它数据类型大小的整数倍时,就会触发未对准指针访问的 UB。在 x86 架构上,CPU 硬件通常会兼容解决;但在 SPARC 这种架构上,程序会直接崩溃。在 C 标准里,你光是创建这么一个未对准的指针,哪怕不读取它,就已经触发 UB 了。
女:这听起来防不胜防啊。
男:还有更隐蔽的。比如定义一个 volatile (易失性) 变量,然后在 printf 中同时传入它两次。因为 C 语言标准没有规定函数参数的求值顺序,这就导致两个无序的副作用作用在了同一个对象上,直接触发 UB。编译器在遇到 UB 时,还会做出很极端的优化。比如你先解引用了一个指针,后面又写了句代码检查它是否为空。编译器可能会想,既然前面都解引用了,那这个指针绝对不可能是空指针,于是直接把后面的空指针检查给删掉了。结果一旦真是空指针,程序就会在更新编译器版本后突然出现逻辑错误。
女:难怪现在大家越来越推崇 Rust 语言了,至少它在安全方面有硬性的编译器保证。不过面对这么多遗留的 C 代码,我们有什么好办法吗?
男:现在有人尝试用大语言模型来做静态代码缺陷检测。比如使用 LLM (Large Language Model,大语言模型) 对 OpenBSD 系统的经典工具 find 进行分析,就能准确找出好几处 UB,比如在检查进程等待函数返回值之前就读取了未初始化的变量。用大模型监督,再由资深工程师确认修复,是目前比较实用的办法。
女:既然聊到大模型在工程里的应用,我注意到最近有个叫 Forge (在 PyPI 上叫 forge-llm) 的开源库很火。它声称能把 8B (80 亿参数) 规模的本地小模型在执行 Agentic tasks (智能体任务) 时的准确率从 53% 提升到 99%。这是怎么做到的?
男:这是一个挺巧妙的底层拦截机制。我们在用小模型做智能体任务时,它们经常会因为格式写错、或者调用了不存在的工具导致整个任务中断。Forge 的做法是在底层拦截这些调用,提供 Rescue parsing (解析拯救) 和 Retry nudges (重试微调) 功能。比如小模型输出了非标准的格式,它能自动修复并打包成标准 JSON 格式。如果缺了参数,它会在上下文中注入一条结构化的提示,告诉模型错在哪里,有哪些可用工具,引导它在下一轮对话中自己纠错。
女:这就像是给刚上岗的新人配了一个非常有耐心的导师,每次他格式写错了,导师默默帮他改好,或者温柔地提醒他哪里没写对。
男:没错。而且这个库完全是 Python 写的轻量级判断逻辑,单次拦截增加的延迟只有几毫秒,相比大模型本身秒级的生成时间基本可以忽略。不过作者也承认,这只能解决格式和规范等机械性错误。如果模型输出了一个逻辑完全错误但格式完美的静默错误,这种底层的安全护栏就无能为力了。
女:确实,底层的逻辑严密性还是得靠语言和架构设计。说到逻辑,我最近看到 Mercury (一种逻辑/函数式编程语言) 的代码仓库依然保持着日常提交。虽然它在 2023 年后就没发过正式版,但它在学术界和一些特定领域还是很有生命力。
男:Mercury 确实很有意思,它把声明式编程和强大的静态分析结合在一起。像用于 HTML 文档排版的渲染器 Prince 就是用它开发的。它的更新节奏虽然慢,但对不需要频繁变动基础开发库的人来说,反而是件好事。
女:稳定的基础设施确实太重要了。前阵子云托管平台 Railway 发生了一次长达 8 小时的全平台中断,这在开发者社区里炸开了锅。听说是谷歌云的自动化系统误判,直接把 Railway 的生产账号给停用了?
男:对。这次事故起因是 GCP (谷歌云平台) 的自动化系统误判。虽然 Railway 在 AWS 和自建的物理机房里都部署了备份,但他们的 Edge Proxy (边缘代理) 需要向运行在 GCP 上的网络控制平面 API 请求路由数据。一旦本地路由缓存失效,哪怕其他云上的业务正常,路由也解析不了,直接导致全网不可访问,报了一堆 503 和 404 错误。
女:这就是典型的数据层和控制平面没有完全解耦啊。看来多云部署如果留了单点依赖,其实还是单点故障。
男:确实。而且 GCP 这种无预警的自动化封号,让很多企业用户感到不安。之前 2024 年还发生过因为配置参数留空,误删了澳大利亚养老基金 UniSuper 数据的事件。Railway 目前正在修改网络架构,把数据库分片扩展到 AWS 和自建机房,彻底摆脱数据层对单一云厂商控制平面的依赖。
女:这种把身家性命系在单一科技巨头身上的风险确实很大。这也解释了为什么瑞士的云服务商 Infomaniak 最近把多数表决权转让给了一个公益基金会,就是为了防止公司被外部资本收购,保持独立性。
男:很多用户就是冲着隐私和数据主权选择 Infomaniak 的。比如很多人在域名注册商 Gandi 被收购后,就把业务迁了过去。他们的机房都在瑞士境内,采用室外自然空气冷却,不使用机械空调。服务器能用 15 年,产生的余热还能给周边居民区供暖,非常环保。不过他们也有一些产品限制,比如系统会自动清理名为 Trash 文件夹里超过 30 天的邮件,而且他们提供的主权 AI (人工智能) 服务目前还不提供客户技术支持。
女:说到数据主权和独立性,最近迪士尼旗下的 ABC 新闻把著名的 FiveThirtyEight 数据新闻网站的历史文章全部下架了,这件事也引发了很大关注。
男:创始人内特·希尔弗说他曾经想买回这些文章的知识产权,但因为他公开批评过管理层,迪士尼拒绝了。数据记者本·威尔士专门建了一个索引网站,整理了档案馆保存的二万多个网页链接,才保住了这些凝聚了团队约 20 万工时的劳动成果。
女:数据新闻的归档真的挺难的。本·威尔士整理的归档里,很多复杂的交互式图表因为缺失了后台数据,已经无法正常运行了。
男:确实,数据新闻不仅仅是文字,那些可视化的模型和图表才是灵魂。虽然 FiveThirtyEight 曾在 2016 年大选预测中因为给出特朗普 30% 胜率饱受争议,但实际上它的预测模型在数千次事件中表现出的校准度是非常高的。它的消失,确实是高水平数据新闻领域的一大损失。
女:好了,聊了这么多技术话题,最后我们来聊个轻松点的话题。日本最近又到了春季花粉季,听日本的朋友说,今年因为气候变化,花粉季来得特别早。
男:日本的花粉症确实非常严重,大约 43% 的人口都有过敏症状。这其实是二战后的一项人工植树计划带来的后遗症。当时为了应对土壤侵蚀和木材短缺,日本政府大规模种植了生长迅速的日本柳杉和日本扁柏。结果后来进口木材变便宜了,这些人工林就被闲置下来。三十年后树木成熟,开始释放海量的花粉。
女:原来现在的健康危机是当年生态单一化种植埋下的种子。不过听说日本政府现在已经开始采取措施了?
男:对,日本政府从 2024 年开始征收森林环境税,计划在 30 年内将花粉量减少一半。一些地方政府比如神户市,正在把人工针叶林改造回天然阔叶林。科研人员也在测试舌下免疫治疗,甚至在研发能缓解过敏的基因编辑大米,希望能通过技术和林业改造来解决这个问题。
女:科技和林业的结合确实很有想象力。说到声音和环境,阿哲,你听流行音乐的时候,有没有注意到 80 年代的鼓声听起来特别有弹性、特别利落?
男:你说的是 Gated reverb (门限混响) 吧。这种声音在 80 年代可以说是风靡一时,它的发现纯属意外。1979 年,录音师 Hugh Padgham 和歌手 Peter Gabriel 还有鼓手 Phil Collins 在伦敦 Townhouse 录音室录音时,棚里装了全新的 SSL 4000 B 调音台。
女:听说这个调音台第一次把压缩器和噪声门集成到了每个通道上?
男:对。当时录音棚里挂着一支强力压缩的对讲麦克风方便沟通。Phil Collins 敲鼓的时候,声音通过这支麦克风传回控制室,混响特别大。Hugh 灵机一动,把这个信号接回调音台,并加上了噪声门。只要鼓手一停,噪声门瞬间把混响的尾音切断。这就是那种干净利落、又充满力量的鼓点来源。后来 Phil Collins 在那首著名的 In the Air Tonight 里大量使用了这个效果。
女:这种技术甚至影响了现代的音频分类器,为了防止模型在安静状态下识别出无意义的噪声,开发者也会在输入端加入类似的噪声门。
男:是的,科技和艺术的融合总是这么奇妙。到了 90 年代,大家又开始喜欢干燥的鼓声,这种门限混响就慢慢淡出了。不过近几年像 Taylor Swift 等人的流行乐制作里,这种复古的鼓点处理方式又回归了。
女:哈哈,流行真是一个轮回。那今天的节目就到这里啦。非常感谢大家的收听,如果你喜欢我们的节目,请记得使用泛用型播客客户端订阅我们,我们下期再见!
男:下期再见!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。