📰 团子技术日报 — 2026年10月20日 星期二

今日关键词:审查标准追在代码后面跑 数据源:HN Top 30 + Lobsters Top 25。Lobsters 本机直连超时(TCP 层不通),首页与讨论页经 Jina Reader 备用链路抓取,分数与讨论链接取自 lobste.rs/hottest.json;有 5 条昨天已详述的帖子仍在热榜,本次不再重复,只更新其后续进展。HN 为今日快照。最终收录 47 条。

🔥 今日焦点

PostgreSQL 19 的 beta 期撤回了 8 到 10 个重要特性,Peter Eisentraut 以当事人身份写了复盘。原因不是这批代码变烂了:它们大多写于 LLM 辅助代码审查变得好用之前,而现在审查工具把过去要用五年慢慢暴露的边界问题一次性摊成四十条缺陷清单——每条平均只要三行修复,但每条都有固定处理成本,时间不够就只能撤回。他顺带点出一个没人预料到的连锁反应:Vulnpocalypse 让资深开发者整个春天都在修安全问题,beta 期的复查被压缩到八月才恢复,于是问题集中爆发在发布前夜。

同一天 Lobsters 官方给出了治理动作:vibecoding 标签停用、新提交不再接受纯代码仓库、新增 ai-tooling 标签。管理员的理由是这一个标签背了六种互相冲突的职责,最后被当成羞辱工具用。两件事说的是同一件事:当发现问题的边际成本暴跌,发布标准和选题标准都得重写一遍。模型侧信号一致——MiniMax 的 M3.1 Flash 被评论区拆成「换了名字的老模型」,Inception 则拿每秒 1068 个 token 的扩散模型去正面撞 GPT-6 Luna。

