每日HackerNews RSS

## 从提示工程到上下文工程:一种新的大型语言模型方法 随着大型语言模型(LLM)超越聊天机器人,成为复杂系统的核心组件,仅仅“提示工程”——精炼措辞——已不再足够。一种更全面的方法,**上下文工程**,正在兴起,它以有意的结构和针对性关注着馈送给LLM的*每一个*token。 LLM基于其训练数据预测序列中的下一个token,受限于固定的“上下文窗口”。早期方法侧重于文本补全,然后发展到“聊天框架”——模拟对话——允许通过“系统消息”进行指令。这促成了**上下文学习**等技术,其中LLM从上下文窗口*内*的示例中学习,整合诸如文档(通过RAG)、工具和记忆等数据。 然而,更大的上下文窗口会引入复杂性和“幻觉”等风险。上下文工程将LLM交互视为简报分析师——提供*所有*相关信息,定义任务,并利用可用工具。这种转变利用了成熟的**软件工程设计模式**(如RAG、工具调用和思维链)来实现模块化和可靠性。 未来的系统可能会采用多个专门的“代理”,通过精心设计的token序列——本质上是API契约——进行交互,以解决复杂的任务。最终,上下文工程旨在为LLM的使用带来严谨性和控制力,将它们从不可预测的预言家转变为可靠的任务解决者。

## 黑客新闻讨论摘要:“上下文工程”与LLM“工程” 一场黑客新闻讨论围绕一篇关于大型语言模型(LLM)“上下文工程”的博客文章展开。核心争论在于,鉴于这些模型固有的不可预测性,将软件工程原则应用于LLM交互是否合适。 许多评论者认为,构建有效的提示和上下文更像是一种艺术或手艺,而不是真正的工程,因为缺乏坚实的理论理解和一致的行为。人们担心“工程”一词被误用,用来形容本质上是反复试验的过程。然而,也有人反驳说,围绕LLM构建*系统*——例如RAG(检索增强生成)——*确实*需要传统的软件工程技能(数据层、检索逻辑等)。 讨论还涉及了由于非确定性和持续模型更新,导致LLM难以重现的问题,这使得可靠的评估变得困难。一些人认为该领域仍处于实验阶段,类似于早期的蒸汽机发展,而另一些人则强调需要严格的测量和预测——真正的工程学标志。最终,这场对话突出了与LLM合作的不断发展以及对适当术语和方法论的持续争论。

## Sealos平台:解决关键容器镜像膨胀问题 Sealos团队面临一个关键的生产问题:由于容器镜像意外地变得过大,导致开发节点上的磁盘空间严重耗尽。最初尝试通过增加存储来解决问题,但效果不佳,这揭示了一个更深层次的问题——镜像膨胀,单个镜像已膨胀到272层,达到800GB。 调查发现根本原因是一个持续的暴力破解攻击,将过多的SSH失败尝试记录到`/var/log/btmp`。由于容器运行时的Copy-on-Write (CoW)机制,每次失败尝试都会触发不断增长的11GB日志文件的完整复制到新的镜像层中,每次提交都会导致镜像大小呈指数级增长。这进一步加剧了缺乏镜像层限制和适当日志轮转的问题。 为了解决这个问题,Sealos开发了一个自定义工具`image-manip`,用于精确删除有问题的文件,并将272层压缩成一个优化的镜像。这使镜像大小减少到仅2.05GB——390:1的压缩率。该修复消除了生产警报,显著降低了节点I/O,并降低了估计每月450美元的存储成本。 团队认识到理解容器镜像内部结构的重要性,并实施了预防措施,包括自动监控镜像大小和层数,以及配置安全的基镜像,禁用密码身份验证和日志轮转。

## Sealos 将容器镜像大小从 800GB 减少到 2GB Sealos,一个提供云开发环境的平台,面临一个关键问题:由于暴力攻击导致 11GB 日志记录到 `/var/log/btmp`,并且每次登录失败尝试都将该日志复制到新的镜像层中,导致一位用户的容器镜像膨胀到 800GB,最终形成了 272 层。 核心问题在于使用了 `docker commit` 而不是像 Dockerfile 这样的合适的镜像构建工具。讨论强调了在镜像中包含不必要的服务(SSH、cron)和日志的危险性。 许多评论者强调了使用卷来持久化数据以及构建最小化镜像的重要性。 虽然承认了错误,Sealos 辩护说他们的工作流程旨在提供一个完整的开发到部署生命周期,需要 SSH 访问来实现 IDE 集成。 该事件促使他们实施镜像压缩,一种用于扁平化镜像层数的工具,并监控镜像大小。 这篇文章引发了关于最佳实践、访问客户镜像进行调试的安全隐患以及更好的工程实践(如硬性大小限制)的争论。

