2024-09-21 Hacker News Top Stories #
- Arc 浏览器存在安全漏洞,允许攻击者在不访问网站的情况下获取任何人的 Arc 浏览器访问权限。
- Simple Icons 提供 3198 个免费 SVG 图标,专注于流行品牌的标识,用户可以轻松找到所需的图标。
- 实时 Linux 正式成为内核的一部分,标志着 PREEMPT_RT 补丁集的合并,预计将在 6.12 版本的内核中实现。
- GitHub 通知邮件被用来发送恶意软件,攻击者利用 GitHub 的通知邮件来传播恶意软件。
- Linux/4004 项目展示了在 Intel 4004 微处理器上运行 Linux 的可能性,尽管面临许多技术挑战。
- SSH 隧道和端口转发的视觉指南详细介绍了 SSH 隧道和端口转发的概念、用例、配置方法以及一些限制。
- CuPy 是一个与 NumPy 和 SciPy 兼容的数组库,专为 GPU 加速计算而设计,支持 NVIDIA CUDA 和 AMD ROCm 平台。
- 天气预报景观图像可视化项目通过景观图像可视化天气预报信息,旨在提供一种更自然、放松的视觉体验。
- 构建系统 Zb 旨在提供用户友好的可重现构建工具,使用 Lua 作为配置语言,支持强大的构建功能。
- 上下文检索是一种新方法,旨在提高 AI 模型在特定上下文中的信息检索能力,结合重排序后可降低检索失败的概率。
Gaining access to anyones Arc browser without them even visiting a website #
该网页的内容主要讨论了一个名为 Arc 的浏览器的安全漏洞,具体是如何通过 Firebase 的身份验证和 Firestore 数据库进行攻击的。以下是详细摘要:
-
Arc 浏览器简介:Arc 浏览器要求用户注册账户,使用 Firebase 进行身份验证。
-
发现漏洞:作者通过分析 Arc 的功能(如“Easels”白板共享)发现,虽然 Firebase 用于身份验证,但实际上还涉及 Firestore 数据库,可能存在安全隐患。
-
Firestore 的安全性问题:Firestore 允许开发者直接访问数据库,导致许多服务的安全规则不够严格。作者通过 Frida 脚本监控 Firebase 的调用,发现 Arc 存储了一些用户偏好设置和“Boosts”信息。
-
Boosts 功能:Arc 的“Boosts”允许用户自定义网站的外观和功能,包括使用自定义的 JavaScript。作者发现可以通过修改 Boost 的创建者 ID 来攻击其他用户。
-
攻击链:
- 获取目标用户的 ID(通过用户推荐、共享的 Boosts 或 Easels)。
- 创建一个恶意 Boost,并将其创建者 ID 更改为目标用户的 ID。
- 当目标用户访问特定网站时,恶意代码将被执行。
-
漏洞披露与修复:作者在 2024 年 8 月 25 日首次联系 Arc 的联合创始人,随后进行了漏洞验证和披露。Arc 在短时间内修复了该漏洞,并给予作者 2000 美元的奖励。
-
隐私问题:作者指出,Arc 在用户访问网站时会发送数据到服务器,这与其隐私政策相悖。
-
后续措施:Arc 决定停止使用 Firebase,进行安全审计,并启动漏洞奖励计划,以防止未来的安全问题。
总结来说,文章揭示了 Arc 浏览器的一个严重安全漏洞,作者通过技术分析和实际测试展示了攻击的可能性,并记录了漏洞的披露和修复过程。
HN 热度 1029 points | 评论 335 comments | 作者:xyzeva | 23 hours ago #
https://news.ycombinator.com/item?id=41597250
- Arc 浏览器的安全漏洞引发了用户对其透明度和安全性的质疑,许多人认为公司应更公开地处理此类问题。
- 用户对 Arc 浏览器在处理安全漏洞时的反应速度表示赞赏,但同时也对其安全文化和隐私政策表示担忧。
- 有评论指出,Arc 浏览器的设计和使用 Firebase 作为后端服务可能导致安全隐患,认为应更重视安全规则的实施。
- 对于漏洞的赏金(2000 美元)被认为过低,许多人呼吁提高赏金以反映漏洞的严重性。
- 一些用户表示,由于 Arc 浏览器的隐私问题和强制要求创建账户,他们决定停止使用该浏览器。
- 评论中提到,Arc 的用户体验虽然优秀,但其安全问题和商业模式的可持续性令人担忧。
- 有人认为,Arc 浏览器的开发团队在安全方面的能力不足,可能无法有效维护浏览器的安全性。
- 许多用户对 Arc 浏览器的未来表示怀疑,认为其在安全和隐私方面的失误可能会影响其用户基础。
3K free SVG icons for popular brands #
Simple Icons 是一个提供 3198 个免费 SVG 图标的网站,专注于流行品牌的标识。用户可以通过搜索、排序和下载功能轻松找到所需的图标。网站的设计简洁,旨在帮助用户创建美观且独特的网站。
该网站包含了许多知名品牌的图标,并提供了品牌指南的链接。用户如果发现缺失的图标或需要更新的图标,可以提交请求或报告。Simple Icons 是一个由社区贡献者维护的项目,支持者可以通过 Open Collective 进行捐赠。
此外,网站还鼓励用户在 GitHub 上进行请求、修正和贡献,体现了开放协作的精神。
HN 热度 452 points | 评论 83 comments | 作者:noashavit | 24 hours ago #
https://news.ycombinator.com/item?id=41597162
- 许多用户对 SVG 图标的使用表示支持,认为这是品牌的免费宣传。
- 有人质疑这些图标的版权和商标问题,认为使用时需谨慎。
- 一些评论提到,现有的图标库(如 Iconify)已经包含了大量品牌图标,认为没有必要再创建新的资源。
- 有用户建议在搜索结果中显示文件格式和大小,以提高使用便利性。
- 讨论中提到,某些品牌可能会对使用其商标的行为采取法律行动,但在不误导消费者的情况下,使用品牌标志通常是可以接受的。
- 有人提到,SVG 图标的版权问题复杂,使用前应仔细检查许可协议。
- 一些用户分享了其他图标资源和工具,认为这些资源可以更好地满足需求。
- 对于某些品牌(如微软),由于法律要求,相关图标已被移除,反映出品牌对其商标的严格控制。
Real-time Linux is officially part of the kernel #
在经过数十年的讨论后,实时 Linux(Real-Time Linux)终于正式成为 Linux 内核的一部分。这一变化标志着 PREEMPT_RT 补丁集的合并,预计将在 6.12 版本的内核中实现。Linus Torvalds 在欧洲开源峰会上最终签署了这一决定。
实时 Linux 的引入使得用户在进行音频制作、工业激光焊接或其他需要实时响应的应用时,无需依赖专门的补丁。尽管早在 1990 年代末,大学就开始开发实时内核,PREEMPT_RT 补丁自 2005 年以来也一直存在,但其正式纳入内核仍具有重要意义。
对于桌面 Linux 用户而言,这一变化的影响可能不大,实时内核不会显著提升窗口响应速度或程序运行流畅度。然而,实时 Linux 提供的保证执行和最坏情况延迟时间,对于监控汽车刹车、引导数控机床以及管理复杂的多 CPU 系统等应用非常有用。
这一变化可能会影响到之前专注于实时操作系统解决方案的供应商。例如,Ubuntu 在 2023 年推出了实时版本,但需要订阅 Ubuntu Pro 才能访问。Torvalds 曾在 2006 年的内核峰会上表示,使用 Linux 控制激光器是“疯狂的”,但如今,随着 PREEMPT_RT 的正式合并,使用 Linux 进行此类控制变得更加容易。
HN 热度 439 points | 评论 129 comments | 作者:jonbaer | 1 day ago #
https://news.ycombinator.com/item?id=41594862
- 实时 Linux 的合并是多年来努力的结果,标志着 Linux 内核的一个重要进步。
- Thomas Gleixner 及其团队在此过程中发挥了关键作用,Linutronix 现在是 Intel 的子公司。
- 实时内核的引入使得系统在处理实时任务时的延迟大幅降低,尤其在音频和信号处理等领域表现突出。
- 使用实时内核的用户报告称,系统的响应性和稳定性有显著提升,尤其是在多任务处理时。
- 对于普通桌面用户来说,实时内核的使用可能会带来轻微的性能下降,但总体体验更为流畅。
- 实时内核在嵌入式系统和工业应用中具有重要意义,尤其是在需要严格时间控制的场景下。
- 有人指出,实时内核并不意味着更快,而是提供了更可预测的执行时间。
- 讨论中提到,实时 Linux 的实现仍然面临一些挑战,特别是在驱动程序兼容性和系统稳定性方面。
- 许多用户对实时 Linux 在 CNC 控制和音频处理中的应用表示赞赏,认为其效果显著。
- 未来的创新可能会集中在内核以上的层面,而不是仅仅在内核功能的扩展上。
GitHub notification emails used to send malware #
https://ianspence.com/blog/2024-09/github-email-hijack/
这篇博客文章讨论了一个针对 GitHub 用户的恶意攻击,攻击者利用 GitHub 的通知邮件来传播恶意软件。以下是详细摘要:
-
攻击方式:
- 攻击者创建一个临时的 GitHub 账户,在受害者的公共仓库中创建一个问题(issue),然后迅速删除该问题。
- 受害者会收到一封通知邮件,误以为是 GitHub 的合法通知,点击邮件中的链接。
- 邮件内容伪装成 GitHub 安全团队的通知,诱使用户下载恶意软件。
-
邮件内容分析:
- 邮件中包含攻击者控制的内容,缺乏足够的上下文来识别其真实性。
- 攻击者利用了 GitHub 的邮件系统,邮件通过了常见的钓鱼检查。
-
恶意软件的传播:
- 点击邮件中的链接后,用户会被引导到一个看似正常的页面,要求完成验证码。
- 实际上,验证码的步骤是诱导用户复制并粘贴一段 PowerShell 命令,这段命令会下载并执行恶意程序。
-
恶意程序的功能:
- 下载的程序会在用户的计算机上执行,试图窃取敏感信息,如加密货币钱包和存储的凭证。
- 该恶意软件被称为“LUMMASTEALER”,属于一种“恶意软件即服务”的产品,攻击者通过它来获取用户的敏感数据。
-
安全建议:
- GitHub 可以通过提供更多上下文信息和减少攻击者控制的内容来改进通知邮件的安全性。
- 用户应提高警惕,仔细检查来自 GitHub 的邮件,尤其是涉及链接和下载的内容。
-
总结:
- 文章强调了 GitHub 通知邮件的潜在风险,以及攻击者如何利用这些邮件进行恶意活动。作者还分享了自己分析攻击的过程和使用的工具。
这篇文章提醒开发者在处理 GitHub 通知时要保持警惕,避免落入攻击者的陷阱。
HN 热度 435 points | 评论 171 comments | 作者:crtasm | 1 day ago #
https://news.ycombinator.com/item?id=41596466
- 有人质疑人们是否真的会上当受骗,认为邮件链接的域名变体是明显的红旗。
- 诈骗者利用大量邮件发送,依赖于人们的疲惫和压力,增加成功的几率。
- 新用户可能会因为不熟悉 GitHub 的操作而上当,尤其是在处理命令时。
- 许多人在疲惫或压力下容易犯错,尤其是在节假日期间。
- 电子邮件中使用不同域名的做法很常见,可能会导致用户混淆。
- 许多用户对网络安全缺乏足够的警惕,容易被社会工程学攻击所欺骗。
- 诈骗者故意在邮件中留下明显的错误,以筛选出不够谨慎的受害者。
- 需要加强对用户的安全教育,尤其是对新手用户。
- GitHub 的邮件通知系统可能需要改进,以减少误导性信息的传播。
- 许多用户在处理邮件时缺乏基本的安全意识,容易点击可疑链接。
Linux/4004: booting Linux on Intel 4004 for fun, art, and no profit #
https://dmitry.gr/?r=05.Projects&proj=35.%20Linux4004
该网页介绍了一个名为“Linux/4004”的项目,旨在将完整的 Debian Linux 系统引导到 1971 年发布的 Intel 4004 微处理器上。这个项目的主要目的是出于乐趣和艺术,而非商业利益。
项目概述 #
- 目标:在 Intel 4004 微处理器上运行 Linux,创造一个新的低端计算机运行 Linux 的记录。
- 实现:项目成功引导了一个真实的 Linux 内核,并在一个真实的 4004 硬件平台上运行,尽管速度较慢。
- 视频展示:提供了加速的视频,展示了系统的启动过程和准确的时钟与日历。
主要内容 #
-
Intel 4004 简介:
- 4004 是世界上第一个商业化的微处理器,采用 4 位架构,主要用于计算器。
- 其指令集简单,主要支持加法和减法,没有逻辑运算指令。
-
控制流与内存管理:
- 4004 使用硬件堆栈进行子程序调用,支持条件跳转和无条件跳转。
- 内存管理相对原始,支持最多 8 个 RAM 银行,且没有寻址模式的概念。
-
性能与时钟:
- 4004 的指令周期由 8 个时钟周期组成,最低工作频率为 500KHz。
- 由于其设计的局限性,执行复杂操作(如乘法和除法)时效率低下。
-
开发板与仿真:
- 开发者构建了一个简单的开发板,包含必要的组件以确保 4004 正常工作。
- 项目中还开发了一个 4004 的仿真器,以便在软件中测试和调试。
-
MIPS 仿真:
- 由于 4004 无法直接运行 Linux,开发者选择了 MIPS R3000 架构进行仿真。
- 该仿真器的设计考虑了内存限制和指令集的复杂性。
结论 #
该项目展示了在极限硬件上运行现代操作系统的可能性,尽管面临许多技术挑战。通过对 Intel 4004 的深入研究和创新的解决方案,开发者成功地将 Linux 引导到这一历史悠久的微处理器上,创造了一个有趣的技术成就。
HN 热度 380 points | 评论 81 comments | 作者:dmitrygr | 11 hours ago #
https://news.ycombinator.com/item?id=41600756
- 现代计算机的基本架构在 80 年代末和 90 年代初基本形成,早期计算机与现代计算机在功能上没有本质区别。
- 任何图灵完备的系统都可以运行任何程序,尽管速度可能非常慢。
- 讨论了计算机的内存限制,认为具有外部连接的计算机可以视为具有无限内存。
- 通过邮件进行国际象棋对弈的方式被比喻为“通过邮件运行 Linux”,增加了操作的挑战性。
- 运行 Linux 的项目展示了在极限条件下的工程能力,值得赞赏。
- 对于 4004 微处理器的历史和定义存在争议,认为其并不是真正的微处理器。
- 许多评论者对 4004 的应用表示惊讶,认为这是对计算机科学的有趣探索。
- 讨论了 RISC-V 和 MIPS 的指令格式差异,认为 RISC-V 的设计在某些方面不如 MIPS。
- 有人提到在 4004 上运行现代内核的工程难度,称其为“巫师级别的工程”。
- 计划在 4004 上实现自我编译内核的设想引发了对未来的想象。
Visual guide to SSH tunneling and port forwarding (2023) #
https://ittavern.com/visual-guide-to-ssh-tunneling-and-port-forwarding/
这篇文章《SSH 隧道和端口转发的视觉指南》详细介绍了 SSH 隧道和端口转发的概念、用例、配置方法以及一些限制。以下是内容的详细摘要:
1. 用例 #
- 安全性:通过 SSH 隧道加密不安全的连接(如 FTP),安全访问网络管理面板,减少暴露的端口数量(只暴露 22 端口)。
- 故障排除:绕过防火墙和内容过滤器,选择不同的路由。
- 连接:访问 NAT 后面的服务器,使用跳板机访问内部服务器,暴露本地端口到互联网。
2. 端口转发 #
- 端口转发可以分为本地转发、远程转发和动态转发。
- 本地转发:将本地端口的流量转发到远程主机的端口。
- 远程转发:将远程主机的端口流量转发到本地端口。
- 动态转发:使用 SOCKS 协议转发多个端口。
3. 配置/准备 #
- 本地和远程用户需要有权限打开端口。
- SSH 服务器必须启用端口转发(
AllowTcpForwarding yes
)。 - 如果需要在非 127.0.0.1 的接口上转发端口,还需启用
GatewayPorts yes
。
4. SSH 跳板机 #
- 可以通过一个或多个主机透明地连接到远程主机。
- 使用
-J
选项指定跳板机。
5. 运行 SSH 在后台 #
- 使用
-fN
选项可以将 SSH 隧道在后台运行。 - 可以使用
ps
命令查找并终止后台进程。
6. 保持 SSH 连接活跃 #
- 使用
ClientAliveInterval
和ClientAliveCountMax
设置保持连接活跃的心跳机制。
7. 限制 #
- UDP 不支持:由于 UDP 不可靠,不推荐在 SSH 隧道上使用。
- TCP-over-TCP:可能导致吞吐量降低和延迟增加。
- 不是 VPN 替代品:虽然 SSH 隧道可以用于某些 VPN 功能,但性能上不如 VPN。
8. 安全风险 #
- 如果不需要某些功能,建议将其关闭,以避免潜在的安全风险。
这篇文章为 SSH 隧道和端口转发提供了全面的视角,适合希望深入了解这一技术的用户。
HN 热度 375 points | 评论 57 comments | 作者:todsacerdoti | 1 day ago #
https://news.ycombinator.com/item?id=41596818
- 有人建议使用
~/.ssh/config
文件来配置 SSH 连接,以提高效率,避免重复输入命令。 - 一些用户分享了他们的 SSH 配置技巧,展示如何通过跳转主机实现更灵活的连接。
- 有人指出使用
0.0.0.0
可能存在安全隐患,建议在没有防火墙的情况下谨慎使用。 - 有人提到在公司环境中,SSH 隧道是访问防火墙默认关闭端口的有效方式。
- 讨论中提到,绕过公司政策可能带来风险,但也可能提高工作效率。
- 有人认为公司网络的政策有时过于繁琐,导致工作效率低下。
- 一些用户分享了使用 SSH 隧道进行远程访问和安全性的经验。
- 有人提到在特定情况下,SSH 隧道可以用于流媒体和科学文章下载等用途。
- 讨论中提到,使用 SSH 隧道时应注意潜在的法律和安全风险。
- 有人建议使用图形化工具来简化 SSH 隧道的配置过程。
CuPy: NumPy and SciPy for GPU #
CuPy 是一个与 NumPy 和 SciPy 兼容的数组库,专为 GPU 加速计算而设计,支持 NVIDIA CUDA 和 AMD ROCm 平台。它允许用户在 GPU 上运行现有的 NumPy/SciPy 代码,提供了与 NumPy 类似的 API,使得迁移和使用变得简单。
主要特点: #
- 兼容性:CuPy 旨在与 NumPy 和 SciPy 的 API 保持一致,用户可以轻松地将现有代码迁移到 GPU 上。
- 性能:通过利用 GPU 的并行计算能力,CuPy 可以显著加快数值计算的速度。
- 低级 CUDA 特性:CuPy 还提供对低级 CUDA 功能的访问,用户可以通过 RawKernels 直接与 CUDA C/C++ 程序交互,使用 Streams 提升性能,或直接调用 CUDA Runtime API。
安装方式: #
- Pip:提供适用于 Linux 和 Windows 的二进制包,用户可以根据 CUDA 版本选择相应的安装命令。
- Conda:同样提供适用于 Linux 和 Windows 的二进制包,用户可以通过 Conda-Forge 安装。
- Docker:用户可以使用 NVIDIA Container Toolkit 运行 CuPy 的容器镜像。
文档和资源: #
- CuPy 提供了详细的安装指南、使用教程、示例代码和 API 参考文档,帮助用户快速上手。
- 该项目由 Preferred Networks 和社区贡献者共同开发和维护。
许可证: #
CuPy 使用 MIT 许可证,允许用户自由使用和修改。
贡献与社区: #
CuPy 鼓励社区参与,用户可以通过 GitHub 提交问题和贡献代码。
总之,CuPy 是一个强大的工具,适合需要在 GPU 上进行高效数值计算的 Python 开发者。
HN 热度 246 points | 评论 76 comments | 作者:tanelpoder | 9 hours ago #
https://news.ycombinator.com/item?id=41601730
- CuPy 作为 NumPy 的替代品,提供了与 NumPy 相似的语法,且对 AMD GPU 的兼容性吸引了不少用户。
- NumPy、CuPy 和 PyTorch 之间存在共享 API 的定义,使得可以编写兼容的数组 API 代码。
- 硬件、软件和 API 的共同开发在市场上再次显现,类似于早期的 3D 加速器 API。
- CuPy 的内存视图(memoryview)提供了与 NumPy 互操作的快速低级访问。
- CuPy 的张量支持就地操作,与 NumPy 的语义相同。
- CuPy 在量子力学模拟等特定应用中表现出显著的性能提升。
- 对于需要在 CPU 和 GPU 之间切换的代码,CuPy 几乎可以作为 NumPy 的无缝替代。
- JAX 在自动梯度计算方面表现优越,适合深度学习任务,而 CuPy 则不支持此功能。
- CuPy 的安装过程相对简单,旨在减少用户的配置难度。
- 对于需要处理多个右侧的线性系统,CuPy 和 JAX 都提供了相关的求解器支持。
Visualizing Weather Forecasts Through Landscape Imagery #
https://github.com/lds133/weather_landscape
该 GitHub 项目名为 weather_landscape,由用户 lds133 创建,旨在通过景观图像可视化天气预报信息。以下是该项目的详细摘要:
项目概述 #
传统的天气站通常以原始数值数据的形式展示传感器读数,这种方式可能让人感到困惑和压力。该项目通过将天气信息编码到景观图像中,提供了一种更自然、放松的视觉体验,减少了对数值数据的依赖。
编码原理 #
- 图像结构:图像中描绘了一座小房子,水平轴表示从当前时刻开始的 24 小时时间线,左侧为当前时刻,右侧为次日的天气情况。垂直轴则用来表示不同的天气事件和条件。
- 编码信息:
- 时间标记:日出、日落、正午和午夜。
- 天气预报信息:风向和风速、温度波动、最高和最低温度、云量、降水量。
- 当前天气条件:温度、气压。
- 其他事件:生日、节假日。
实现方式 #
- 编程语言:使用 Python 编写,利用 Pillow 库生成图像,数据来源于 OpenWeather。
- 显示设备:图像专为 296x128 的电子墨水显示器设计,代码在 Python 3.9 上测试通过。
运行代码 #
- 环境准备:
- 对于 Linux 用户:运行
./makevenv.sh
和source .venv/bin/activate
。 - 对于 Windows 用户:运行
makevenv.bat
和.venv/Scripts/Activate
。
- 对于 Linux 用户:运行
- 图像生成测试:需在
weather_landscape.py
文件中更新 OpenWeather API 密钥,然后运行python run_test.py
。 - 服务器运行:使用
python run_server.py
启动服务器。
硬件要求 #
该项目使用 ESP32 开发板和 2.9 英寸电子墨水显示模块。目前的设置每 15 分钟更新一次图像,尚不确定图像生成代码是否可以适配 MicroPython。
其他信息 #
- 主题:项目涉及 MicroPython、ESP32、Python3、OpenWeatherMap API、天气预报和电子墨水显示技术。
- 许可证:MIT 许可证。
该项目通过创新的方式将天气信息以视觉化的形式呈现,旨在提升用户体验,使天气信息的获取变得更加直观和轻松。
HN 热度 245 points | 评论 33 comments | 作者:lds133 | 6 hours ago #
https://news.ycombinator.com/item?id=41603546
- 有人认为可以通过调整树木的弯曲程度来表示风向,增加视觉效果。
- 有人建议将日出日落用更直观的方式表示,而不是用太阳和月亮的图标。
- 有评论提到夜空和白天的色调应有所不同,以增强视觉效果。
- 有人表示希望能有一个动物代替房子来表示时间的流逝。
- 有用户分享了自己使用类似概念的安卓壁纸应用,认为艺术作品可以传达有用信息。
- 有人提到自己曾尝试根据天气选择艺术作品,认为这可以用于情绪调节。
- 有评论指出,现有的天气应用在用户体验上表现良好,特别是 windy.com。
- 有人提到自己开发了一个天气路途应用,帮助用户避开恶劣天气。
- 有用户推荐了 Meteoblue 和 Zoom Earth 作为优秀的天气可视化工具。
- 有人认为该项目的图像语义有些不准确,夜晚的天空不应明亮。
- 有评论认为数字数据更易于识别,而图像则可能让人困惑。
- 有人表示希望看到该项目的离线版本,可以直接与传感器连接。
- 有用户提到类似的天气可视化项目,认为这是一个很好的创意。
Zb: An Early-Stage Build System #
https://www.zombiezen.com/blog/2024/09/zb-early-stage-build-system/
这篇文章由 Roxy Light 撰写,介绍了一个名为“zb”的早期构建系统,旨在提供用户友好的可重现构建工具。以下是文章的详细摘要:
-
项目背景:
- Roxy 决定将“zb”发展为一个完整的构建工具,尽管之前曾表示不会将其开发到生产就绪状态。
- 主要原因是个人项目需要一个依赖管理解决方案,并且对 Nix 的依赖感到不满。
- 随着行业对供应链安全的关注增加,许多项目可以从更好的依赖管理/构建工具中受益。
-
zb 的特点:
- 配置语言:zb 使用 Lua 作为配置语言,避免了引入复杂的编程语言障碍。Lua 的代码库小,易于扩展,能够在每个字符串中包含依赖信息。
- 强大的构建功能:zb 被描述为一种悬挂调度器,支持早期截止优化和动态依赖,能够提高构建速度。
- 支持非确定性:zb 能够处理构建中的非确定性,通过重新运行非确定性构建步骤并尽可能重用工作,确保构建的正确性。
- 与 Nix 兼容的文件格式:zb 内部使用与 Nix 相同的.drv 文件格式,允许重用为 Nix 存储构建的工具。
- 跨平台支持:zb 旨在支持 Windows、Linux 和 macOS,避免在不同平台之间分割工具。
-
开发进展:
- zb 目前已达到一个重要里程碑:不再依赖 Nix,开发了一个全新的构建后端,支持内容寻址的派生。
- 文章提到,zb 的基础是“意向模型”,这为未来的发展奠定了坚实的基础。
-
未来计划:
- Roxy 计划完成 Linux 用户空间的开发,以便更容易地引导其他开发工具。
- 鼓励读者尝试 zb 并在 GitHub 上反馈。
总之,zb 是一个正在开发中的构建系统,旨在提供更好的依赖管理和构建体验,尤其是在供应链安全日益重要的背景下。
HN 热度 236 points | 评论 108 comments | 作者:zombiezen | 1 day ago #
https://news.ycombinator.com/item?id=41595310
- 有用户对 Zb 的目录选择表示担忧,认为在 macOS 上可能会引发问题。
- 一些评论者对 Zb 与 WAF 的比较表示兴趣,认为大多数构建系统在处理复杂依赖时存在困难。
- 有人提到希望构建工具能够支持多种依赖形式,包括目录树和 URL。
- 讨论中提到 Nix 的互操作性问题,尤其是在构建基础设施方面的挑战。
- 有用户对 Nix 的动态依赖处理表示关注,认为这可能影响构建的可预测性。
- 一些评论者对 Zb 的 Windows 支持表示期待,认为这将是一个重要的功能。
- 讨论中提到 Zb 的设计理念与 Nix 的不同,尤其是在处理非确定性构建方面。
- 有人建议 Zb 在文档和用户界面上进行改进,以提高用户友好性。
- 一些评论者对 Zb 的构建语言选择(Lua)表示质疑,认为可能不如声明式语言适合可重现性。
- 讨论中提到希望 Zb 能够支持分布式构建和缓存功能,以提高构建效率。
Contextual Retrieval #
https://www.anthropic.com/news/contextual-retrieval
在 2024 年 9 月 19 日,Anthropic 发布了一项名为“上下文检索”(Contextual Retrieval)的新方法,旨在提高 AI 模型在特定上下文中的信息检索能力。该方法主要通过两种子技术实现:上下文嵌入(Contextual Embeddings)和上下文 BM25(Contextual BM25)。这项技术的引入可以将检索失败的概率降低 49%,结合重排序(reranking)后可降低 67%,显著提升了检索的准确性。
背景 #
传统的检索增强生成(RAG)方法在处理知识库时,通常会将信息编码为较小的文本块,但这种方式往往会丢失上下文,导致检索结果不准确。例如,在客户支持或法律分析中,AI 需要对特定领域的背景知识有深入了解。
上下文检索的工作原理 #
- 上下文嵌入:在对文本块进行嵌入之前,先为每个文本块添加特定的上下文信息,以提供更清晰的背景。
- 上下文 BM25:结合传统的 BM25 方法,通过词汇匹配来提高检索的精确度,尤其是在处理包含特定标识符或技术术语的查询时。
实施步骤 #
- 将知识库分解为较小的文本块。
- 为每个文本块生成 TF-IDF 编码和语义嵌入。
- 使用 BM25 和嵌入模型结合检索最相关的文本块。
- 通过重排序模型优化最终的检索结果。
性能提升 #
实验表明,使用上下文嵌入和上下文 BM25 的组合可以显著降低检索失败率。具体数据如下:
- 上下文嵌入将前 20 个块的检索失败率降低了 35%。
- 结合上下文嵌入和上下文 BM25 后,检索失败率降低了 49%。
- 通过重排序技术,检索失败率进一步降低至 1.9%。
成本与延迟 #
上下文检索的实施成本相对较低,得益于 Claude 的提示缓存功能,能够有效减少延迟和费用。尽管重排序会增加一些延迟,但通过合理的设置可以在性能和成本之间找到平衡。
结论 #
上下文检索为开发者提供了一种高效的方式来处理大型知识库,提升了信息检索的准确性和效率。Anthropic 鼓励开发者利用其提供的工具和方法,探索新的性能提升可能性。
HN 热度 234 points | 评论 62 comments | 作者:loganfrederick | 20 hours ago #
https://news.ycombinator.com/item?id=41598119
- 许多评论者认为,混合检索(语义 + 向量)在实际应用中效果不一,需根据具体用例进行测试。
- 有人提到,HyDE 方法在某些情况下会降低答案和检索质量,建议使用真实用户问题进行评估。
- 讨论中提到,缓存机制可以降低成本,使得大规模处理变得可行,但也有人质疑其实际效果。
- 一些评论者认为,传统的检索方法仍然有效,尤其是在特定领域的应用中。
- 有人提到,构建概念图和使用实体提取可以增强检索效果,但需要预先定义好实体和关系类型。
- 讨论中提到,使用 LLM 进行上下文增强的方式可能会增加处理时间,但在某些情况下是值得的。
- 有评论者认为,使用传统搜索引擎结合调优查询可能会比单纯依赖向量搜索更有效。
- 一些人对 Anthropic 的“上下文检索”表示怀疑,认为其并没有实质性的新产品推出。
- 还有人提到,使用标记化的方式来处理文档可以提高检索性能,而不需要依赖 LLM。