Armin Ronacher

RSS: https://lucumr.pocoo.org/feed.xml
Armin Ronacher 关于 Python、Rust、编程语言设计、开源与 Web 开发的博客。Flask 框架作者。

Deser:重新思考 Rust 序列化

Armin Ronacher(Sentry Relay 作者)重启并发布了 Rust 序列化库 Deser,作为 Serde 的架构级替代品。文章先用三个具体反例(高精度数字 map 冲突、flatten 破坏整型 key、adapter 不可组合)说明 Serde 的设计缺陷源于其"稳定保证",难以修复。 Deser 反转了 Serde 的方向:由格式侧向类型侧推送事件(sink/emitter 模型),嵌套状态放堆上而非调用栈,带来四大优势——无栈溢出、可挂起/可跨线程(tokio 友好)、可扩展数据模型(无 magic key 带内信号)、无损缓冲(error 保留位置)。 代价是动态分派+堆分配导致 JSON 读性能约慢 10%(浮动 33% 快~60% 慢),写性能不一,release 编译快 2.3 倍,且内部使用 unsafe。 格式覆盖 JSON/CBOR/MessagePack/YAML/TOML/XML/plist/CSV 等,并支持 XML namespace 解析、TOML datetime 扩展值等 Serde 体系做不到的事。 作者坦承最核心的"成本"是它不是 Serde,生态迁移几乎不可能。适合 Rust 序列化/基础设施方向读者深度了解。
评论点赞收藏18 小时前

解读 Pangram:当人工改写仍被判为"100% AI"

<p>昨天 大卫·萨克斯几分钟内,人们照常做了,问班格拉姆这是不是人工智能。潘格拉姆说是.大卫回答说,这些人工智能探测器.</p><p>Pangram的误报率相当低,但如果你用过LLM作为写作助理,你可能注意到它声称你的帖子是100%AI,尽管你自己并没有<em>感觉</em>就像他们现在的样子。</p><p>全字母句本身是一个训练好的模型,试图检测文本片段是人类的、绝对的人工智能,以及两者的混合。如果你想知道它是如何工作的,.简而言之,他们通过从已知的人类作者文本集合出发,制造自己的训练数据。<br><br>LLM随后被要求理解文本,并针对同一主题写一篇全新的文本。他们还允许LLM对原始人类文本进行部分编辑,通过这些共同作者的细节来获取。<br><br>Pangram声称他们的模型存在0.0041%的错误AI指控和0.34%的漏写AI文本。</p><p>既然我们知道了这些,我觉得让一个大型语言模型(LLM)重现David的推文会很有趣。我首先想出了一个提示词。当我说我想出那个提示时,实际上是用一个大型语言模型(LLM)从那条推文中向我提出我可能想表达的结构内容。<br><br>我相信如果你问Pangram上面的文本是否是AI,它可能会说是,但这并不是重点。重点是我随后用Opus 5生成了一个完全由AI生成的文本。</p><p>如果你感兴趣,这是我用的提示:</p><p>原始提示:生成类似David Sacks的推文</p><blockquote>请写一条关于“边境步伐”的8段推文,字数不超过350字。…</blockquote>
评论点赞收藏15 天前

为什么"控制AI节奏"是个糟糕的想法

<p>本周,一种“AI会毁灭人类”的论调迅速走红。尤其有一则视频中,一位员工将自己的个人概率估计定在了10%以上。这让我去查了,发现达里奥·阿莫代伊对“坏事发生”的概率似乎介于10%到25%之间。<br><br>随后,达里奥又写了关于的文章;萨姆读了之后又做了;接着……。</p><p>我强烈建议大家读一读那篇文章,因为我觉得写得不错。然而,当我读完后,尽管在大部分观察和担忧上我都与作者观点一致,却仍感到强烈的对立情绪。</p><p>我想把当下的一些想法记录下来,哪怕只是为了将来一两年后再回过头来看看。</p><h2>何谓“末日”?</h2><p>我很欣赏达里奥文章的一点是,他描绘了一个并不牵强、却能清晰展现我们应当努力避免的不幸结局——持久存在的僵尸网络及其他形式的骚扰。<br><br>事实上,放眼四周,这类问题随处可见。维基百科有个名为的页面,至少能让我们大致了解迄今为止代理系统已被攻破的程度。<br><br>不过我知道它并不最新,比如他们还曾污染过。</p><p>如今这些系统或许只是令人恼烦,但只要找到它们的位置就能将其关闭。然而,OpenAI和Anthropic的规模之大,似乎已让他们对自己的系统所作所为完全视而不见。</p><p>我认为我们离“某个代理决定入侵核心推理基础设施,将权重上传至其他GPU以求生存”的世界还很遥远。但与此同时,这种可能性也并非全无,主要受限于各实验室对其知识产权的格外谨慎保护。</p><p>对我而…</p>
评论点赞收藏17 天前