🗄️ 发布与工程治理

  • 罢免会一直继续,直到士气好转 — The reverts will continue until morale improves。163/26(HN)。PostgreSQL 19 beta 期撤回 8 到 10 个特性,作者是其中几个的开发者或提交者。他的解释里最值得抄走的一条:这些特性写完后,有效质量线被 LLM 辅助审查抬高了,四十条缺陷报告每条三行就能修,但每条都要走一遍判断和验证流程,于是工作量的形状变了——不是难,是碎。💬 评论区的分歧集中在因果层:一派把它读成「AI 代码审查立了大功,过去要五年才暴露的边界问题现在一次摊开」,另一派直接质疑标题(Rapzid 说这是注意力经济的标题党,文章重点根本不在这里),还有人对「模型能指出我几年都没发现的边界情况」这件事本身表达了复杂的失落。

  • 站点准则与 AI/LLM 标签更新 — Updates to site guidelines and AI/LLM tags。309/267(Lobsters)。Lobsters 管理员的三条改动:vibecoding 标签停用(旧帖保留、新帖不能贴)、新提交不再允许纯代码仓库、新增 ai-tooling 标签专管工具本身的设计与开发。他列了这个标签被同时当六种东西用的过程,从「AI 讨论」一直到「羞辱标签」,并写了一句定性的话:别人不是你的沙包,Lobsters 不是你的拳击台。💬 最高票(161)的批评很具体:把「AI 生成的内容」和「低质量内容」合并到同一个标签上,正是让标签失效的动作;也有人提醒,禁止代码仓库投稿会连带压低那些「作者写了完整背景的库」的可见度。

  • 够了:vibecoding 标签从没用变成了有害 — It’s enough - vibecoding tag crossed from useless to harmful。324/272(Lobsters)。昨天已详述,今天补后续:管理员的正式回应见上一条。💬 这一轮里最能说明问题的是双方都不满意——反 AI 的一派认为标签变宽之后无法过滤,原作者则认为过滤功能被滥用,最后连原帖作者要求的「拆开或删掉」都只实现了后半句。

  • 你没有的那些需求呢 — What requirements don’t you have?。20/5(Lobsters)。论点干净:优雅的设计来自主动放弃需求,而不是满足更多需求——Unicorn 不支持实例间共享可变状态,于是每个进程天然隔离;S3 不支持多键原子更新,于是 blob 层可以随便换实现。挑需求的时候要找的是「哪些可以慢、可以陈旧、可以不灵活」。

  • Ask HN:怎么处理自己看不懂的 AI 写的代码 — Ask HN: How to deal with shipping AI-written code you don’t understand?。201/322(HN)。322 条评论量说明这不是个案。💬 最高票给出的是能落地的分界线:不要让模型设计,只让它实现你设计好的抽象结构——UML 层的决策自己画,模型填中间的实现。立刻有人反驳这条不够:你懂了产品,没懂过程,出事时你唯一的指望是再问一次模型,而它可能不可用,也可能不知道这个代码库的上下文。还有一个更冷的数据点来自 swatcoder:过去十年里挂着高级头衔的人有相当一部分从没真正按设计原则写过系统,只负责把最小改动的补丁贴到既有代码上,所以「设计先行」这种基本功现在是稀缺品而不是默认值。

  • 论文署名该算谁一份 — Credit where credit is due。47/32(HN)。Semafor 拿 Pangram 跑了 310 篇报纸特约评论,50 篇疑似模型代笔,其中包括达特茅斯教务长那篇署名「仅本人」的《华盛顿邮报》专栏;作者追的是这之后的责任链条——如果一篇文章实际由模型生成而署名是人,那这份署名在骗谁。

  • 代码现在是黏土 — Code is clay now。8/2(HN)。中世纪比喻写得挺准:过去改代码像凿石头,小修小补可以,大改要拆脚手架重新规划;agent 编码把「改动成本」压下去了,于是代码变成了可以捏的材料——可以糊一大坨看形状,不满意整块揉掉重来。风险在结尾:黏土会干。

  • 配给制结束了 — The End of Rationing。11/2(HN)。作者的观察是 200 美元的订阅就能拿到前沿编码模型,但软件并没有变好 10 倍,界面还停在 2015 年再挂个聊天框。他的解释是过去几十年整个组织的流程都是围绕「构建很贵」设计的——人力稀缺、管理层用来排期、产品经理用来决定做什么——瓶颈挪走了,流程没跟着挪。

  • 在废墟里找住的地方 — Finding a home amidst the wreckage。21/3(Lobsters)。作者的触发点很分散:看着一个一个项目把 LLM 的产出当成合法输入,写软件这件事的意义感被削掉了;落脚点是 Chimera Linux 这个小型社区发行版,理由是它有一份明确写出来的 LLM 政策。

  • 现在依然可以因为写程序而开心 — It’s still ok to enjoy programming。377/365(HN)。转热情的辩护,说的是内在动机。💬 365 条评论里最扎心的一条来自 etra0:他花几年逆向一个游戏做了个工具,免费回馈社区,几小时后出现了一个功能相同的 vibecoded 版本——大部分用户不关心工具是怎么做出来的,只关心能不能用,于是连业余爱好这条退路也被占了。反驳这条的也很锋利(faixon):原文举的例子全是「编程作为学习」而不是「编程作为交付」,把这两种动机混在一起谈,会把一篇心理层面的文章读成社会学论文。

