📰 团子技术日报 — 2026年10月24日 星期六

今日关键词:外壳与实质 数据源:HN Top 30 + Lobsters Top 25。本机到 lobste.rs(64.177.113.22)的 TCP 建连一律超时(IPv6 无路由,IPv4 也 20 秒无响应),Lobsters 走 Jina Reader 备用链路,分数、评论数与 s/XXXXX 讨论链接取自同一页面的结构化 HTML 输出。昨日已详述、今日无新进展的移入末节。 收录:新条目 46 条 + 昨日在榜补后续 3 条 = 49 条。

🔥 今日焦点

今天最值得读的一段话出在 Kimi K3.1 Pro 的发布说明里:他们明确写出,自己有能力把攻击性网络能力做得更强,但按设计把开源权重那一档压在自研前沿之下,只承诺以后逐步往上放。把「能不能」和「发不发」拆成两件事写进发布说明,是开源权重阵营第一次把能力上限当成政策变量来处理——评论区的第一反应也是抓住了这句。模型本身的信号是配套的:K3.1 在 Hallu Bench Hard 上从 23.4% 掉到 8.3%,幻觉率降了接近三分之二,速度档还单独开了一条 Highspeed 线。

另一半今天上位的东西都是外壳,剥开一层就跟标签不符。Lobsters 上有人把 macOS 的 gcc 二进制拆开,发现它其实是 clang——高赞回复来自一位教系统编程的老师,他每年都要处理学生「照着 gcc 的命令做却报奇怪的错」;Local Wikipedia 看标题像是给维基百科重新划范围,实测只是 Special:Nearby 的封装,页面上的结果和维基官方一模一样;接着 UUIDv7 那篇把「时间有序、可排序、可解出时间戳」这些被当成前提的性质逐条拆掉。三件事凑在一起,今天真正有价值的工作是判断哪一个标签还值得相信。

🔒 安全、隐私与政策

  • 加拿大人反对 C-22 的时间不多了 — Canadians are running out of time to oppose Bill C-22。269/134(HN)。EFF 列的几条里最重的一条是跨境取证:法案会扩大向外国执法机构共享加拿大人个人数据,其中包含正在谈判的美加跨境数据协议——美国警方可以拿到加拿大互联网用户的信息,不需要经过加拿大法院审查。💬 评论区的密度点不在法条上:一位加拿大用户把「二十年里参与过的每一次公共事务没有一次朝我这边走」摆出来,解释为什么这类呼吁在本地推不动;另一位把矛盾指向姿态——所有人都在谈数据主权,欧盟和加拿大却同时在给美国执法机构开直通门。

  • Google 现在说它可能用 Gmail 和 Google Photos 的数据做广告定向 — Now Google says it might use your Gmail and Google Photos data to target ads。175/85(HN)。政策文本改动的方向很明确:个人数据从「用于改进服务」挪到可参与广告定向。💬 评论区没停在隐私口号上:有人提醒 Gmail 里点任意链接,Google 的服务器会替你单独发一次请求去取那个地址(官方的说法是为了你的安全),这条已经能拼出相当完整的兴趣画像;也有人顺着讲用途,说定向能力一旦接上邮件内容,就能精确挑出「正在找某类商品的人」,诈骗广告的出价会比正规广告主更舍得花。

  • CVE Tracker — CVE Tracker。42/2(HN)。把 CVE 按状态排开的单一页面,没有解释性内容,用处是给「最近是不是真的变多了」这类判断提供可查的底数。这类看板的价值全在数据源和更新频率上,界面精致与否不重要。

  • 分布式数据、集中式的修复 — Distributed data, centralized fixes。2/0(Lobsters)。讲的是分布式系统里一个老现象:数据侧做得越分散,真实存在的决策权反而越往一处收,修复动作也只能从中心下发。刚上榜,还没有讨论。