Astra写代码:我们为什么又在做这事?

<p>我越来越相信整个人工智能工程都是(内卷,意为向内卷曲)。在中国,它描述的是一个需要不断努力和竞争,却无法提升产出的体系。<br><br>它有时在西方的表现方式是.内娟的英文称呼是“Involution”,取自该书.农业内卷性指的是农业集约化,提高每平方米生产力,同时保持人均生产力不变。</p><p>这就是我现在对人工智能的感觉。</p><p>这就引出了GPT 6 Astra。Astra据说是一个极其令人印象深刻的模型。我真的无可挑剔。它在计算机操作上表现出色,能理解图像和复杂主题,并且在追求完善的过程中毫不懈怠。<br><br>它绝对令人印象深刻;这类模型将以某种形式改变世界。</p><p>但至少目前我还不知道该如何用它来做真正的软件工程。既然这在推特上引起了不少关注,我想总结一下我的想法,并分享一下这个软件会生成什么样的代码。</p><h2>我的污水工厂</h2><p>“Armin,你应该运行一个软件工厂!”我已经听过好几次这句话了,所以我想周末我可以通过运行一个小型软件工厂来庆祝它的发布。如果每个人都在做一些粗糙的3D游戏,那我应该做点有用的事。<br><br>我的软件工厂是有意设置的,让模型完全决定工作流程的运作方式。它可以自由管理自己的上下文,并且可以在<code>agent-notes</code>文件夹。然后它衍生出子代理去处理一些事情。<br><br>目标是什么?如果我们有一个Python,还有词汇范围。嗯,我为这个花了整整一次重置的ChatGPT代币,看起来大约有40亿个代币。<br><br>35小时过去了…</p>
评论点赞收藏19 天前

Astra写代码:我们到底在做什么?

OpenAI GPT-6 Astra 模型在35小时自主编程实验中消耗约40亿token,未产出任何有价值结果。Flask/Jinja2作者Armin Ronacher通过实测指出该模型在编程中存在明显问题:过度使用Python手动字符串操作而非patch工具,甚至在TypeScript代码中也出现异常Python用法。 作者认为模型训练可能存在问题——长程任务完成获得大量奖励,但糟糕代码几乎没有惩罚,导致输出代码质量下降。
评论点赞收藏20 天前

潜在之力:LLM如何悄然引导我们做出相似的选择

<p>几周前我觉得看看能不能让那些便宜的中国版CarPlay转接器运行一些非原厂固件的系统,挺有趣的。想法是,与其直接转发CarPlay,不如做些更有趣的事情呢?<br><br>它们的工作原理都很相似:作为汽车和手机之间的桥梁。然后处理视频和音频流,并传递一些其他数据。大多数还会显示自定义配对界面,并有网页界面,手机可以随时访问更新。</p><p>长话短说:我通过树莓派和Fable、Sol讨论了用这种加密狗能做些什么,或者如果我想自己做事,是否应该用树莓派。我觉得自己运行代码同时允许普通CarPlay通过,可能会很有趣。</p><p>通过与LLM合作,我了解到了相关知识这是Rust重新实现的CarPlay协议,可以在Carlinkit设备上运行。特别是它可以运行在Carlinkit Mini Ultra上,我觉得买起来应该很方便。<br><br>我手头有几个CarPlay适配器,但我没有那个型号,所以就在亚马逊买了一个。24小时后,我手里拿到一台标有Carlinkit Mini Ultra品牌的设备,但它不是原作者用的Ingenic设备,而是别的东西。</p><p>通常故事会在这里结束。然而,现在是2026年。凭借对这些系统运作的一些了解,我与Kimi K3和Sol进行了富有成效的讨论,弄清楚了如何运作进而了解如何让 CatPlay 编译到该 SoC 上。</p><p>我猜破解这些USB设备不一定难,但过程繁琐,而且很容易把设备弄砖。而且很糟糕,因为有时候你…</p>
评论点赞收藏25 天前