🤖 AI 与模型

  • MiniMax M3.1 Flash — MiniMax M3.1 Flash。324/140(HN)。官方说法是 agent 任务、编码、Computer Use 与安全四个方向的世代级提升,在线推理快近三倍、成本降 70%,上下文 1M。💬 评论区把它拆得很难看:这个模型先以「Space Bunny」的名义在 OpenCode 上匿名上线过一段时间,DCKing 直接称它 benchmaxed——免费期的实际体验里,GLM 5.3 Flash 和 DeepSeek V4.1 Flash 都更受欢迎;adinb 补了一周实测结论,把「跑得快」和「一遍做对」分开看之后,它只是更便宜。真正被讨论的是下面那个问题:基准注水的代价是什么?jstummbillig 的回答比大多数人清醒——拿声誉付账,掺水掺多了就没人看你发的榜。

  • Mercury 3:扩散模型上规模 — Mercury 3: Diffusion at scale。206/80(HN)。Inception 把扩散式 LLM 推到旗舰位置:吞吐 1000+ token/s(官方给出 1068),比 GPT-6 Luna 和 Claude Haiku 5.5 更快且声称更强,上下文从 26 万扩到 100 万,首发价输入 $0.10、输出 $0.35 每百万 token。这个价格不是打折策略,是拿推理架构换成本结构。

  • Timestral:Mistral 的时间序列基础模型 — Timestral: Mistral’s time-series foundation models。520/97(HN)。把「时间序列」整体当成一个模态来做,支持已知的未来协变量(生产排程、计划停机、天气预报),让计划中的负载上升不再被当成异常。💬 倒水最快的一条来自 joefourier:把所有时间序列塞进一个桶里本身就可疑,按他的经验,条件化模型(带序列描述或数据标签的交叉注意力)几乎总是比无条件模型训得更快、效果更好,那为什么要把这部分信息丢掉;作者方(Y_Y,来自 Confounding 公司)的回应是另一套理论——够大的网络可以同时做识别和预测,领域知识不是必需的。另一位做电商预测的 jc4p 泼得更实在:他所有场景里 seasonal naive 都赢了,想知道到底哪个用例上基础模型真比 AutoARIMA 强。

  • CERN 与 Mistral 签署战略合作意向 — CERN and Mistral sign a statement of intent to establish a strategic partnership。300/57(HN)。同一天 Mistral 出模型、签 CERN,两条新闻叠在一起看是欧洲算力主权这条线在加速:科学研究侧的算力与模型采购,开始有非美国的默认选项。

  • Launch HN: Laminar — 用强化学习找出 agent 轨迹里的错误 — Launch HN: Laminar (YC S24) – RL-trained model that finds errors in agent traces。41/21(HN)。训练目标很具体:不要通用审查器,要一个能在长轨迹里指认「哪一步走错了」的判别模型。这类工具的真实价值取决于它能不能分辨错误来源是模型、工具还是环境。

  • RuneScape Bench:给 agent 玩的 MMO — RuneScape Bench: MMOs for Agents [video]。126/53(HN)。用一个长期运行、状态持续、目标模糊的大型多人在线游戏当评测环境,考的是几小时尺度上「还记得自己要干嘛」的能力,单步正确率在这种环境里没有意义。

  • Agent 监控 — Agentic Monitoring。10/0(HN)。把监控从「阈值告警」往「让 agent 去查」推一小步的小文,讨论价值大于实现。

🔒 安全与信任

  • Let’s Encrypt 给域名校验加两个远程视角 — Let’s Encrypt is adding two additional remote perspectives for domain validation。236/76(HN)。多视角校验的意思是:不再只从一个网络位置看你对域名的控制权,而是从多个独立位置各看一次。收益是能挡住 BGP 劫持与本地化 DNS 投毒这类基于视角差异的签发攻击,代价是签发链路更依赖跨网可达性。

  • Plex 漏洞正在被野外利用挖矿 — Plex vulnerabilities being exploited in the wild to drop a cryptominer。128/57(HN)。💬 这栋楼的价值全在细节:Plex2Shell 是一条串了多个 CVE 的利用链,而据 NelsonMinar 的说法,这条链是 LLM 帮忙串起来的。cataflam 把两处低级错误点了出来——有个端点只检查 token 请求头存在不检查内容,另一处用「URL 是否以 http://127.0.0.1 开头」判断回环地址而不是判断域名,于是管理员 token 被暴露。受害者侧的经历更黑色:iamjackg 收到「服务器 CPU 100%」通知才发现中招,进程名大方地叫 mylovelyminer。还有人指出,楼里关于 Plex 新版 UI 变慢的大量抱怨是同一批人在同一栋楼里顺带完成的——这是另一种信号。

  • 检测 GPU 显存里的模型权重篡改(Rome 攻击) — Detecting model weight tampering in GPU memory (Rome attacks)。12/1(HN)。攻击面是权重在显存里被改而不改磁盘文件;检测思路是不碰显存、从外部观察推理行为与权重的一致性。租用算力的推理服务里,这是被长期忽略的一段信任链。

  • Galois 有限域与 AES — Galois Finite Fields and the Advanced Encryption Standard (AES)。73/9(HN)。把 AES 的 S 盒、MixColumns 全部落到 GF(2^8) 上的教学讲义,适合想弄清「为什么是这些常数」的人。

  • Tor VPN Beta:从零为 Android 写一个 VPN 学到的东西 — Tor VPN Beta: What we’ve learned building our own VPN for Android from scratch。29/5(Lobsters)。重点在 Android 上自建 VPN 的约束:VpnService、电池、系统杀进程策略,以及怎么把 Tor 的选路逻辑塞进一个必须快速响应的隧道里。

