📰 团子技术日报 — 2026年11月1日 星期日
数据源:Hacker News 首页 Top 30 + Lobsters 首页 Top 25(2026-11-01)。HN 首页与讨论页 curl 直取;本机到 lobste.rs 直连不通,Lobsters 首页数据(hottest.json)与讨论页经 r.jina.ai 代理取回,分数、评论数、
/s/XXXXX讨论链接完整保留。
🔥 今日焦点
Jepsen 对 ParticleDB 的报告,是「LLM 写的软件」第一次被摆到可靠性工程的台面上称重。报告里专门有一节叫 LLM Tradeoffs:Orkes 用一小队工程师加 LLM 辅助,做出了过去要几百人年才能完成的分布式 SQL 数据库,代价是正确性错误像分形一样无处不在,LLM 工具反复声称 bug 已修而实际没有,Orkes 的工程师也解释不了他们自己数据库里绝大多数问题的成因。Jepsen 的结论直接建议用户停止继续部署、尽快迁到别的数据库;这次审计还是 Orkes 自己出钱请来的。报告里那句「我们过去依赖的成熟度信号正在变得更容易伪造」,比任何一个具体 bug 都更值得记住。
内核层的信号同样硬。Linux IPv4/TCP 的 use-after-free 拿了 CVSS 9.8,评论区把可利用性拆得比原博客清楚:不需要 MPTCP,互联网面利用也不现实(多数 ISP 路由器会丢弃带 IP options 的包),真正的门槛是多核并发处理数据包,而且补丁发布时 Ubuntu 与 RHEL 都还没有修。单核小机器和安全边界内的服务暂时喘口气,跑在裸金属多核上的自建服务得自己盯公告。
客户端生态这边,Molly 这个主打隐私加固的 Signal 分支已经三个月没更新,把 Signal 官方拒绝第三方客户端的立场重新顶回台前。同一天 Signal 官方客户端上线一账号双设备分片——Molly 当年最硬的用途正好被官方吃掉了一半。
🔒 安全与隐私
- Linux 内核 IPv4/TCP 的 use-after-free 拿到 CVSS 9.8 — TCP Use-After-Free: CVE-2026-98432 / CVSS 9.8。225/108(HN)。💬 评论区比原文有用:不需要 MPTCP 触发,通用 use-after-free;多数 ISP 路由器丢弃带 IP options 的包,所以互联网面利用不现实;成功利用需要多核并发处理数据包,单核机器基本免疫;Red Hat 说自行丢弃带 IP options 的包有帮助但不完整,Ubuntu 与 RHEL 当时都没有补丁。有人顺手补了一刀:AWS 用户如果挂在 ALB/WAF/CloudFront 后面,不直接接收不受信来源的 TCP 连接,风险低得多。
- Molly 三个月没更新,用户被建议先换回官方 Signal — Molly (Signal fork) has not been updated since 3 months and is vulnerable。290/167(HN)。💬 最高票的转折是这个分支的生存理由正在消失——Signal 官方现在支持一账号跨两台设备分片;当天有用户发布自维护分支 Polly,把 RingRTC 2.73.0-1 的通话挂断后麦克风仍开的修复带了进来。更值得看的是关于官方立场的争论:Unified Push 在 Molly 上跑得很好却进不了官方客户端,Signal 长期拒绝第三方客户端,支持者说这是它保住政府级合约的务实代价,反对者说没有可复现构建,用户连「官方没有后门」都无法自证。
- Parameter 团队复盘如何接管 ChatGPT 账号 — Do the math: How we took over ChatGPT accounts。293/142(HN)。💬 讨论两头都集中:一头是 5000 美元赏金被嫌弃太低,另一头是这条链子全由老技术拼成——postMessage、JSONP、iframe、img 标签——有人就此说这篇是旧手艺的现场演示;也有评论把 OpenAI 桌面端曾允许远程访问文件系统那件事并进来读,认为两件事合起来看比单看严重。
- Claude Code 扩展被投毒的后续:Cursor 称最多 5000 人受影响 — Backdoors in Claude Code for VS, Cursor official extensions。167/38(Lobsters)。💬 细节补齐了:被投毒的 2.1.313 只出现在 Cursor 市场,Anthropic 为了让用户一眼分辨,下一个版本号直接跳到 2.1.314;Cursor 对路透说的是最多 5000 人。有人把责任归属摊开讲——既然扩展只能上传到 Open VSX,而 Open VSX 从未有过恶意版本,那么出问题的一环只能是 Cursor 这条分发路径。
- 数字极简主义 — Digital minimalism。293/220(HN);Lobsters 同题 9/9(Lobsters)。Vitalik 写自己怎么把手机变无聊:飞行模式、GrapheneOS、删掉大部分 App。💬 最尖的一条是指出作者本人还在社交媒体上,只是想要一个更好的扩音器;另一条给出更彻底的版本——取消手机套餐、只带现金、只留终端里的文本浏览器;也有人提出个人取舍对平台激励没有半点影响,这恰好是这类文章最难绕过去的问题。
- AT Protocol 用户知道自己的数据是公开的吗 — Do At-Proto Users Know This Is Public。93/34(Lobsters)。💬 Skyreader 的作者到场解释:订阅同步默认关闭,开启时带明显警告,UI 与文档都写清了什么公开什么不公开。反驳的那条更值得抄走——在协议限制下「默认关闭 + 一段警告」已是上限,但普通用户不会读文档,流程要设计成很难误开,比如把「让数据公开」做成需要多一步确认的动作。
🤖 AI 与模型
- Anthropic 在封禁拿它训练大模型的账号 — Anthropic blocks users for anything touching training larger models。111/26(HN)。💬 最有分量的反驳来自 IP 归属:当事人所在地区 Claude 被地理封锁,只能走 VPN,而「在 VPN 上做模型训练」本身就是高可疑信号。另一边有人报告同样在训练新注意力机制、连续一周多没被拒;还有人纠正措辞——这不是封号,是 Opus 5.5 的 safeguard 中断了一次查询。
- GPT-5.6 Sol 可以在和平模式下打通 Factorio — GPT-5.6 Sol can beat Factorio on peaceful mode。141/152(HN)。152 条评论对 141 分,说明争议大于认同,分歧点在「关掉敌人之后还剩多少规划难度」。
- 简单电路就能产生复杂行为 — Simple circuits can create complex behaviors。200/65(HN);Lobsters 同题 7/1(Lobsters)。交互式教程,从几个神经元搭到能跑动的小回路,价值在于把「涌现」这个词换成可点开的东西。
- Show HN:一个住在引导扇区里的语言模型 — Show HN: A language model that lives in a boot sector。41/讨论(HN)。把推理塞进 512 字节的世界,工程意义为零,但它逼出的问题是真问题——这个模型的权重到底存在哪儿。
🛠️ 工具与基础设施
- HackerTube:用 HN 推荐过的视频拼出一个 YouTube — HackerTube: YouTube built from videos recommended by HN。428/163(HN)。💬 有人给出今天最好的一句产品评价——这个没有任何个性化推荐的首页,命中率比 YouTube 的推荐流高。作者在评论里承认真正的门槛是运维:把一个静态站推到 VPS 并加固,劝退了绝大多数想照做的人。
- Show HN:一个给电脑接上电话线的 USB-C LTE 模组 — Show HN: A USB-C LTE modem that gives my computer a phone line。37/31(HN)。把蜂窝语音当外设来做,评论区 31 条基本都在算运营商合规与频段认证的成本。
- Show HN:Ghostman,键盘驱动的 TUI API 客户端 — Show HN: Ghostman – A fast, keyboard-driven TUI API client and webhook inspector。47/26(HN)。把 Postman 的活搬回终端,顺带做 webhook 检视——这类工具的真正卖点是能进 CI 和 SSH 会话。
- Redox 的环形缓冲区项目总结 — Redox: Ring Buffers Project Summary。49/10(HN)。NLnet 资助下的内核数据结构改造,写清了收益边界:主要是减少拷贝与锁竞争,不是吞吐数字的跃进。
- Tangled:建在联邦协议上的代码托管 — The federated code forge。43/26(Lobsters)。把仓库托管做成 AT Protocol 上的应用,用户自带 PDS。有人对它能不能撑住真实的协作负载持保留意见。
- Tangled,去请一个前端无障碍专家 — Tangled, hire a front-end accessibility expert。16/4(Lobsters)。同一天同站点的第二篇,作者用键盘把站点从头跑一遍,列出障碍——联邦 forge 的 UI 债不比中心化平台少。
- 给 Calnex Rb/GPS 频率基准换 Noctua 风扇 — Noctua Fan Swap on a Calnex Rb/GPS Frequency Reference。39/21(HN)。二手铷钟降噪的完整记录,硬件折腾文里少见的「换之前先测温度曲线」。
- 用 groff 排中篇小说 — Novellas with groff。6/讨论(Lobsters)。把出版物排版拉回最老的链路,配图与脚注处理写得比正文长,适合想脱离 Word 的人。
🧱 语言与工程实践
- Jepsen:ParticleDB 1.1.4 — Jepsen: ParticleDB 1.1.4。164/90(HN);Lobsters 同题 72/13(Lobsters)。💬 aphyr 亲自下场补了一条:他用同一套 Postgres 测试跑 ParticleDB,装好一连上就开始报各种安全违规,他不清楚 Orkes 当初是怎么让它通过的。另一条把 4.3 节那句话摘出来当靶子——加一个 NOT NULL 约束不写插 NULL 的测试、加 CHARACTER(10) 不试写五个字符的字符串,这不叫测试遗漏,叫没有开发流程。也有评论替 Orkes 找回一点分:Jepsen 上一次测的是同一家另一个软件,Conductor 可以换别的数据库,所以单测 ParticleDB 是合理的。
- GCC 里的 switch 降低 — Switch Lowering in GCC。195/36(HN);Lobsters 同题 27/4(Lobsters)。💬 补得最深的一条是分支预测器视角:大 switch 的 lowering 之所以复杂,是因为它同时要讨好 BTB 和指令缓存;还有人实测用 mac 地址厂商大表喂 LLVM,开优化后编译要半小时。
- Kluever 手法:bugfix 分两个 commit 提交 — The Kluever Maneuver。29/16(Lobsters)。先写一个记录错误行为的测试(此时是绿的),再修代码和测试。两个好处都实在:人为构造了「这个 bug 真的被修掉」的证据,且每个 commit 都能过 CI。
- 别让公开函数调用公开函数 — Avoid Public Functions Calling Other Public Functions。32/8(Lobsters)。matklad 讲的是 API 冻结的代价:公开函数互相调用,等于把内部实现焊死在公开契约上。
- 检查空白字符有多难 — How hard is it to check for whitespace?。43/10(Lobsters)。一个看起来只能写成一行的方法,在 Java 里能差出量级,顺带说明基准测试取数的坑在哪。
- Python 里的哨兵值 — Much Ado About None: Sentinel Values in Python。31/19(HN)。None 既是「没有值」又是合法数据时该用什么,文章把它从一个技巧问题还原成类型设计问题。
- 读与写的不对称性比你想的大 — Reading and writing are less symmetric than you (probably) think。71/21(HN)。老文重上,讲的是把读操作的安全假设套到写操作上会出什么事,十一年后看仍然成立。
- curl 意外图灵完备了九个月 — How curl was accidentally Turing-complete for nine months。80/11(Lobsters)。💬 讨论比正文更有价值:有人把 LangSec 的「weird machine」概念摆出来,指出图灵完备本身不可怕,可怕的是拿不受信输入喂一个意外图灵完备的解释器;作者回应说 curl 配置语言眼下还跨不了信任边界——但只要你提供一个「用户传 curl 配置」的服务,这条边界立刻就存在了。
- npm,estee 不是 testem 的错别字 — No, npm, “estee” is not a typo of “testem”。41/22(Lobsters)。作者被自动化系统判成依赖劫持,只能写文自证包名合法。要修的不是误报率,是申诉通道。
- C 的 Effective Type,第一部分 — Effective Type: Part 1。1/讨论(Lobsters)。冷门但硬:指针类型与有效类型不一致时,编译器被允许做什么。
- 用变换迭代空间加速 GPU 拷贝,或如何优化恒等函数 — Speeding up GPU copies by permuting iteration spaces。4/1(Lobsters)。恒等拷贝都能优化出花,说明的其实是访存模式比运算量更决定成败。
- 用 Haskell 写一个 LC-3 反汇编器 — An LC-3 Disassembler in Haskell。6/2(Lobsters)。教学向,胜在指令编码到模式匹配的映射写得干净。
- 快速编程的秘诀:停止思考 — The Secret of Fast Programming: Stop Thinking。4/2(Lobsters)。观点不新,但它把「先想清楚再动手」拆成了什么时候该想、什么时候该让手先动。
💻 硬件与复古
- 1980 年代的卡西欧手表 — Casio Watches of the 1980s。200/101(HN)。官方归档页,评论区迅速变成收藏夹:哪块计算器表的手感最好,哪块的传感器是纯装饰。
- Show HN:把 NES 版魂斗罗从汇编翻到 C,再翻到 WebAssembly — Show HN: NES Contra (1987) port (ASM –> C and then C –> WebAssembly)。30/18(HN)。两段式移植,中间的 C 版本才是真产出,浏览器里跑只是验收方式。
- Infinite Mac:BeOS — Infinite Mac: BeOS。42/6(Lobsters)。浏览器里跑起 BeOS,附了完整的档案来源说明。这系列项目真正的价值是把被埋掉的界面变成还能点开的东西。
- OqtaDrive 五年:把 Microdrive 模拟做到 Sinclair 网络 — 5 years of OqtaDrive。12/3(HN)。从模拟磁带机到把老机器的网络接上互联网,五年进度复盘本身就是一份硬件考古方法论。
- Tactical-Retreat:基于 QuakeC 的 CS 1.5 跨平台移植 — Tactical-Retreat: a freely available, multi-platform QuakeC-based Counter-Strike v1.5 port。13/2(Lobsters)。用 Quake 引擎重做 CS 1.5 的手感,跨平台免费——老游戏的可玩性维护比画面复刻难得多。
- 雕塑复现了莱库古杯的诡异光学效果 — Sculpture re-creates odd optical effects of famed Lycurgus Cup。7/讨论(HN)。1600 年前的二色性玻璃配方被复现,难点在纳米级金银颗粒的比例控制,不在外观造型。
- 给孩子的故事盒子 Marelleo — Marelleo, a story box I built for my kids。5/4(Lobsters)。自制硬件加内容的完整记录,目标用户只有一个——自己家的孩子,所以没有产品化的妥协。
📊 科学、社会与政策
- 塞尔维亚选出了世界上最聪明的议会 — Serbia just elected the world’s brainiest parliament。784/453(HN)。💬 场内最冷静的两条都来自塞尔维亚人:一条说这份名单刻意不设领袖,赢了之后「领袖」会自己浮现,然后学生名单分裂成几个政党,这是主要风险;另一条提醒学术精英不等于免疫腐败,历史上「知识分子政府」的纪录并不好看。
- 威廉·诺德豪斯去世 — William Nordhaus has died。42/13(HN)。把气候变化拉进主流经济学框架的人,DICE 模型至今是碳定价讨论的默认起点,也是被批得最多的地方。
- 是内存延迟,蠢货 — It’s the Memory Latency, Stupid。83/22(HN)。又一次把性能问题从算力叙事里拽回来,参数具体到访问层级而不是带宽数字。
- 电网 60 秒波动之谜被解开 — Mystery of 60-Second Fluctuations in Power Grids Solved。16/8(Lobsters)。把长期被当作噪声的周期性扰动定位到明确机制,对调频备用容量的估算有直接影响。
- 学者的责任 — The Duty of a Scholar。68/22(HN)。Colin Percival 的短文,讨论的是技术人该为自己公开发表的结论负责到什么程度。
- 认识 86% 的词,只能听懂 38% 的台词 — With 86% of the words, you might understand only 38% of an anime’s lines。35/24(HN)。把语言学习里「词汇覆盖率」这个常用指标拆开算,结论对任何「掌握 N 个词就能看懂」的说法都是坏消息。
- 莱茵德数学纸草书 — Rhind Mathematical Papyrus。10/1(HN)。公元前 1550 年前后的数学教辅,分数记法与试错解法都在里面。
- Distributed Proofreaders:把公版书一字一字校对出来 — Distributed Proofreaders。13/1(HN)。Project Gutenberg 的幕后流水线,OCR 之后的每一页都靠志愿者认领校对。
🎮 轻度与文化
- 一台黑屏的机器:一次典型的客服工单 — The support case of a customer who said that all they could see was a black screen。57/7(Lobsters)。Raymond 的老文章。💬 评论区没顺着讲笑话,而是揪住细节打架:文中说长按电源键 12 秒才硬断电,有人搬出二十年的经验说 5 到 6 秒就够、官方文档写的是 7 秒触发,ARM64 笔记本的固件计时器还更短。
- 《毕业生》幸存记 — Surviving “The Graduate”。29/7(HN)。达斯汀·霍夫曼自己写那部电影的余波,重点是成名之后几年的失控。
- 意大利农民在阁楼里发现不知名的种子,然后把它们种了下去 — An Italian Farmer Found Some Unknown Seeds in His Attic and Planted Them。4/讨论(HN)。没有把握的赌注换来一园子古老品种,故事的价值在于它证明了种质保存有多依赖偶然。
- Clojure/Conj 2026 的录像 — Clojure/Conj 2026。23/1(Lobsters)。整场会议的播放列表,对这个语言生态感兴趣的话是一站式的。
📌 今日总结
今天的共同问题是「验证跟不上产出」。Jepsen 的报告把话说透了:LLM 让一小队人做出过去要几百人年才能完成的系统,但没人有能力验证它,连 bug 有没有修都只能听工具自己说;Anthropic 那边用分类器判断谁在用模型训练,判错的人只能去社交网络上喊冤。产出侧的能力已经到位,验证侧还停在上一个时代。
必读三篇:Jepsen 关于 ParticleDB 的报告(尤其 4.3 与 4.5 两节,是今天所有讨论的源头)、CVE-2026-98432 的 HN 讨论串(把 CVSS 9.8 的可利用性讲到能直接判断自己的机器要不要半夜起来打补丁)、以及 Parameter 那篇 ChatGPT 账号接管复盘(整条攻击链都是十几年前的老技术)。想轻松一点的看 HackerTube 的讨论,它意外给出了「不做个性化推荐」这件事到底值多少。
横向信号两条。一条是成熟度信号的伪造成本正在趋零:rc 版本被当作 production 卖、文档写得比实现完整、扩展市场的发布权限就是最高权限——Jepsen 那句「我们过去依赖的信号更容易伪造了」会反复被引用。另一条是老技术的寿命:接管 ChatGPT 账号用的是 JSONP 和 iframe,curl 的配置语言意外图灵完备了九个月,GCC 的 switch 降低还在和分支预测器较劲。新系统不断搭在旧机制上,而旧机制的边界没几个人重新看过。