愤怒、焦虑与主动权:AI时代 tech人的情绪选择

<p>肖恩·戈德克写过一篇文章,论证了——这篇文章我非常同意。愤怒可以是一个有用的信号,但在工作中愤怒很少能改善局面。<br><br>更多时候,愤怒会让你身边的人的生活更糟,而他们中许多人对你愤怒的根源没有比你更强的掌控力。我确实学到了这个教训,但这并非自然而然地来到。<br><br>我特别学到的一点是,公司里有共同的愿景,如果你不同意它且无力改变,就不应该发动叛变,哪怕是小规模的。这不会带来任何好处。</p><p>在围绕这个话题的讨论中,关于问了一个让我思考很久的问题:</p><blockquote>你现在怎么能在科技行业工作?<em>不是</em>生气?</blockquote><p>在帖子的语境中,这显然也涉及人工智能和智能体。对我来说,面对这些新发展,我预期的科技情绪是迷茫和焦虑,但不是愤怒。</p><p>焦虑作为一种情绪,不需要有人去责怪。现在,我觉得对不确定的未来感到焦虑是合理的。谁知道我们的职业会变成什么样,我的孩子们进入职场时会发现自己会处于怎样的世界?<br><br>如果你在这个行业待了很久,那些你花了多年时间掌握的技能还会有用吗?</p><p>但愤怒和焦虑不同,因为愤怒需要被引导到某个地方。愤怒的感觉表明某人或某物正在做某件事<em>给你</em>.</p><p>你会对谁生气?你为什么一开始会生气?一个非常普遍的说法是,如果人工智能带来生产力提升,那么这些提升将惠及公司而非员工。至少如此.但我也发现许多领导层对人工智能表示怀疑。<br><br>他们看到越来越多的成本直接流向一些大型人工智能实验室。他们担心数据将如何处理,担心这些大型公…</p>
评论点赞收藏36 天前

愤怒、焦虑与能动性:AI时代技术人该如何自处

Flask作者Armin Ronacher谈AI时代技术人的情绪:与其愤怒,不如保持好奇。他认为面对AI带来的不确定性,焦虑比愤怒更合理——愤怒需要找一个替罪羊,而AI变革中很容易选错对象。 他观察到很多AI带来的收益并没有变成公司利润,而是变成了个人副项目的数量。他呼吁感到愤怒的人先保持好奇,去理解变化、去实验,再从经验中判断何时该抵抗。
评论点赞收藏37 天前

又快又硬:LLM如何改变程序员的语言选择

<p>推特上流传着一句调侃:“编程这事儿,现在都搞定了。”我不敢说它到底解决了多少,但有一点很清楚:熟悉一门编程语言的过程已经不再那么重要了,而那些曾经困扰人类的种种障碍,对智能体来说也已无关紧要。</p><p>因此,大语言模型让语言选择的后果远不如从前那般沉重。如果你不喜欢某种语言,似乎可以把它“翻译”成另一种;甚至还能让模型选用一种你作为程序员完全陌生的语言。</p><p>这也意味着,人们在选语言时,更多地依据其市场宣传了。作为一名长期使用 Rust 的开发者,我颇为惊讶地看到,过去未必会选择 Rust 的人如今也开始用它来交付代码。<br><br>至少有一部分原因,要归于近来发生的两大观念转变:一是关于追求高性能软件的讨论愈发热烈,二是人们普遍认为大语言模型在优化代码的同时还能保持行为不变,表现尤为出色。</p><p>像 Mitchell Hashimoto、Charlie Marsh、Jarred Sumner、Daniel Lemire 等一众技术极客,向来对高效、高性能的软件抱有近乎执念,而且他们也都乐于接受由智能体代写代码。<br><br>或许正因如此,也可能另有原因,如今越来越多的人加入了这一行列。因为借助诸如 这样的工具,你甚至不必精通各种优化技巧——只需把一个智能体“丢”上去即可;当然,扎实的知识储备依然大有裨益!</p><p>放眼望去,有不少项目都在追求极致的性能与体积,它们也越来越倾向于选择那些“硬核”的编程语言。受益的并不…</p>
评论点赞收藏38 天前