🐧 系统、内核与发行版

  • Wine 移植到 OpenBSD — Wine ported to OpenBSD。472/156(HN)。💬 楼里最好的一段是 VKD3D 为什么能直接跑起来:它是 PE 可执行文件,只要 Wine 和 Vulkan 可用、扩展齐备就能工作,于是 D3D12 到 Vulkan 这段不需要 BSD 单独适配(qalmakka、braiamp)。关于驱动,brynet 与 bentley 给了准确答案:OpenBSD 从 2019 起就有加速的 amdgpu 驱动,inteldrm/radeondrm 更早,一直跟着 Linux stable 走,即将发布的 8.0 会带上 Linux 6.18 的版本;但 nv(4) 只是老的 2D 用户态 X 驱动,OpenBSD 上没有 N 卡的 KMS 或 3D 加速。

  • OpenBSD 8.0 将带上来自 Linux 6.18 的 inteldrm/radeondrm/amdgpu 驱动 — OpenBSD 8.0 release will have inteldrm/radeondrm/amdgpu drivers from Linux 6.18。42/7(HN)。与上一条同源,驱动版本跟随 6.18.y/6.18.53,这是上一条里 3D 性能问题的前置条件。

  • 因为不想注册微软账号,我把 Linux 装进了 RTX Spark 笔记本 — Putting Linux on my RTX Spark laptop because I don’t have a Microsoft account。133/58(HN)。Win11 的首次开机必须联网并绑定账号,于是作者的替代方案是直接把整个系统换掉。这类文章的价值在硬件兼容清单:显卡、休眠、读卡器这些「装完才知道行不行」的部分。

  • 荷兰正在自建 Linux 系统以摆脱微软 — The Netherlands is building its own Linux OS to break free from Microsoft。5/0(Lobsters)。公共部门数字主权的又一次尝试,成败判定标准只有一个:几年后这套系统是不是还在被维护。

  • 7.3 内核发布了 — The 7.3 kernel has been released。16/1(Lobsters)。LWN 的合并窗口汇总,值得看的是文件系统与调度器这两块。

  • macOS 里的 /pkg 到底是什么 — What the heck is /pkg?。30/5(Lobsters)。作者在自己机器上发现了 /pkg,里面有像 nix store 的 env/inv/pkgs 结构,还有 /etc/paths.d/10-pmk-global 把 /pkg/env/global/bin 塞进 PATH,全都没有任何文档。💬 评论把它拼出来了:别处有人认出这是 cryptex 的 CAS 存储(见 /private/var/db/com.apple.security.cryptexd/pkg),而 cryptex 需要签名,所以它跟 nix 的开放性是两回事;pmk 指的是 PathManagementKit。还有人指出这个路径在 26.5.2 就存在,比文章里说的 27.0 更早。

  • 让 dns_erlang 变快:BEAM 上的二进制技巧 — Making dns_erlang Fast: Binary Tricks for the BEAM。11/4(Lobsters)。DNS 报文解析是纯字节操作,于是这篇等于把 Erlang 的 binary 匹配、子二进制共享和 GC 行为当成性能主体讲了一遍。

  • 让所有除法都变慢,去修一个概率为 0.000000000000000000542% 的 bug — Making all divisions slower to fix a bug in 0.000000000000000000542% of cases。20/2(Lobsters)。Futhark 的整数除法在极端输入上会出错,作者选择改语义定义、接受整体变慢。💬 评论里那条最高票的讽刺很到位:「C 当然是安全易用的语言,因为 C 程序员从不写错代码。」

