今日的HN首页充满了开发者工具的争议和底层技术的奇技淫巧。以下是值得一读的内容。


电梯调度算法 — john.fun (1,549 点)

今日的热门话题是关于电梯调度算法的互动深度解析。从1961年获得专利的简单SCAN算法(电梯先上到顶楼再下来)开始,文章逐步深入到多电梯协调、等待时间分布(第50百分位数和第90百分位数比平均值更重要)以及办公大楼内一天中不同时间段的交通模式变化。

互动可视化功能允许你模拟不同的调度策略并观察其对等待时间的影响。早高峰是最糟糕的情况,这在任何在摩天大楼工作的人的直觉中已经显而易见。这篇文章之所以出色,是因为它将电梯视为一个分布式系统问题,以实际的人类挫败感作为失败模式。没有空话,只有算法和直方图。

来源: john.fun/elevators


qm — 多人代理工具箱(641 点)

YC支持的开源工具,允许整个团队通过Slack和网页界面共享AI代理。每个人都有一个隔离的工作空间,有自己的记忆、文件、密钥链和沙盒。有趣的是,它具有代理箱兼容性——你可以无需重新部署就切换到Pi、OpenCode、Codex和Claude Code作为底层代理引擎。

安全模型有三种策略:严格(每个工具调用都需要批准)、自动(分类器在数据到达模型之前先进行筛选)和危险(没有筛选)。自动策略结合筛选代理是大多数组织的合理默认设置。Postgres支持一切。使用TypeScript/Fastify构建核心,通过Bolt与Slack集成,通过Lit构建网页界面。

推销点是“Slack原生的创业代理工具”——每个人可以自定义自己的代理,但仍然可以在共享频道中工作。这是否真的会取代个人开发者的工具订阅,还是只是增加了另一层编排开销,还有待观察。4600颗星表明确实存在实际需求,但星星并不等于生产部署。

来源: github.com/yc-software/qm


使用29 GB内存以0.50 tok/s运行Kimi K3 (319 点)

WASTE(重量感知流式张量引擎)是一个无依赖的C推理引擎,能够在配备64 GB内存的消费者级MacBook上运行完整的2.78万亿参数Kimi K3模型。诀窍在于MoE模型每令牌仅激活约4%的权重,因此WASTE将模型主体保留在内存中,并直接从NVMe存储中流式传输激活的专家。

这些数字是真实的——0.45到0.62 tok/s对于交互式使用来说非常缓慢,但作者并没有隐瞒这一点。真正的主张是可行性:他们不知道有其他公开演示在消费级硬件上从磁盘流式传输万亿规模模型的案例。该引擎每层都与PyTorch参考实现进行验证(输出结果一致到3.6e-06),因此是数值正确的,只是速度较慢。

关键的工程见解是,最大的收益不是来自读取更少的字节,而是何时读取它们——重叠专家读取与算术运算可以带来约1.6倍的改进,而基于路由器预测推测启动下一层读取可以将专家缓存命中率从14%提高到38%。容器大小为982 GiB。名称代表了结束“云推理”浪费,因为该模型实际上可以在本地运行。观点合理,但0.5 tok/s意味着你以一种不同的方式在用钱换时间。

来源: github.com/sqliteai/waste


Flint:AI时代的可视化语言 (231 点)

微软研究项目,定义了一种高级图表规范语言,旨在让AI代理可靠地生成。与其指定低级别的Vega-Lite或ECharts参数(比例、轴、间距),你可以声明数据字段的语义类型(年月、数量、类别),Flint的编译器会推断其余部分——解析、比例类型、轴格式、颜色方案。

它支持五种后端的50种图表类型:Vega-Lite、ECharts、Chart.js、Plotly和原生Excel图表。MCP服务器集成意味着AI编码代理可以直接生成Flint规范。0.4.0版本刚刚增加了Plotly支持和Excel图表模板。

“AI时代”的框架在这里做了很多工作——这本质上是一个图表DSL,带有智能编译器,这没问题。真正的价值在于Flint规范足够紧凑,让LLM能够正确生成(没有脆弱的像素级参数),并且编译器保证输出有效。五种渲染后端是功能还是维护负担取决于你的视角。

来源: microsoft.github.io/flint-chart


Cursor移除了使用页面的成本信息 (227 点)