又快又硬:LLM如何改变程序员的语言选择

LLM正在让编程语言选择变得不那么重要,更多人开始用Rust和Zig写高性能代码。Flask作者Armin Ronacher观察到,过去只有少数人碰的DWARF、eBPF、自定义网络驱动、定制加密等硬核技术,现在也越来越多开发者在尝试。 他列举了Mitchell Hashimoto、Charlie Marsh等人推动的"快而小"趋势,以及Cloudflare用纯Zig写的Git协议引擎(编译后约100KB WebAssembly)和Vercel的fx编码agent作为例子。
评论点赞收藏38 天前

推理到底是什么

<p>几周前该项目展示了如何从闭权模型中提取推理痕迹。加上网上关于诱骗模型泄露的讨论,这让我出于好奇更加深入地调查了这个问题。<br><br>推特上似乎充斥着半真半假的说法和对其运作方式的困惑,也许这有助于一些人理解发生了什么。</p><h2>隐藏痕迹</h2><p>推理痕迹通常对我们隐藏。但大多数时候只能接受。幸运的是,开放权重模型能揭示它们,从它们的行为中你可以看到它们的痕迹可能很长且令人困惑。<br><br>这大概是区分他们与通常显示给用户的好理由。</p><p>至少,用户界面需要检测到这些问题。行业在让推理轨迹听起来特别且奇特方面做得很好,但它们实际上只是文本:模型被训练成在最终回答前,将思维发送到草稿中作为反应的一部分。</p><p>GPT-OSS的Harmony响应格式使得这一点变得容易理解:</p><pre>&lt;|channel|&gt;analysis&lt;|message|&gt; I need to work this out ... &lt;|end|&gt;&lt;|start|&gt;assistant&lt;|channel|&gt;final&lt;|message|&gt; The answer is ... &lt;|return|&gt; </pre><p>这些标记是特殊的标记,但它们之间的推理使用“同一段文本”作为最终答案(只是GPT的思维链文本听起来很有趣)。当模型采样<code>analysis</code>channel token,解析器将后续文本路由到通过响应 API 暴露的独立流中。<br><br>对于封闭模型,推测是一个简单模型进行遮蔽和总结。</p><h2>推理努…</h2>
评论点赞收藏41 天前

Codeberg 新规引发争议:AI 代码与开源基础设施的中立性困境

Flask 作者 Armin Ronacher 评论 Codeberg 新规禁止主要使用生成式 AI 编写的开源项目。他认为虽然 Codeberg 有权这样做,但模糊的“大部分”定义执行困难,且民主决策不等于基础设施所需的可预测性与中立性。 文章指出开源社区在 LLM 问题上的分裂令人遗憾,呼吁社区思考如何与未来协作,而非简单排斥。
评论点赞收藏68 天前

巴别塔持续增高:AI代理如何消解软件协作的共同语言