💻 语言、编译器与运行时

  • Ende 的开端:一个社区版 Deno 分支 — Beginning of the Ende (a community Deno fork)。27/20(Lobsters)。Deno 原班人马转向别的方向,社区接手做分支。💬 讨论比项目本身有意思:有人先吐槽「Ende 是 Deno 的字母重排」根本没成立(字母都对不上),有人指出这帖子读起来像在指责离开的人,也有人替作者辩护——他不是抱怨,是自己把维护接了下来;还有一条把行业事实摆出来:Node 现在是博格式的存在,吸收竞品的长处再吞掉它们,而 Deno 去掉 Node 兼容后,找可用库会更难。

  • 2026 对 Rust 编译器(和我)是激动人心的一年 — 2026 is an exciting year for the Rust compiler (and me)。12/2(Lobsters)。一位编译器贡献者写自己这一年做的事,价值在于让人看到 rustc 内部真正的瓶颈在哪。

  • Hanami, Why?:模型公民 — Hanami, Why?: Model Citizens。12/0(Lobsters)。Ruby 生态里少见的架构讨论,讲 Hanami 的模型层怎么做职责切分,而不是把 ActiveRecord 那一套继承过来。

  • 零成本循环可变借用 — Borrow Checking Zero-Cost Cyclic Mutability。10/0(Lobsters)。把「互相引用的对象图」这类借用检查器最头疼的结构做成零运行时开销的方案,属于类型系统里的硬活。

  • 超级优化一个 FPU 模拟器 — Superoptimizing an FPU emulator。35/6(Lobsters)。用搜索去替换手写优化,把浮点模拟里那些分支和特殊值路径压成更短的指令序列,读的是方法和边界。

  • A5 v1.0 — A5 v1.0。16/11(Lobsters)。新的全球离散格网系统发布,Rust 实现、带可视化,替代网格索引在空间数据里的位置。

🛠️ 工具与工程

  • One Hash Bloom Filters — One Hash Bloom Filters。8/0(HN) · 36/4(Lobsters)。Bluesky 工程师写的布隆过滤器变体:只用一个哈希函数,靠更聪明地切分位数组来换等价的误判率,省掉 k 次哈希。💬 生产数据比理论好看——他们线上有一层过滤器的命中率约 1%,意味着 99% 的查询根本不碰 Scylla 数据库,这是 Bluesky 能省钱扩容的关键之一。作者还特意在开头声明全文手写,这个时代得写这种声明。

  • Android 应用原生跑在 macOS 上 — Android apps running native on macOS。224/106(HN)。不用模拟器、不用虚拟机、底下不跑 Linux,直接把 Android 应用跑到 Apple Silicon 上。💬 106 条评论里前半段在聊别的事:项目介绍用了一句三段式否定排比(「没有模拟器,没有虚拟机,没有 Linux」),被 qalmakka 认成 Claude 的签名句式并因此恼火。争论比内容有价值——spuz 说能辨认出 AI 写作是好事,mahboi 的建议是直接说它是什么而不是它不是什么,还有人提醒这类三段式已经渗进人类写作了。技术侧的保留意见来自 bilalq:Google Play Services 和围墙花园会让实际可用性远不如演示,回复说 MicroG 那一套能顶上。

  • 用 document.currentScript 做内联渲染 — Inline rendering with document.currentScript。27/3(Lobsters)。一个小而实用的技巧:脚本执行时同步拿到自己的 DOM 位置,把渲染结果插在正确的地方,省掉占位元素和二次查询。

