今日 Hacker News 话题从一份引发争议的 Web 规范清单开始,延伸到格密码入门、视频编码标准 AV2 的发布,也有一款专为小说写作设计的编辑器,以及一个用树莓派监听窗外鸟鸣的个人项目。
一份引发两极讨论的网站规范清单
Joost de Valk(前 Yoast SEO 创始人)发布了《The Website Specification》,一份覆盖 128 个主题的网站技术规范清单。内容按 10 个类别组织:基础、SEO、可访问性、安全、性能、隐私、弹性和国际化等,每个条目都链接回 WHATWG、W3C 或 IETF RFC 等标准,并标注“必须”“推荐”“可选”。
可编程的规范文档
这个规范网站本身也可编程。提供了 MCP 服务器和 Agent Skill,方便 AI 代理直接查询。每个页面可通过 /llms.txt 或 Accept: text/markdown 获取 Markdown 版本。支持者认为它是一个实用的检查清单,几位开发者表示已经用它给自己网站补上了几个之前不知道的标签。
AI 生成内容争议
质疑集中在两点。Git 提交记录显示作者使用 Claude 生成内容,行文带有明显的 AI 特征——重复句式、过度分段。有评论直接称之为“slop”,并指出作者靠 SEO 广告业务赚钱,现在又瞄准 AI 代理。
Agent Readiness 是“胶带”还是刚需
AI 代理解析 HTML 成本高、容易出错,所以规范引入了 llms.txt 等特殊接口。批评者认为这只是一时的“胶带”方案——模型能力提升后,这些接口要么被滥用(向代理展示与人类不同的内容),要么被直接忽略。目前 llms.txt 被 0 个主流 AI 提供商支持。有人提出更好的方向:与其另造 llms.txt,不如鼓励网站用语义化 HTML,让代理像浏览器阅读器模式那样提取正文。
清单可能助长教条主义
一位用户指出,128 项检查清单可能被人当作绝对标准,在 Jira 里要求全部满足,而实际上很多内容要根据网站目标取舍。评论区还延续了对现代 Web 复杂性的批判——回想 2000 年代的纯 HTML 表格布局,对比今天一个下拉菜单要发 10 次 fetch 请求驱动整个 React 应用。
格密码入门:抵抗量子计算攻击的数学基础
2024 年 8 月,NIST 发布了抗量子计算机攻击的密钥封装和数字签名标准,Kyber 和 Dilithium 是预计部署最广的两个方案。它们的核心安全性基于格上的计算问题。
格的基本概念
格是整数线性组合构成的离散加法子群。基向量越短、越正交,解决问题就越容易。最短向量问题(SVP)的已知最快经典算法需要指数时间,量子算法稍快。Minkowski 定理给出了最短向量长度的上界。
LWE 和 SIS 问题
SIS 问题要求在一个随机矩阵的零空间中找一个非零短向量。Ajtai 在 1996 年证明了 SIS 的平均情况困难性等价于最坏情况下的近似问题。LWE 问题则要求从带噪声的线性方程组中恢复秘密向量 s,Regev 在 2005 年建立了类似的量子归约。
攻击与研究空间
对 LWE 有三种典型攻击:原始攻击将 LWE 转化为有界距离解码问题;对偶攻击借助 SIS 求解器来区分实例;Arora-Ge 攻击通过线性化处理,但所需样本量极大,对 Kyber/Dilithium 无效。Module 变体将整数域替换为多项式环,使单次操作可处理多个比特,这是 Kyber/Dilithium 高效实现的关键。
Hacker News 评论指出,格密码与纠错码非常接近,或许存在尚未发现的归约关系,暗示该领域仍有交叉研究的空间。
Shantell Sans:从手写到开源可变字体
Shantell Sans 是一款基于艺术家 Shantell Martin 手写体的开源可变字体,2023 年通过 Google Fonts 发布。字体包含 Weight、Italic、Informality、Bounce 和 Spacing 五个可变轴,可以调节字形从规整到活泼、从扁平到弹跳的效果。
设计理念与工艺
Martin 从小有阅读障碍,她想创造一款“好玩、专业、可用”的字体,让对文字有距离感的人也能轻松读写。设计团队以 Comic Sans 为灵感,提取它“亲切易读”的特质,但做了全新设计。团队保留了 Martin 用记号笔手写的笔触特征(如单层的 a 和 g),同时调整了比例和间距,使其与 Roboto 等日常字体兼容。
社区反响
Hacker News 社区评价积极。一位用户说 Formality 滑块是“最近见过最酷的可变轴用法”。另一位指出“与 Comic Sans 的关联很明显,但 Shantell Sans 走得更远,更美”。一位阅读障碍患者的女儿说它比 Roboto 更易读。字体以 OFL 开源许可发布,目前 tldraw 已将其设为主要字体。
Racket v9.2 发布
Racket v9.2 版本发布。一位社区成员描述,Racket 会“钻进你脑子里”,学会之后看其他语言都只是语法变体——Racket 的哲学是让语言适应问题,不是反过来。
可能影响现有代码的改变
match 模式匹配现在会检查非线性模式,混用 ... 和平铺使用时会报错。Typed Racket 修正了 asin 和 acos 的类型定义,之前返回复数时会产生不健全的结果,现在编译期就会报错。
其他重要特性
新增 Unicode 17.0 支持、内核语法 #%foreign-inline、更静态的 "ffi2" 外部接口。Typed Racket 多态结构体类型现在打印时会显示类型参数。Scribble 文档的默认缩放比例改为 1.0。边注在窄屏下默认内联显示。
真实使用场景
有人用 Racket 试验神经网络的非常规结构(如用平衡三进制浮点数替换 IEEE 754),说“在 Racket 里花了 20 分钟做的事,换成 C++ 不知道要怎么搞”。初学者推荐读《How to Design Programs》这本书,很多人在初学阶段通过它建立了系统的问题解决方法。
伦敦免费屋顶露台实地探访
一位本地博主走访了伦敦金融城几个不需要预约的屋顶露台,记录下真实体验。这些露台是开发商为了获得规划许可而加入的免费公共空间。
值得去的两个
Fen Court 的 The Garden at 120 是金融城最大的屋顶花园,位于 15 楼,2019 年开放。360 度全景视野,能看到塔桥、伦敦塔、金丝雀码头和伦敦眼。博主推荐没去过的人值得一试。One New Change 购物中心的屋顶露台在 6 楼,紧邻圣保罗大教堂,穹顶被完美框住,适合短暂停留。
令人沮丧的探访
泰特现代美术馆的 Level 10 观景台因能直接看到隔壁公寓的室内,居民起诉并胜诉。英国最高法院判定持续的视觉侵扰构成妨害,现在所有外部平台门都锁着,安保专门盯着游客。Holborn 的 The Post Building 需要出示带照片的身份证件并登记全名,博主去时被“必要的维护工作”为由拒之门外,他怀疑这是开发商满足规划要求却不希望有人参观的借口。
一些评论指出,这种现象在伦敦并不罕见——私有公共空间通过“提前预约”“身份核验”等方式事实上阻止公众进入。也有伦敦本地人说从未去过这些地方,因为金融城主要是上班的地方。
Roto 脚本语言一周年
Roto 是一个 JIT 编译的静态类型脚本语言,与 Rust 紧密集成。过去一年发布了 6 个版本,外部项目 Iocaine 已采用它作为脚本语言。
语言进展
新增 while、for 循环、f-string、enum、List 类型和复合赋值运算符。List 可以在 Rust 和 Roto 之间几乎零成本传递。语法向 Rust 靠拢,但不会成为 Rust 的子集,因为计划加入字符串格式化等特性。注册 Rust 类型的方式被 library! 宏取代。
Iocaine 的实战验证
Iocaine 是一个脚本化代理,用于防御 AI 爬虫并向它们返回垃圾数据。它支持 Roto、Lua 和 Fennel,作者说 Roto 在三种语言中性能最好。简单运算快于 Lua,但在列表操作上因内部 mutex 和频繁 Rust 调用而慢 21 倍。优化工作尚未深入。
定位与选择理由
用户选择 Roto 代替 Rust 的主要原因是热重载、更简单的语法、无需完整 Rust 工具链。配置与业务逻辑分离的场景尤其适合。未来计划添加 hashmap、用户定义状态、泛型函数和 LSP 支持。
AV2 视频编码规范 v1.0 发布
AOMedia 发布了 AV2 视频编码规范的 v1.0.0 最终版本。AV2 在 AV1 基础上将压缩效率提升约 20%–30%,新增对多流的原生支持,可用于 VR/AR 和透明通道合成。
从标准到普及的时间线
参考软件(AVM)可在 GitHub 获取,但编码速度极慢,约 1fps。生产级编码器需要时间开发,AV2 硬件加速芯片预计 2028 年左右出现,大规模普及可能要等到 2030 年。对 YouTube 这类平台,可以先通过服务器端软件编码为 AV2,用户端只需硬件解码。dav1d 等高效解码器在老旧 CPU 上也能流畅播放 1080p AV1,AV2 的解码性能可能不会成为主要瓶颈。
专利与竞争态势
Dolby 已就 AV1 向 Snapchat 提起诉讼,但 AOMedia 成员公司拥有庞大专利库和防御基金。AV1 发布 8 年来尚未出现实质性专利索赔,而 H.265/HEVC 的专利池混乱且收费高昂。AV2 的效率提升也会影响图像格式 AVIF,但它面临 JPEG XL 的竞争——后者已在浏览器端重新获得支持。
对普通用户和终端设备而言,需要等待硬件加速到位才能受益。
Cheese Paper:专为小说写作设计的编辑器
Cheese Paper 把每个场景保存为独立的 Markdown 文件,头部用 TOML 存放笔记和摘要。这些文件可在任何文本编辑器里修改,支持文件同步工具,编辑器本身完全离线运行,不发送遥测数据。
核心功能
左侧按文件夹和场景组织,右侧主编辑区写正文,侧边栏展示该场景的笔记和摘要。内置角色管理和世界观构建模块,可单独为每个角色填写外貌、性格等笔记。导出功能可将笔记汇总为一个文件,或把正文合并成一份 Markdown,方便用 Pandoc 转换成 epub、docx 或 PDF。它附带一个随机按钮,能毫无章法地生成所有颜色——作者表示自己真会带着这种糟糕的配色写故事。
社区反馈
有人质疑为什么不直接用 org-mode,回应是 Emacs 学习曲线太长。也有用户抱怨界面太紧凑,另一些人则认为紧凑是为了一屏内显示更多内容。隐私策略获得好评:“我们不想要你的数据,请你自己留着。”项目不接受 AI 生成的贡献。
用树莓派和 AI 监听窗外鸟鸣
Teddy Warner 在公寓阳台上粘了一支 USB 麦克风,连上树莓派,跑起 Cornell 的 BirdNET 声学分类器,想知道窗外飞过了什么鸟。项目名 Avian Visitors。
技术栈与物料
项目是 BirdNET-Pi 的一个 fork,叠加了一套花鸟画风格的插图拼贴界面。物料清单约 80 美元:树莓派、32GB microSD 卡、USB 领夹麦克风、电源。安装脚本自动完成所有流程,耗时 20–40 分钟。
AI 插图的取舍
拼贴界面的插图由 Gemini 图像模型生成,默认嵌入了 450 种北美常见鸟类的“停栖”和“飞行”两种姿态。Gemini 在解剖细节上会幻觉,作者用一个审计脚本去掉了约 3%–5% 存在多翼、无身脚或水印的缺陷图片。拼贴排布按检测次数加权计算图块大小,从中心向外螺旋排布。
局限与讨论
BirdNET 在物种丰富但缺乏训练数据的地区效果不佳。有人在鸟类救助站工作,想从 24 小时录音里找到宠物鸟极微弱的声音变化,但现有模型不覆盖这些信号。作者提供了 Cloudflare Tunnel 等三个外网访问方案,让拼贴站不仅限于局域网。
dav2d:AV2 快速解码器启动
VideoLAN 社区宣布了 dav2d,针对新 AV2 编码的快速解码器。AV2 压缩效率比 AV1 提高约 25%,但解码复杂度大约是 AV1 的 5 倍。
当前进度与架构选择
项目已包含一个功能完整的 AVM v15 解码器,支持 8 位和 10 位解码。性能优化已开始,x86 上有 AVX2 代码,ARM 上有 AArch64 NEON 代码,RISC-V 也有初步适配。项目维护者解释说 Rust 不带来更多性能,只是更安全,而解码器需要尽可能多的汇编优化来应对 5 倍复杂度,因此继续使用 C 和汇编。
实用价值与期待
dav2d 的目标是让 AV2 在硬件解码普及之前就能实际使用,就像 dav1d 对 AV1 所做的那样。对于早期采用者和内容分发平台来说,软件解码器是连接新标准与现实部署之间的关键桥梁。社区期待看到实际基准测试结果。
播客全文
女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是莓莓。
男:大家好,我是阿哲。
女:今天这期节目咱们聊的东西跨度有点大。说真的,整理完这期素材,我感觉自己脑子有点像那种螺旋布局的拼贴画——一边是硬核的量子密码数学,一边是屋顶花园的隐私官司,中间还夹着字体设计、小鸟识别和视频编码。
男:对,今天的组合确实有点奇特。但我觉得这恰恰是 Hacker News 有意思的地方,技术不是孤立存在的,它总是跟设计、法律,甚至是我们对空间的感受纠缠在一起。
女:那咱们就从一个关于规则的争论开始吧。阿哲,你还记得那位做 SEO 的大神 Joost de Valk 吗?他最近搞了个叫“网站规范”的清单,好像引起了一场不小的风暴。
男:记得。他发布了一个叫《The Website Specification》的东西,可以理解成一本“网站建站完全手册”。里面列了 128 个检查项,分成 10 个大类,从最基础的 HTML、安全,到无障碍访问、性能、隐私,甚至还有一个叫“智能体就绪”的类别。
女:“智能体就绪”,这个听起来好新鲜。是专门为了让现在这些 AI 爬虫能看懂网站吗?
男:没错,这就是争议的焦点。简单说,现在 AI 代理去读网页的时候,需要解析 HTML 代码,这个成本很高,还容易出错。Joost 的思路是,网站在提供给人看的页面之外,再单独准备一个 Markdown 格式的版本,或者一个叫 llms.txt 的文件,让机器直接去读那个简化版。这就像是给不识字的人专门画了一套只有简笔画的说明书。
女:但这听起来有点像是走回头路?而且好像有点作弊的感觉。
男:对,社区里不少人就是这么想的。有人直接管这叫“胶带方案”。说是为了让 AI 看懂,反而要求网站退回到早期互联网那种简陋的标记模式。还有人担心,以后网站会不会利用这个给 AI 看一套跟人完全不同的内容,这不就乱套了嘛。最尴尬的是,有用户指出,其实现在主流 AI 提供商,没一个支持 llms.txt。
女:那岂不是大家忙活半天,只得到了一种虚假的安全感?
男:这还不是最核心的槽点。更让一些开发者不舒服的是,这份规范大部分内容很可能是 AI 生成的。
女:用 AI 教人怎么给 AI 建网站?这确实有点讽刺。
男:有人去看了 Git 提交记录,发现 Joost 用了 Claude,而且行文明显带着 AI 那种重复句式、过度分段的痕迹。有评论很不客气,直接用了“slop”这个词。不过话说回来,抛开“AI 生成”这个帽子,清单本身在技术细节上覆盖面确实很广,每一项都链接回了 W3C、WHATWG 这些权威标准,对新手来说还是一个挺实用的查漏补缺手册。
女:你刚提到那个“智能体就绪”时我就在想,被机器这样审视,作为创造者会不会有点不舒服。
男:这种被审视感,也出现在一些更底层的协议上。咱们今天要聊的第二个话题,就正好能接上这个对安全跟协议的担忧。是一种听起来有点吓人的威胁:量子计算机破解密码。
女:我听说过这个。就是说现在的加密,在未来的量子计算机面前就像纸糊的一样?
男:差不多是这个意思。所以美国国家标准与技术研究院,也就是 NIST,在去年 8 月发布了一套新的加密标准。其中两个主要的方案,一个叫 Kyber,负责密钥封装;一个叫 Dilithium,负责数字签名。它们的安全性,基于一种叫“格”的数学结构。
女:格?是窗户格子那个格吗?
男:可以这么想象。数学上的格,你可以理解为多维空间里,由很多点构成的一个规整有序的阵列。在这些格上,有一些数学难题,比如找到最短的那个向量。
女:就像在一个巨大的、整齐排列的点阵里,让你找离原点最近的那个点?听起来好像不难啊。
男:那是在二维、三维空间。当维度上升到几百维,这事儿就变得极其困难,即使对量子计算机来说也很难。Kyber 和 Dilithium 利用的就是这类问题的变种。它们的一个好处是,核心算法很高效。我用个不精确的比喻:它把问题从在一个混乱的整数域里找,变成了在一个有规律的多项式环里找,一次操作能处理一批数据。
女:感觉像是在螺丝刀上装了个电动马达。我记得之前有新闻说,已经有攻击者会先偷偷保存加密流量,等着量子计算机成熟了再解密。
男:对,“现在收集,以后解密”。所以大型企业和政府其实已经在积极部署这些抗量子算法了。但这个过程会很漫长,就像一场大型地基维护,要悄无声息地替换掉网络世界的所有锁芯。
女:这些协议虽然很坚固,但感觉离我们很远。相比之下,咱们要聊的下一个东西,是实实在在每天在屏幕上看到的——字体。阿哲,你听说过一款叫 Shantell Sans 的字体吗?
男:一个基于艺术家手写体的开源可变字体,对吗?我印象很深,它居然有五个可以调效果的“轴”。
女:对,除了常规的粗细、斜体,它还有“非正式程度”、“弹跳感”和“间距”这三个轴。你拖动“非正式”滑块,字形会从标准变得有点歪歪扭扭,就像真人越写越放松一样。那个“弹跳”轴更神奇,字母会在基线上蹦蹦跳跳,整个文字块都像活了。
男:把“手写”这种不规则感量化成可调节的参数,这事本身就挺酷的。它想解决的其实不是美学问题,是阅读障碍和文字疏离感。艺术家 Shantell Martin 自己就有阅读障碍,她创造这款字体的初衷,是想让那些害怕文字的人,能觉得屏幕上的字是亲切、可玩的。
女:它跟著名的 Comic Sans 还有点渊源。但团队不是要复刻,是提取了那种“易读亲切”的特质,再往上走一步。比如字母 a 和 g 是单层的,t 和 f 的横杠不向左延伸,M 和 W 是连续的波浪形。这些原本都是 Martin 用记号笔写字时的笔触特点。很多有阅读障碍的用户反馈说,它确实比 Roboto 那样规整的字体更容易阅读。
男:对,还支持 380 多种语言。设计师要把这种“歪斜”的手写风格转译到西里尔字母上,有评论说这过程就像翻译诗歌。到现在,tldraw 绘图工具已经把它设为主要字体了。这或许说明,好用的东西,最终会自然生长。
女:说到创造跟生长,今天正好有个编程语言也更新了,可能会打破一点点开发者的固有习惯。Racket。
男:对,Racket 发布了 9.2 版本。有句社区评价特别传神,说学了 Racket 之后,就像有了 X 光视力,看其他语言都只是语法的变体。
女:这个描述也太有魔力了。它到底有什么特殊的?
男:核心哲学是“让语言适应问题,而不是反过来”。这被称为“语言导向编程”,意味着如果你发现现有语法解决某个问题很别扭,你可以在 Racket 里直接创造一套适合这个问题的语言。这次更新,有一个对开发者影响比较大的破坏性变更:模式匹配 match 现在变得更严格了,如果同一个变量被多次使用,它就会检查这几个地方的匹配结果是不是真的相等,不一致就会报错。这会直接让一些旧代码失效。
女:听起来是个追求纯粹性带来的阵痛。还有别的更新吗?
男:对类型系统也做了修正。比如 Typed Racket 里,asin 和 acos 这类函数如果返回复数,之前可能会在运行时报错,现在能在编译期就发现问题。社区里有人用 Racket 试着写神经网络,甚至去替换标准的浮点数系统,他说在 Racket 里花 20 分钟做的事,在 C++ 里不知道怎么搞。虽然 Racket 不是追求极致底层能力的语言,但在需要高度抽象和快速试错的场景下,它能让你把精力完全集中在“想法”本身,而不是去跟语法搏斗。
女:把精力集中在想法本身,这个说法特别好。但有时候,现实世界的空间设计,可能会用一种尴尬的方式,把我们从想法里拽出来。咱们从编程语言出来,聊聊伦敦金融城那群摩天大楼的屋顶露台吧。
男:这次的几篇文章里,那篇屋顶露台探访记是我的最爱,充满了现实世界的黑色幽默。
女:整个故事就源于一个很简单的规定:伦敦金融城的开发商,如果想顺利拿到规划许可,地块里就得包含免费对公众开放的公共空间。于是就有了形形色色的“屋顶露台”。
男:对,开发者跟规划部门博弈的产物。我分享几个印象深的。有一个新开的,在 1 Leadenhall 大楼四层,名叫 The Terrace。博主穿过一条服务走廊,被一个保安带上电梯。到了露台发现,正前方的视线被隔壁的工地完全挡住了。
女:那他费半天劲上去,看了个寂寞?
男:博主原话是“有点奇怪,可有可无”,适合路过时上来吃个三明治,顺便上个厕所。
女:这不就是典型的为了满足规划条件而做的“伪公共空间”吗?有没有真诚一点的?
男:有,金融城最大的屋顶花园,叫 The Garden at 120。在 15 楼,360 度全景,能看到塔桥、伦敦眼,甚至透过楼缝看到小黄瓜大厦。入场要安检,但排队不长。如果你从来没去过,值得一试。还有一个紧挨着圣保罗大教堂的,在 One New Change 购物中心六楼。虽然坐下后视线会被护栏挡住,但圣保罗穹顶被完美框住了。
女:我觉得最让我唏嘘的,是泰特现代美术馆那个观景台的故事。
男:那个简直是一出悲剧。美术馆建了个 10 层高的观景台,2016 年开放后,游客高兴坏了,因为可以一览无余地看到旁边高级公寓的内部。
女:那公寓里的居民不干了?
男:肯定不干。居民起诉并胜诉了。英国最高法院判定,这种持续的、大批游客拿着手机和望远镜拍摄的视觉侵扰,构成了妨害,相当于把居民“像动物园里的动物一样展示”。现在,那个观景台所有通往外部平台的门都锁死了,还专门派了一个保安盯着,防止有人拍照。
女:所以公共空间的建立,用侵犯另一种私人空间作为代价。
男:这是个很深刻的矛盾。评论区还有人说,伦敦有些所谓的“公共空间”,会通过要求提前预约、出示带照片的身份证、禁止自带食物等方式,变相阻止公众进入。就像那种“价格诱人但条件刁钻”的促销。
女:用最客气的方式下逐客令。阿哲,你刚说 Racket 的灵活是为了让开发者更自由,这可能是一种创造;而伦敦这些尴尬的屋顶,则像是一种现实世界的妥协。在我们刚才聊的编程语言里,也有一个为自由、或者说为热重载而生的新东西。
男:你说的是 Roto?一个跟 Rust 结合得很紧的脚本语言。
女:对。它的初衷似乎很简单,就是给 Rust 应用加一个不需要重新编译就能改逻辑的“软皮”。
男:你概括得很精准。Roto 是一个 JIT 编译的静态类型脚本语言,语法在向 Rust 靠拢。它最大的价值就是热重载。比如一个游戏引擎,你用 Rust 写好了底层,但需要频繁调整游戏逻辑,这时候把逻辑写在 Roto 脚本里,改了直接生效,不需要痛苦地等 Rust 编译 20 分钟。现在有个叫 Iocaine 的项目,专门用来防御 AI 爬虫并向它们返回垃圾数据的,就用了 Roto 作为脚本引擎。作者反馈说,在 Lua、Fennel 和 Roto 三者里,Roto 的性能是最好的。
女:等等,所以这是个用脚本语言写的反爬虫代理?用魔法打败魔法。
男:对。不过 Roto 现在也有自己的软肋。作者很坦诚,说列表操作现在很慢,比简单的计数器循环慢了 21 倍,因为内部有锁,还频繁调用 Rust。所以它不是万能药,是一个正在为特定场景打磨的工具。很多用户选它,就是因为它能干净地把配置、业务逻辑跟主程序核心分离开。
女:说到性能,我们正好要聊两个关于视频编码的重磅话题,一个关于未来标准,一个关于帮你立刻用上未来的工具。阿哲,AV2 来了?
男:没错,开放媒体联盟已经正式发布了 AV2 视频编码规范,v1.0.0。这个消息其实挺重磅的。它最大的亮点,是在 AV1 的基础上,又把压缩效率提升了 20% 到 30%。这意味着,同样清晰度的视频,文件可以更小,或者说同样的带宽,画质能更好。
女:这对于 YouTube 那种平台来说,简直是省钱利器。
男:绝对是,能直接降低带宽成本。还有一个新特性是原生支持多数据流,以后那种分屏直播、VR/AR 内容,甚至带透明通道的视频合成,处理起来会更灵活。但好消息之后,就是坏消息。
女:通常这种“标准”到“能用”之间,隔着老远的距离。
男:对,隔着一个时代。目前在主流硬件上,AV2 的参考编码器速度大概只有 1 帧每秒。生产级别的编码器需要时间开发,硬件加速芯片可能要等到 2028 年左右,大规模普及到手机、电脑上,可能得到 2030 年了。
女:那这个标准现在看起来,更像是一份给未来准备的礼物?
男:可以这么理解。但对 YouTube 这类平台不一样,他们可以先在强大的服务器上,用纯软件的方式慢慢把视频转成 AV2,然后发给用户。用户这边只要有个高效的解码器就能看了,而解码器的复杂度远低于编码器。
女:那用户怎么才能比较流畅地解码 AV2 视频呢?总不能指望五年后的硬件吧。
男:这就巧了。昨天,VideoLAN 社区刚刚宣布了一个新项目,dav2d。这就是一个专门为 AV2 开发的快速软件解码器。
女:就像当年 dav1d 帮助 AV1 普及一样?
男:完全一样。但这里有个挑战,AV2 的解码复杂度大约是 AV1 的 5 倍。是,你用 AV2 能省 25% 的带宽,代价是设备的解码计算量是原来的 5 倍。dav2d 项目的目标就是用极致的汇编优化,在 x86 和 ARM 芯片上把这个 5 倍复杂度给“吃掉”。
女:用工程师的最高手艺去抵消掉标准的复杂度。但他们为啥不用 Rust 这种更安全的语言写?
男:项目维护者在社区里很直接地回复了。大意是,在这种追求极致性能的场景下,Rust 提供的只是安全性,而不是更高的性能。解码器需要的是极度细粒度的 SIMD 控制和纯手工的汇编优化,高级语言的编译器暂时做不到这一点。所以,他们选择继续用 C 和汇编来跟硬件极限搏斗。
女:这就像一种分工。AV2 是未来送来的复杂图纸,而 dav2d 就是那个专门负责在现有机器上把它跑起来的疯狂工匠。好了,聊完这些沉重宏大的话题,咱们聊点轻松的个人项目。一个关于鸟,一个关于写作。
男:先聊鸟吧。有一个叫 Teddy Warner 的开发者,在自己公寓的阳台上,用胶带粘了一支 USB 麦克风,连上一块树莓派,想听听窗外到底飞过了什么鸟。
女:这个项目名叫“Avian Visitors”(鸟类访客)。他当天下午就搭好了基础版,本来只想发条推特,结果拿了一万三千多个赞。最吸引我的是他做的一个可视化界面。
男:对,这个界面风格是受到了日本“花鸟画”的启发。他会把检测到的每一种鸟,用 AI 生成两张插图,一张停着,一张飞着。然后根据每种鸟被听到的频率,自动排布成一个不断更新的拼贴画。
女:但这中间有个很细节的过程。他发现 AI 生成的鸟,有些会幻觉,比如画出三个翅膀,或者没有身子。
男:所以他又专门写了一个审计脚本,去掉了大约 3% 到 5% 有缺陷的图片。材料也很简单,一块树莓派、一个 32G 以上的 SD 卡、一个领夹麦克风,全部加起来大概 80 美元。唯一的小遗憾是,这个识别系统在某些物种丰富的地区效果不好,比如卢旺达,因为缺乏当地的训练数据。还有一个在鸟类救助站工作的人,想用它去监听生病小鸟发出的微弱声音,但现有的模型完全不覆盖这类信号。
女:这也是一个有趣的难题。从一个简单的观察开始,遇到软硬件问题,再用工程化的方法去 fix,最后从声音里重新认识自己的邻居。
男:最后这个项目,应该是送给那些“独自行走的写作者”。Cheese Paper。
女:这个编辑器,光听它的隐私政策就很拉好感:“我们不想要你的数据,请你自己留着。”
男:它是一款专门为小说写作设计的文本编辑器。本质上,它把小说里的每一个场景,都单独存成一个 Markdown 文件。然后,它会用 TOML 格式,在文件头部存放你的笔记、摘要等。
女:这样你写在任何一个文件夹里的东西,都能用 Dropbox 或者 Syncthing 同步,甚至你用别的编辑器直接改那个 Markdown 文件都行,它完全离线。
男:界面也很有意思,左边是文件夹和场景树,右边写正文,侧边栏专门展示这个场景的笔记。它还内置了角色管理和世界观构建的模块。有个细节我特别喜欢,它有一个随机按钮,能毫无章法地生成一套很丑的配色方案。作者说,自己真的会带着这种糟糕的配色写故事。
女:它不追求一个完美的、普适的写作工具,它只是承认了小说写作需要管理很多交错的碎片。
男:这也让它跟别的工具区别开。有人在社区问,为什么不用 Emacs 的 org-mode?回应是:学习曲线太长。也有人觉得界面太紧凑,但另一些人觉得紧凑是为了在一屏内看到更多信息。它说自己“只是做法不同,不一定更好”,这个宣言很平和。
女:好了,今天我们从给 AI 建网站的规范,聊到量子时代的密码,再到会跳舞的字体、反爬虫的脚本、给未来的视频编码,还有阳台上的鸟和写小说的工具。我们的脑子里好像也长出了一幅乱七八糟但又挺奇妙的拼贴画。
男:对,技术可能就是这样,在像 dav2d 一样硬核的汇编代码里,在一套字体温柔的曲线上,甚至在伦敦一个尴尬的屋顶露台上,同时生长着。
女:那这就是本期 Agili 的 Hacker Podcast 的全部内容了。谢谢大家愿意花时间跟我们一起绕这么一个大圈子。
男:谢谢收听,也欢迎你在泛用型播客客户端订阅和追踪我们的节目。
女:我们下期再见。
参考链接
- The Website Specification
- A Gentle Introduction to Lattice-Based Cryptography [pdf]
- Shantell Sans (2023)
- Racket v9.2
- London's Free Roof Terraces
- One year of Roto, a compiled scripting language for Rust
- The AV2 Video Standard Has Released (Final v1.0 Specification)
- Cheese Paper: a text editor specifically designed for writing
- Avian Visitors
- Dav2d
