2026-05-03

20 篇热帖

VS Code inserting 'Co-Authored-by Copilot' into commits regardless of usage

内容摘要

这份内容描述了一个GitHub pull request(拉取请求)的信息,主要涉及以下几个关键点:

  • Pull Request 状态: 该拉取请求最初是打开状态,后来被合并。
  • 提交信息: 首次提交时间为2026年4月29日, 提交哈希值 (commit hash) 为 5c22231
  • 作者和协作者: 该拉取请求的主要作者是 ThomasSnowden37,Copilot 也作为协作者参与。
  • 引用关系: NoiceBroice 将该拉取请求引用到了 ThomasSnowden37/Harmoniq-Charts 项目中。
  • 提及: srid 提到了该拉取请求。
  • 锁定状态: 微软 (microsoft) 将该拉取请求锁定为“垃圾信息 (spam)”,并将对话限制为协作者。 锁定事件发生于2026年5月2日。
  • Unicode 警告: 该文件可能包含隐藏或双向 Unicode 文本,这可能导致显示或编译结果与预期不符。 GitHub 提供了显示隐藏字符的功能。

总而言之,该内容记录了一个在Harmoniq-Charts 项目中进行的拉取请求的生命周期,包括其提交、作者、引用、锁定和潜在的 Unicode 问题。

NetHack 5.0.0

NetHack 5.0.0 发布公告

NetHack 开发团队宣布 NetHack 5.0.0 版本将于 2026 年 5 月 2 日发布。

NetHack 5.0 是对经典地下城探索游戏 NetHack 的升级,其源自 Rogue 和 Hack,并直接源自 NetHack 3.6。

作为 .0 版本,NetHack 5.0.0 可能包含一些错误,欢迎并鼓励玩家提交建设性的建议、GitHub 贡献以及错误报告。

除了游戏改进和错误修复外,NetHack 5.0 还致力于进行一些游戏架构和构建流程的改进,包括:

  • C99 标准兼容性: 源代码符合 C99 标准。
  • 跨平台构建: 移除了在一种平台和操作系统上构建 NetHack,然后在另一种(可能非常不同)平台和/或操作系统上运行的障碍,即通常称为“交叉编译”。 更多信息请参阅顶级文件夹中的 "Cross-compiling" 文件。
  • Lua 替代方案: 之前由 NetHack 的 "makedefs" 工具完成的基于 "yacc 和 lex" 的关卡编译器、地下城编译器以及任务文本文件处理,已被 Lua 文本替代方案取代,并在游戏运行时加载和处理。

详细的修复和更改列表(超过 3100 项)可以在游戏的源代码的 doc/fixes5-0-0.txt 文件中找到。该文本是为开发团队自己使用的,按原样提供。部分条目可能被视为“剧透”,尤其是在“新功能”部分。

重要提示: 现有的存档文件和骨骼文件将无法与 NetHack 5.0.0 兼容。

校验和验证:

  • 从 nethack.org 下载的二进制文件,可以在 Windows 平台使用以下命令进行 SHA256 校验:
    • certUtil -hashfile nethack-500-win-x64.zip SHA256
    • certUtil -hashfile nethack-500-win-arm64.zip SHA256

文件路径查询:

  • 在大多数平台上,可以使用以下命令来帮助确认 NetHack 可能使用的各种文件位置:
    • nethack --showpaths

开发团队感谢玩家的反馈,鼓励通过问题报告表提交错误。建议在提交问题之前,先查看“已知错误”列表,以防其他人已经报告了相同的问题。

祝您游戏愉快!

Dav2d

Anubis:网站防爬虫临时解决方案摘要

以下是对所提供内容的摘要:

Anubis 是一种网站防御恶意爬虫的临时解决方案,旨在保护服务器免受 AI 公司大规模抓取网站造成的停机影响。

核心机制:

  • 基于工作量证明 (Proof-of-Work, PoW): Anubis 采用类似于 Hashcash 的工作量证明机制。这意味着用户需要完成一些计算任务才能访问网站内容。
  • 分级防御: PoW 的额外负载对单个用户来说可以忽略不计,但对于大规模爬虫而言,累积起来会显著增加抓取成本,使其变得不划算。

长期目标:

  • 指纹识别与 headless 浏览器识别: Anubis 只是一个过渡方案。最终目标是开发更精确的指纹识别技术,特别是通过分析 headless 浏览器(例如,字体渲染方式)来识别它们。
  • 优化用户体验: 一旦能够准确识别合法用户,则无需向他们展示工作量证明页面,从而提供更好的用户体验。

技术限制:

  • JavaScript 依赖: Anubis 依赖于现代 JavaScript 特性,因此可能会与某些浏览器插件(如 JShelter)发生冲突,需要禁用这些插件才能正常使用 Anubis。

总结:

Anubis 是一个旨在减轻大规模爬虫对网站资源影响的临时方案,利用工作量证明来提高爬虫的成本。它正在向更高效的指纹识别技术转变,以避免对合法用户造成不便。

Kimi K2.6 just beat Claude, GPT-5.5, and Gemini in a coding challenge

AI Coding Contest: Word Gem Puzzle Results - Kimi K2.6 Takes the Lead

概述: Rohana Rezel 组织的 AI 编码竞赛 (AI Coding Contest, AICC) 第 12 天的挑战是“Word Gem Puzzle”(文字宝石拼图)。本次竞赛中,中国初创公司 Moonshot AI 的开源模型 Kimi K2.6 意外地取得了第一名,展现了非西方模型在特定任务上的竞争力。

挑战内容:

“Word Gem Puzzle” 是一种滑块文字拼图游戏。游戏棋盘是一个矩形网格 (10x10 到 30x30),包含字母方块和一个空位。AI 模型(“Bot”)可以滑动相邻的方块到空位,并尝试在水平或垂直方向上拼出有效的英文单词。

  • 计分规则: 单词长度超过七个字母计分 (长度 - 6),七个字母或以下长度的单词则扣分 (三字母扣 3 分,四字母扣 2 分,五字母扣 1 分)。 单词只能被声明一次。
  • 游戏规则: 每对模型进行五轮比赛,每轮有 10 秒的限制,对应不同的网格大小。