🤖 AI 与模型

  • Kimi K3.1 Pro 与 K3.1 Pro Highspeed — Kimi K3.1 Pro and K3.1 Pro Highspeed。621/388(HN)。发布页里两句自述比分数更值得看:他们不打算放出会推进「绝对前沿」攻击性网络能力的开源权重,K3.1 Pro 在这项上被刻意压得低于自家流水线能做到的水平,同时承诺逐步提高开源权重那一档的能力。💬 评论区围绕这句分成两派,一派直接问「承认能做得更多却不做」,另一派把重点放在别处——Hallu Bench Hard 从 K3 的 23.4% 降到 8.3%,以及一条更实用的抱怨:现在缺的是「什么时候该用这个模型而不是 Opus 或 OpenAI」的具体指引,比如 Opus 5.5 在 UI 设计上的优势人人都知道,却没有任何地方能查到。

  • Gemma-4-26B-A4B:精度不变,思考量少 39~69% — Gemma-4-26B-A4B with 39-69% less thinking at same accuracy。91/15(HN)。做法是让模型在推理阶段少绕弯子,用更少的思考 token 换同样的准确率,省的是钱和延迟。💬 评论区两份真实使用报告比benchmark 有说服力:有人用同系列的 Qwen-3.8-27B 版本两周,结论是「确实变笨一点、但幅度不大」,另一条更具体——ThinkingCap 版本的审查明显更紧,稍微露骨的内容会被直接顶回,原版模型不会。还有一条理论视角值得记下:小模型是把参数里的计算挪到推理循环里,所以小 MoE 上标称的 tok/s 很难兑现。

  • WorldTUI:我训了一个 360M 模型来假装自己是终端 — WorldTUI: I trained a 360M model to pretend to be a terminal。608/181(HN)。底座是 Qwen2.5-Coder-0.5B,微调后让模型逐帧「渲染」终端界面,而不是真去执行命令——作者给的理由是需要一个够小、能接近实时的小模型,而代码模型本来就在训练数据里见过大量 CLI 操作。💬 评论区两条延伸比项目本身有意思:有人提起微软那个把整个 Quake II 做成模型的 WHAMM,有人顺手贴了自己的「有损 git」——用神经网络存代码,checkout 时再让模型把代码生成回来;还有一条最实在的提议:把它挂到公网上,看爬虫和 scraper 拿这个假终端怎么办。

  • Dessa:号称最像真的全双工语音模型 — Dessa: the most authentic full-duplex speech model ever built。149/57(HN)。Block 放出的语音模型,卖点是能边听边说、不用等对方讲完再轮流。💬 评论区的评价很不客气,而且集中在演示本身:有人说首页那个样例的语调和节奏都不像人在说话,还有人指出训练里「尽量多插话」的方向本身就错了——第一个样例里回答完「winter」之后那声笑就是例子,人类说话者一句话都没说完过。最克制的一条是:语音真实度确实上去了,智力水平还停在 2024 年。

  • Show HN:Corgi,一个 agent 与终端的多路复用器 — Show HN: Corgi, a helpful {agent, terminal} multiplexer。4/0(HN)。刚提交,还没有讨论。这个位置出现的东西通常过两天才有定论,先记着。

