好的,这是今天的 Hacker News 中文博客。
今天的内容从软件底层到硬件改装,跨度不小:Go 语言迎来了一次更新,新增了泛型方法和后量子加密;一位 15 岁少年展示了自制的 3D 打印齿轮箱;还有人在为一台 90 年代的苹果服务器折腾 Linux 系统,以及利用挖矿主板组装高性价比游戏主机。
ByteDance 发布视频生成模型 Seedance 2.5:更长的视频,更强的可控性
核心升级:参考能力和精细编辑
ByteDance 发布了 Seedance 2.5,单次可生成长达 30 秒的视频。这次升级的一个核心是多模态参考能力。用户现在可以一次输入最多 30 张图片、10 个视频片段和 10 个音频片段作为参考。模型甚至支持一种叫“粘土渲染”(clay render)的技术,也就是用无纹理的 3D 模型来指定角色的位置、运动路径和镜头角度,模型能据此理解并模拟出物理光照效果。
在编辑方面,Seedance 2.5 支持按时间戳的精确控制。用户既可以在视频生成阶段指定某个时间段的叙事和节奏,也可以在生成后针对特定片段修改角色或动作,同时保持前后画面连贯。
社区讨论的焦点:动作特效与恐怖谷
Hacker News 上的讨论集中在模型的发展方向上。有评论指出,演示视频几乎全是动作和特效镜头,缺少人物对白的场景。这或许不是文化差异,而是一个务实的工程技术选择:动作场景有大量运动和快速剪辑,更容易用特效掩盖 AI 生成内容的细节瑕疵。相比之下,保留演员细腻表演的长镜头对模型的空间稳定性和一致性要求极高。
评价呈现出两极化。很多人对视频的连贯性感到“震撼”,认为进步很快。但也有不少用户能轻易看出 AI 的痕迹,比如表情僵硬、反射中的物体变形等,有人形容模型正处于恐怖谷的边缘。一个实际应用的顾虑随之出现:当生成视频与实拍难以区分时,视频作为证据的可信度将受到挑战。
Go 1.27 新特性一览:泛型方法、后量子加密和官方 UUID 包
语言层:泛型方法终于到来
Go 1.27 在语言层面最大的变化是支持了泛型方法(generic method)。方法声明现在可以拥有自己的类型参数,不再依赖接收者(receiver)的类型。比如,一个 Box[int] 类型现在可以有一个 Map 方法,将其转换为 Box[string]。
该语法引发了一些关于代码可读性的讨论。有观点认为,这种声明方式增加了认知负担,但反对者指出这类代码大多存在于底层库,日常业务代码中很少遇到。前 Go 团队核心成员 Brad Fitzpatrick 也现身评论区,解释泛型迟迟未加入并非有人反对,而是语言设计者们花了十几年,才找到一个所有人都满意的方案。
标准库亮点:UUID、后量子加密与性能优化
标准库新增了一个官方的 uuid 包,能按 RFC 9562 标准生成和解析 UUID。其中 NewV7() 方法生成的 UUID 可以按创建时间排序,很适合用作数据库主键。加密方面,新增的 crypto/mldsa 包实现了后量子数字签名方案 ML-DSA,而 crypto/tls(TLS 1.3)也已支持,Go 在应对未来量子计算威胁上迈出了一步。
性能上,编译器会为小于 80 字节的对象分配生成更特化的代码,小分配的开销最多能降低 30%。此外,一个实验性的 simd 包也悄然登场,旨在提供一套可移植的、与硬件向量宽度无关的 SIMD 操作。
需留意的行为变更
几个改动可能会影响现有代码。time.After 和 time.NewTimer 返回的通道现在都是无缓冲的,旧的缓冲行为已被彻底移除。HTTP/1 客户端在关闭响应体(Response.Body)时,现在会自动读取并丢弃最多 256KB 的未读内容,以便复用连接。虽然官方认为这更高效,但社区有人担心,那些以往依赖提前关闭来中止大文件下载的程序,可能会因此产生意外的行为。
一位 15 岁“准工程师”的 3D 打印摆线齿轮箱
15 岁的 Tom Ilan 展示了自制 3D 打印摆线齿轮箱(cycloidal gearbox)。他在标题中自称“想当工程师”(Wannabe Engineer),但社区普遍认为,能用三个版本迭代解决公差问题、并给出实测扭矩数据的他,早已走在真正的工程道路上。
三次迭代,从失败中学习
项目始于 Python 脚本生成的模型。V1 版本是手摇的,用于验证原理。V2 想做一个微型版本,但受限于 3D 打印精度以失败告终。最终的 V3 版本是一个外径 90 毫米、用 PLA 打印的成品,实测输出扭矩 1.3 N·m,效率 66%,传动比 1:9。作者在文档中详细记录了后续改进方向,比如换用微型轴承以减少摩擦,以及使用金属套筒来提升输出端的刚性。
摆线齿轮箱的特点是低背隙和多齿同时接触,这使它很适合用作机器人的执行器。评论区里,有过来人提醒“别在网上暴露年龄”,但被更多人反驳,认为这样扎实的动手作品远比同龄人沉迷游戏强得多。
为 1994 年的苹果服务器装上 MkLinux:一场跨越三十年的修复
一位老硬件爱好者修复了一台 1994 年出厂的 Apple Workgroup Server 9150 服务器。他从 eBay 买来时,机器已经破败不堪。换上内存和固态存储模拟器、给逻辑板更换电容后,他决定为这台机器装上 MkLinux——苹果官方唯一支持过的 Linux 发行版,也是唯一能在 NuBus 架构 PowerPC Mac 上运行的 Linux。
塑料老化与神秘的安装失败
修复过程最大的难题不是电路,而是老化后像饼干一样碎裂的 90 年代苹果 ABS 塑料。安装 MkLinux 时也碰了壁:系统在加载内核时死机。他最终发现是 264MB 的超额内存超出了 MkLinux 内核的处理上限,拔掉一半后才顺利完成 6 个半小时的安装。
许多老用户在 Hacker News 上分享起当年的经历。有人为了在 X11 里用中键粘贴,写信向罗技讨要一个三键 ADB 轨迹球,对方居然真寄来了;还有人把公司里频繁崩溃的 Mac 刷成 MkLinux,当作稳定的文件和防火墙服务器跑了多年。MkLinux 的性能并非最佳,但在那个时代,它是在 Mac 上跑 Unix 的几乎唯一选择。
在 AMD MI355X 上跑通 2.8T 参数的 Kimi K3 模型
开放权重大模型的体量正飞速膨胀,Kimi K3 仅权重就需要超过 1.5TB 显存,这让单卡 288GB 显存的 AMD MI355X 成了英伟达之外为数不多的选择。
部署实战:越过 ROCm 的坑
Wafer 团队在 8 卡 MI355X 上部署了 Kimi K3。在以 1024 token 输入、400 token 输出为基准的测试中,其峰值吞吐达 952 tok/s。虽然绝对性能不及 B300,但文章声称,考虑到租赁价格(MI355X 每小时 $2.50,B300 为 $6.00),其每美元的吞吐量更优。
部署过程并非一帆风顺。他们接连踩坑:投机解码(speculative decoding)所用的草稿模型在 ROCm 上因缺失的 CUDA 内核函数而报错;快速 MLA 预填充(prefill)内核也因不支持的注意力头数量而加载失败。团队通过纯 PyTorch 重写和零填充(zero padding)的巧技,分别带来了 2.2 倍的单流吞吐提升和 2-3 倍的首 token 延迟加速。
关于价格与“开源”的争议
这份性能对比在社区引起了质疑。有人发现文中引用的租赁价格与实际市场价不符,批评其将官方标价和市场需求溢价混为一谈。也有人指出文章将 Kimi K3 称为“开源模型”不准确,它其实是“开放权重”,因为训练数据和工具并未公开。不过,AMD 软件栈与 CUDA 的差距在缩小,是这次实践中一个积极的信号。
“垃圾佬”的 Steam 游戏机:ASRock BC-250 挖矿主板调试指南
这篇文章提供了一份详尽的配置指南,教你如何利用原本用于加密货币挖矿的廉价 ASRock BC-250 主板,组装一台高性价比的 Steam 游戏机。
解锁 GPU 的隐藏实力
调试的核心在于挖掘这块主板的潜力。默认情况下,其集成的 GPU 被限制在 1500MHz,并且只启用了 24 个计算单元(CU)。通过特定工具,可以实现 GPU 频率的动态调整,既能降低待机功耗,也能提升游戏性能。更令人惊喜的是,可以用脚本在运行时解锁被屏蔽的 CU,从 24 个提升到最多 40 个(PS5 有 36 个),带来免费的能效和性能提升。不过,这完全看芯片体质,有的能全开,有的只能解锁一部分。
此外,作者还分享了 CPU 超频与降压、着色器缓存优化等一系列设置,对喜欢折腾硬件的玩家来说,这是一次低成本的实践参考。
Bor v0.8.0:Linux 桌面的开源策略管理新选择
Bor v0.8.0 发布,这款面向 Linux 桌面的开源策略管理工具新增了对 Thunderbird、Microsoft Edge for Business 和 Firewalld 防火墙的管理支持。
实时推送与防篡改
Bor 的设计理念很明确:服务器不主动连接节点。代理通过 gRPC 长连接和 mTLS(双向 TLS)加密主动连接服务器,这意味着桌面机器无需开放任何入站端口,能穿透 NAT 和防火墙。策略一旦变更,会通过已建立的连接瞬间广播出去。其防篡改机制通过 inotify 监控文件变化,任何外部修改都会被立即回滚,并在服务器上记录事件。
开发者明确表示不会引入自定义脚本执行,理由是“一旦管理代理能运行任意脚本,它就不再是策略系统,而是远程代码执行服务”,这会让安全审计变得不可能。
Meshdiff:在浏览器里比较两份 3D 模型的差异
Meshdiff 是一个在浏览器中本地运行的 3D 模型对比工具。只需拖入两个 STL、3MF 或 OBJ 文件,页面就会利用体素化(voxel)技术进行差分渲染:用绿色代表新增部分,红色代表移除部分,并给出可调节的容差和体积变化数据。
所有计算都在客户端的 Web Worker 中完成,不上传服务器。作者开发它的动机很朴素:客户总发来诸如 part_v3_FINAL.stl 的文件,而自己苦于找不到快速查看细微改动的方法。社区反馈很积极,有人建议增加视图同步旋转功能,还有人希望将其做成 CLI 工具或嵌入 GitHub PR 检查,让代码审查也能看到 3D 模型的直观差异。
TLS 1.2 安全加固:废弃过时的密钥交换方法
IETF 发布了 RFC 10015,为仍在广泛使用的 TLS 1.2 和 DTLS 1.2 协议做出安全清理。它正式禁止了两种陈旧的密钥交换方法:有限域 Diffie-Hellman(FFDH)和 RSA 密钥交换。
这两种方法的问题在于缺乏“前向保密”(forward secrecy),即长期密钥一旦泄露,所有历史加密流量都可能被解密。此外,针对它们的攻击方法(如 Raccoon 和 Bleichenbacher 攻击的变体)不断出现,由于实现者很难正确部署所有防护措施,直接在标准层面禁用是最安全的做法。虽然 TLS 1.3 已解决了这些问题,但现实是,全球仍有约 25% 的服务器和大量无法升级的老旧设备依赖 TLS 1.2。这条 RFC 的意义在于,即使在旧协议上,也能通过移除已知的最弱环节来提升安全基线。
播客全文
女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是莓莓。
男:大家好,我是阿迪。
女:这期要聊的东西挺杂的,Go 语言发了新版本,社区差点为泛型吵起来;有个 15 岁的小朋友自己拿 3D 打印机做了个减速器;还有公司把两千八百多亿参数的大模型在 AMD 显卡上跑通了。咱们就顺着这些话题唠一唠。阿迪,Go 1.27 那个泛型方法,好多人在网上说看着头晕,你怎么看?
男:其实是给方法单独加了一个类型参数,不依赖结构体的类型。比如你有个叫 Box的int 类型装箱,现在可以让这个方法多接收一个 U,直接把 Box[int] 转成 Box[string]。语法写着是 func (b Box[T]) MapU any,方括号叠方括号,确实容易让人眼睛花。
女:听起来有点像把橡皮泥盒子里的红色小球倒出来,重新捏成蓝色方块塞回去,盒子还是那个盒子,但里头东西变了。之前做不到吗?
男:之前也可以绕路,但是会丢类型安全,用空接口加运行时断言,一不小心就在生产环境里崩掉。不过社区的争议也在这,有人觉得这就是 Go 一直想避免的认知负担,业务代码里很少直接这么写。前 Go 团队成员还在评论里解释,不是他们抵触泛型,是负责设计的 Ian Lance Taylor 一个人就推翻了好几版方案,直到语言和编译器都理顺了才放出来。
女:至少二十年的包袱终于落地了。我看这次更新还有些小改动,像结构体字面量可以直接用内嵌字段的名字了,不用把整个嵌入结构再写一遍。
男:对,User{ID: 7, Name: "Mittens"} 这种写起来顺手多了。另外编译器对小对象分配专门做了大小特化,分配密集的程序大概能提 1%,虽然不多,但这是免费的性能。加密方面还新增了后量子数字签名 ML-DSA,Go 的 crypto 标准库还是强。我比较意外的是终于有 UUID 包了,uuid.NewV7 可以按时间排序,适合做数据库主键。
女:这么多好东西,那有没有改得让人头疼的地方?
男:几个容易踩坑的。time.After 和 Timer 返回的通道现在一律无缓冲,以前靠异步行为偷懒的代码可能出问题。还有 HTTP/1 下关闭 Response.Body 现在会主动读完没消费的内容才复用连接,有人担心这会静默地把大下载给拖慢了。官方说是异步的,上限 256KB、50 毫秒,我觉得还算温和。播客里提一嘴,大家升级的时候记得看一眼 release notes。
女:行,做工程的人回去自己排查。说起工程,我看到论坛上有个 15 岁的小伙子自己做了个摆线齿轮箱,从 V1 手摇版做到能接步进电机出力的 V3,扭矩顶到 1.3 牛·米,传动效率 66%。这么小年纪折腾三轮,真挺厉害的。
男:摆线齿轮箱的特点是多齿同时接触、低回差,很适合做机器人关节。他那个 V2 想做成拇指这么大,结果 3D 打印的公差完全扛不住。最后 V3 老老实实把外径拉到 90 毫米,用 PLA 打印。他还特别提了下一步要把外壳销换成小轴承、输出销加螺丝套筒来提升刚性,这已经是正经的工程迭代思路了。
女:评论区也很温暖,有人说“你已经在做了,那你就是工程师,而想当工程师的人才不动手”。也有人劝他别在网上暴露年龄。
男:现在用 AI 辅助能很快拼出一个类似的项目,所以有人觉得这类作品不像以前那么稀罕。但在我看来,三轮迭代、解决公差、给出实测数据,这和随便敲个 demo 完全不一样。他用的 Python 脚本还是根据 SolidWorks 官方的参数方程写的,很扎实。
女:说到 AI 辅助,字节跳动最近发的 Seedance 2.5 视频生成模型也在网上炸了。一次能生成 30 秒连续视频,还支持多轮扩展,宣称连贯性优于常见生成视频。阿迪你给讲讲参考能力那个部分。
男:这次升级的重点是你可以一次丢进 30 张图片、10 段视频和 10 段音频作为参考。它还有一个“粘土渲染”的概念,就像动画师用没上色的灰模先把角色位置、运动路线、机位角度都摆好,模型再照着生成,顺便把光源方向、色温、强度这些物理光照也模仿出来。这对影视前期分镜非常有帮助。
女:我看了他们演示,觉得震撼是震撼,但好像全是动作和特效镜头,没有对白场景。评论区有一种说法,说这是中美内容市场的差异,中国观众更吃特效大片。你怎么看?
男:那是一种解读。我更信另一个更技术的观点:动作场景有大量快速剪辑,容易用特效掩盖 AI 的细节错误;而对白需要长镜头和严格的场景稳定性,对模型要求更高。选择高动作、高特效方向,因为这样更容易做到“看起来不错”,不代表文化差异。话说回来,还是有人能看出 AI 痕迹,表情僵硬,音乐会视频里观众席从空突然满座,耳机反射里变形。价格也不便宜,在 Dreamina 上生成 30 秒大概 15 美元,比前一代贵了一倍。
女:所以暂时还没法拿它出片,但做教学演示、工业仿真倒是能用。我记得官网就提到训练机器人的合成数据,模拟极端天气这些长尾场景。
男:对,教育场景里把物理实验变成动态演示,工业里生成合成训练数据,这些落地比较快。开源方面,MiniMax H3 即将发布开放权重,据说能在 3080 上跑,花点画质换本地控制,很多人愿意。
女:从生成视频到跑本地大模型,算力问题永远跟着。最近 Kimi K3 的开放权重模型参数有 2.8T,光权重文件就超过 1.5TB。一支团队挑了一堆硬件去跑它,最后发现性价比最划算的居然是 AMD 的 MI355X。
男:有意思的是,单看吞吐量,英伟达 B300 绝对赢,8 卡聚合能做到每秒 1568 个 token,MI355X 是 952。但按照他们采用的租赁价格,MI355X 每小时每卡两块五美金,B300 六美金。换算下来,MI355X 每美元吞吐 48 个 token,B300 是 33,B200 只有 7。B200 被跨节点带宽拖累得厉害,因为 K3 单卡 192GB 显存放不下,B200 得两节点。大显存的优势一下子体现出来了。
女:两美金五这个价格可靠吗?我看有人追着问,说实际标价是两块九毛五美金,还得找销售谈。
男:对,评论区对价格的质疑不少。有人去供应商网站查,可能没有完全公开的清单价。文章自己也承认是市场价和标价混合,这部分打了折扣。AMD 本身的软件栈这次没太拖后腿,虽然投机解码和 prefill 都踩了坑,但都靠 PyTorch 原生操作和零填充绕过去了。部署团队的人说,上线前必须通过精度和工具调用测试,所以这类修补没破坏模型输出。
女:也就是说 AMD 的软件护城河在缩小,但英伟达的综合势能还是在那里。这让我想起很多游戏玩家会拿挖矿剩下的主板去组装廉价游戏机。有人就写了一整套指南,把 ASRock 的 BC-250 矿板改造成 Steam 机器,解锁原本屏蔽的 GPU 单元、给 CPU 降压超频,最后玩得还挺开心。
男:那个指南很硬核。BC-250 默认只用 24 个 GPU 计算单元,PS5 有 36 个。它其实是个阉割的芯片,硬件还在,只是被屏蔽了。作者给的脚本可以在运行时启用,有的人运气好开到 40 个,免费白嫖近一倍的计算单元。但体质差异大,有的人只能开 36 个,还得一个个测。另外他把显存分配到 6GB,因为分太少材质会糊,同时把着色器缓存上限提到 5GB,还要在系统里关掉不匹配的预制缓存,否则每回启动游戏都重新下载,把人急死。
女:折腾硬件是一类快乐,软件工具做到顺手也是一种快乐。最近有一个叫 Meshdiff 的浏览器工具,拖两个 STL 文件进去就能对比出哪里多材料哪里少材料。作者说就是因为客户老发 “part_v3_FINAL.stl”,他根本看不出来改了哪儿。
男:他这个工具用的是体素差分渲染,绿色是新增,红色是移除,还能调容差。所有计算都在本地 Web Worker 里跑,不上传服务器。因为没有依赖标准的实体建模内核,反而能处理真实世界里乱七八糟的三角面片。评论区给的建议也很实在:加上同步旋转,让几个视图一起动。还有人想把它接到 CI 里,PR 的时候自动生成 3D 差异预览。
女:从 3D 模型对比,我想到一个完全不在数字世界里的工具。19 世纪那个写《爱丽丝梦游仙境》的刘易斯·卡罗尔,夜里脑子里冒点子又不想点灯,就发明了一种叫 nyctograph 的卡片,上面有十六个方孔,用手指摸着在格子里写字。不用开灯,手还能缩在被窝里。
男:他的符号系统叫 Nyctography,每个字母都是一个方块里的点划线组合,左上角有个大黑点定位。整套方框里塞进了 26 个字母,符号大多和拉丁字母形状相似,还有代表“the”和“and”的特殊符号。他甚至设计了表示后面是数字或日期的符号。盲人用这个记录思想也很方便。
女:不用开灯,却需要一套相当精密的小符号系统。这大概是某种意义上的极简加密吧。提到加密,IETF 刚发布了一份 RFC 10015,正式把 TLS 1.2 里两种老的密钥交换方法给禁了,一个是有限域 DH,另一个是 RSA 密钥交换。
男:这两者最大的问题是没有前向保密,私钥一旦泄露,之前抓的包全能被解密。更糟糕的是 RSA 容易受 Bleichenbacher 类型的变种攻击,二十年了修修补补,还是不断有新利用方法出来。标准这次把 “不应当使用” 升级成 “禁止使用”。那些还在跑 TLS 1.2 的旧设备,如果不升级配置,可能过不了安全审计。
女:那为什么不直接让他们升到 TLS 1.3 呢?比打补丁不是更干脆?
男:现实里 2011 年左右出厂的网络设备,还有大量政府和工业系统,根本不支持 TLS 1.3。SSL Labs 统计服务端 TLS 1.3 部署率大概 75%,剩下四分之一的流量还在依赖 1.2。这份文档就是给这些存量系统设一条红线,至少让他们别用最危险的加密组件。不过评论里也有人反问:这么拖着不如直接标遗,但这么一来会有海量设备离线。
女:强推不行,只好打补丁,这大概就是工程。最后我还想聊一个 Linux 桌面管理工具 Bor 的 0.8 版本。它新加了 Thunderbird 和 Edge 策略,还有防火墙 zone 的管理,整了个新界面,不再弹窗,而是每个页面都有独立 URL。
男:设计思路挺有趣的。它不是域控制器,只管节点策略,不管用户,能和 Windows AD、FreeIPA 配合。推送用的是 gRPC 长连接加 mTLS 双向证书,机器不用开任何入站端口。策略文件被外部改动的话,代理会靠 inotify 立即感知并回滚。开发者还很清醒地说不会内置自定义脚本,因为“一旦代理能 root 执行任意脚本,它就成了远程代码执行服务,而不是策略系统”。这个价目表非常值得参考。
女:好,今天这期从 Go 泛型一路聊到夜书密码、TLS 废弃,还有各种硬件折腾。希望这堆话题拼盘你们听着不累。咱们下回见。
男:下期见。记得用泛用型播客客户端订阅,这样就不会错过更新了。
参考链接
- Seedance 2.5
- Go 1.27 Interactive Tour
- Show HN: I'm a 15 Year Old Wannabe Engineer, This Is a Cycloidal Gearbox I Built
- MkLinux and the pimped-out Apple Workgroup Server 9150
- Running Kimi K3 on MI355X at Better Performance per Dollar Than B300
- ASRock BC-250: Building the Budget Steam Machine
- Show HN: Bor – Open-source policy management for Linux desktops
- Meshdiff – visually compare two STL versions in the browser, client-side
- Nyctography: A substituton cypher by Lewis Carroll
- RFC 10015: Deprecating Obsolete Key Exchange Methods in TLS 1.2 and DTLS 1.2