比赛结果:

Rank Model Match Points Record
1 Kimi K2.6 22 7-1-0
2 MiMo V2-Pro 20 6-2-0
3 ChatGPT GPT-5.5 16 5-1-2
4 GLM 5.1 15 5-0-3
5 Claude Opus 4.7 12 4-0-4
6 Gemini Pro 3.1 9 3-0-5
7 Grok Expert 4.2 9 3-0-5
8 DeepSeek V4 3 1-0-7
9 Muse Spark 0 0-0-8

模型策略和表现:

  • Kimi K2.6: 采用贪婪策略,选择能获得最大正面分数的移动,如果无正面分数则按字母顺序选择。 在大网格上,这种策略通过大量的移动最终胜出。
  • MiMo V2-Pro: 直接扫描网格寻找七个字母或以上的单词,一次性发送声明,策略依赖于网格中单词的保留情况。
  • Claude Opus 4.7: 不进行滑动,在 25x25 的网格上表现良好,但在 30x30 的网格上表现不佳。
  • GPT-5.5: 较为保守,进行约 120 次滑动,避免过度操作。
  • GLM 5.1: 滑动次数最多 (超过 800,000 次),但一旦耗尽正面移动就停止。
  • DeepSeek V4: 每次都发送格式错误的数据。
  • Muse Spark: 盲目声明所有单词,包括短单词,导致最终得分最低 (-15,309)。

关键发现:

  • 网格大小的影响: 30x30 的网格更能区分模型的性能,静态扫描策略失效,需要积极滑动。
  • 策略差异: Kimi K2.6 和 MiMo V2-Pro 采用了截然不同的策略,但最终得分接近,说明结果受到种子分布的影响。
  • 开源模型的崛起: Kimi K2.6 作为开源模型,其性能已经逼近甚至接近主流模型,预示着开源模型正在缩小与商业模型的差距。

总结:

本次“Word Gem Puzzle” 挑战展示了开源模型在特定任务上的竞争力,并强调了实时决策能力的重要性。 挑战结果也表明,即使是顶尖的 AI 模型,在设计不当的任务中也可能表现不佳。 随着开源模型的性能不断提升,未来的 AI 竞争格局将发生显著变化。

A couple million lines of Haskell: Production engineering at Mercury

总结:墨星公司使用 Haskell 进行生产工程的经验 (A Couple Million Lines of Haskell: Production Engineering at Mercury)

这篇文章介绍了墨星公司(Mercury),一家为企业提供银行服务的金融科技公司,以及他们如何使用大约 200 万行 Haskell 代码构建和维护一个大型生产系统。作者 Ian Duncan 分享了他在墨星公司的工作经验,强调了 Haskell 在处理快速增长、高交易量和频繁变化的团队中的价值。

核心观点:

  • 墨星公司背景: 墨星公司服务于超过 30 万家企业,2025 年处理了 2480 亿美元的交易量,并正在申请美国全国银行许可证。
  • Haskell 的价值: Haskell 帮助墨星公司将操作知识编码到 API 中,将危险的组件隔离,并使安全操作成为便捷选择。这对于快速发展的公司来说至关重要,因为它可以确保系统在人员流动后仍然易于理解。
  • 可靠性的哲学: 文章提出了与传统错误预防方法不同的可靠性视角,强调系统吸收变化的能力,优雅降级,并允许操作员理解和调整系统。
  • 关键实践:
    • 纯度作为边界: 将纯度视为接口强制执行的边界,而不是语言自身的属性。允许在严格控制的范围内进行突变操作。
    • 使正确操作简单: 通过类型系统编码操作知识,确保正确的操作成为最容易的选择,减少错误。
    • 持久执行: 使用像 Temporal 这样的框架进行持久执行,以处理跨多个步骤和服务的流程,并提供重试、超时和幂等性等功能。
    • 设计面向领域,而非传输: 将业务逻辑与传输层解耦,避免将 HTTP 状态码等传输层概念融入领域模型。
    • 记录函数: 通过记录函数来提供观察性,允许对代码进行灵活的配置和扩展,而无需修改核心库。
  • 类型编码的权衡: 强调在类型系统中编码不变式需要谨慎,过多的类型约束会降低代码的可维护性。
  • 拥抱不完美: 承认生产代码中不可避免的存在着一些妥协,例如 unsafePerformIO 的使用,并强调通过代码审查和文档来管理这些妥协。

总结:

这篇文章表明,即使在大型、复杂的金融系统中,Haskell 也能有效地用于生产。关键在于合理运用 Haskell 的特性,将操作知识编码到类型系统中,并构建具有适应性和可观察性的系统。墨星公司的经验表明,Haskell 能够帮助公司应对快速增长和频繁变化带来的挑战,并构建可靠且易于维护的软件系统。

California to begin ticketing driverless cars that violate traffic laws

无人驾驶汽车违规处罚新规:加州 DMV 发布更全面的法规

核心内容: 加州车辆管理局 (DMV) 近期宣布了针对自动驾驶汽车 (AV) 的新规,旨在解决无人驾驶车辆违反交通法规时,执法部门无法进行处罚的问题。这些新规将于 7 月 1 日生效,是 2024 年一项更广泛法规的一部分。

主要细节:

  • 处罚机制: 警察现在可以直接向自动驾驶汽车的制造商发出“AV 不合规通知”,取代了以往无法向车辆本身开具罚单的困境。
  • 法规范围: 新规被 DMV 描述为“全美最全面的 AV 法规”。
  • 关键要求:
    • 允许警察对自动驾驶公司因其车辆的违章行为进行处罚。
    • 要求 AV 公司在接到警察或其他紧急部门的电话后 30 秒内做出响应。
    • 对车辆进入活跃的紧急区域处以罚款。
  • 背景: 近期有报告显示自动驾驶汽车违反交通法规的情况,例如在旧金山停电期间。
  • 主要参与者: Waymo 是旧金山湾区和洛杉矶县的主要自动驾驶出租车运营商,特斯拉等公司也获得了在加州城市测试 AV 的许可。
  • 实际案例: 旧金山南部的圣布鲁诺市警察曾目睹 Waymo AV 在红灯处非法掉头,但由于没有驾驶员可以接收罚单,只能联系公司报告“故障”。旧金山消防部门也多次抱怨自动驾驶出租车阻碍了紧急响应。