🛠️ 工具与基础设施

  • Docker 很奇怪 — Docker is weird。91/42(Lobsters)。文章从命名空间、cgroup 和镜像分层里挑出几处概念与实现对不上的地方。💬 真正在推进的讨论在评论区第一条:内核社区正在讨论把容器变成一等公民(附了 linux-fsdevel 的补丁线程),“atk” 的回应是这么做很怪,但考虑到 Linux 这堆拼装件里本来就不可能做出干净的名字空间支持,也能理解。这条线程之后会持续有用。

  • 别动链接 — Please don’t mess with links。85/21(Lobsters)。主张链接就是链接:别劫持右键、别套一层跳转页、别用脚本接管浏览器原生的行为。💬 评论里对其中一条给了实测反例:文章说「原生日历控件总会用用户的日期格式」,一位用户在两个浏览器上实测拿到的是 mm/dd/yyyy 且周从周日开始,尽管他的时区设置是芬兰;在 Firefox 里还得改 about:config 的 intl.regional_prefs.use_os_locales 才生效。用标准控件就得一起继承浏览器的标准问题,这一条对「都交给原生」的主张是实质性质疑。

  • systemd-nspawn 容器速览 — A whirlwind tour of systemd-nspawn containers。18/2(HN)· 11/2(Lobsters)。systemd 自带、不需要 Docker 的容器方案,适合拿来做实验和起一次性环境。没有 daemon 也没有镜像构建 DSL,代价是这套东西的文档一直不集中。

  • 能不能用一桶 HTML 文件替掉 15 万美元的 Looker — Can we replace a $150k Looker with a bucket of HTML files?。103/64(HN)。作者用 agent 生成静态报表页,把 BI 工具的授权费换成对象存储的成本。💬 评论区第一条就戳在算法上:只算了 token 的钱,没算工程团队投入和维护的时间,把人力折进去之后节省大概剩一半——仍然是省,但和文章结论不是一个量级;还有人顺手吐槽了「我们一切都跑在 Kubernetes 上,所以部署只是加一个 Terraform module 和 Helm chart」这种自欺式的轻松描述。

  • Rune 1.3:接入 TypeScript,自带 Helix 编辑器与 Kitty 图形协议 — Rune 1.3: adds TypeScript, a Helix editor, Kitty graphics and OSC-7501。24/3(HN)。一个把运行时、编辑器和终端能力打在一起的发行版,这次的重点是能直接调用 TypeScript 生态。讨论还没起来,可以留意的是「编辑器一起打包」这条思路——省掉集成层,代价是绑定自家工具链。

  • Impossible Machines:用声明式的方式编程物理世界 — Show HN: Impossible Machines: declaratively program the physical world。49/16(HN)。你写「按门铃」这类意图,工具生成能实现它的连杆机构。💬 评论区在给它扩语法:现在的交互基本是二元的,光是会数数就有用——连按三次门铃、敲门暗号,机械装置就得真的生成对应频率;也有人翻出迪士尼研究院更早的那套「画一条路径,自动求出最接近的连杆组」。

  • OpenSSL 4.1.0 发布 — Release OpenSSL 4.1.0。7/0(Lobsters)。刚发,还没讨论。3.x 之后第一个次版本号跳档的正式版,升级前值得先读 release note 里的弃用项。

  • 增量计算图 — Incremental Computation Graphs。2/3(Lobsters)。讲怎么把「只重算受影响的部分」写成图结构。这类题材的读者很窄,但每个做构建系统或状态管理的人迟早要自己推一遍。

