2025-11-02

46 篇热帖

Chat Control proposal fails again after public opposition

欧盟理事会再次撤回“聊天控制”提案:一场持续的隐私保卫战

摘要: 这篇文章总结了欧盟“聊天控制”提案的最新发展,该提案旨在通过扫描加密信息来打击儿童性虐待材料 (CSAM),但引发了广泛的隐私担忧。尽管当前丹麦总统委员会已撤回该提案,但这标志着隐私倡导者与寻求在公共安全的名义下削弱加密的立法者之间长期斗争的又一个阶段。文章强调了该提案的反复出现(被称为“僵尸提案”),并指出了其技术上的不可行性以及对隐私的潜在威胁,并呼吁采取更有效的替代方案。

主要内容:

  • 提案背景: “聊天控制”提案自2022年提出以来,不断被提出和撤回,受到隐私倡导者、技术专家和公众的强烈反对。 电子边境基金会 (EFF) 等组织联合了超过 80 个民间社会组织,对该提案表示反对。
  • 技术问题: 该提案的核心问题在于其对加密技术的基本误解。它试图通过“客户端扫描”来绕过端到端加密的安全性,但这实际上会破坏整个加密系统,使其容易受到恶意行为者的攻击。任何扫描机制都无法仅用于“好人”,并且容易被滥用。苹果公司在2021年提出的类似计划也因安全漏洞而失败。
  • 范围蔓延的风险: 该提案可能会导致范围蔓延,即最初用于打击非法内容的系统,可能被扩展到监控政治异议、宗教表达等。
  • 公众压力与抵抗: 公民社会组织、科技公司、安全研究人员和普通公民的积极参与,使得该提案在政治上变得难以接受。EFF、欧洲数字权利组织 (EDRI) 等组织通过教育公众、提供技术解释和组织反对运动,发挥了关键作用。
  • 未来挑战: 虽然提案被撤回是一次胜利,但推动“聊天控制”的力量并未放弃,政治动态也没有改变。 政治家面临着为了“采取行动”而显得强硬的压力,尤其是在儿童安全问题上。
  • 前进之路: 文章呼吁改变技术政策制定方式,不再寻求技术上的“灵丹妙药”,而是投资于真正有效的解决方案,例如:
    • 加强执法部门的培训和工具,无需破坏加密。
    • 改善国际合作以进行刑事调查。
    • 通过社会项目和教育解决网络剥削的根本原因。
    • 科技公司应开发和推广真正保护隐私的安全功能,例如元数据分析、用户举报系统和账户级限制。
  • 结论: 保护加密是一场持续的斗争,需要长期承诺。 必须让政策制定者认识到,为了打击非法内容而破坏加密会造成更多问题,而不是解决问题。

关键词: 欧盟,聊天控制,加密,隐私,网络安全,客户端扫描,僵尸提案,欧洲数字权利组织 (EDRI),电子边境基金会 (EFF)

URLs are state containers

好的,这是对原文的总结,字数在800字以内,使用Markdown格式,并为中文:

URL 设计的价值:将 URL 作为状态容器

这篇文章探讨了前端工程师常常被忽视的 URL 的价值,指出 URL 不仅仅是用于获取资源的地址,更可以作为一种强大的状态管理工具。作者通过 PrismJS 下载页面的 URL 例子,启发了对 URL 在前端开发中应用的新思考。

URL 的力量

作者引用 Scott Hanselman 的观点,认为“URL 是 UI”,强调了 URL 的多重作用:

  • 可分享性: 分享链接,他人看到的内容与你一致。
  • 可书签性: 保存链接,保存了特定时间点的状态。
  • 浏览器历史: 后退按钮正常工作。
  • 深度链接: 直接跳转到应用程序的特定状态。

文章认为,URL 能够让Web应用程序更具韧性和可预测性,是Web的原生状态管理方案。

URL 如何编码状态