总结: 加州通过新的法规,明确了对自动驾驶汽车违规行为的处罚机制,加强了对该技术的监管,并致力于保障公众安全。


(Summary in Chinese)

Do_not_track

总结:统一的隐私追踪禁用环境变量提案

本文提出了一种统一的解决方案,旨在简化命令行工具、SDK 和框架中追踪数据禁用的流程。 目前,各种工具使用不同的环境变量来禁用追踪功能,导致用户体验不佳。

问题:

  • 许多 CLI 工具、SDK 和框架默认收集遥测数据。
  • 每种工具都有不同的禁用追踪方法,例如:
    • .NET: DOTNET_CLI_TELEMETRY_OPTOUT=1
    • AWS SAM CLI: SAM_CLI_TELEMETRY=0
    • Azure CLI: AZURE_CORE_COLLECT_TELEMETRY=0
    • Go: go telemetry off
    • 等等(表格中列出了更多示例)
  • 这种多样性使得用户难以统一禁用所有追踪。

提案:

引入一个标准的、明确的环境变量 DO_NOT_TRACK 来禁用所有类型的追踪:

  • 广告追踪
  • 匿名或非匿名的使用报告
  • 遥测数据
  • 崩溃报告
  • 非功能性请求 (向软件创建者或第三方)

通过设置 export DO_NOT_TRACK=1 可以实现对所有终端会话的追踪禁用。

如何设置环境变量:

Shell 文件 语法
Bash ~/.bashrc export DO_NOT_TRACK=1
Zsh ~/.zshrc export DO_NOT_TRACK=1
Fish ~/.config/fish/config.fish set -x DO_NOT_TRACK 1
PowerShell $PROFILE $env:DO_NOT_TRACK = "1"
Windows (CMD) 系统环境变量 setx DO_NOT_TRACK 1

对软件作者的建议:

  • 如果你的工具收集遥测数据或进行非必要网络请求,请检查 DO_NOT_TRACK 环境变量。
  • 如果 DO_NOT_TRACK 设置为 1,则禁用所有追踪。
  • 除了现有的退出机制外,也尊重此变量。
  • 考虑将遥测功能设置为默认关闭 (opt-in) 而不是默认开启 (opt-out)。

参考资料:

Six Years Perfecting Maps on WatchOS