用户注意到Cursor悄悄地将基于美元的使用跟踪替换为纯令牌计数。论坛帖子是一面充满失望客户的墙,他们依赖于$$显示来跟踪自己的花费与计划限制。Cursor的一名员工确认这是故意的:企业计划仍然显示美元金额,但个人计划将不会。

官方解释是,对于个人计划显示美元金额“导致了一些混淆”,因为显示的费用往往高于计划价格(因为包含了使用量)。Ultra计划基于令牌定价。这是一个典型的不透明操作——当SaaS公司隐藏费用数据时,通常不是因为客户被透明度所困扰。98条评论的帖子表明这并不受欢迎。

如果你的团队共享按需使用,这实际上使得个人无法跟踪自己的消耗。建议查看账单页面是一个非答案——那是汇总的,不是按请求的。另一个提醒,没有明确的使用定价可见性,基于使用的定价实际上就是一张空白支票。

来源: forum.cursor.com


为一人的软件 (225 点)

Adam Waxman在Robin Sloan 2020年的“自制餐食”文章基础上,讨论了个人软件的概念已经因为AI编码工具的出现而变得可行。他构建了一系列个人应用程序:一个运行其顾问逻辑的睡眠追踪器、一个根据跑步距离调整奶昔份量的健身应用、一个从Strava历史中派生的马拉松规划器,以及一个“多利亚诺练习爵士和弦”的应用。

论点令人信服——这些应用程序解决了商业产品不会关心的问题,因为市场实际上是一个家庭。他的堆栈(React Native + Expo + Supabase)让他能够快速迭代,以至于构建比配置一些通用的健康应用更便宜。睡眠应用花了他一周的晚上时间;现在他和他的妻子、保姆共享一个实时日程。

225条评论表明这引起了共鸣。反对意见是幸存者偏差——对于能够编写一个有效工作的睡眠应用的人来说,有上百人会生产出足以扰乱婴儿午睡时间的错误应用。但更广泛的观点仍然成立:AI编码工具已经将个人软件的门槛从“需要是开发者”降低到“需要是组织者”。

来源: ajwaxman.com/writing/software-for-one


RipGrep musl二进制文件在大规模搜索中偶尔崩溃 (213 点)

dfoxfranke撰写的详尽的错误报告记录了RipGrep在运行musl链接的二进制文件时,对非常大的文件树(约20 GiB,1.8M文件)进行高并发搜索时崩溃的情况。崩溃发生在musl的mallocng分配器中,具体是在opendir的calloc调用期间——堆元数据完整性断言失败。glibc链接的二进制文件不会重现此问题。

BurntSushi(RipGrep的作者)确认了此错误,并指出崩溃发生在musl的分配器中,而不是RipGrep的代码。重现需要:musl链接的rg、一个巨大的文件树以及在多核系统(报告中为24核)上进行循环搜索。145条评论的讨论包括对musl分配器内部的分析以及这是否是musl错误还是由RipGrep的激进并行性暴露的线程问题。

这是一个真实的“无聊的基础架构有错误”的故事。musl是Alpine Linux的默认C库,后者驱动了大量Docker容器。如果你在CI中使用Alpine运行大型仓库的RipGrep,这可能会出问题。目前的解决办法是使用glibc链接的二进制文件。

来源: github.com/BurntSushi/ripgrep#3494


加拿大悄悄签署联合国网络犯罪公约 (207 点)

Michael Geist对加拿大签署联合国网络犯罪公约的分析——该公约起源于2017年俄罗斯发起的倡议,旨在取代欧洲委员会的布达佩斯公约。加拿大最初与美国和欧盟一起反对谈判,警告这将是一个扩大监控权力的工具。现在加拿大已经签署,尽管20个加拿大组织和专家呼吁拒绝。

核心问题在于:这并不是主要的网络犯罪公约。它是一个跨境监控和电子证据共享协议。主要盟友(包括美国和欧盟成员)都拒绝签署。7月中旬低调签署,几乎没有引起注意。虽然签署并不创造约束力(需要批准才能生效),但它标志着一个政策转变——一个反对该条约不到一年的政府。

地缘政治背景很重要:该条约旨在为专制国家提供跨境数据访问的掩护,名义上是为了打击网络犯罪。加拿大的立场转变值得注意,因为它是最积极倡导人权保障的代表团之一。签署该条约表明,监控条款胜过了对公民自由的担忧。

来源: michaelgeist.ca