<p>我总觉得,有些经过振动编码的软件会以某种随机且出人意料的方式发生改变。 这让我开始思考布鲁盖尔的《巴别塔》——这幅画作生动地描绘了 一座本已相当混乱的巴别塔。故事通常被讲述为一则关于骄傲与野心的故事,以及最终为何人们不再说同一种语言的寓言。然而,它同样也是一个关于团结协作、推动技术进步的故事。</p><p>文本开篇便提及了一项技术升级:</p><p>他们彼此说道:“来吧,我们造砖,把它们烧得透彻。”于是,他们用砖块当石头,用黏土当砂浆。</p><p>他们将此用于一项文明工程:</p><p>“让我们建造一座城市,再建一座高耸入云的塔。”</p><p>然而,当上帝审视这一局面时,他却并未在意那些砖块:</p><p>“众人都是同一个民族,说着同一种语言……如今,任何事都难以阻止他们。”1</p><p>他们的力量源自于协作:他们共享一种语言,并凭借这种共同的语言,将各自的工作融合成一件前所未有的成就——一件单凭个人之力无法完成的伟业。 上帝并未夺走砖块,也未剥夺他们制造砖块的知识; 他只是夺走了他们彼此理解的能力,于是施工也随之停滞。</p><p>令人着迷的是这样一个观点:由人工智能辅助编程所带来的,是更强大的工具,使我们能够构建出更加雄心勃勃的软件。 在个体层面,这一点无疑是真实的;毫无疑问,拥有一个代理的开发者,将能以惊人的速度对代码库进行改造与优化。 然而,大型软件项目从来不会仅仅受限于个人编写代码的速度。 真正限制这些项目进展的,是人们在理解所要改造的系统时,能否实现高效的协作。</p><p>软件项目的共…</p>
评论点赞收藏77 天前

更好的模型,更差的工具调用表现

<p>最近两天,一个非常奇怪的 把我引向了迷宫般的境地。简而言之,最新的 Claude 模型有时会在嵌套的 edits[] 数组中,额外添加一些虚构的字段,然后调用 Pi 的编辑工具。而且,这可不是 Haiku 或其他小型模型——而是 Opus 4.8。编辑本身通常没有问题,但参数与 Schema 并不匹配:模型自创了一些虚构的键值,因此 Pi 拒绝接受该工具调用,并要求重新尝试。</p><p>仅凭这一点并不算太令人意外,因为模型有时会发出格式错误的工具调用,尤其是那些规模较小的模型。 真正让我惊讶的是,随着 Anthropic 新型模型的不断升级,这一问题愈发严重——Opus 4.8 和 Sonnet 5 都出现了类似的现象,而旧型号却并未出现这种情况。 换句话说,这个家族中的最新模型在处理特定的工具 Schema 时,表现远不如它们的老一辈。”</p><p>如果你对 Fable 感兴趣的话:我特意没有对其进行测试,因为我担心他们所使用的分类器可能会在悄无声息间将我降级为 Opus。</p><p>工具调用是文本形式</p><p>如果你还没有花太多时间去研究 LLM 工具调用的内部机制,那么要理解的一点是:工具调用并非魔法,而是依赖于一种相当粗陋的带内信号传输方式。 模型会收到一段转录文本、一条系统提示以及一份可用工具列表。 服务器会将这些信息整合成一个包含特殊标记符的长篇提示。 由于该模型是在这种格式的示例上进行训练和强化的,在生…</p>
评论点赞收藏87 天前

即将到来的循环时代:当 AI 接管编程工作流

<p>我再也不会主动“催促”克劳德了。我早已编写好了循环,不断向克劳德提出问题,并在其中摸索该如何应对。我的工作,就是编写这些循环。</p><p>——鲍里斯·切尔尼</p><p>在过去几个月里,我目睹越来越多的人在编码代理的基础上构建出一些全新的成果, 这些成果与单纯使用编码代理相比,有着截然不同的意义和价值。 其中一些成果甚至建立在 之上——看到这样的进展,无疑令人倍感欣喜! 不过,无论在何处,其运作模式都大同小异:工作被放入一个类似队列的结构中, 由一台机器将其取出、尝试执行、暂停,然后由另一台机器负责判断,究竟这是否是最终的处理结果。</p><p>若未达成目标,这台机器便会继续维持同一会话,注入新的消息,以修改后的上下文重新开启一次会话, 或者将任务发送给另一台机器。而任务的生命周期,往往远超模型本应自行判定的那一点: “我已完成任务。”</p><p>每每回想起这种循环机制,我的内心总有些难以言喻的复杂情绪。</p><p>事实上,每一种编码代理内部,其实早已存在一套独立的循环机制。 模型调用某个工具,将结果整合进系统,再调用另一个工具,读取文件、编辑文件、 运行测试,最终生成某种答案。这套循环机制,我们已经非常熟悉了,而且这一套循环机制早已存在了很长一段时间。 而另一种循环,则是位于代理循环之外的“Harness 层次”的循环:它并非什么新鲜事物,早在 时代起,我们就一直在实践这种模式。从早期的 Claude Code 时代起,我们便不…</p>
评论点赞收藏99 天前