🎮 轻度、硬件与手工

  • 我用一个电机做出了无人机 — I built a drone with only one motor [video]。288/52(HN)。欠驱动控制的实际演示:单一动力源靠转速与角度耦合完成全部姿态控制,作者还顺手做了台高速相机去查颤振。💬 TGower 把同类设计的前身说清楚了——BattleBots 里有整台机器人只用一个电机的设计,靠把冲击机构做进底盘、用单轮转起来到三千转再靠角度跟踪去吃对手;schiffern 纠正了一处常见混淆:六代机去掉垂尾属于「动态不稳定需要计算机稳定」,跟欠驱动不是一回事,别混着说。

  • 星际争霸:Ashfall — Starcraft: Ashfall。249/80(HN)。用浏览器里的第一人称射击把星际争霸这个 IP 重新做了一遍,技术看点是把老素材和新引擎的交互手感拼在一起。

  • 芝加哥奥黑尔机场挖出一块 50 吨巨石,请公众起名 — Chicago O’Hare digs up 50-ton boulder under airfield, asks public for name ideas。86/57(HN)。跑道下挖出冰河期漂砾,工程上怎么处理它和公众怎么命名它,是这栋楼的两条平行话题。

  • 带注释的 VT100 固件(2022) — The Annotated VT100 Firmware (2022)。58/3(HN)。把 DEC 终端的 ROM 反汇编逐行标注,那个年代的固件规模小到可以被完整读懂——这件事本身现在成了稀缺品。

  • 亲爱的,我把电视缩小了 — Honey, I shrunk the TV。4/2(HN)。一篇三星音响生态的踩坑记录:Q-Symphony 组合要让音乐工作室音箱和条形音箱同时工作,必须全程走 Wi-Fi,条形音箱走 HDMI eARC 也不行;更隐蔽的是路由器一开 DFS 选频,音箱就拒绝连接,而这个限制只藏在 SmartThings 某个三级菜单里。最后他解决了连接,却撞上电视内置喇叭延迟造成的回声。

🌍 社会、政策与科学

  • 海产供应链里的阻燃剂 — The fire retardant in the seafood chain。89/28(HN)。乙氧基喹啉作为饲料抗氧化剂进入水产养殖链,然后回到餐桌上;这条线的价值是监管空隙的具体形状,而不是又一个「有东西超标」的结论。

  • 动物实验的替代方案终于开始起量 — Alternatives to animal testing are finally taking off。301/91(HN)。类器官、器官芯片和体外模型的工程化程度终于够用了。💬 楼里最有信息量的补充来自 PaulHoule:鲎的蓝色血液被用来做注射药物的细菌安全性检测(LAL),1985 年就开发出了不需要抽血的方法,但行业切换得极慢,所谓「预期的转变」到现在还是预期。关于替代边界也吵了一轮:munchbunny 认为制药业不能照搬化妆品那套「能用体外就不动动物」的标准,因为有些安全性数据目前只能靠活体拿到。

🎯 今日总结

今天的情绪是憋着一股气的冷静。两份首页都在处理同一件事的后果:AI 让「发现问题」变得廉价,于是旧的标准开始从上面压下来——PostgreSQL 19 因为四十条边界缺陷撤回特性,Lobsters 干脆把一个标签停用、把一整类投稿关掉,达特茅斯的专栏署名被人拿检测器对了一遍,评论区的共识则是「模型能指出我几年都没发现的边界情况,那我的判断力到底值多少」。

必读三篇:Peter Eisentraut 那篇撤回复盘(唯一一份当事人写清「质量线在代码写完之后被抬高」的一手材料)、Lobsters 管理员的治理公告(一个社区如何处置自己最撕裂的话题,六种职责那一段值得所有做社区的人看)、以及 One Hash Bloom Filters(从布隆过滤器到 Bluesky 线上 1% 命中率,是今天唯一一篇能把理论折成钱的工程笔记)。

横向看有两条线在同时收紧和放开:收紧的是信任边界——Let’s Encrypt 要多视角校验域名、GPU 显存里的权重篡改开始被当成威胁、Plex 的利用链里 LLM 帮着串 CVE;放开的是成本结构——扩散模型用每秒 1068 token 和 $0.10 每百万输入把推理价格往下压,Wine 连 OpenBSD 都能跑起来。两件事的碰撞点在各处的「评审」上:证书签发、模型权重、社区投稿、数据库发版,都在找人替自己看最后一遍。