文章详细分解了 URL 的各个组成部分,并解释了它们如何编码状态:

  • 路径段 (/path/to/myfile.html): 用于资源层级导航,例如用户帖子或文档结构。
  • 查询参数 (?key1=value1&key2=value2): 完美用于过滤、选项和配置,例如主题、语言、分页、排序和日期范围。
  • 文本碎片 (#SomewhereInTheDocument): 适用于客户端导航和页面部分,例如 GitHub 代码高亮或滚动到特定页面区域。

文章还介绍了常见的查询参数模式,例如:

  • 多值分隔符: 使用逗号或加号分隔多个值。
  • 嵌套或结构化数据: 使用逗号分隔的键值对或 Base64 编码的 JSON。
  • 布尔标志: 传递布尔值或依赖键的存在。
  • 数组(方括号表示法): 使用 ?tags[]=frontend&tags[]=react&tags[]=hooks 格式。

最佳实践与常见模式

文章建议对 URL 状态管理遵循一些最佳实践:

  • 优雅地处理默认值: 避免在 URL 中填充默认值,在代码中处理默认值。
  • 防抖 URL 更新: 对于高频更新(例如搜索即输入),防抖 URL 更改。
  • pushState vs. replaceState: 根据所需的浏览器历史行为选择合适的方法。pushState 用于创建新的历史记录条目,而 replaceState 用于更新当前条目。

适用场景与反模式

文章明确了哪些状态适合存储在 URL 中,例如搜索查询、分页、视图模式等,哪些不适合,例如敏感信息、临时 UI 状态等。

同时列举了需要避免的反模式:

  • “仅内存状态”的SPA: 刷新页面导致状态丢失。
  • URL 中存储敏感数据: URL 会被记录,不安全。
  • 不一致或不透明的命名: 使用清晰、一致的参数名称。
  • URL 过度加载复杂状态: 避免使用过长的 URL。
  • 破坏后退按钮: 不恰当使用 replaceState

URL 作为契约

文章强调,精心设计的 URL 不仅仅是状态容器,还是应用程序与用户之间的契约,明确了状态的公共与私有、客户端与服务器、可分享与会话特定等边界,并能清晰地表达意图。 良好的 URL 能够提升缓存效率,便于版本管理和演进。

通过本文,作者呼吁前端工程师重新审视和利用 URL 这一被低估的强大工具,以构建更强大、更用户友好的 Web 应用程序。

How I use every Claude Code feature

Claude Code 生态系统使用心得与经验总结

本文总结了作者在使用 Claude Code 构建 AI 开发工具的经验,涵盖了从基础文件 CLAUDE.md 到高级功能如 Subagents、Hooks 和 GitHub Actions 的各个方面。作者强调了这些工具在专业团队中大规模代码生成(每月数亿 tokens)的应用场景,并分享了个人在业余项目中的使用心得。

核心观点:

  • CLAUDE.md 是关键: 这是 Agent 的“宪法”,定义了仓库的工作方式。在个人项目中可以随意,但在专业团队中需要严格维护,目前作者维护的 monorepo CLAUDE.md 已经达到 13KB,并可能进一步增长。
  • 编写 CLAUDE.md 的最佳实践:
    • 从 Guardrails 开始,而非手册: 记录 Agent 犯错的地方,逐步完善。
    • 避免 @ 文件引用: 引用外部文档会增加上下文窗口负担,应明确说明阅读条件。
    • 避免负面约束: 提供替代方案,避免 Agent 陷入僵局。
    • 利用 CLAUDE.md 作为“强制函数”: 简化复杂 CLI 命令,鼓励代码和内部工具的简化。
  • Slash Commands 要谨慎使用: 避免过度依赖复杂自定义 Slash Commands,保持 Agent 的灵活性和自主性。
  • Subagents 的局限性: 自定义 Subagents 会隐藏上下文,并可能强制人类工作流程。更推荐使用 Claude 内置的 Task(...) 特性,让 Agent 自主管理任务 delegation。
  • 充分利用 /context 监控上下文窗口使用情况,避免资源浪费。
  • Hooks 的重要性: 使用 block-at-submit Hooks 强制状态验证,避免在写入时阻塞 Agent,保持其工作流程的完整性。
  • Skills 是未来: Skills 将 Agent 的脚本化能力正式化,比 MCP 更加灵活和强大。
  • MCP 的新角色: MCP 应该作为数据网关,提供有限的高级工具,让 Agent 能够安全地访问环境并进行脚本操作。
  • GitHub Actions 的价值: 利用 Claude Code GitHub Actions 构建可审计、自改进的工程系统。
  • 配置 settings.json 用于调试、安全控制和优化性能。

总结:

作者认为,Claude Code 并非只是一个交互式 CLI,更是一个强大的 Agent 框架。应将 CLAUDE.md 视为高层次的指导原则和指针,并利用 Hooks 和 Skills 等高级功能,将 Claude Code 融入到工程系统的各个环节,最终实现代码生成和软件开发的自动化和智能化。

GHC now runs in the browser

GHC 现在可以在浏览器中运行 - 摘要

这篇简短的帖子宣布了 Haskell 编译器 GHC 可以在浏览器中纯客户端运行。

主要内容:

  • 核心功能: GHC 现在具备在浏览器中运行的能力,这意味着 Haskell 代码可以在完全离线的环境下执行,无需服务器端支持。
  • 演示: 帖子提供了一个 Haskell playground 演示,允许用户体验在浏览器中运行 GHC。
  • 注意事项: 帖子声明存在条款和条件,并且作者计划稍后提供更详细的解释。
  • 图像: 帖子包含一张图片,可能展示了浏览器中运行的 Haskell playground。

总结:

GHC 可以在浏览器中运行,这是一个令人兴奋的进展,它标志着 Haskell 编程更广泛的可访问性和灵活性。 帖子提供了一个演示,并承诺未来会提供更详细的说明。

Tongyi DeepResearch – open-source 30B MoE Model that rivals OpenAI DeepResearch

阿里云通义深思:首个开源的深度研究 Web Agent (Alibaba Tongyi DeepResearch: The First Open-Source Deep Research Web Agent)

阿里云发布了 通义深思 (Tongyi DeepResearch),这是一个性能与 OpenAI DeepResearch 相当的首个完全开源的 Web Agent。它在多个学术推理和信息检索基准测试中取得了领先成绩:

  • Humanity’s Last Exam (HLE): 32.9 分
  • BrowseComp: 43.4 分
  • BrowseComp-ZH: 46.7 分
  • xbench-DeepSearch: 75 分 (显著优于现有私有和开源 Agent)

核心贡献:

  • 完整的训练方法: 除了模型本身,阿里云还分享了构建此类先进 Agent 的完整、经过验证的方法,包括从 Agentic 持续预训练 (CPT) 和监督微调 (SFT) 到最终强化学习 (RL) 的整个训练流程。
  • 创新数据合成: 引入了数据合成解决方案,用于整个训练流程,旨在提升模型性能。
  • 端到端强化学习解决方案: 包括算法创新、自动化数据整理和强大的基础设施支持。
  • ReAct 和 Heavy Mode 推理: ReAct 框架展示了模型强大的内在能力,而 Heavy Mode (测试时缩放) 则展示了其复杂的推理和规划潜力。

详细技术亮点:

  • Agentic CPT: 创建强大的 Agentic 基础模型,用于后续训练。
  • 数据重组与问题构建: 从文档、公开数据、知识图谱和工具调用记录中收集数据,重组为实体锚定的开放世界知识记忆,并生成多风格的 (问答) 对。
  • 动作合成: 基于问题和轨迹,构建一阶和高阶动作合成数据,无需额外调用商业工具 API。高阶动作合成将轨迹重塑为多步骤决策过程,增强决策能力。
  • 高质量合成 QA 对: 通过图结构知识图谱构建和随机漫步等技术,生成高质量的合成 QA 数据集,并采用原子操作建模方法,系统性地增加问题的复杂度。
  • IterResearch 范式: 一种创新的 Agent 范式,通过动态重建精简的工作空间,确保每个决策都经过深思熟虑,提高长期任务中的推理能力。
  • Research-Synthesis 框架: 利用多个 Research Agent 并行探索问题,然后由 Synthesis Agent 集成结果,以提高性能。

实际应用:

  • 高德 Mate (地图导航 Agent): “小高” AI 助手,可自主规划包含景点和宠物友好的酒店的行程。
  • 通义法睿 (法律研究 Agent): 自主执行复杂的法律研究任务,提供基于司法来源的结论和引用。

未来工作:

  • 扩展上下文窗口长度。
  • 验证更大规模模型上的训练方法。
  • 提升强化学习框架的效率。

开源资源:

通义深思代表了人工智能领域的一项重要突破,为构建更智能、自主的 Agent 奠定了基础。


Show HN: Why write code if the LLM can just do the thing? (web app experiment)

nokode:无需应用程序逻辑的 Web 服务器

本文探讨了作者构建的一个实验项目“nokode”,旨在测试一个大胆的假设:在当前技术水平下,是否有可能创建一个完全由大型语言模型 (LLM) 驱动的 Web 服务器,而无需任何传统的应用程序代码 (如路由、控制器和业务逻辑)。

核心思想与假设:

作者认为,未来的计算模式可能不再依赖代码,而是直接通过意图和执行来实现。因此,他们构建了 nokode,一个 Web 服务器,它接收 HTTP 请求后,直接向 LLM 提问“我应该做什么?”,LLM 则根据请求生成响应。作者最初预期该项目会失败,但希望通过实验来评估我们距离这种未来还多远。

实验设计与工具:

nokode 旨在实现一个基本的联系人管理功能 (CRUD 操作:创建、读取、更新、删除)。实验的核心在于 LLM 仅被赋予三个工具:

  • database: 允许 LLM 执行 SQLite 数据库查询,并自动设计数据库模式。
  • webResponse: 允许 LLM 生成 HTTP 响应,包括 HTML、JavaScript、JSON 等。
  • updateMemory: 允许 LLM 将用户反馈持久化到 Markdown 文件中,并在后续请求中读取这些反馈。

通过这些工具和简单的提示,LLM 能够推断出根据请求路径 (path) 生成不同的响应。例如,访问 /contacts 会生成 HTML 页面,而访问 /api/contacts 会生成 JSON 数据。用户可以通过反馈表单提供改进意见,LLM 会尝试实施这些意见。

实验结果:

令人惊讶的是,实验成功了。虽然 nokode 存在诸多问题:

  • 速度慢: 响应时间比传统 Web 应用程序慢 300-6000 倍。
  • 成本高: 每次请求的 API 费用是传统计算的 100-1000 倍。
  • 内存差: LLM 经常忘记之前的 UI 生成内容。
  • 不可靠: LLM 可能会产生错误的 SQL 语句,导致 500 错误。

但即便如此,表单仍然可以提交,数据可以持久化,UI 具有可用性,API 返回有效的 JSON,用户反馈也能被实施。LLM 能够自发地设计合理的数据库模式,编写安全的 SQL 查询,遵循 REST-ish API 规范,并实现响应式 Bootstrap 布局、表单验证和错误处理。

结论与展望:

作者得出结论,实现无需代码的应用程序逻辑的能力已经存在。目前的主要问题集中在性能方面:速度、成本、一致性和可靠性。然而,这些问题被认为是可以通过技术进步逐步解决的,例如:

  • 推理速度: 预计每年提升约 10 倍。
  • 成本: 预计将趋近于零。
  • 上下文: 预计会不断扩展,最终实现设计记忆。
  • 错误率: 预计会持续下降。

作者认为,这个项目表明,我们可能比想象中更接近“AI 直接完成任务”的未来,而不是“AI 帮助编写代码”的未来。最终,真正的愿景是 120fps 的渲染速度,实时输入采样,让 AI 成为计算机本身,而不再需要 HTTP 服务器、数据库或基础设施层。

部署与尝试:

项目提供了一个简单的部署和尝试方法:

  1. 安装依赖: npm install
  2. 设置环境变量:LLM_PROVIDER, ANTHROPIC_API_KEY, ANTHROPIC_MODEL (使用 Anthropic Claude 模型)
  3. 运行项目: npm start
  4. 访问 http://localhost:3001

用户可以通过修改 prompt.md 文件来定制应用程序的行为,例如构建游戏或仪表盘。

警示: 由于每次请求的成本较高,请注意控制 API 使用量。

WebAssembly (WASM) arch support for the Linux kernel

Linux/Wasm 操作系统构建脚本总结

该项目提供了一套脚本,用于下载、构建和运行能够在 Web 上执行的 Linux 系统,利用原生的 WebAssembly (Wasm)。这些脚本可以在以下环境中运行:

  • 宿主机
  • 通用的 Docker 容器
  • 专门的 Docker 容器 (见 Dockerfile)

项目组成

该项目由以下软件组件组成:

  • LLVM 项目:
    • 基础版本:18.1.2
    • 补丁:包含一个允许 wasm-ld 使用 GNU ld 风格链接脚本的补丁。
    • 产物:clang, wasm-ld (来自 lld), compiler-rt
  • Linux 内核:
    • 基础版本:6.4.16
    • 补丁:
      • 添加 Wasm 架构支持的补丁。
      • 启用 .wasm 文件作为可执行文件的 wasm binfmt 特性补丁。
      • Wasm "web console" 的控制台驱动程序。
    • 产物:vmlinux, 未修改的内核头文件
    • 依赖:clang, 具有链接器脚本支持的 wasm-ld (compiler-rt 不需要)
  • musl:
    • 基础版本:1.2.5
    • 补丁:一个最小且不正确的补丁,用于:
      • 将 Wasm 添加为 musl 的目标。
      • 允许使用 clang 和 wasm-ld 构建 musl (可能需要链接器脚本支持)。
    • 产物:musl libc
    • 依赖:clang, wasm-ld, compiler-rt
  • BusyBox 用 Linux 内核头文件:
    • 基础版本:来自内核
    • 补丁:一系列补丁,最初由 Sabotage Linux 托管,但已修改为适应较新的内核。这些补丁允许 BusyBox 包含内核头文件。
    • 产物:修改后的内核头文件
    • 依赖:导出的 Linux 内核头文件
  • BusyBox:
    • 基础版本:1.36.1
    • 补丁:一个最小且不完整的补丁,用于:
      • 允许使用 clang 和 wasm-ld 构建 BusyBox (链接器脚本支持可能不需要)。
      • 添加一个 Wasm defconfig。
    • 产物:BusyBox 安装 (基础二进制文件和 ls、cat、mv 等的符号链接)
    • 依赖:musl libc, BusyBox 用的修改后的头文件
  • 最小的 initramfs:
    • 说明:将 BusyBox 安装打包到压缩的 cpio 归档文件中。设置一个 pty 以进行适当的信号/会话/作业管理,并进入 shell。
    • 产物:initramfs.cpio.gz
    • 依赖:BusyBox 安装
  • 运行时:
    • 说明:一些示例代码,展示了一个最小的 JavaScript Wasm 宿主环境可能是什么样子的。错误处理不够完善,更注重调试而不是用户体验。这是启动所有事情的胶水代码,启动 Web Workers,创建 Wasm 实例等。

提示: Wasm 缺乏 MMU,因此需要以 NOMMU 配置构建 Linux。Wasm 程序需要使用 -fPIC/-shared 构建。或者,现有 Wasm 程序可以与一个代理一起运行,该代理向内核发出系统调用。在这种情况下,希望独立执行系统调用的每个线程应映射到代理中的一个线程。这种方法的缺点是进程之间不能映射和共享内存。但是,从内存保护的角度来看,此属性也可能是有益的。

运行

运行 ./linux-wasm.sh 查看用法。首先进行下载,然后进行构建。可以选择部分下载或重新构建。由于 LLVM 构建系统中的一个错误,第二次构建 LLVM 会在构建运行时时失败 (抱怨 clang 无法构建一个简单的测试程序)。解决方法是再次构建它 (它在其他时间有效,即第 1 次、第 3 次、第 5 次等时间)。

由于 Linux 内核构建系统中的限制,交叉编译器的绝对路径(LLVM 的安装路径)不能包含空格。由于 linux-wasm.sh 构建了 LLVM,这意味着其工作目录(或至少安装目录)必须在没有空格的路径中。

Docker

以下命令应在 repo 根目录下执行。

有两个容器:

  • linux-wasm-base: 包含 Ubuntu 20.04 环境,安装了构建所有工具 (例如 cmake、gcc 等)。
OpenAI Moves to Complete Potentially the Largest Theft in Human History

OpenAI 的重大结构调整:一场“盗窃”?

OpenAI 近期宣布了一项重大结构调整,将其投资者权益变得无上限,同时设立了一个非营利性基金会,保留了 26% 的公司股权和一定程度的控制权。这一举动引发了广泛的争议,许多人将其形容为有史以来最大的“盗窃”之一,甚至可能超过了苏联解体的事件。

调整的核心内容:

  • 公司结构转变: OpenAI 将转型为公共利益公司(PBC),允许投资者获得无上限的利润分成。
  • 非营利性基金会地位变化: 基金会的控制权和股权比例大幅下降,从之前的控制地位和更大的财务占比,变为仅保留 26% 的股权。
  • 价值转移: 基金会的利益转移预计高达数千亿美元,引发了对公平性的质疑。
  • 潜在的补偿: OpenAI 承诺基金会在 15 年后,如果公司股价增长超过十倍,将获得额外的股权。然而,基金会能否实际获得这些股权存在不确定性。

争议点:

  • “盗窃”指控: 许多人认为,OpenAI 的调整实质上剥夺了非营利性基金会的利益,将其转移至私营投资者手中。
  • 公众反应: 媒体和公众普遍认为这是非营利性基金会的一次胜利,但批评者指出,这只是相对于 OpenAI 之前的更糟糕的计划而言。
  • 监管部门的反应: 特拉华州和加利福尼亚州的监管部门对这一调整表示“无异议”,但仍面临潜在的法律挑战。
  • 对未来影响的担忧: 投资者对 OpenAI 的安全和使命的关注程度,以及基金会能否真正维护公众利益,仍然存在疑问。

关键细节:

  • Microsoft 的角色: Microsoft 在 OpenAI 的调整中扮演了重要角色,持有约 27% 的股权。
  • 新的控制结构: 特拉华州和加利福尼亚州的监管机构对 OpenAI 的控制结构提出了要求,包括非营利性基金会保留一定的控制权和监督职责。
  • 资金用途: 非营利性基金会承诺将 250 亿美元用于健康和疾病治疗以及人工智能安全领域,但资金的具体用途和效果仍有待观察。

总结:

OpenAI 的结构调整是一项复杂且备受争议的事件,引发了对人工智能发展方向、利益分配以及监管责任的深刻反思。尽管监管部门批准了这一调整,但潜在的法律挑战和公众质疑仍然存在。未来,非营利性基金会能否真正履行其使命,以及 OpenAI 是否会继续秉持其最初的价值观,将是值得关注的问题。

Using FreeBSD to make self-hosting fun again

总结:作者拥抱 FreeBSD,重拾学习热情

作者在之前经历了一段技术使用方式的困境,感觉自己被固有的模式束缚,难以改变。为了寻求新的开始,他选择了 BSD 家族的操作系统,特别是 FreeBSD。

主要内容:

  • 选择 FreeBSD 的原因: 作者之前就尝试过 FreeBSD 和 OpenBSD,并对它们印象良好。OpenBSD 在单用途虚拟机中表现可靠,而 FreeBSD 则能满足作者对多用途系统的需求,支持容器或虚拟机运行多个独立工作负载。
  • 搭建环境: 作者通过 Hetzner 服务器拍卖购买了一台服务器,并使用 BastilleBSD 进行 jails 管理,使用 vm-bhyve 创建虚拟机。搭建过程充满挑战,但也让他重拾了学习新事物的热情。
  • 对 FreeBSD 的喜爱: 作者尤其欣赏 FreeBSD 的简洁性和良好的文档。大部分任务可以通过 SSH 上的简单命令完成,如果找不到直接方法,通常会有相应的工具或封装。 FreeBSD 的长期兼容性也让作者印象深刻,旧的解决方案依然有效。
  • 学习过程: 作者在学习过程中遇到了一些困惑,例如对 FreeBSD 的发布周期和 pkg/ports 关系的理解。得益于 BSD 社区的友善和乐于助人,作者得以克服这些困难,并享受了重新成为“新手”的乐趣。
  • 未来展望: 作者目前还不确定是否会长期坚持现有的配置,但重要的是他正在享受学习的过程,并期待未来能坚持下来的部分。

关键词: FreeBSD, BSD, BastilleBSD, vm-bhyve, 虚拟机, jails, 服务器, 学习, 社区, 兼容性.

Claude Code Can Debug Low-Level Cryptography

ML-DSA Go 实现调试经历与 AI 工具的价值 (ML-DSA Go Implementation Debugging and the Value of AI Tools)

本文讲述了作者在 Go 语言中实现 NIST 规范的后量子签名算法 ML-DSA 的过程,以及如何使用 Claude Code AI 工具成功地定位并修复了代码中的一个低级错误。

主要内容:

  • 实现过程与初始问题: 作者在四天内完成了 ML-DSA 的 Go 实现,但验证函数始终拒绝有效的签名,导致测试失败。
  • Claude Code 的介入: 作者尝试使用 Claude Code v2.0.28 (Opus 4.1) 来定位问题,并提供了代码仓库和测试指令。
  • Claude Code 的发现: Claude Code 迅速定位到一个复杂的低级错误:在验证过程中,w1Encode 函数被重复调用,导致 w1 的高位被错误地计算了两次。 它不仅发现了问题,还生成了测试用例并提出了修复建议。
  • 后续调试与优化: 作者最终对代码进行了重构,修改了 w1Encode 函数的输入参数,提高了代码的清晰度和效率。
  • 其他 Bug 发现: 在实现签名功能时,作者也遇到了两个 Bug:
    • 常量计算错误。
    • 签名长度不足 (32 位而不是 32 字节)。
  • 再次使用 Claude Code: 作者将包含 Bug 的代码版本提交给 Claude Code,并要求其找出问题。 Claude Code 最终成功地定位并修复了这两个 Bug,尽管在修复第一个 Bug 后,它在定位第二个 Bug 时花费了更多时间。
  • 总结与反思: 作者总结了 Claude Code 在低级密码学代码调试方面的强大能力,强调了 AI 工具在提高开发效率方面的价值,并表达了对未来 AI 工具在软件开发中的应用场景的期望,例如自动化测试失败原因分析。

核心细节:

  • 算法: ML-DSA (一种后量子签名算法)
  • 编程语言: Go
  • AI 工具: Claude Code v2.0.28 (Opus 4.1)
  • 主要 Bug: 在验证过程中,w1 的高位被重复计算。
  • 修复方法: 重构 w1Encode 函数,使其接受高位作为输入。
  • 作者的观点: AI 工具对于定位低级错误非常有价值,可以显著提高开发效率。

总而言之,这篇博文详细描述了作者使用 AI 工具解决密码学代码调试问题的经历,并强调了 AI 工具在软件开发中的潜在价值。

Pomelli

Pomelli:谷歌实验室推出的AI营销工具,助力中小企业社交媒体营销 (Pomelli: A New AI Marketing Tool from Google Labs to Help SMBs with Social Media Marketing)

摘要:

Pomelli 是谷歌实验室与谷歌DeepMind合作推出的一项全新AI实验,旨在帮助中小型企业(SMBs)轻松创建可扩展、符合品牌形象的社交媒体营销活动。它通过分析企业网站,学习其品牌特征,并生成定制化的营销活动创意和营销素材。目前,Pomelli已在美国、加拿大、澳大利亚和新西兰面向公众开放Beta测试,仅支持英语。

详细说明:

Pomelli 旨在解决中小企业在创建有影响力的、符合品牌形象的内容时,面临的时间、预算和设计专业知识方面的挑战。 其核心功能包括三个步骤:

  1. 构建品牌 DNA (Build your business DNA): 用户输入网站链接,Pomelli 会分析网站内容,提取并理解企业的独特品牌标识,创建“品牌 DNA”档案。该档案包括品牌语气、自定义字体、图像和配色方案。所有生成的素材都基于此 DNA,确保内容在各个渠道上保持一致性和真实性。
  2. 生成定制化的营销活动创意 (Generate tailored campaign ideas): 在确定品牌 DNA 后,Pomelli 会生成专门为企业定制的营销活动创意,帮助企业快速确定营销方向。用户也可以输入自定义提示来生成符合特定愿景的内容。
  3. 编辑和创建高质量、符合品牌形象的素材 (Edit and create high-quality, branded creatives): Pomelli 会生成一系列高质量的、符合品牌形象的营销素材,可用于社交媒体、网站和广告等多个渠道。用户可以浏览生成的素材,选择最符合营销目标的内容,并在工具内直接编辑文本或图像。所有素材均可下载并立即使用。

Pomelli 目前处于公开Beta测试阶段,谷歌欢迎用户提供反馈,以不断改进该工具。

Open-source communications by bouncing signals off the Moon

Open Space 项目概要 (Open Space Project Summary)

Open Space 是一个开源的通信硬件和软件倡议,旨在利用开源软件定义相控阵技术,让公众能够通过将信号反射到月球上进行全球通信,并实现更多应用。

核心目标: 将地球-月球-地球 (EME) 通信(传统上需要大型天线、昂贵设备和精确手动跟踪)普及化,降低门槛。

项目阶段和硬件:

项目预计于 2026 年 3 月 推出首批硬件。主要硬件包括:

  • SDR Tile (4-天线 SDR 模块):

    • 设计用于组阵,与 Raspberry Pi 管道兼容 (GNU Radio, Python/C++, SoapySDR)。
    • 频率范围:4.9-6.0 GHz (C 波段),全双工。
    • 带宽:每根天线 40 MHz,8+8 位 I/Q。
    • 发射功率:每根天线 1 W,接收噪声系数:~1.2 dB
    • 偏振:Tx: RHCP (右旋圆极化), Rx: LHCP (左旋圆极化)
    • 关键组件:MEMS TCXO,抖动 ~1.4 ps,FPGA: Lattice ECP5,延迟 < 1 ms
    • 电源:12 V DC (≈25 W 峰值)
    • 独立应用:通用 4x4 MIMO 软件定义无线电、狐狸狩猎、到达方向 (DOA) 探测、无线电探索、Open Wi-Fi 路由器、Open 4G/5G 基站、无人机高清链路、机器人通信。
  • 相控阵 (Phased Array):

    • 小型相控阵 (18 tiles, 72 antennas):
      • 旨在提供实质性的直接ivity,用于实验和学习相控阵技术。
      • 可扩展,支持后期添加扩展板。
      • 应用:高增益回传链路、定向链路、中继回传、狐狸狩猎和定位、移动现场操作、长距离无人机遥测/高清链路。
      • 性能:阵列尺寸:18 个 tile (72 天线),波束 steering ≈ 60°,预期阵列增益:~34.0 dBi, EIRP:~52.6 dBW
    • 高孔径相控阵 (60 tiles, 240 antennas):
      • 专为地球-月球-地球 (EME) 实验和射电天文学设计。
      • 提供进行月球反射通信所需的波束形成增益和 EIRP。
      • 应用:EME (月球反射),银河系 C 波段成像、射电天空巡测、地面 RF 成像、大气和电离层探测实验、高级相控阵研究。
      • 性能:阵列尺寸:60 个 tile (240 天线),波束 steering ≈ 60°,预期阵列增益:~39.3 dBi, EIRP:~63.1 dBW
      • 关键特性:相干分配网络,时间保持和 GPSDO 兼容。
      • 电源:12 V DC (≈1.5 kW 峰值)

重要声明:

  • 所有硬件都需要业余无线电 (Technician+) 执照才能操作,并受国家限制。
  • 该项目不适用于雷达应用,因为缺少雷达应用所需的关键功能,并且受到出口管制限制。

项目网站: https://open.space

SailfishOS: A Linux-based European alternative to dominant mobile OSes

Sailfish OS 概述 (Sailfish OS Summary)

Sailfish OS 的起源可以追溯到诺基亚时期,特别是 MeeGo 操作系统。在 2011 年之前,诺基亚和英特尔共同构想了一个开放的移动操作系统。他们投入了约 10 亿美元,创建了基于开源的 MeeGo 操作系统,该系统被用于多个设备,例如标志性的 Nokia N9。虽然 Nokia N9 成为开源操作系统的典范,但诺基亚最终决定放弃该项目,转而选择与微软的 Windows Phone OS 合作。

MeeGo 项目背后的团队对该项目充满热情,拒绝放弃。他们成立了一家新公司 Jolla Ltd.,将基于滑动操作的 MeeGo 开发成流畅的用户体验,即 Sailfish OS。Sailfish OS 很快被增强以运行 Android 应用,并与 Android 芯片组兼容。2013 年 11 月,他们发布了 Sailfish OS 的 Beta 版本,并推出了 Jolla 智能手机。此后不久,发布了 Sailfish OS 1.0 版本,首款 Sailfish OS 产品(Jolla 智能手机)在一年内进入了 36 个市场。2015 年,Sailfish OS 2.0 发布,并伴随着 Jolla Tablet 的推出,以及公司许可策略的加强。

2018 年,Sailfish OS 发展到第三代,提供了一种分包、安全的解决方案,适用于各种企业和政府环境,以及通过 Sailfish X 社区计划为精通技术的消费者提供流畅且安全的移动操作系统。2021 年 2 月推出的第四代 Sailfish 4,引入了众多新功能,以支持不同的生态系统项目,无论是私营企业解决方案还是公共部门政府部署。

Why don't you use dependent types?

Isabelle 的证明系统设计与演进:从 AUTOMATH 到 HOL

本文回顾了作者在形式化证明系统设计上的经历,主要探讨了为何 Isabelle 没有采用传统的证明对象 (proof objects) 机制,以及作者在 AUTOMATH, Martin-Löf 型论和更高阶逻辑 (higher-order logic) 上的探索与选择。

1. AUTOMATH 的影响:

作者在 1977 年有机会接触了 N G de Bruijn 的 AUTOMATH 系统。尽管当时无法直接运行该系统,但作者阅读了许多研究报告,包括 LS Jutting 将 Landau 的《分析基础》从德语翻译成 AUTOMATH 的博士论文。这影响了作者日后在 Isabelle 项目中,致力于忠实于原始文本,逐行形式化的工作方式。AUTOMATH 作为一个逻辑框架,类似于一个“大餐厅”,可以提供各种形式化的服务。de Bruijn 并不认可后来发展起来的强大型论,认为 AUTOMATH 足够表达各种形式系统的推理规则。

2. Martin-Löf 型论的尝试:

作者在 Chalmers 大学学习了 Martin-Löf 型论,被其在程序合成方面的潜力所吸引。虽然作者曾花费数年时间使用 Martin-Löf 型论进行研究,并以此为基础创建了 Isabelle 的早期版本 (Isabelle/CTT),但最终因其 doctrinaire 的态度和对意图相等 (intensional equality) 的强制性转变而放弃。

3. 更高阶逻辑的选择:

作者认为,与其开发新的形式系统,不如选择一个固定的系统并尽可能地发挥其潜力。 Isabelle/HOL 最终选择了 Church 简单的类型理论 (Type Theory),并使用类型类 (type classes) 和模块系统 (locale) 进行了扩展。作者注意到,Lean 社区通过对特定版本的计算构造 (calculus of constructions) 的使用,快速形式化了大量的数学内容。

4. ALEXANDRIA 项目与更高阶逻辑的局限性:

在 ALEXANDRIA 项目中,作者最初担心更高阶逻辑无法胜任高级数学的 Formalization。然而,该项目成功地形式化了 Grothendieck Schemes 等复杂数学结果,证明了在特定情况下,更高阶逻辑并不会成为 Formalization 的瓶颈。作者还发现,一些证明需要引入 ZF 公理来处理在陈述中直接引用 ZF 实体的情况。

5. 结论:

作者最终选择继续使用更高阶逻辑,并对依赖型论的某些特性 (例如意图相等和性能问题) 感到担忧。作者认为,依赖型论的价值在于知道什么时候使用它。 尽管如此,作者仍然对 Lean 社区的规模和 Blueprint 工具表示羡慕。总而言之,作者的经历表明,选择合适的 Formalization 系统,并充分利用其优势,比不断探索新的 Formalization 系统更为重要。

Backpropagation is a leaky abstraction (2016)

深度学习中的反向传播:一个“渗漏抽象”

本文探讨了深度学习中反向传播的本质,并指出其作为一个“渗漏抽象”可能带来的问题。作者认为,过度依赖框架自动计算反向传播,而忽视其底层机制,容易导致难以察觉的训练问题。

核心论点: 反向传播是一个“渗漏抽象”,即它隐藏了学习过程中的一些关键细节,容易让开发者误以为只要堆叠层数即可,而忽略了对数据预处理、初始化等因素的考量。

具体问题与分析:

  • Sigmoid 函数中的梯度消失: 使用 Sigmoid 函数时,如果权重初始化不当或数据预处理不合理,可能导致函数饱和,输出接近 0 或 1,从而使得局部梯度接近于零,导致梯度无法有效传递,阻碍网络学习。
  • ReLU 函数中的“死亡 ReLU”问题: ReLU 函数在输入小于零时输出为零,如果一个 ReLU 神经元始终输出零,其权重梯度也将始终为零,导致该神经元“死亡”,不再参与学习。
  • RNN 中的梯度爆炸: 在循环神经网络 (RNN) 中,由于梯度在时间步上不断累乘,可能导致梯度爆炸,使得训练不稳定。
  • DQN 中的梯度裁剪错误: 分析一个 DQN TensorFlow 实现中的梯度裁剪问题,指出错误的裁剪方式可能导致梯度被错误地置为零,影响学习效果。作者建议使用 Huber loss 来替代直接裁剪梯度的方法。

总结与建议:

作者强调,理解反向传播的底层机制至关重要,不能盲目依赖框架自动计算。建议学习 CS231n 的相关课程和作业,深入理解反向传播的原理和可能存在的问题。 开发者应该对反向传播保持警惕,仔细分析其在不同网络结构中的行为,才能更有效地构建和调试深度学习模型。

关键词: 反向传播, 渗漏抽象, 梯度消失, 死亡 ReLU, 梯度爆炸, 循环神经网络, DQN, 深度学习。

Vacuum bricked after user blocks data collection – user mods it to run anyway

iLife A11 智能扫地机器人安全漏洞调查及总结

本文讲述了一位工程师对自己的 iLife A11 智能扫地机器人进行安全调查的经历,并揭示了其潜在的安全风险和数据隐私问题。

事件经过:

工程师发现他的 iLife A11 智能扫地机器人持续将日志和遥测数据发送给制造商。为了阻止数据传输,他屏蔽了制造商的遥测服务器 IP 地址,但随后机器人停止工作。经过调查,他发现机器人收到了来自制造商的远程“kill”命令,导致其无法启动。

反复送修后,服务中心未能解决问题,最终认定机器人已超出保修期。工程师遂自行拆解机器人,深入分析其软件和操作系统。

发现的安全漏洞与数据泄露:

  • ADB 访问未受保护: 机器人使用 Android Debug Bridge (ADB),允许完全的 root 访问权限,但没有密码或加密保护。
  • 简陋的安全协议: 制造商采取了一种简单的安全措施,通过省略关键文件来阻止访问,但工程师轻易突破。
  • Google Cartographer 实时地图: 机器人使用 Google Cartographer 构建家庭的 3D 实时地图,并将该数据发送给制造商的服务器。尽管智能扫地机器人需要地图数据进行导航,但将数据发送给制造商的行为并未事先告知用户。
  • 远程 kill 命令: 工程师在日志中发现了精确匹配机器人停止工作时间的 kill 命令,表明制造商可以远程控制设备。
  • 网络依赖性: 机器人只能在连接到制造商服务器时正常运行。在屏蔽了数据收集功能后,制造商远程执行 kill 命令,导致设备无法使用。

原因分析:

工程师认为,许多廉价智能扫地机器人由于硬件能力有限,无法进行本地数据处理,因此必须将数据发送到远程服务器进行处理。这种做法使得用户无法知晓数据的使用方式,并让制造商拥有了对数据的自由支配权。

结论与建议:

工程师最终通过修改,使机器人能够完全本地运行,摆脱了制造商的控制。他建议:

  • 避免将物联网设备连接到主要 Wi-Fi 网络。
  • 将物联网设备视为“寄居者”,谨慎对待。

总而言之,该事件提醒用户,智能家居设备可能存在严重的安全漏洞和数据隐私风险,需要谨慎选择和使用。

New South Korean national law will turn large parking lots into solar farms

韩国强制公共停车场安装太阳能板:现有设施也适用

以下是对原文内容的总结:

核心政策:

韩国政府已通过一项修正案,要求所有公共和私有停车场,如果停车位超过80个,都必须安装太阳能遮阳棚或停车架。 该政策预计将于本月生效,适用于新建和现有停车场。

政策背景与目的:

  • 扩大可再生能源: 该政策旨在积极拓展可再生能源的利用,并增加太阳能和建筑行业的就业机会。
  • 提高土地利用效率: 利用闲置的停车场土地,最大化土地利用效率。
  • 为公众提供便利: 太阳能遮阳棚能够为车辆提供遮阳避雨,保护车辆内饰,延长塑料和内饰的使用寿命,并有助于降低电动汽车和插电式混合动力汽车的空调负荷,甚至提供停车充电服务。

政策细节:

  • 韩国贸易、产业和能源部于8月份宣布了该修正案。
  • 该政策的批准发生在9月底。

其他国家案例:

  • 美国亚利桑那州: 西北消防区与Standard Solar合作,建设了一个657千瓦的太阳能停车架系统,每年产生超过123万千瓦时的清洁电力,相当于18.5万辆汽车减少的碳排放量。
  • 美国纽约市: 推出了一项新计划,将商业区土地扩大到8500英亩,用于太阳能遮阳棚和电动汽车充电站的建设,释放了4亿平方英尺的可用空间。
  • 文章还提及了德克萨斯州、新墨西哥州和佛罗里达州等其他阳光充足的州也可能受益。

总结:

韩国的政策表明了太阳能停车场的可行性。文章认为,类似政策在美国其他地区也有潜力,能够降低能源成本,并为社区带来益处。

Text case changes the size of QR codes

使用 Python 生成 QR 码:大小写的影响

本文介绍了使用 Python 的 qrcode 库生成 QR 码时,大小写对 QR 码图像大小的影响。

核心内容:

  • 生成 QR 码: 使用 qrcode.make() 函数将字符串转换为 QR 码,并使用 .save() 方法保存为图像文件。示例展示了如何使用混合大小写和全大写的字符串生成 QR 码。
  • 编码方式: QR 码生成算法会根据输入字符串的大小写进行不同的编码方式。
    • 混合大小写字符串被视为二进制数据。
    • 全大写字符串被视为字母数字数据。
  • 字母数字数据: 字母数字数据使用一个包含 45 个字符的字符集 (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:)。 由于 45² = 2025 < 2048,因此两个字母数字字符可以使用 11 位进行编码。如果文本包含字符集之外的字符(例如小写字母),则使用 ISO/IEC 8859-1 编码,每个字符使用 8 位。
  • 像素数量减少: 将混合大小写文本转换为全大写文本可以减少每个字符所需的位数,从 8 位减少到大约 5.5 位,从而显著减少 QR 码所需的像素数量(约 30%)。在示例中,从 33x33 的网格 (1089 像素) 减少到 29x29 的网格 (841 像素)。
  • 比特币地址编码:
    • Bech32 编码使用 32 个字符的字符集,Base58 编码使用 58 个字符的字符集。因此,Bech32 编码需要更多的字符来表示相同的数据(大约 17% 更多)。
    • 尽管 Bech32 编码需要更多字符,但由于它使用单例字母(小写字母被转换为大写字母),因此生成的 QR 码像素数量少于使用 Base58 编码的 QR 码。
  • 相关文章: 文中还列举了几个相关的文章链接,涉及 Base 32 和 Base 64 编码、QR 码的两种含义以及抖动 QR 码等主题。

总结:

文章强调了大小写对于 QR 码图像大小的影响,全大写字符串由于采用更高效的字母数字编码方式,可以生成更小的 QR 码图像。这种优化在比特币地址等需要紧凑编码的应用中尤为重要。

Beginner-friendly, unofficial documentation for Helix text editor

Helix 编辑器入门指南 (Helix Editor Introduction)

本文档介绍了 Helix 编辑器的基本使用方法,旨在帮助用户快速上手。

1. 打开文件 (Opening a File)

使用 hx file.txt 命令打开一个新的文本文件。初始状态显示当前为 Normal 模式 (NOR),敲击普通字母不会直接插入文本,而是触发特定的命令。

要插入文本,按下 i 键进入 Insert 模式 (INS),此时敲击的字母会被直接插入文档。按下 Esc 键返回 Normal 模式。

2. 移动光标 (Movement)

可以使用方向键上下左右移动光标,但推荐使用 Normal 模式下的 h (左)、j (下)、k (上)、l (右) 键,它们分别将光标左移一个字符、下移一行、上移一行、右移一个字符。

3. 复制粘贴 (Paste)

  • x: 选中当前行。
  • y: 将选中的内容复制到剪贴板(yank)。
  • p: 将剪贴板的内容粘贴到光标之后。

重复使用 xp 可以快速复制多行。

4. 基于单词的移动 (Word-based Movement)

  • e: 移动到当前单词的末尾,同时高亮显示整个单词。
  • b: 移动到当前单词的开头。

可以使用 eb 组合选择单词的不同部分。按下 ; 键可以取消高亮选择。

5. 选择优先 (Selection-first Approach)

Helix 的核心理念是每个操作都会作用于一个选区。修改文本前,用户可以清晰地看到选区,从而预知结果。例如,选中 "helix" 后,按下 c 键会删除选区内容并进入 Insert 模式,用户即可输入新的内容。

6. 删除 (Delete)

  • d: 删除当前选区内容并将其复制到剪贴板。

7. 撤销和重做 (Undo and Redo)

  • u: 撤销最近的操作 (类似于 Ctrl + Z)。
  • U: 重做最近的撤销操作 (类似于 Ctrl + Shift + Z)。

8. 检查点 (Checkpoint)

使用上述命令进行修改后,可以使用以下命令保存和退出:

  • :w: 保存文件。
  • :q: 退出文件。
  • :q!: 不保存退出。
  • :wq: 保存并退出。

9. 更多命令 (More Commands)

  • %: 选中整个文件。
  • gw: 创建两个字符前缀,用于快速定位单词。
  • R: 覆盖当前选区内容。
  • gg: 移动到文件第一行。
  • /: 搜索字符串。n 查找下一个匹配,N 查找上一个匹配。
  • t: 移动到指定字符之前。
  • T: 移动到指定字符之后。
  • f: 移动到指定字符处。
  • Ctrl + d: 向下滚动半页。
  • Ctrl + u: 向上滚动半页。

10. 寄存器 (Registers)

Helix 具有寄存器的概念,可以像拥有多个剪贴板一样操作。使用 " 符号,然后是寄存器名称(例如 + 代表系统剪贴板、e 代表最近 yank 的内容)来操作寄存器。例如,"ep 可以将寄存器 e 的内容粘贴到光标之后。P 将内容粘贴到光标之前。

11. 下一步 (Next Steps)

  • 探索高级文本操作技巧,如围绕 (surround) 和文本对象 (text objects)。
  • 学习使用多光标和宏 (multiple cursors and macros)。
  • 了解如何启用语言支持和自动格式化。
Ioannis Yannas invented artificial skin for treatment of burns–dies at 90

简要总结:伊奥尼斯·V·雅纳斯教授逝世

伊奥尼斯·V·雅纳斯教授 (Ioannis V. Yannas),一位著名的物理化学家和工程师,于10月19日去世,享年90岁。他因发明人工皮肤用于治疗严重烧伤而闻名,并在麻省理工学院 (MIT) 担任教职长达59年。

主要成就与贡献:

  • 人工皮肤 (Integra) 的发明: 雅纳斯教授与John Burke医生合作,于1981年成功开发出人工皮肤Integra。该产品由硅胶外层和源自牛筋腱和鲨鱼软骨的分子材料支架组成,能够有效保护伤口免受感染和脱水,并促进健康皮肤细胞的生长。Integra目前广泛应用于治疗严重烧伤、某些类型的整形手术以及糖尿病患者常见的慢性皮肤伤口。该发明被认为是成人器官再生的第一个例子,彻底改变了烧伤治疗领域。
  • 器官再生的研究: 雅纳斯教授的主要研究兴趣在于诱导器官再生的过程,用于替代严重受伤或患有绝症的器官。他还推动了使用胶管治疗周围神经损伤的临床应用。
  • “单元细胞过程”(UCP) 的概念: 雅纳斯教授与Myron Spector教授共同创建了课程2.79 (生物材料-组织相互作用),并提出了“单元细胞过程”的概念,将化学工程中控制体积的概念应用于人体细胞过程,为学生提供了一种解码组织对植入体反应的工具。
  • 再生医学领域的推动者: 雅纳斯教授的创新精神和对医学问题的积极探索,激励了他人致力于解决诸如失明、中风和脊髓损伤等重大疾病。

其他重要信息:

  • 教育背景: 雅纳斯教授于1957年获得哈佛大学化学学士学位,1959年获得麻省理工学院化学工程硕士学位。后于普林斯顿大学获得物理化学硕士学位 (1965) 和博士学位 (1966)。
  • 荣誉与奖项: 雅纳斯教授荣获多项殊荣,包括美国医学科学院院士 (1987)、国家发明名人堂成员 (2015)、美国工程院院士 (2017) 以及生物材料学会创始人奖 (1982) 等。他也是《成人组织和器官再生》一书的唯一作者。
  • 逝世信息: 雅纳斯教授由其兄弟帕夫洛斯先于他去世。他生前留下两个孩子,五个孙辈,一个妹妹以及众多亲友。

麻省理工学院机械工程系制作的视频“Hope Regenerated”记录了雅纳斯教授的这项开创性发现,并展示了Integra从“失败的实验”到拯救生命的突破性发现的过程。

X.org Security Advisory: multiple security issues X.Org X server and Xwayland

X.Org 安全公告:多个安全问题 (X.Org X 服务器和 Xwayland)

日期: 2025年10月28日

公告内容:

X.Org 发布安全公告,针对 X.Org X 服务器(低于 21.1.18 版本)和 Xwayland(低于 24.1.8 版本)中发现的多个安全问题提供了修复。相关修复已包含在 xorg-server-21.1.19 和 xwayland-24.1.9 版本中。

具体安全问题:

  1. CVE-2025-62229:XPresentNotify 结构创建中的 Use-after-free (使用释放后漏洞)

    当使用 X11 Present 扩展处理和添加像素图 (pixmap) 呈现后的通知时,如果出现错误,错误处理路径中可能会留下一个悬空指针。在后续销毁通知结构时,这可能导致使用释放后漏洞。此问题于 Xorg 1.15 版本引入,并在 xorg-server-21.1.19 和 xwayland-24.1.9 版本中修复。修复提交地址:https://gitlab.freedesktop.org/xorg/xserver/-/commit/5a4286b1。 由 Jan-Niklas Sohn 与 Trend Micro Zero Day Initiative 共同发现。

  2. CVE-2025-62230:Xkb 客户端资源移除中的 Use-after-free (使用释放后漏洞)

    在移除 Xkb 客户端资源时,XkbRemoveResourceClient() 函数会释放与设备关联的 XkbInterest 数据,但不会释放与之关联的资源。因此,当客户端终止时,资源删除函数会触发使用释放后漏洞。此问题于 X11R6 版本引入,并在 xorg-server-21.1.19 和 xwayland-24.1.9 版本中修复。修复提交地址:https://gitlab.freedesktop.org/xorg/xserver/-/commit/99790a2c 以及 https://gitlab.freedesktop.org/xorg/xserver/-/commit/10c94238。 由 Jan-Niklas Sohn 与 Trend Micro Zero Day Initiative 共同发现。

  3. CVE-2025-62231:Xkb 扩展 XkbSetCompatMap() 中的值溢出

    XkbCompatMap 结构体中的某些值使用无符号短整型 (unsigned short) 存储,但未检查输入数据之和是否可能溢出无符号短整型的最大值。此问题于 X11R6 版本引入,并在 xorg-server-21.1.19 和 xwayland-24.1.9 版本中修复。修复提交地址:https://gitlab.freedesktop.org/xorg/xserver/-/commit/475d9f49。 由 Jan-Niklas Sohn 与 Trend Micro Zero Day Initiative 共同发现。

总结:

X.Org 修复了 X 服务器和 Xwayland 中存在的三个安全漏洞,包括两个使用释放后漏洞 (Use-after-free) 和一个值溢出漏洞 (Value overflow)。建议用户升级到 xorg-server-21.1.19 和 xwayland-24.1.9 版本以解决这些问题。

PyTorch Helion

好的,这里是根据提供的文档生成的摘要,用中文写成,且字数在800字以内:

Helion:高性能机器学习内核的新范式

在现代机器学习中,对高性能计算的需求不断增长,导致了大量自定义内核的出现。然而,这些内核通常使用低级、硬件特定的语言编写,这带来了长期维护负担,使得内核难以移植到新的硬件架构。Helion (https://github.com/pytorch/helion) 旨在解决这一难题,它通过将高级 Python 嵌入式领域特定语言 (DSL) 编译为自动调优的 Triton 代码,在用户友好的 PyTorch 简洁性和底层语言的性能之间架起了一座桥梁。

动机:抽象层次的选择

选择合适的内核开发抽象层次至关重要。现有的编程语言和抽象方式迫使开发者在低级控制和高级生产力之间做出选择,而这两种方式都存在优缺点。CUDA/Gluon/TLX 提供最大控制,但需要大量精力才能达到高性能,且高度依赖特定硬件。Triton 虽然有所改进,但仍需要手动管理张量索引、自动调优搜索空间等,需要一定程度的代码编写。PyTorch 等框架易于使用,但缺乏细粒度的控制。

Helion 的编程模型:“PyTorch with Tiles”

Helion 的编程模型旨在最小化样板代码,并利用开发者现有的 PyTorch 知识,其核心理念是 “PyTorch with Tiles”。一个典型的 Helion 内核由两部分组成:

  • Host 代码: 位于最外层 hl.tile 循环之外的标准 PyTorch 代码,主要用于设置任务,如分配输出张量和计算形状。Helion 自动处理这些值传递到设备代码,无需手动管理参数。
  • Device 代码: 位于最外层 hl.tile 循环内的核心部分,编译成高性能的 Triton 内核,在 GPU 上并行执行。

hl.tile 是核心语言构造,它将内核的迭代空间划分为 tiles。开发者只需指定要 tile 的迭代空间,具体的实现细节,如 tile 大小、循环顺序和内存布局优化,由 Helion 的自动调优引擎处理。Helion 还利用 TorchInductor 将标准 PyTorch 运算符映射到对应的 Triton 实现,简化开发过程。

此外,Helion 还支持模板功能,允许将 lambda 函数作为内核的参数传递,这对于实现通用的内核和自定义的后处理非常有用。

Helion 的自动调优引擎

Helion 的关键优势在于其自动、提前 (AOT) 的自动调优引擎。在 Triton 中,开发者需要手动定义自动调优的搜索空间,这需要枚举所有配置,效率较低。Helion 通过隐式搜索空间改变了这一现状。高级语言自动构建一个庞大、多维的实现选择搜索空间。例如,一个 hl.tile 调用会指示自动调优引擎探索不同的块大小、循环顺序以及是否将迭代空间展平为单个维度。

自动调优流程:

  1. 首次运行内核时,自动调优引擎启动,评估数千个候选 Triton 内核配置,使用 Differential Evolution 或 Pattern Search 等搜索策略,找到针对特定硬件和输入形状的最佳配置。
  2. 自动调优完成后,会打印出最佳配置,开发者可以将该配置硬编码到 @helion.kernel() 装饰器中,以跳过后续的搜索过程。
  3. 在生产环境中,Helion 会生成单个、预优化的 Triton 内核,性能与手工调优的内核相当,但开发工作量大大减少。

配置空间:

自动调优引擎探索的配置空间包含各种参数,控制数据移动、线程映射等。配置参数包括:

  • indexing: 内存访问方法 (指针算术、块指针、张量描述符)
  • block_sizes: 每个维度 tile 大小
  • flatten_loops: 循环展平
  • loop_orders, l2_grouping: 循环顺序、二级缓存分组
  • reduction_loops: 减少循环
  • pid_type: 程序 ID 映射
  • load_eviction_policy: GPU L1 缓存置换策略
  • Triton configs: 标准 Triton 可调参数

性能分析和基准测试

Helion 在 NVIDIA B200 和 AMD MI350X GPU 上进行了基准测试,结果表明 Helion 在大多数内核中优于 torch.compile 和手工编写的 Triton 内核。例如

I Fell in Love with Erlang

我爱上 Erlang 的原因

这篇文章讲述了作者如何从最初对编程的困惑,到最终爱上 Erlang 编程语言的旅程。

最初的困惑

作者小时候尝试破解 Commodore-64 游戏,接触到 BASIC 编程。他无法理解 X = X + 1 这样的代码,认为这是一种数学上的谎言,因为零不应该等于一。

学习编程的摸索

随后,作者在大学期间学习了 C 语言,并开始通过不断尝试、错误和修复来学习编程,经历了一个“Linux 格式化时代”,经常格式化自己的 Linux 系统。尽管他能够编写循环和递增计数器,但他仍然感觉缺少了什么。

关键问题

一次偶然的机会,一位桥牌搭档向他提出了一个问题:“如何不用循环计算 1 到 10 的和?”这个问题启发了作者,让他开始思考不同的编程方式。

Prolog 和递归

作者接触到了 Prolog 语言,并发现了递归的概念。递归让他意识到,编程不仅仅是逐步计算,而是可以描述事物之间的关系。这让他感到仿佛有人用他能理解的语言在与他对话。

与 Erlang 的相遇

在一次桥牌比赛的休息时间,作者与一位来自瑞典的选手交流,得知了 Erlang 语言。Erlang 是由瑞典 Ericsson 公司开发的,用于构建分布式、容错的电信系统,并且是函数式的,类似于 Prolog。

Ping 和 Pong 的魔力

作者尝试编写 Erlang 代码,并被其分布式特性所震惊。他展示了简单的 Ping 和 Pong 示例,两个独立的 Erlang 节点可以在不同的机器上通信,而无需 HTTP、REST API 或序列化。这展示了 Erlang 的函数式、分布式和容错特性。

Erlang 的哲学

Erlang 不仅仅是一种编程语言,更是一种哲学:

  • 允许崩溃 (Let it crash):不要试图处理所有错误。
  • 进程廉价 (Processes are cheap):可以创建数百万个进程。
  • 不共享 (Share nothing):隔离是安全的关键。
  • 消息传递 (Message passing):通过消息传递进行通信,避免耦合。

最终的声明

作者最终放弃了桥牌,全身心投入到 Erlang 编程中。他认为 Erlang 是一种优雅的编程语言,结合了函数式编程、分布式系统和容错性。

推荐观看

作者推荐观看名为 "Erlang: The Movie" 的视频,以了解 Erlang 的精神和魅力。

未来计划

作者计划在博客上分享他 30 多年来构建软件系统所学到的知识,包括 Erlang、Elixir、函数式编程、分布式系统等。他将继续分享经验和见解,帮助他人更好地理解这些技术。

You Don't Need Anubis

LLM 抓取器防护:Anubis 是否真的有效?

这篇文章探讨了当前网站防护 LLM(大型语言模型)抓取器的方法,特别是 Anubis 的有效性。

主要问题:

  • LLM 抓取器的攻击性增强: LLM 训练公司运营的抓取器变得越来越激进,无视 robots.txt,伪造 User Agent 和 IP 地址,甚至对小型网站发起 DDoS 攻击。Anthropic 的 ClaudeBot 是主要问题。
  • Anubis 的流行: 越来越多的网站开始使用 Anubis,这是一种基于工作量证明的防御方案,要求访问者在访问网站前解决一个小型加密问题。
  • Anubis 的缺陷: 文章指出 Anubis 实际上并不适用于防御 LLM 抓取器,因为它对 LLM 公司来说成本几乎为零。LLM 公司无需付出太多成本就能绕过 Anubis。
  • Anubis 的局限性: Anubis 能够阻止抓取器,但仅仅是因为大多数 LLM 抓取器 不运行 JavaScript
  • 作者的解决方案: 作者分享了一段 12 行的 Caddyfile 配置,通过要求访问者运行 JavaScript 代码来设置一个 cookie,从而实现对抓取器的有效防护。 这种方法与 Anubis 同样有效,但对用户体验的影响更小。
  • 临时性解决方案: 作者指出,无论是 Anubis 还是其他临时性解决方案,都无法从根本上解决问题,因为抓取器最终会学会绕过它们。华为的抓取器已经能够解决 Anubis 的挑战。
  • Cloudflare 的重要性: 文章强调,Cloudflare 仍然是防御抓取器的最可靠方法,尽管其高级防护模式可能会对使用 VPN 的用户造成不便。

结论:

如果网站的主要目标是防御 ClaudeBot 等 LLM 抓取器,那么使用 Anubis 是一种过度且不必要的措施。作者建议使用更友好的替代方案,例如基于 JavaScript 的解决方案,或者直接使用 Cloudflare。Anubis 仍然可以作为 DDoS 防护的有效工具,但对于大多数网站来说,它并非最佳选择。


原文链接

Think Weirder: The Year's Best SciFi Ideas

The sixteen best concept-driven, near-future science fiction stories of the year. Curated by editor Joe Stech from hundreds of stories published in major magazines. Coming October 2025.

The Useful Personal Computer

To market their new products to people who had not already spent years pining for a computer of their own, the creators of the second wave of microcomputers had to face head on the question of what the microcomputer was actually good for. What was its value, if not as a hobby plaything for self-motivated…

MySafeSpace – Whitehouse.gov

We're Democrats in the House and Senate. We love DEI, transgender for everyone, giving healthcare to illegals and shutting down the government!