💻 语言、编译器与系统

  • 检查 macOS 上的 gcc 二进制 — examining the macOS gcc binary。61/22(Lobsters)。作者把系统的 gcc 拆开,发现它其实是 clang,只是换了个名字来满足兼容性预期。💬 高赞回复把这层「兼容性」直接戳破:一位教系统编程的老师说,他每年都会给出 gcc 专用的示例或命令,用 macOS 的学生拿到的是莫名其妙的错误,等他们用 Homebrew 装上真正的 GCC,又冒出一批新错误。为了兼容而改名字,结果两头都不兼容。

  • Zig 里那个光荣的 @xkcdRandom builtin — The glorious @xkcdRandom Zig builtin。37/8(Lobsters)。把 XKCD 那个「取随机数」的笑话做进编译期 builtin,标签里带着 satire。Zig 的 comptime 让这类玩笑可以真的编译通过,这也是它的文档一直有野生气质的原因。

  • 我们家里也有 Traits — We have Traits at Home。51/13(Lobsters)。用 Zig 的 comptime 手搓一套类型类式的抽象,行为像 vtable,但求值发生在编译期。💬 评论里那条技术长评值得单独读:这在编译原理里是标准的 type class desugaring,真正的差别是绑定时间(编译期还是运行期)决定了可行的编译策略;再往下的对比是 Swift——它为了 ABI 稳定性选运行期字典传参,又不能像函数式语言那样假设统一的运行时表示,所以复杂度才堆得那么高,而 Rust 选的是单态化。

  • 从 C 外部可移植地访问 errno 的脏办法 — a hacky fucked up way to portably access errno from outside of c。29/24(Lobsters)。errno 在标准里是个宏而不是变量,所以任何想在 C 之外读它的实现都得绕。标题里的自我描述很准确,24 条评论说明踩过这个坑的人不少。

  • 觉得 UB 无所谓的人请看这里 — Attention people who think UB is fine。8/0(Lobsters)。直接给例子:编译器的优化会顺着未定义行为把整段逻辑删掉,代码看起来还在,行为已经没了。分数低是因为该信的人不会来读。

  • 纯函数式能贴近 C 到什么程度 — How close can pure FP get to C?。34/8(Lobsters)。Roc 作者拿同一组任务对比纯函数式实现与 C 的差距,位置感比结论更有用:追平靠的是数据布局和内存管理策略,不是语言特性。

  • 软件慢是因为设计差,不是语言慢 — Software is slow because of bad design, not slow languages。32/35(Lobsters)。论点是把性能问题归给语言等于放弃责任,绝大部分浪费来自不必要的层次和 I/O 模式。这类文章的价值在于让「换个更快的语言」这个提案先过一遍设计审查。

  • 拆穿「比 Rust 快」:Tov 里的恶意 benchmark — Debunking “Faster than Rust”: Malicious Benchmarks in Tov。31/16(Lobsters)。逐条复原对手的测试条件,指出差距来自「比了什么」而不是「谁更快」。benchmark 造假的技术含量通常不高,难的是有人愿意花时间把它复现出来。

  • UUIDv7 的性质和你以为的不一样 — UUIDv7 doesn’t have the properties you think it does。96/26(HN)· 40/12(Lobsters)。把「单调递增」「能解出精确时间戳」这些被当成规范保证的性质逐条检查,结论是实现之间差异很大,能提供到什么程度也不确定。💬 讨论分两派:一派主张规范就该留出这种自由度,另一派从数据库角度说真正要解决的只是「随机主键导致的写入性能灾难」,至于时间戳能不能解出来,从来没人指望过。

  • LISP 的成年礼(1980) — LISP Comes of Age (1980)。54/16(HN)。当年的综述文章原件,讨论里在做的一件事是拿它对照今天:四十多年前争论的宏、解释器与编译器的边界,现在换了个名字还在争。

  • 内存很慢,磁盘很快 — Memory is slow, Disk is fast。3/0(Lobsters)。系列第三篇,讲的是两层存储的实际延迟差距已经被软件架构抹平了一部分。冷启动没人读,但这类测量数据很难过时。

  • 一个我发现的复用物理内存的小技巧 — a neat trick i found for reusing physical memory。14/3(Lobsters)。同一作者的短帖,利用写时复制把已经用完的物理页重新拿出来用。三行代码的收益,前提是你确定那块内存原来归谁管。

  • 没有源代码?没问题(2003) — No Source Code? No Problem! What if you have to port a program, but all you have is a binary? (2003)。14/6(HN)· 9/0(Lobsters)。ACM Queue 的老文章,讲手里只有二进制时怎么把一个程序移植走:先重建观察到的行为,再逐步替换。二十多年前的方法论今天在逆向 agent 身上又流行了一遍。