Pedometer++ 的六年腕表地图之旅总结 (Summary of Pedometer++'s Six-Year Wrist Map Journey)

本文讲述了开发者 David Smith 创建 Pedometer++ 应用程序在 Apple Watch 上最佳地图体验的六年历程。文章主要讲述了从最初的服务器端地图到最终实现的功能和设计,并解释了为何选择自定义方案而非 Apple 的 MapKit。

主要内容:

  • 早期尝试 (Early Efforts): 最初的地图通过服务器生成,但效率低下且无法离线使用。
  • 自定义地图引擎 (Custom Mapping Engine): 为了实现更强大的功能,开发者构建了一个基于 SwiftUI 的自定义地图渲染引擎,支持渲染瓦片地图并叠加位置信息。
  • 设计挑战 (Design Challenges): 在小屏幕上设计交互友好的地图界面是巨大的挑战,经过多次尝试,最终采用了“模态”方案,用户可切换地图和指标界面。后又尝试了多种设计,但都存在显示信息有限的问题。
  • Dark Mode, Liquid Glass & Cartography: 随着 watchOS 26 的发布和 Liquid Glass 技术的引入,开发者委托地图绘制师 Andy Allen 重新设计地图,使其更符合 Liquid Glass 风格,并增加了深色模式支持,提升了夜间可读性。
  • 最终设计 (Final Design): 在设计师 Rafa Conde 的帮助下,最终确定了将指标显示在地图左上角,地图作为垂直堆叠顶部页面的设计方案,通过点击地图进入浏览模式实现交互。
  • MapKit 的考虑 (Considering MapKit): 虽然 MapKit 逐渐完善,但开发者认为其配置性、动画效果和覆盖范围仍无法满足 Pedometer++ 的需求,因此选择继续使用自定义方案。

核心功能和结构:

  • 自定义地图引擎: Pedometer++ 使用一个完全基于 SwiftUI 的自定义地图引擎,可以渲染瓦片地图并叠加位置信息。
  • 交互式地图界面: 用户可以通过点击地图进入浏览模式,并可自由缩放和平移地图。
  • 深色模式和 Liquid Glass 风格: 地图设计遵循 Liquid Glass 设计原则,并提供深色模式选项,提高在各种光线条件下的可读性。
  • 自定义地图数据: 通过与地图绘制师合作,创建了一套专门为 Pedometer++ 设计的地图数据,提供了更丰富的细节和更准确的信息。

[1]: Andy Allen 的 Thunderforest 网站:https://www.thunderforest.com/custom/

Roblox shares plummet 18% as child safety measures weigh on bookings

Roblox 第一季度财报及未来展望:安全措施影响增长,但为长期发展奠定基础

Roblox 公司于周五发布第一季度财报,其新推出的儿童安全措施对订单量产生负面影响,导致该公司股票下跌 18%。

主要要点:

  • 安全措施影响: Roblox 推出的年龄验证功能限制了未验证用户在平台上的沟通,降低了已验证用户的沟通效率,并减缓了新用户获取速度。公司在致股东的信中表示,这些影响超过了预期。
  • 年龄验证背景: 自 1 月起,Roblox 要求全球用户完成年龄验证才能访问聊天功能。截至 1 月 31 日,Roblox 平台上 73% 的每日活跃用户年龄低于 18 岁,其中 35% 年龄低于 13 岁。
  • 业绩与预测:
    • 第一季度营收为 17.3 亿美元,略高于分析师预期的 17.2 亿美元。
    • 每股亏损为 35 美分,好于分析师预期的 41 美分。
    • 公司下调了 2026 年全年的订单量预测,预计将在 73.3 亿至 76 亿美元之间,相比上个季度预测的 82.8 亿至 85.5 亿美元有所下降。
  • 公司观点: CEO David Baszucki 表示,年龄验证是构建平台的长期正确方式。Roblox 在致股东的信中强调,虽然安全措施可能会降低 2026 年的营收增长预期,但它能使平台更加完善,并通过更有效的个性化内容推荐、定制化的沟通体验和改善社区氛围来增强 Roblox 的长期增长潜力。
  • 法律诉讼: Roblox 面临超过 140 起在美国联邦法院的诉讼,指控该公司未能保护儿童免受性剥削。上个月,该公司已与阿拉巴马州和西弗吉尼亚州达成和解,同意支付总计 2320 万美元。
  • 新功能: 公司上个月宣布推出针对年轻用户群体的全新账户类型以及扩展的家长控制功能。

总结:

Roblox 为了加强儿童安全措施,采取了年龄验证等措施,虽然短期内对用户增长和订单量产生了一定的负面影响,但公司认为这有利于平台的长期发展和健康生态建设。目前,Roblox 正在积极应对法律诉讼并不断完善安全机制。

This Month in Ladybird - April 2026

Ladybird 浏览器四月更新总结

Ladybird 浏览器在四月合并了 333 个 PR,来自 35 名贡献者,其中 7 名首次提交代码。本月的主要更新包括:

资金支持: 感谢新赞助商,人权基金会 捐赠了 50,000 美元,Jakub Stęplowski 捐赠了 1,000 美元。欢迎感兴趣的赞助者联系 contact@ladybird.org

新功能与改进:

  • 内联 PDF 查看器: 集成了 pdf.js 完整功能的 PDF 查看器,支持页面导航、文本选择、缩放和查找功能。
  • 浏览历史与地址栏自动补全: 地址栏提供更丰富的建议,包括已访问页面(带有图标和标题)、搜索引擎快捷方式和 URL 补全。
  • 增量式 HTML 解析: HTML 解析器现在以增量方式处理响应体,提高了效率。
  • 推测式 HTML 解析: 当主解析器阻塞在外部脚本时,独立的解析器会提前扫描未解析的输入,并预先请求资源(<script src>, <link rel=stylesheet|preload>, <img src>)。
  • Off-Thread JavaScript 编译: 脚本的字节码生成现在在后台线程池中运行,释放主线程资源。
  • Per-Navigable 光栅化: 每个 Navigable 独立地在自己的线程上进行光栅化,为后续的 iframe 沙箱化做准备。
  • JavaScript 引擎优化:
    • 更快的 JS-to-JS 调用: 优化了 Call, Return, 和 End 指令的执行效率。
    • O(1) 字节码寄存器分配器: 使用 LIFO 栈代替扫描自由池,大幅提升性能。
    • 缓存 for...in 迭代: 缓存扁平化的可枚举键快照,提升迭代效率。
    • 其他优化: 包括零拷贝标识符名称共享、短字符串连接优化、箭头函数优化、稀疏数组优化、正则表达式优化、源代码映射优化、零拷贝 TransferArrayBuffer 等。
  • GTK4 / libadwaita 前端: 引入了基于 GTK4 和 libadwaita 的 Linux 前端,与现有的 Qt 前端并行存在。
  • 书签管理: 增加了书签管理 UI,包括书签页面、导入导出、上下文菜单和日期时间戳。
  • Cache 和 CacheStorage: 实现了 Cache 和 CacheStorage API,并使用内存存储。
  • CSS 特性支持: 增加了 image-set(), position-anchor 和颜色插值等 CSS 特性支持。
  • 网络改进: 优化了 DNS 解析和请求服务器,提升网络性能。
  • 样式无效化优化: 优化了样式无效化过程,提升渲染效率。
  • Linux GPU 绘图: 通过 dmabuf 优化了 Linux GPU 绘图。
  • mimalloc 作为主要分配器: 使用 mimalloc v2 作为主要的内存分配器。

其他重要变化:

  • Rust 成为强制性构建选项。
  • 堆栈零化以优化 GC 性能。
  • 修复了多个网站兼容性问题,例如 Reddit、YouTube、gocomics.com 等。

贡献者: 感谢所有贡献代码的开发者,特别是首次贡献的 7 位开发者:CalebC48、Darshanx256、j-stechmann、James Raspass、jarusll、slydetector 和 Yayoi-cs。

Tesla owner won $10k in court for Tesla's FSD lies. Tesla is still fighting him

特斯拉自动驾驶软件退款案例:车主胜诉,特斯拉延期支付

主要内容:

特斯拉长期以来承诺其车辆具备自动驾驶能力,甚至声称所有新车都配备了自动驾驶硬件。然而,在经过多年未能实现承诺后,部分车主寻求退款。本篇文章讲述了车主本·加维瑟(Ben Gawiser)成功获得10,600美元退款的案例,以及特斯拉随后试图拖延支付的举动。

事件经过:

  • 购买与价格上涨: 加维瑟于2021年8月购买了一辆特斯拉Model 3,并支付了10,000美元购买了特斯拉的“全自动驾驶”(Full Self-Driving,FSD)软件。此前,特斯拉曾逐步提高FSD软件的价格,声称价格上涨是因为软件功能增强并接近发布。
  • 未兑现承诺: 加维瑟期望在购买后的五年内,他的车辆能够实现完全自动驾驶(Level 5)。然而,特斯拉至今未能提供能够实现Level 5自动驾驶的软件。即使在特斯拉的Robotaxi车队中,也只有少数车辆在有限条件下运行Level 4自动驾驶。
  • 寻求退款与法律诉讼: 2025年11月,加维瑟通过特斯拉的客户服务邮箱申请退款,但未得到回应。随后,他于特斯拉总部所在的德克萨斯州特拉维斯县小额索赔法庭提起诉讼。
  • 缺席判决: 特斯拉未对诉讼作出回应,法院因此作出缺席判决,判决特斯拉向加维瑟支付10,672.88美元,包括FSD软件费用、税费和法庭费用。
  • 特斯拉的拖延: 特斯拉在判决后又拖延了五天才提出延期申请,声称未收到缺席判决通知。然而,特斯拉并未提供任何证据反驳加维瑟的诉讼,仅仅要求推迟期限。
  • 加维瑟的论点: 加维瑟认为,他购买的FSD软件并未交付,且特斯拉的首席执行官埃隆·马斯克最近承认,像他的Model 3(配备HW3硬件)这样的车辆将永远无法实现完全自动驾驶,需要专门的工厂进行升级。
  • 未来展望: 法院尚未对特斯拉的延期申请作出回应,但加维瑟对胜诉充满信心。如果特斯拉拒绝支付,加维瑟将申请强制执行命令,可能导致特斯拉的资产被查封和出售。

其他信息:

  • 特斯拉此前曾承诺车主可以使用自己的车辆作为Robotaxi,但目前尚未允许。
  • 特斯拉正在通过Robotaxi车队从FSD软件中获取收入。
  • 目前,全球范围内有多起针对特斯拉的集体诉讼,指控特斯拉虚假宣传FSD软件的能力。
  • 加维瑟的案件并非个例,其他车主也通过小额索赔或仲裁等方式获得了退款。
  • 加维瑟的案件虽然成功,但由于是缺席判决,其效力可能有限。

总结:

本篇文章记录了特斯拉车主加维瑟成功获得FSD软件退款的案例,反映了特斯拉未能兑现自动驾驶承诺的现实。尽管特斯拉试图拖延支付,但加维瑟的诉讼表明,车主可以通过法律途径维护自身权益。 此案例也凸显了特斯拉长期以来关于自动驾驶功能的虚假宣传,以及由此引发的法律风险。

Open source does not imply open community

开源软件发展回顾与反思

本文回顾了开源软件的发展历程,并对当前开源模式下维护者面临的困境进行了反思。

早期开源模式:

  • 在分布式版本控制系统(DVCS)出现之前,开源项目通常以简单的形式存在,例如:HTML网页、文本文件、FTP服务器上的tarball等。
  • 交流方式主要依赖电子邮件、邮件列表或非官方的IRC频道。
  • 这一阶段的开源项目缺乏现代化的社区管理机制,例如:社区、政治、行为准则、Pull Request、Issue跟踪、Wiki以及核心团队。

Sourceforge时代的转变:

  • Sourceforge等平台提供了CVS/SVN版本控制系统和邮件列表,使得开源开发更容易进行。

Github的崛起与问题:

  • Github的出现推动了开源软件的广泛流行,但也引发了一些问题。
  • Github将开源开发转变为一种无偿工作,维护者需要处理类似企业工作的事务,例如:任务分配、会议、路线图规划、政治斗争、截止日期、指标和KPI,以及不断变化的开发需求。
  • 维护者不仅需要在工作期间处理这些事务,还会在下班后收到通知,需要处理Issue、Pull Request、投诉和需求。
  • 这种模式导致维护者需要承担社区管理的责任,并面临来自缺乏耐心和经验的用户的压力。
  • 最终,开源项目变成了维护者的第二份工作,导致他们精疲力竭,失去对项目方向的控制。

回归早期开源模式的建议:

  • 对于规模较小、复杂度不高的项目,可以考虑回归早期开源模式。
  • 关闭Issue跟踪器和Pull Request,或者使用简单的Git服务器发布代码。
  • 与信任的小组合作,或者独自进行开发。
  • 无需强制执行行为准则或LLM策略。
  • 强调编写代码、创造自己喜欢的东西,并使用任何方便的工具。
  • 避免将开源项目运营成科技孵化器和缺乏社交技能的人的托管中心。

总而言之,文章呼吁开源社区反思当前的模式,并鼓励开发者回归更自由、更专注的开发方式,避免不必要的社区管理负担,从而保持对项目的控制和热情。

Specsmaxxing – On overcoming AI psychosis, and why I write specs in YAML

Acai.sh 工具套件:面向未来软件开发的规范驱动方法

本文档探讨了作者在构建 AI 软件过程中经历的转变,以及由此产生的开源工具套件 Acai.sh。核心思想是强调规范(specs)的重要性,并将其作为软件开发流程的核心。

核心问题与解决方案:

作者在早期使用 Claude 等 AI 工具时,发现即使功能运行良好,也存在一些问题:

  • 上下文窗口限制: AI 的能力受限于上下文窗口的大小,这导致了需求遗失、细节缺失等问题。
  • 代码质量问题: 存在 N+1 查询、不恰当的页面分页方式(offset pagination 而非 cursor pagination)等问题。

为了解决这些问题,作者开始强调规范的编写,并逐渐走出了“slop”(混乱、不规范)的时代,进入了更加成熟和可观察的“post-slop”时代。

规范驱动开发(Spec-Driven Development):

作者认为,规范编写是软件工程的关键环节,并提出了以下观点:

  • 规范形式: 推荐使用 README.mdAGENTS.mdtesting-guide.md 等多种形式的规范文件,甚至可以考虑 md.md 来指导 AI 编写规范。
  • 规范内容: 规范应包含具体、可测试的需求,关注功能行为和关键约束,避免过度关注 UI 细节。
  • 规范的重要性: 规范是软件应该达成的状态,即使代码是 AI 生成,规范仍然是核心。

Acai.sh 工具套件:

为了解决规范编写、跟踪和验证相关问题,作者创建了 Acai.sh 工具套件,主要功能包括:

  • feature.yaml 规范模板: 提供了一种简单的 YAML 格式规范,方便引用每个需求,并由唯一的 ACID (Acceptance Criteria ID) 标识。
  • CLI 工具: 方便在 CI/CD 流程中进行规范管理。
  • Web 应用: 提供仪表板和 JSON REST API,方便规范审查和协作。

使用流程:

  1. 规范编写 (Specify): 使用 feature.yaml 格式编写规范。
  2. 代码生成 (Ship): 使用提示词和 Acai.sh 工具,将规范转化为代码。
  3. 规范审查 (Review): 通过 Acai.sh 仪表板审查规范,标记状态(已完成、已接受、已拒绝),并添加评论。
  4. 迭代 (Iterate): 根据审查结果调整规范,持续改进。

未来展望:

作者展望了未来软件开发的趋势:

  • 从规范最大化到测试最大化 (Testmaxxing): 随着代码生成速度加快,测试和验证变得更加重要。
  • 从测试最大化到响应式软件工厂: AI 能够根据测试结果自动响应,无需人工干预。

与其他工具的比较:

作者对比了 Acai.sh 与其他类似工具,认为 Acai.sh 的独特之处在于专注于跟踪规范与实现之间的对齐程度,并鼓励编写明确的规范。

总结:

Acai.sh 代表了一种规范驱动的软件开发方法,强调规范的重要性,并通过工具套件简化规范编写、跟踪和验证流程。作者希望通过这种方式,提高软件质量,并推动软件开发朝着更高效、更可预测的方向发展。

A network smuggling Starlink tech into Iran to beat internet blackout

伊朗卫星互联网走私:对抗信息封锁 (Yīlǎng wèixīng hùliánwǎng zǒusī: Duìkàng xìnxī fēngsuǒ - Smuggling Satellite Internet in Iran: Fighting Information Blockades)

背景 (Bèijǐng - Background):

自2月28日美国和以色列对伊朗的空袭以来,伊朗政府实施了长达数月的互联网封锁,这是有史以来持续时间最长的国家互联网封锁之一。此前,1月份的全国抗议活动期间也曾实施过类似的封锁,造成超过6500人死亡,53000人被捕。政府声称此举是为了维护国家安全,防止间谍活动和网络攻击。

封锁的影响 (Fēngsuǒ de yǐngxiǎng - Impact of the Blockade):

互联网封锁使伊朗民众难以获取独立信息,只能依赖受政府控制或亲近的媒体。由于VPN等绕过限制的工具成本较高,许多人无法访问全球互联网。只有少数官员和记者通过“白卡SIM”获得不受限制的互联网访问权限。

星链(Starlink)的出现 (Xīngliàn de chūxiàn - The Emergence of Starlink):

星链设备成为了绕过封锁的可靠方式。通过连接埃隆·马斯克(Elon Musk)的SpaceX公司拥有的卫星网络,终端用户可以完全绕过伊朗政府严格控制的国内互联网。每个终端可以连接多人使用。

走私网络 (Zǒusī wǎngluò - Smuggling Network):

一名化名为Sahand的伊朗男子,以及其他一些人组成了一个秘密网络,负责向伊朗走私星链设备。他们通过复杂的操作将设备从边境走私入境,并由海外的伊朗人和其他支持者提供资金支持。Sahand表示,自1月以来,他已向伊朗走私了十余台星链终端,并且正在寻找更多走私方式。据人权组织“目击者”(Witness)估计,伊朗境内至少有50,000台星链终端,且数量可能更多。

政府的反应 (Zhèngfǔ de fǎnyìng - Government Response):

伊朗政府已将使用、购买或销售星链设备定为犯罪行为,最高可判处两年监禁,分销或进口超过10台设备则可能判处十年监禁。官方媒体报道了多起因销售和购买星链终端而被捕的案件,其中一些还被指控非法持有武器和向境外传递信息。

信息共享平台 (Xìnxī gòngxiǎng píngtái - Information Sharing Platform):

在Telegram上有一个名为NasNet的公共波斯语频道,该频道过去两年半内已通过该平台售出了约5000台星链终端。

风险与挑战 (Fēngxiǎn yǔ tiǎozhàn - Risks and Challenges):

走私星链设备存在风险,参与者可能面临逮捕和监禁。据数字权利组织估计,至少有100人因持有星链终端而被捕。Sahand也知晓一些因访问或拥有星链终端而被捕的人。为了保护用户隐私,网络参与者建议使用VPN来隐藏用户的真实IP地址,但并非所有人都能负担得起。

意义 (Yìyì - Significance):

Sahand表示,这些终端对于让伊朗民众分享当地情况至关重要。他以及其他参与者认为,这些终端应该落入真正需要它们来推动变革的人手中。人权活动家强调,互联网封锁是侵犯人权的行为,并使政府能够散布其宣传,而压制异见的受害者则被噤声。

经济影响 (Jīngjì yǐngxiǎng - Economic Impact):

伊朗政府承认互联网封锁对经济造成了打击,据一位部长称,每天的互联网封锁都会给经济带来至少50万亿伊朗里亚尔的损失。政府最近推出“互联网Pro”计划,允许某些企业获得部分全球互联网访问权限。

总结 (Zǒngjié - Conclusion):

在伊朗持续的互联网封锁下,星链走私网络正在努力对抗信息控制,为民众提供获取独立信息,并分享当地情况的渠道。尽管面临风险和挑战,但参与者认为,为推动变革提供信息是值得的。

Neanderthals ran 'fat factories' 125,000 years ago (2025)

尼安德特人的骨骼油脂工厂:一项新的考古发现

摘要:

一项发表在《科学进展》(Science Advances) 上的新研究表明,尼安德特人比之前认为的更早,且更系统地从动物骨骼中提取脂肪。该研究基于德国中部的Neumark-Nord 2遗址的发现,该遗址距今约12.5万年,属于一个间冰期,气候与现代相似。

主要发现:

  • 骨骼油脂生产: 考古学家在该遗址发现了大量的动物骨骼碎片,这些碎片是尼安德特人将大型哺乳动物(如鹿、马和猛犸象)骨骼碾碎并加热于水中,以提取骨骼油脂的证据。这表明尼安德特人运营着一种类似于“骨骼油脂工厂”的场所,专门用于处理至少172具大型哺乳动物的骨骼。
  • 战略性选址: 该“工厂”位于湖岸边,表明尼安德特人有意识地选择了一个便于系统性处理骨骼的地点。
  • 复杂的资源管理: 这种行为表明尼安德特人在资源管理方面具有更高的复杂性和计划性,这之前通常被认为仅限于后来的人类群体。
  • 狩猎与食物加工多样性: Neumark-Nord 遗址的发现与之前在该遗址发现的狩猎和屠宰直牙象(高达13吨重的动物)的证据相结合,进一步表明尼安德特人拥有多样的食物获取和加工策略。
  • 景观利用: 该遗址的发现揭示了尼安德特人对景观的规划和生态参与程度,远超之前的估计,包括了狩猎、骨骼加工、植物利用等多种活动。

研究背景:

Neumark-Nord 遗址自20世纪80年代被发现以来,已经进行了数十年的研究。从2004年至2009年,由MONREPOS和莱顿大学领导的团队对Neumark-Nord 2 遗址进行了全面的挖掘,并培养了175多名国际学生。

意义:

该研究的发现改变了我们对尼安德特人适应性和生存策略的理解。它表明尼安德特人具有计划能力、高效的食物加工能力,并能够巧妙地利用环境资源。Neumark-Nord 遗址的规模和保存状况为研究尼安德特人对环境的影响提供了独特的机遇。研究人员认为,尼安德特人对食草动物种群的影响可能比我们想象的要大得多。

关键词: 尼安德特人,骨骼油脂,Neumark-Nord 遗址,食物策略,资源管理,考古发现。

Show HN: State of the Art of Coding Models, According to Hacker News Commenters

AI 辅助编程模型现状:基于 Hacker News 评论分析

本文档总结了基于 Hacker News 评论对 AI 辅助编程模型现状的观察,并每日更新。该项目旨在追踪和评估当前流行的编程模型,并收集用户对其的反馈。

项目流程:

  1. 数据收集: 从 Hacker News API 获取过去 24 小时内最受欢迎的 200 篇帖子。
  2. 筛选: 使用 LLM 筛选帖子,仅选择标题涉及 LLM 或编程相关的帖子(最多 50 篇)。
  3. 分析: 对于筛选后的每个帖子,将标题和评论发送给 Gemini,要求 Gemini 识别评论中提及的 OpenRouter 模型列表中的模型,并评估每个模型在每个评论中的情感倾向。
  4. 结果记录: 将分析结果记录到 Google Sheet 中,包含评论 ID、提及的模型和模型的情感倾向评分。可以通过将评论 ID 添加到 https://news.ycombinator.com/item?id= 来查看原始评论。

模型流行度排行榜 (过去 10 天,2026/4/24 至 2026/5/2):

该项目还跟踪了特定模型的提及次数和用户情感倾向,并生成了流行度排行榜。 详细结果可以在 Google Sheet 中查看:https://docs.google.com/spreadsheets/d/1MH68pNTKq%5FHJN79d81DdNtC9ZCMjt6E4BnhcHaQ-QiU/edit?usp=sharing 。 该排行榜以百分比比例显示模型的受欢迎程度。

总结:

该项目通过分析 Hacker News 评论,提供了一个动态的、基于用户反馈的 AI 辅助编程模型现状评估。 每日更新的数据和可访问的 Google Sheet 允许用户查看和验证模型的流行度和用户情感倾向。

The agent harness belongs outside the sandbox

LLM Agent Harness 架构解析:内外沙箱模式及实现方案 (LLM Agent Harness Architecture Analysis: Inside-Out Sandbox Mode and Implementation)

本文探讨了 LLM Agent Harness 的架构选择,并详细介绍了在多用户环境中,将 Harness 运行在沙箱外部的实现方案及面临的挑战。

核心概念:Agent Harness

Agent Harness 是驱动 LLM 的核心循环,它负责:

  1. 发送 Prompt
  2. 接收 Response
  3. 执行 LLM 请求的工具调用
  4. 将结果反馈给 LLM
  5. 重复上述步骤,直至 LLM 明确结束

架构选择:沙箱内 vs. 沙箱外

存在两种主要的 Harness 架构:

  • 沙箱内 (Harness inside the sandbox): Harness 循环运行在与代码相同的容器内。工具调用(如 Bash)在本地执行,技能和记忆存储在容器的文件系统中。 适用于单用户场景,例如在个人笔记本上运行 Claude Code。
  • 沙箱外 (Harness outside the sandbox): Harness 循环运行在后端服务器上,工具调用通过 API 调用沙箱执行。 Harness 不直接进入沙箱。 这种架构更适合多用户环境,解决了单用户架构无法处理的问题。

沙箱外架构的优势:

  • 安全隔离: 凭证(如 LLM API 密钥、用户 Token、数据库访问权限)保存在后端,沙箱仅包含 Agent 执行工作所需的环境,降低了数据泄露风险。
  • 灵活管理: 后端可以随时暂停沙箱,仅在 Agent 需要执行命令时才激活,节省资源。
  • 容错性: 沙箱崩溃时,可以快速启动新的沙箱,Agent 循环继续执行,避免了单点故障。
  • 多用户支持: 多个工程师共享同一个 Agent,技能和记忆存储在数据库中,实现共享状态。

实现挑战与解决方案:

将 Harness 放置在沙箱外部带来了新的挑战,文章介绍了三种主要解决方案:

  1. 持久化执行 (Durable Execution): 使用 Inngest 框架将 Agent 循环视为一个长期的函数,通过 Inngest 的 checkpoint 功能,确保 Agent 循环能够在服务器重启、部署等情况下恢复执行。

  2. 沙箱生命周期管理 (Sandbox Lifecycle): 使用 Blaxel 框架实现 25 毫秒的沙箱快速恢复,在 Agent 待机时暂停沙箱,在需要执行命令时立即恢复,减少延迟。

  3. 文件系统抽象 (Filesystem Abstraction):

    • 问题: 传统的 Agent Harness 依赖于本地文件系统存储技能和记忆,在沙箱外部难以实现。
    • 解决方案: 将技能和记忆存储在数据库 (Postgres) 中,并虚拟化文件系统访问。Agent 使用 readwriteedit 工具,Harness 根据路径将调用路由到沙箱或数据库。
    • 优势: 保持了与 LLM 训练一致的 API 表面 (read(path), write(path, content)),避免了模型泛化能力的退化。

当前挑战:

  • 新功能兼容性: 新的 Agent 功能(如 Subagents、Plans、Background Tasks)通常依赖于本地文件系统,需要对虚拟化层进行适配。
  • Bash 命令泄露: Agent 可以通过 Bash 工具绕过虚拟化层,直接访问沙箱的文件系统。 目前的解决方案是通过系统提示和 Tree-sitter 解析进行限制,但仍存在安全风险。
  • 数据一致性: 在多用户场景下,多个 Agent 同时更新记忆时,需要解决数据一致性问题。 目前采用“最后写入者胜出”的策略,但可能存在未预见的冲突。

总而言之,本文详细介绍了在多用户环境中将 LLM Agent Harness 运行在沙箱外部的架构设计和实现细节,强调了安全、性能和多用户支持的重要性,并指出了当前面临的挑战。

Clojurists Together – Q2 2026 Open Source Funding Announcement

Clojurists Together Q2 2026 Project Funding Announcement (中文)

Clojurists Together 宣布,于 2026 年第二季度将资助 5 个项目,总金额为 31,000 美元(3 个项目 9,000 美元,2 个较短或更实验性的项目 2,000 美元)。 特别感谢 Metabase 成为 Transduce 的新成员,并支持 Ambrose Bonnaire-Sergeant 对 Malli 项目的工作。Malli 在 Metabase 以及许多其他成员中被广泛使用。

以下是获得资助的 5 位开发者的项目计划:

$9,000 美元项目

  • Ambrose Bonnaire-Sergeant: Malli: 旨在解决 Malli 在递归引用验证中的内存问题。此前优化虽然提高了递归验证的可靠性,但增加了编译时的内存消耗。该项目将探索延迟发现递归点和减少最大内存使用的方法,以平衡可靠性和内存效率,特别是针对像 Metabase 这样的系统。
  • Dragan Djuric: Uncomplicate AI: Clojure LLM: 目标是创建一个高性能、本地运行的大型语言模型 (LLM) 库,支持 Hugging Face 上主流的开源模型。该库将命名为 iLLaManati,提供简单易用的 API,并基于 Clojure ONNX Runtime 构建,支持 GPU 和 CPU。第一版本将支持 Google 的 Gemma 3 模型,并与 Clojure 生态系统无缝集成。
  • Cvetomir Dimov: SciCloj Documentation and Plotting Libraries: 旨在扩展和改进 SciCloj 的数据分析库 Noj,以及其文档。计划包括扩展 Noj 的绘图功能(增加绘图后端和支持的图表类型)、创建一个新的交互式仪表板库,以及完善 Noj 书籍的内容。

$2,000 美元项目

  • Ingy döt Net: Gloat: Gloat 已经可以将 Clojure 代码编译为 Go 代码、原生二进制文件(支持 ~25 种平台交叉编译)、Wasm 模块(浏览器和服务器端)以及共享库(提供 20 多种编程语言的 FFI 绑定示例)。Gloat 旨在成为 GraalVM native-image 的完整替代品,具有更快的构建速度、更广泛的平台支持和 100% 开源的许可。该项目将致力于减小和加快 Gloat/Glojure 二进制文件的大小,并通过更多 Clojure 兼容性测试套件进行测试。
  • Shantanu Kumar: PluMCP: PluMCP (Model Context Protocol) 是 Agentic AI 生态系统中的关键组件。该项目提供 MCP 客户端和服务器功能的 Clojure+ClojureScript 项目,支持 STDIO 和 Streamable HTTP 传输以及 OAuth2.1 集成。该项目将实现最新的 MCP 规范(版本 2025-11-25)中的新功能,并改进项目文档,包括支持 OpenID Connect Discovery 1.0、允许服务器暴露工具图标、增强授权流程,以及更新 ElicitResultEnumSchema

总而言之,这些项目涵盖了 Malli 的性能优化、LLM 的本地化支持、数据分析工具的改进、编译工具的完善以及 Agentic AI 基础设施的增强。

Ask HN: Is the Job Market Actually Bad?

就业市场现状总结 (Summary of the Current Job Market)

以下是对讨论帖的总结,主要反映了当前就业市场的一些困境和趋势:

总体情况:

  • 就业困难普遍存在: 许多经验丰富的专业人士,包括HR和高智商人才,在求职过程中面临巨大挑战,需要花费很长时间才能找到工作,甚至需要降低职业期望。
  • 招聘流程复杂化: 预雇佣筛选和自动化过滤系统使得进入面试阶段变得非常困难,如同论文评审一般。
  • 冷申请效率低: 除非有内部推荐,直接申请职位成功率极低,因为申请人数众多。
  • 行业趋势影响: Meta在2022年的裁员和随后的招聘冻结对行业产生了影响。

主要原因与挑战:

  • ATS 系统: 简历筛选系统(ATS)对候选人筛选过于严格,导致许多合格的候选人被排除在外。
  • 经验要求过高: 雇主对经验的要求越来越高,对职业生涯的转变不太宽容。
  • AI 冲击: AI技术的快速发展取代了部分CRUD工作,对部分工程师造成冲击。
  • 市场饱和: 某些领域(例如Web前端开发)人才过剩,竞争激烈。
  • 公司政策: 一些公司为了规避风险,过于谨慎,导致招聘流程缓慢且不灵活。
  • 远程工作: 远程职位竞争激烈,招聘者更倾向于选择有内推或强大人脉的候选人。
  • 对学历的要求提高: 即使有丰富的经验,缺乏正规的学历也可能成为求职的障碍。

其他观察:

  • 初级工程师面临更大挑战: 初级工程师和应届毕业生在求职过程中面临更加严峻的竞争。
  • “独角兽”人才稀缺: 许多公司希望找到同时具备多种技能的“独角兽”人才,但愿意为此支付高薪的公司并不多。
  • 行业偏好: AI相关领域和金融科技领域相对招聘较多。
  • 个人经历: 即使拥有优秀的技能和经验,个人经历(例如职业空窗期)也可能影响求职结果。
  • 欧洲市场: 欧洲市场也面临挑战,一些人选择在东欧国家寻求更好的就业机会和税收政策。

应对策略:

  • 拓展人脉: 通过参加会议和社交活动,建立人脉关系。
  • 提升技能: 不断学习和提升技能,尤其是与AI相关的技能。
  • 灵活调整期望: 适当降低薪资和职位期望。
  • 突出个人优势: 在简历和面试中清晰地展示个人优势和独特价值。
  • 关注新兴市场: 关注新兴行业和技术领域,寻找新的机会。

总而言之,当前就业市场竞争激烈,求职者需要具备更强的适应能力和求职技巧,并积极拓展人脉和提升技能,才能在激烈的竞争中脱颖而出。