要使用 Mastodon 网页应用程序,请启用 JavaScript。或者,尝试为您的平台使用 Mastodon 的原生应用程序。

这个Hacker News讨论围绕Asahi Linux项目的持续争端,正如The Register所报道。用户表达了对开源社区中反复出现的冲突感到沮丧,并质疑为什么这些项目经常演变成复杂且难以理解的争论。 一些人认为这并不能代表*大多数*开源工作,他们觉得相对正常。另一些人则指出了Ruby gems社区最近的问题,强调了对控制和贡献者访问的担忧。 一个共同的主题是,志愿贡献者投入大量空闲时间,可能会因治理变更而感到沮丧,从而觉得自己不被重视。一位用户甚至将这个问题与更广泛的社会动态联系起来,表达了对这些情况的看法感到不适。最终,这次对话反映了开源开发中反复出现的冲突模式。

## 自定义优先级队列中的性能陷阱 本文详细描述了在 Rust 中优化自定义有界优先级队列时,一项令人惊讶的性能回归调查。基准测试显示,使用 `opt-level=3` 编译与 `opt-level=2` 编译相比,性能**下降了 123%**,尽管预期会提高性能。 该队列使用排序的 `Vec` 和二分查找进行插入,这对于由于唯一性约束而阻止有效使用堆至关重要。问题源于二分查找中的比较函数,特别是它如何处理浮点数比较。 使用火焰图和 Compiler Explorer (godbolt) 的分析表明,`opt-level=3` 生成的代码在搜索循环中使用**条件移动而不是条件跳转**。虽然看似是一种优化,但实际上导致了明显*更差*的性能。UI-CA 模拟表明这是由于数据依赖性增加造成的。 对不同的比较实现(包括 `f32::total_cmp`)和细微的代码调整进行进一步实验,结果各不相同,凸显了现代 CPU 行为和编译器优化的复杂性。作者得出结论,基准测试具有挑战性,虽然根本原因仍然有些不清楚,但该经验表明,看似有益的优化可能会意外地降低性能。代码和基准测试可在 [此处](链接到仓库) 获取。

## Hacker News 讨论总结:Rust 中 O3 与 O2 性能 一个 Hacker News 讨论围绕一篇博客文章展开,文章详细描述了一个令人惊讶的性能倒退:Rust 中的 O3 优化级别有时会导致代码比 O2 慢。核心问题似乎在于 LLVM 如何优化分支,特别是关于浮点数比较。 讨论强调,在某些情况下,无分支方法(由 O3 使用)由于增加的比较而可能更慢,而 O2 的分支预测则非常有效。用户建议使用编译器提示 (`__builtin_expect_with_probability`) 或重构代码来引导优化。 除了具体案例外,该线程还引发了关于 Rust 语法(一些人认为过于复杂)、使用优化构建进行性能测试的重要性以及代码清晰度和性能之间的权衡等更广泛的争论。 许多评论者也分享了在 C++ 中遇到意外优化行为的经验,强调了现代编译器优化的挑战。 讨论还涉及代码美学与实际性能之间的平衡,一些人捍卫 Rust 的设计选择,而另一些人则倡导更简单、更易读的代码。

这份笔记集详细记录了对双曲几何的探索。它从三角形和内角等基础概念开始,然后过渡到使用圆盘、双曲面和上半平面对双曲平面进行建模——强调它们之间可互换的关系。 主要研究领域包括洛巴切夫斯基公设、双曲三角学以及这种非欧几里得空间中线的性质(平行线、超平行线、等距线)。笔记涵盖了理想三角形的平铺、平行平移以及圆在接近无穷大时的行为。 进一步的主题包括水平线、伪球面作为双曲曲面的实现,以及勾股定理不成立的度量分解。最后,笔记涉及曲率、高斯-博内定理,以及与欧几里得几何的视觉/分析比较,包括对双曲函数的探索和三维平铺。 多个条目标记为“建设中”,表明正在进行的研究。