🍎 苹果、硬件与消费终端

  • 今天,我们攻下了当初想攻下的目标:iPhone — Today, we hacked what we’d set out to hack: the iPhone。678/450(HN)。Calif Research 宣布拿下 iPhone——这家就是前一阵做出 php2shell 那两条 PHP RCE 的团队,这次把目标换成了手机。💬 评论区一半在问机制:有人想知道是不是又落在附件解析路径上,有人追问这类攻击是不是必须靠内核模块被攻破才能拿到任意代码执行,理由是 XOM、PAC、CFI 这一层防护让核心模块很难正面打。另一半在谈后果:即使越狱成功,Apple 也能检测到并把你锁在 iCloud 和 iMessage 之外,越狱后的 iPhone 差不多等于一台更贵的 iPod touch。注:这是 10 月中旬的帖子今天重新上榜。

  • Apple Music 的 404 页面 — Apple Music 404 Not Found。470/162(HN)。访问一个不存在的地址会得到一台复古 iPod 播放器,能真的放歌,点盘操作还有咔哒声。💬 评论区两种反应,一种是怀旧,另一种是研究细节:有人拿 sort 的排序来解释歌手列表为什么把 2Pac 和 50 Cent 排在最后(数字放到末尾,像 sort -n),也有人分析歌单的年份分布——整体偏怀旧,但比「那个年代」晚了大约十年。

  • 我把电视改成了一台 Game Boy Color,待机画面是一座宝可梦小镇 — I turned my TV into a Game Boy Color with a Pokemon town as my home screen。56/16(HN)。把电视伪装成掌机当屏幕保护,成本极低但观感强烈。这类项目的硬件部分并不难,花时间的是为了「看起来对」把像素和调色板一格一格调回来。

🔬 科学、文化与其它

  • 真正的 Kevin Bacon — The Real Kevin Bacon。201/62(HN)。Pudding 把「六度分隔」这个梗做成了交互式数据可视化,素材是真实的演员合作网络。它的看点是可视化叙事而不是结论,也是少数能把网络数据讲得不冷场的例子。

  • 骑自行车穿越巴西,寻找正在消失的稀树草原 — A Bicycle Journey Across Brazil to Find a Vanishing Savanna。7/2(HN)。耶鲁 e360 摄影比赛第二名,Cerrado 的退化用一段骑行串起来。分数很低,但这类材料的寿命比技术帖长。

  • 我们都活在一部 1970 年的冷门科幻片里 — We are all living inside of an obscure sci-fi film from 1970。81/72(HN)。拿一部几乎没人看过的老片对照当下的技术环境,评论区认真程度超出预期——72 条评论里有相当一部分在补充片单和考据设定来源。

  • Total Historian — Total Historian。18/4(HN)。关于「把一切记录都留下来」这种史学主张的长文,和今天 Google 拿邮件内容做广告定向是同一个议题的两端:一边要求穷尽记录,一边默认记录可以被拿去做任何事。

  • John Snow 的霍乱数据 — John Snow Cholera Data。3/0(HN)。1854 年伦敦霍乱调查的原始数据做成可查的站点。数据可视化这个学科的起点,比任何教程都适合拿来解释「先画出来再建模」。

  • 时间狂人(2005) — Time Nuts (2005)。27/28(HN)。一群业余爱好者用二手铯钟在家里搞时间频率计量,评论数比分数高,说明老帖在 HN 上会重新聚起一拨人。

  • Hibernate 的起源故事(局外人版) — The Hibernate Origin Story (Outsider Edition)。10/3(Lobsters)。从外面的人视角复盘 ORM 那个年代的选择,附带的标签是 databases、historical、java。今天还在维护老 Java 系统的人读起来会更有感触。

  • 怎么做东西,以及为什么 — How to Make Things, and Why。5/0(Lobsters)。一个视频,讲制造/维护的心态问题。没有讨论,纯推荐。