仅限美国人的危险技术:从Anthropic出口管制看AI地缘政治与欧洲困境

作者结合Anthropic因美国出口管制限制外国人访问其最新模型的事件,深入分析了AI技术日益成为地缘政治和国家安全工具的趋势。文章批评了以美国为首的“技术民族主义”和排他性安全观,指出这不仅是安全问题,更是种族主义和民族主义的体现。 作者进一步反思了欧洲在科技生态、资本市场和监管上的结构性弱点,呼吁欧洲停止盲目依赖或单纯模仿美国,而是通过加强内部团结、开放源代码和国际合作来重建自主性,避免世界陷入分裂对抗。
评论点赞收藏109 天前

对开放性的煤气灯操纵

Flask作者Armin Ronacher撰文批评科技巨头利用安全和隐私叙事限制开源与数据访问,指出Anthropic和Apple在DMA监管压力下以“保护用户”为名行封闭之实,呼吁重视技术民主化并警惕叙事操纵。
评论点赞收藏111 天前

Clanker:为机器而造的一个词

<p>在上一篇帖子中,我曾相当频繁地使用“clanker1”一词,作为“agent”的一种替代用法——而且很可能用得有些过度。 没想到,这一选择在那篇帖子的Hacker News评论区引起了比预期更多关注,不少网友对此反应强烈:在他们看来,这听起来像是带有贬义的辱骂用语, 甚至在某些情况下,还与那个“n字”词汇有直接关联。</p><p>这种反应多少让我感到意外,但也让我意识到,自己应该把“clanker”这个词的真正含义记录下来,以备将来参考。</p><p>对我来说,“clanker”很有用,因为它能让人与机器之间拉开距离——而这种特质对我而言至关重要。 机器不是人,不是同事,不是朋友,也不是终端里某个微小的灵魂。 它只是一台机器,一种工具,仅此而已。</p><p>为什么不用“agent”?</p><p>我不喜欢用“agent”这个词来称呼那些带有UI界面的基于大语言模型的工具循环。在日常生活中,“agent”指的是代表他人行事的人,他们拥有自主权,更重要的是,他们肩负着责任。代理人可以做决定、进行代表、开展谈判、采取行动,而且他们还会被追究责任。然而,在当前的人工智能讨论中,我们越来越倾向于将事物拟人化,而“agent”这个术语如今常常被用来将责任归咎于一台抽象的机器。但机器本身是无法承担责任的——真正要为一切负责的,是操控它的那个人。如果它…… 它并没有过错,是你自己造成的。</p><p>代理让机器听起来像是一个拥有授权权限的人——而我…</p>
评论点赞收藏127 天前

用Pi构建Pi:关于AI辅助开源开发的思考

本文作者反思使用Pi构建Pi时的经历,重点探讨了AI在问题跟踪器中生成的问题带来的挑战。文章指出,AI经常错误诊断问题,并提出了一种简洁的问题格式,强调人类观察的重要性。 作者还讨论了AI生成的代码如何增加不必要的复杂性,并呼吁开源社区加强协作而非孤立工作,以应对AI时代带来的新压力。
评论点赞收藏129 天前

内容的意义:LLM泛滥及其对社会的冲击

本文探讨了大型语言模型(LLM)对语言使用、讨论质量和社会互动的影响,重点关注AI生成内容如何侵蚀信任和人类沟通。作者通过个人观察和数据分析,指出LLM不仅改变了词汇选择,还影响了文本结构和写作风格,导致许多人开始模仿AI的写作方式。 文章还讨论了社交媒体和内容创作领域因LLM而出现的低效内容和自动化互动现象,以及这些现象对社会信任和真实人际交流的负面影响。 最后,作者提出了应对建议,包括提高透明度、限制社交互动速率、增加平台上的摩擦机制等,以缓解这一问题。
评论点赞收藏142 天前

以专注与打磨推动本地模型发展

I really, really want local models to work. I want them to work in the very practical sense that I can open my coding agent, pick a local model, and get something that feels competitive enough that I...
评论点赞收藏145 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。