Hacker News 新闻 | 过去 | 评论 | 提问 | 展示 | 工作 | 提交 登录 双曲非欧几何世界 (2007) (web1.kcn.jp) 18 分,ubavic 1 天前 | 隐藏 | 过去 | 收藏 | 3 评论 stared 1 天前 | 下一个 [–] 对于所有想体验双曲几何的人,我推荐 HyperRogue (https://roguetemple.com/z/hyper/)。回复 zkmon 1 天前 | 上一个 | 下一个 [–] 我认为图片没有虚轴是不完整的。那个轴也会弯曲吗?回复 wosined 1 天前 | 上一个 [–] 用什么软件绘制的图片?是 Visual Basic 6 吗?看起来很不错。回复 考虑申请 YC 的 2026 年冬季批次!申请截止日期为 11 月 10 日 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

人工智能生成的内容明显充斥着破折号——多到如此程度,以至于人类作者现在会避免使用它们,以免被误认为是人工智能。尽管经过多次尝试,令人惊讶的是,很难提示人工智能模型*不要*使用它们,这导致了一个谜团:为什么过度使用? 最初的理论——破折号在英语中很常见,提供预测的灵活性,或者节省token——并没有令人信服。一个引人注目的解释集中在人工智能训练数据的变化上。早期模型,如GPT-3.5,主要使用互联网数据和盗版电子书。后来的模型,如GPT-4o,受益于*印刷*书籍的大规模数字化。 至关重要的是,作者认为这些数字化书籍偏向于19世纪末和20世纪初的文学作品,这些作品比现代写作更频繁地使用破折号。大量旧文本的涌入很可能“感染”了模型,使其养成了这种标点符号习惯。虽然人类反馈(RLHF)等其他因素可能发挥作用,但训练数据的转变似乎是最有可能的原因。最终,需要从人工智能实验室获得更多见解来证实这一理论。

## AI 与长破折号:摘要 最近的 Hacker News 讨论探讨了为什么 AI 模型经常在其生成的文本中使用长破折号(—)。 领先的理论认为,模型从训练数据中学习了这种风格怪癖,特别是《大西洋月刊》和《纽约客》等高声望的出版物,它们经常使用长破折号。 一些人推测,对精致写作风格的偏好,通过人类反馈强化学习 (RLHF) 加强,也促成了这种趋势。 有趣的是,长破折号的过度使用正在产生反作用——读者现在将它们与 AI 生成的内容联系起来,导致一些作者完全避免使用它们。 还有关于潜在“水印”的讨论——有意包含长破折号等模式来识别 AI 生成的文本。 其他贡献因素包括长破折号在文学中的历史用法、特定作者(如 Paul Graham)的影响,甚至语言差异(俄语使用长破折号来表示对话归属)。 最终,这场讨论强调了 AI 模仿人类写作风格如何反讽地改变了这些风格本身。

更多机场细节。旧的FlightAware地图——在我写作时仍然是他们网站上的主要地图——是栅格地图瓦片(在远距离缩放级别)和矢量地图瓦片(在近距离缩放级别)的组合。新地图完全是矢量地图瓦片,而且他们决定不通过第三方托管数据和服务来实现这一点,而是构建自己的数据集和地图以满足其特定需求。虽然地图包含许多用于跟踪航班、天气等叠加层,但我参与的部分是道路、地名等基础地图,以及更重要的是,机场设施。机场级别的视图进行了许多升级,机场设施(航站楼、登机口、道路等)以及地面上和起飞/降落飞机的叠加信息都更加详细。

## FlightAware 地图设计与映射挑战 - Hacker News 摘要 最近一篇关于 FlightAware 地图设计 (andywoodruff.com) 的文章引发了 Hacker News 的讨论,凸显了现代地图系统的复杂性。用户赞扬了创建看似无缝地图所付出的努力,并指出像 OpenStreetMap (OSM) 这样的协作项目的数据具有“古怪”的特性。 对话延伸到对数据准确性的担忧,揭示了除了地壳运动之外的问题——包括大陆漂移和 GPS 坐标的变化。虽然 OSM 在其网格分辨率上提供了高精度,但实际误差源于未校正的 GPS 数据和图像偏移等因素。 用户还讨论了 FlightAware 的替代方案,如 adsbexchange,并指出了商业航班地图显示中的不一致性(例如 United 的地图)。最后,讨论涉及了映射动态环境的挑战,提到了绘制古代世界的项目以及将 LIDAR 数据集与航拍图像对齐,其中地球表面的运动需要持续的数据“配准”。 此外,还分享了一个航班热图的链接 (adsb.exposed)。

## Fil-C 编译器与 Debian 集成总结 本文详细介绍了使用内存安全的 Fil-C 编译器 (filcc, fil++) 并将其与 Debian 包集成的努力。作者旨在通过使用 Fil-C 编译代码来增强系统安全性,并分享了笔记和脚本供他人使用。 初步测试表明,Fil-C 与现有库和应用程序具有高度兼容性,只需要最少的修改。一个脚本 (`filian-install-compiler`) 自动化了在 Debian 13 上编译和安装 Fil-C、glibc 和 binutils。性能基准测试表明,Fil-C 编译的代码通常比 clang 慢 1-4 倍。 也可以通过 Filnix 进行替代安装。 大量工作集中在用 Fil-C 构建 Debian 包上。这涉及调整构建过程以处理 Fil-C 独特的包含目录结构和库位置,模拟 Debian 的多架构支持(例如 `amd64fil0`)。 辅助脚本 (`fillet`) 修改软件包构建文件以适应这些差异。 几个软件包(tinycdb、ncurses、lua5.4、w3m、tig、mutt、cdb、libcpucycles、libgc、lpeg、luv)已成功构建和测试,但有些需要特定的补丁或解决方法。 挑战包括解决软件包安装期间的版本冲突,以及解决与某些库(如 musl)的不兼容问题。作者正在积极开发脚本和补丁以简化此过程,并旨在利用 Debian 现有的软件包构建基础设施以实现更广泛的采用。

这篇幽默的文章介绍了一种简单的记忆技巧,以应对令人沮丧的忘记储物柜号码的经历。作者饱受储物室混乱的困扰,分享了他们的“一分钟记忆技巧”——将数字转化为令人难忘的图像或一个简短的故事。 与复杂的“记忆宫殿”不同,这种方法鼓励创建个人“数字词典”(例如 2=天鹅,4=帆船,6=烟斗),并将数字与生动甚至荒谬的图像联系起来。作者以记住储物柜 246 为例:“天鹅喜欢在帆船上乘船,同时抽烟斗。” 关键在于一致性和个性化——选择*你*不会忘记的图像。他们甚至通过使用他们的系统回忆起门锁密码来证明其有效性(“砍掉天鹅的头……”)。这是一种快速简便的方法来提高回忆能力,证明我们的大脑很容易记住那些古怪的东西!

## 反向传播的“泄漏抽象” 斯坦福大学的CS231n深度学习课程有意要求学生使用NumPy从头开始实现反向传播,尽管像TensorFlow这样的框架中已经提供了自动微分。这不仅仅是智力练习,而是为了理解一种“泄漏抽象”。反向传播并非神奇的过程——仅仅堆叠层并不能保证成功。 核心问题在于,在反向传播过程中可能会出现不易察觉的微妙问题,除非对其有深入的理解。例如,sigmoid/tanh激活函数导致的梯度消失(由于饱和),ReLU神经元“死亡”(神经元陷入非激活状态),以及RNNs中的梯度爆炸。即使是看似合理的做法,例如在深度Q网络中使用梯度裁剪,如果应用不当也可能引入错误。 理解反向传播能够让开发者预测并调试这些问题,从而选择合适的初始化方法、激活函数和损失函数。忽略其底层机制会让人容易出现意外故障,并阻碍有效的网络构建和调试。虽然框架可以自动化这个过程,但对它*如何*工作有扎实的理解对于真正掌握深度学习至关重要。

## 反向传播:一个有漏洞的抽象 (2016) - Hacker News 讨论总结 这次 Hacker News 的讨论围绕 Andrej Karpathy 2016 年的博客文章,文章认为反向传播是一个“有漏洞的抽象”。核心争论不在于反向传播*本身*是否 flawed,而是理解其内部运作机制至关重要,特别是对于研究人员和构建新型架构的人来说。 许多评论者同意,抽象化细节会导致诸如梯度消失和缺乏直觉等问题,当出现问题时。他们强调手动实现反向传播以真正掌握这些概念的重要性。另一些人认为,开发者可以专注于利用优化的框架和优化器,而无需深入理解底层的微积分。 对话还涉及人工智能不断发展的格局,一些人指出,即使对于那些不直接参与模型训练的人来说,对 ML 基本原理的理解也越来越重要。 几位用户指出 Karpathy 持续的工作和教育资源是对该领域的宝贵贡献。 最后,讨论强调了理解*为什么*事物起作用的重要性,而不是仅仅将其视为“魔法”。

更多

联系我们 contact @ memedata.com