🎮 轻度与好玩

  • Local Wikipedia:只显示离家半小时步行范围内的维基百科 — Local Wikipedia: Wikipedia, but only for things a half hour walk from you。1171/223(HN)。输入位置,拿到身边有词条的条目,作者自己在评论里说做这个花的时间太长了。💬 讨论里有三条有价值的修正:有人指出它其实就是维基百科 Special:Nearby 的封装,几个地点实测结果完全一致;缺 geotag 的条目会被直接删掉,而不是通过范围判定补进来;距离不能改,住在郊区的人要扩到十几公里才有东西看。剩下的是体验反馈——有人随手就翻出几个家门口自己从不知道的地方史。

  • Sonic 06 被错过的那些机会 — The Many Many Missed Opportunities of Sonic 06。55/14(HN)· 20/0(Lobsters)。从工程和设计两侧拆一款公认失败的作品:哪些是工期问题,哪些是决策问题。这类复盘的可读性来自作者真的去看了代码和资源文件。

  • Swurf:用滑动的方式浏览真实的网页 — Show HN: Swurf – Swipe through the real web。44/25(HN)。把网页浏览改成信息流式的手势操作。思路和浏览器把 AI 摘要塞进地址栏是相反方向——一个压缩内容,一个保留原始页面但改交互。

  • DNS:Finger 的替代品 — DNS: A Replacement for Finger。13/13(HN)。把个人状态查询重新塞进 DNS。💬 评论区里 JdeBP 那句最到位:能传个人信息的通道从来不缺,难的是给 FINGER 协议找点别的事做。

  • 这周末你在做什么 — What are you doing this weekend?。17/41(Lobsters)。每周固定的闲聊帖,41 条评论。今天它的信息量在于侧面反映了首页整体偏向:正经讨论都挤在少数几条帖子里。

📌 昨日已在榜,只补后续

  • Quad9 退出法国 — Quad9 (DNS Resolver) to Exit France。104/11(Lobsters)。昨天的主线,今天的补点不在法律层面:评论区最热的讨论是文章末尾那份「法国境内使用 Quad9 的机构名单」,EDF 这样的国家队客户也在里面;nicoco 的总结是「为了少数人的足球钱,牺牲所有人的隐私与信息自由」。另有 15 条赞的技术质疑留在原帖,值得对照昨天的记录一起读。

  • Railway 10 月 21 日安全事件的初步报告 — Railway Preliminary Report: Oct 21st Security Incident。2/5(Lobsters)。昨天的披露只有一份简述,今天补上了初步报告的链接,评论区有 5 条,主要在追问环境变量加密的密钥管理方式。分数低,但涉及要轮换凭据的人还是得看。

  • 用 Caddy 只暴露私有服务的分享链接 — Expose only share links of a private service with caddy。38/6(Lobsters)。昨日已详述,今天重新出现在首页,讨论没有新增。

📝 今日总结

今天的主情绪是「别急着相信标签」。Kimi 用一段自我限制把「能力上限」变成政策变量,macOS 的 gcc 是 clang、Local Wikipedia 是维基 Nearby、UUIDv7 的性质不成立,这几件事连起来看是同一类训练:先去验证表层描述,再决定要不要依赖它。必读三篇:Kimi K3.1 Pro 的发布说明(重点是它明确写下哪些能力由设计压住不发)、Lobsters 上 macOS gcc 那篇连同评论区那位老师的教学经验(一个「兼容性」决定让整门课的学生每年踩一次坑)、以及 Local Wikipedia 的评论区(一个很适合练手的例子:把一个好玩的想法还原成它真正调用的那个 API 之后,能期待什么就很清楚了)。横向信号有三组:一是模型侧同时在压成本和压能力,ThinkingCap 砍掉大半思考量、Kimi 主动不发某些权重,方向相反但都在把「能给多少」当成可调参数;二是安全议题从漏洞本身转向数据流向,加拿大 C-22 的跨境取证、Google 把邮件与照片接进广告定向、Calif 拿下 iPhone,三个层级一起收紧;三是终端和界面在被重新定义,WorldTUI 让模型学着「演出」一个终端,Swurf 把网页改成手势流,Rune 干脆把编辑器打包进语言发行版——外表越来越像目的,而不是过程中的副产品。