宝玉
2个月前
研究 Vibe Coding 都能写论文了,来自中科院、杜克大学等的这篇《基于大语言模型的Vibe Coding综述》,还是花了点功夫把 Vibe Coding 相关的论文、信息梳理了一遍,有一些值得看的内容。 【一】 首先是对 Vibe Coding 的定义,这篇论文把 Vibe Coding 描述成一个“三方关系” (参考图1): 1. 人类开发者:不再是代码的直接创作者,更像是需求的提出者、方向的把控者和最终质量的仲裁者 。你的主要工作是清晰地表达意图,并判断 AI 做出来的东西“对不对”。 2. 软件项目:不再仅仅是代码库,而是一个包含代码、数据、文档、领域知识等各种信息的“上下文空间” 。AI 需要从这里获取信息来理解任务。 3. 编程智能体 (AI):负责具体的编码、修改、调试工作,它听从人类的指令,并受项目上下文的约束 。 论文也提到了 Vibe Coding 带来的问题:经验丰富的开发者在使用高级AI工具时,完成任务的时间反而增加了19% ! 【二】 为什么经验丰富的开发者 Vibe Coding 时间更长?不完全是模型能力不够,还有其他原因: 1. 系统性的上下文工程 (Context Engineering):你得知道怎么把项目信息(代码库、文档、规范)有效地“喂”给 AI 。AI 不是凭空写代码,它需要知道你的项目是怎么回事 。光会写漂亮的提示词 (Prompt) 是不够的,管理上下文信息才是核心技术 。 2. 反馈循环 (Feedback Loops):不能简单地把活儿全丢给 AI。怎么提要求?怎么给反馈?什么时候该介入?这些协作方式直接影响效率和质量 。 3. 基础设施 (Infrastructure):你需要能安全执行 AI 代码的“沙盒” ,能跟 AI 流畅对话、共享项目信息的交互界面 ,甚至需要能自动化测试、部署 AI 代码的平台 。没有这些基础设施,AI 就是“带镣铐跳舞” 。 【三】 五种 Vibe Coding 开发模式 : 1. 无约束自动化 (UAM):完全放手让 AI 干,你只看最终结果 。速度快,风险高,适合做一次性原型或小工具 。有点像软件工程里的“快速应用开发”(RAD) 。 2. 迭代式对话协作 (ICCM):你和 AI 像结对编程一样 ,AI 写,你审,反复沟通迭代 。质量有保障,但需要你深度参与 。 3. 规划驱动 (PDM):你先做好设计、定好规范(比如写好技术文档、规则文件、实施计划) ,然后指导 AI 按计划执行 。有点像传统的“瀑布模型” ,但 AI 的快速迭代让它更灵活 。 4. 测试驱动 (TDM):你先写好测试用例,定义清楚“怎样算对” ,然后让 AI 去写能通过测试的代码 。用机器验证代替人眼审查 。这是传统“测试驱动开发”(TDD)的应用 。 5. 上下文增强 (CEM):这不是一个独立流程,而是一种“增强插件” 。通过检索增强生成(RAG)、代码库索引等技术,让 AI 能更好地理解项目现有情况,生成更贴合项目风格和规范的代码 。它可以与其他四种模式结合使用 。 【四】 Vibe Coding 的最佳实践——把 Agent 当员工而不是工具 很多一直把 AI 当成一个“超级自动补全”,一个更聪明的 Stack Overflow,我们把它当成一个“工具”,而实际上,它是一个智能体(Agent)。 “工具”和“Agent”的区别是什么? - 工具(比如锤子、编译器):它帮你完成你正在做的事。你100%掌控它。 - Agent(比如一个初级程序员):它能自主完成任务。你需要给它分配任务、给它“记忆”(上下文)、给它权限,并对它进行“管理”和“审查”。 如果试图用“使用工具”的方式,去“管理一个员工”,结果就是会带来两个极端: - 一个极端是盲目接受:AI 写的代码,语法漂亮,看着很对。你“Vibe”一下,直接提交。结果生产环境崩了。你大骂“模型产生了幻觉”,而真正的问题是,你跳过了必要的检查环节: 代码审查、自动化测试。 - 一个极端是过度怀疑:你根本不信它,它写的每一行你都要重写,这同样影响效率。 这特别像那些管理水平不怎么样的 Engineering Manager:要么对员工(AI)完全放任不管,要么事必躬亲地为管理。 最佳实践是在关键节点设置检查站,自动化验证流程,但在过程中放权。就像一个新员工入职,你不会直接让他们在生产环境上更新代码,而是会有配套的流程和环节保障。 【五】 开发者的角色正在发生根本性转变。你不再仅仅是代码的生产者,你的核心工作变成了: 1. 意图阐述与提示工程:把复杂需求翻译成 AI 能理解的清晰指令 。 2. 上下文管理:精心挑选和组织信息(API 文档、代码片段、设计规范),喂给 AI,限制它的“自由发挥”,确保方向正确 。 3. 系统级调试:当 AI 生成的系统出问题时,重点不再是逐行 GDB,而是从系统行为层面去推测、定位问题,然后引导 AI 去修复 。 4. 架构监督:AI 负责实现细节,你得把握整体架构,确保项目的概念完整性和长远健康 。 5. 质量验证与治理:设计测试用例,利用自动化工具验证 AI 的输出,管理 AI 的权限,追踪代码来源 。 简单说,你的价值从“写好代码”变成了“用好 AI 来写好代码”。这不仅仅是技能的增加,更是一种思维模式的彻底转变 。 【六】 Vibe Coding 带来的挑战:安全、可靠性、监管,以及……我们自己 1. 代码可靠性和安全性:AI 可能从训练数据里学到并复现各种 Bug 和安全漏洞 。只看“Vibe”不看代码,无异于“盲驾” 。我们需要新的自动化工具和流程来实时监控、验证 AI 生成的代码 。手动代码审查根本跟不上 AI 的产出速度 。 3. 大规模监管:当 AI 智能体能自主修改、部署代码时,如何有效监督它们?如何防止一个错误像病毒一样扩散?如何追踪责任? 。现有的管理和审计方法都过时了 。我们需要能与 AI 能力同步扩展的监管架构 。 3. 人的因素:开发者需要转变思维模式 ,学习新技能 。团队协作方式需要调整 。更重要的是,如何建立对 AI 恰当的信任度——既不盲从也不过度怀疑 ? 4. 教育脱节:现在的计算机教育体系,有教你怎么“指挥”AI 写代码、怎么设计 AI 的工作流、怎么评估 AI 的风险吗?很少 。人才培养的速度,远远落后于技术发展的速度 。 论文地址:
宝玉
2个月前
宝玉
2个月前
无论是“要让AI成为编程架构师”,“写提示词只要掌握meta prompt,完全可以和LLM交互几轮来确定”,还是“汽车工业时代到来的前夕,你还去卷马车的驾驭技术”,我不太喜欢这类观点,于是每次忍不住要说两句。 就是因为这些观点都是在把复杂的问题简单化,尝试用一个简单的比喻或者以抽象的名字去解读复杂的问题,从而让很多不懂的人因此被误导。 比如写提示词,如果只需要 Meta Prompt,只要和 AI 聊几句,那为什么没有见人分享出好用的 Meta Prompt? 就像配图这幅 Draw a hourse 的漫画图,有人说画马还不简单,只要 5 步,于是我就懒得学了,但是当我真动手去画,还是画不好马。 我更期待的不是每天空谈 Meta Prompt,而是期待真正用 Meta Prompt 产生出了有价值的 Prompt。 我虽然不认同李继刚老师提示词风格,但是他分享的大多数提示词我都还是会试试,学习借鉴一二,也确实让我有收获。 我们可以说 LLM 有“认知”,“认知”很高,但我不觉得一个人用了高认知的 AI,自己认知就也会变高,就像前面我说的 AI 不会让架构师变得更容易,人脑的结构决定了认知的升级和专业技能的掌握,都需要经历长时间的实践和反思。 再比如说“汽车工业时代到来的前夕,你还去卷马车的驾驭技术”,先不说升级到 AI 技术和马车升级到汽车本身就有很多差异,就说这个观点本身: - “前夕”要多久是很难预料的,在汽车发明之后的几十年后才替代,都知道 AI 会越来越强,AGI 有一天会到来,但是 AGI 多久才到来没有人知道,这个“前夕”也许几年,也许几十年 - 旧技能并非“不可迁移”,一个马车司机的技能不是“甩甩马鞭”,还需要懂线路规划;了解客户的喜好;知道控制风险应对复杂路况、极端天气和突发状况,这些技能都能迁移到汽车时代。 程序员也好架构师也好,他们的大部分技能在 AI 时代一样是可以迁移的,并非现在学这些知识就是无用的,所以那些本身就是优秀程序员、架构师的群体,花时间去学习使用 AI 很快也效果很好的。 - 转型是一个过程,而不是瞬间发生的,马车司机不是一夜之间就得去开汽车。X 上似乎人人都在 AI 编程,但现实中绝大部分企业还在运行的老旧的软件系统,这些系统的升级还需要很长的一个过程,即使 AI 加速也不会那么快。 另外,以上所有只针对“观点”,就观点的讨论,也只代表我自己的看法。
宝玉
2个月前
你这就是对我的偏见了,总觉得我只是个搬运自媒体 我好歹日常大量阅读、写代码、写提示词,捎带着搬运了一些还分享了实践经验。 我本身也是 AI 乐观派,希望它越来越强,帮我干越来越多的活,也希望“AI成为编程架构师”。 但是我们不能停留在空想,或者对未来的一种幻想,等着 AGI 的到来。 说回具体的,AI 未来也许能成为编程架构师,但这套路径还很遥远,和 AGI 一样遥远: 1. 长上下文还没解决好,架构能力需要对系统有全局了解,当前你没办法把整个代码库扔进去 也许可以像 DeepSeek 论文那样用缩略图,但那还是理论上 2. 对代码结果的反馈 AI 还不能直接感知,架构能力不是理论,更需要实践,架构效果好不好一定是要去实际运行,在运行中收集反馈并调整。现在 AI 根本没法感知系统的运行效果,让它自己去搭个运行环境也许勉强可以,怎么测试并评估系统的反馈是做不到的 3. 长期记忆仍然没解决,架构师设计过程中,有大量的沟通工作,和 PM 和程序员,这些沟通的内容都要融合到架构中,但怎么把它们记下来并融入架构设计,并在设计后验证这些记忆中的内容,都是挑战。 4. AI 对多个 Agent 的组织能力还有待提升,架构师不仅仅是一个技术工作,不是写个架构设计文档就结束了,还需要去传播架构知识,基于架构去调整组织结构,基于组织结构去整合结果,这方面至少要 AI 进化到组织者这个阶段 你看我们讨论问题,我觉得反对和赞同都很正常,但我们最好具体问题具体讨论,至少我一般不是情绪化的说它行或者不行,或者不会说你没做过架构你不懂,或者未来怎么样怎么样,而是像上面一样一条条列出我的观点。 如果我错了我也很乐意修正自己观点,比如去年我还觉得 Coding Agent 不靠谱,而现在我觉得“真香”。
宝玉
2个月前
刚看到原推曝光的 OpenAI “产品大阅兵”清单。从人形机器人、AI个人设备,到社交、浏览器、购物……全都有 看起来似乎摊子铺得很大,什么都做,但如果你考虑到 ChatGPT 现在的用户量——10亿用户,换成你做 CEO,说不定也会这么做,尤其是当年 Google 和 Facebook 就是这么玩的。 这种打法核心就两步: 1. 先用一个无人能敌的核心产品(谷歌的搜索、FB的社交、OpenAI的ChatGPT)把海量用户(10亿级)圈进来,垄断“分发渠道”。 2. 然后,利用这个无敌的流量池,开始疯狂“内部创业”,在自家地盘上把用户可能需要的B、C、D、E…全都盖一遍。 当年 Google 靠“搜索”引流,然后做出了Gmail、地图、Chrome。Facebook靠“社交”圈人,然后孵化/买来了Ins、WhatsApp。 再看OpenAI的清单,逻辑就清晰了: - 变现(杀入办公应用): “AI编程助手”、“做PPT/表格的Agent”。这是最直接的收入来源。 - 生态(包围你生活): “浏览器”、“社交流”、“购物”、“音乐”。这是要把你从“用完即走”变成“沉浸其中”,实现流量闭环。 - 终局(进入物理世界): “机器人”、“AI个人设备”。 而且别忘了 Sam Altman 以前是做什么的:美国最强创业孵化器 YC 的前 CEO 也许他是在把OpenAI当成一个“超级孵化器”,利用ChatGPT这个史无前例的流量入口,把他认为AI能颠覆的所有领域,都亲自下场再做一遍。 --- 原图翻译: --- 产品大阅兵 OpenAI 的产品野心正在迅速膨胀。这家公司似乎什么都想做,从人形机器人到 AI 编程助手,无所不包。 - 协作工具:让多个 ChatGPT 用户可以聚在一起,共同协作项目并实时聊天。 - 新型 AI:它将传统的大语言模型 (large language models) 与推理 AI (也就是能进行逻辑思考和规划的 AI) 结合了起来。 - ChatGPT “智能体” (ChatGPT "agents"):它能让客户创建和编辑电子表格、演示文稿,并生成复杂的分析报告。 - 与 ChatGPT 结合的网页浏览器。 - A-SWE:一个 AI 编程助手,它能像一个资深软件工程师一样工作,搞定那些人类程序员需要几小时甚至几天才能完成的棘手任务。 - 机器人的软件和硬件——而且很可能是人形机器人。 - 一款 AI 驱动的个人设备:这可能会通过收购 Jony Ive (就是那个设计了 iPhone 的苹果前首席设计师) 和 Sam Altman (OpenAI 的CEO) 共同创办的设备创业公司来实现。 - ChatGPT 里的“朋友圈”:一个内置的社交媒体功能,用户可以在上面分享自己是如何用 ChatGPT 解决问题或创造图像的。 - ChatGPT 里的购物推荐功能:它会提供个性化的产品建议,并允许用户直接通过 ChatGPT 购买这些商品。 - 定制模型 (Custom models):这种模型可以融入客户独有的数据和业务场景,为企业打造专属的内部 AI 工具。 - 音乐生成 AI:它可以帮助用户从零开始创作音乐。
宝玉
2个月前
这篇文章确实是指出了当前 LLM 存在的问题,但解决方案并不见得可行,另外这文章实在太长了点。 如果几句话总结一下,这篇文章主要就是想讲清楚:强化学习(RL)的教父、图灵奖得主 Richard Sutton 到底在担心什么?为什么我们现在的 Agent 这么“笨”?以及,我们该如何跨过这道鸿沟? Sutton 就是“AI 圣经”《苦涩的教训》(The Bitter Lesson) 的作者,他的理念就是: > 在人工智能领域,长远来看,依赖大规模计算的通用方法(如搜索和学习)最终将胜过依赖人类专家知识的复杂方法。 按理说,他应该对 GPT-5、Claude 这样的大模型拍案叫绝才对。 但他没有。相反,他直言不讳:今天所有的 LLM(大语言模型)都是一条死路。 为什么?Sutton 的原话:LLM 只是在模仿人会“说什么”,而不是在理解世界是“如何运转”的。 这个观点引发了很多讨论,AI 大神 Andrej Karpathy 前几天在播客中也对此有回应和深入探讨(参见: )。 > “我以前就说过,人类不使用强化学习。我认为人类的学习方式完全不同。强化学习比普通人想的要糟糕得多。强化学习很烂。只不过,我们以前有的其他算法比它还要烂得多罢了。” 两位大神都在揭露一个真相: 我们今天津津乐道的“推理器”(Reasoner),离一个真正的“智能体”(Agent)还差得远。而这个鸿沟,就叫“持续学习”。 1. 为什么 Sutton 说 LLM 是“死路”? Sutton 的批评主要集中在两点。 批评一:LLM 是“鹦鹉”,不是“物理学家” Sutton 说,LLM 根本不是真正的“世界模型”。 - 真正的世界模型:能预测“如果我做了A,世界会发生B”。比如,我松开手(动作A),杯子会掉地上摔碎(结果B)。这是对因果和物理规律的理解。 - LLM 在做什么:它在预测“如果我问了A,人类会回答B”。比如,我问“杯子掉了会怎样?”,它会回答“会摔碎”。 看到区别了吗?LLM 是在模仿一个“观察者”会如何描述这个世界,而不是作为“参与者”去理解这个世界的规律。它学的是“人会说什么”,而不是“世界会怎样”。 批评二:现在的强化学习“笨得可以” Sutton 的另一个批评是,我们现在主流的 RL 算法(比如 PPO)样本效率低到发指,而且它们只从“奖励”中学习,不从“观察”中学习。 这话说得有点绕,用原文里的一个例子,你一下就懂了: > 假设我们开发一个 AI Agent,帮用户打电话给 Xfinity(一家运营商)客服。 > > 第一次尝试:Agent 打过去,客服说:“我需要您的信用卡后四位来验证身份。” Agent 没有这个信息,任务失败,挂断。 > > 好了,问题来了: > > - 传统 RL Agent (PPO):它只知道这次尝试失败了(Reward = 0)。它不知道为什么失败。客服明明已经告诉它答案了(“需要信用卡后四位”),但这个信息是“观察”(Observation),不是“奖励”(Reward)。所以,这个笨蛋 Agent 只能下次再试,再失败……可能要试几百次,某一次瞎猫碰上死耗子,它碰巧提供了信用卡信息,成功了(Reward = 1),它这才“学会”了。 > > - 人类:第一次被告知需要信用卡信息,立刻就记住了。下次打电话前就会主动要这个信息。 这就是差距。人类能从环境的丰富反馈(观察)中学习,而现在的 RL 算法大多是“无模型”的,它们只关心“我这么做能不能拿分”,而无视了环境给出的所有其他宝贵信息。 2. “无限上下文”的陷阱:为什么 RAG (检索增强生成)不是学习? 很多人可能会反驳:“没关系,我们现在有超长上下文(Long Context)了!我把 Agent 第一次失败的经验(“客服要信用卡后四位”)直接放进下一次任务的提示词里不就行了?” 这就是目前大多数 Agent 的做法,包括 In-Context Learning(上下文学习)或者 RAG。 但这是对“学习”最大的误解。 把历史记录塞进上下文,不叫“学习”,这叫“开卷考试”。 原文中打个比方: > 让你计算 100 个案例中黑猫和白猫的比例。 > > - 真正的学习(压缩):你看完一遍,在脑子里总结出一个结论:“90只黑猫,10只白猫”。下次再问你,你直接给出答案。 > - 长上下文(RAG):你把 100 个案例的原始记录全堆在桌上。每次有人问你,你就重新把这 100 个案例再数一遍,然后得出结论。 这种方式极其低效,因为知识没有被提炼和压缩。你只是在进行一次又一次的重复检索,而不是把经验内化成了“规律”或“知识”。 AK 在前几天播客里面有一个引起很多人共鸣的结论:人类记性差,这不是 Bug,反而是 Feature(特性)。 正因为我们记不住所有原始细节,才被迫去提炼、总结、压缩知识,找出事物背后的规律。而这个“压缩”和“提炼”的过程,才是学习的本质。 3. “新员工”的困境:为什么 Agent 没法“上班”? 这就引出了一个核心问题:为什么现在的 Agent 解数学题比99%的人都强,但你让它去你公司干个具体工作,它却一塌糊涂? 你可以这么想:你找一个再聪明的天才,不培训就让他来你公司上班,他能干好吗? 大概率不能。因为他不知道: - 公司的代码规范 (Coding Style) - 公司的业务逻辑和黑话 - 团队的协作流程 - 哪些是不能碰的隐形红线 这些知识,绝大部分是非公开的、特定的、隐性的,你没法用一个简短的 prompt 教会它。 人类是怎么做的?在工作中持续学习。 这就带出了 Sutton 坚信的“大世界假设”(Big World Hypothesis):世界上的信息是无限的,模型不可能在预训练阶段就学完所有东西。你必须在与具体环境的交互中不断学习新知识。 而很多 LLM 派持有的是“小世界假设”:世界是复杂的,但规律是简洁的。只要模型足够大(比如 GPT-5),就能掌握绝大部分重要知识,不需要再学了。 显然,现实世界更符合“大世界”假设。 4. 怎样才算“真学习”?从“奖励”到“预测” 既然必须持续学习,而传统 RL 又那么笨(只认 Reward),那该怎么办? 原文作者结合实践,提出了一个非常有启发的改进思路,我把它称为“双 LoRA”策略。(LoRA 是一种高效微调技术,你可以理解为给大模型打上一个小小的“能力补丁”) 这个策略的核心是:在学习“怎么做对”(Policy)的同时,也要学习“世界会怎样”(World Model)。 回到那个 Xfinity 客服的例子: 1. LoRA 1 (策略补丁):它还是从 Reward 学习。任务失败,Reward = 0,它学不到东西。 2. LoRA 2 (世界模型补丁):它不关心 Reward,它的唯一任务是预测环境的下一个反馈。当客服说“我需要信用卡后四位”时,这个补丁会因为“预测失败”(它没料到客服会说这个)而产生一个 loss,然后它就会更新自己,学会“哦,原来打电话给 Xfinity,对方会要信用卡信息”。 看,这就是一种时序差分学习(TD-Learning)。Agent 不再是只看重“得分”的偏科生,还成了能“理解”环境反馈的好学生。 效果是天差地别的: - 传统 RL:要试几百次才能学会。 - 双 LoRA:只要 1、2 个 step 就能学会。 这,才开始有点“持续学习”的样子了。 5. 另一个“致命”瓶颈:AI 为什么反应这么慢? 解决了学习效率,还有一个大问题:现在的 Agent 交互起来为什么那么“卡”? 明明模型的输入输出速度(token/s)都比人类快得多,为什么我们总觉得它反应迟钝? 作者认为根源在于一个僵化的“ReAct 循环”:观察 → 思考 → 行动。 现在的 Agent 都是这个死循环: 1. 观察(听):必须等你把话说完,看到句号了,它才开始下一步。 2. 思考:开始处理你的话,进行推理。 3. 行动(说):把思考完的结果一口气说出来。 但人类根本不是这样工作的! 人类是“事件驱动”的,我们的“听、想、说”是交错进行的 (interleaved): - 边听边想:你刚说开头,我就开始思考和预测你后面要说什么了。等你把话说完,我可能已经想好答案了。 - 边想边说:如果我没想好,我会先说点“嗯……”、“让我想想啊……”这样的“填充词”,在说这些话的同时,我的大脑在高速进行下一步思考。 人类充分利用了所有“间隙”在思考,所以交互体验才如此流畅。 未来的 Agent 必须抛弃僵化的 ReAct 循环,转向这种“边听边想边说”的事件驱动架构。这对于语音助手、机器人、甚至 AI 帮你打游戏都至关重要。 对于这点我觉得虽然“ReAct 循环”,但是实现起来是最简单直接的,作者所说的那种思路看起来很好,但真要实施当前技术未必做的到。 当然很多事情还是得要加上时间维度,有时候并不能用现在的眼光来看这些问题。 至少当前 AI Agent 存在的问题是客观存在的: - 一个真正的 Agent,其核心价值不在于它“知道多少”,而在于它“能学多快”。 - Agent 必须要有持续学习的能力,能从丰富的“观察”中学习世界模型 - “ReAct 循环”很慢,Agent 也应该想人一样能具有“边听边想边说”的实时架构
宝玉
2个月前
斯坦福大学的一篇论文《WHERE LLM AGENTS FAIL AND HOW THEY CAN LEARN FROM FAILURES》在尝试找到 AI 智能体为什么总是失败的答案。 他们观察了超过 500 次智能体在三个不同基准测试中的失败案例,其实很多人以前也提出过类似的观点,就是错误会累积: 早期的微小错误并不仅仅是小麻烦,它们会像多米诺骨牌一样层层传递,最终导致整个系统彻底崩溃。 想象一下,你让一个 AI 助手帮你完成一个复杂任务,比如“预订下周二去上海的航班和酒店,并把确认信息发到我日历上”。 这任务听起来不难,但它需要 AI 做好几件事: 1. 规划(Planning):先订机票,再订酒店,最后发日历。 2. 使用工具(Tool-use):调用航旅 App 的 API、调用日历 API。 3. 记忆(Memory):记住订好的航班号,以便预订机场附近的酒店。 4. 反思(Reflection):检查一下,“酒店订好了吗?机票确认了吗?”。 理论上很完美。但现实中,这个 AI 助手可能在第一步“订机票”时,因为网络卡了一下,工具返回了一个错误代码。然后,灾难就开始了。 AI 助手可能没看懂这个错误,它“反思”了一下,错误地得出一个结论:“哦,机票订好了!”。然后它信心满满地去执行第二步“订酒店”。等它执行到最后一步,你打开日历一看,发现航班信息是空的,酒店也没订上,任务彻底失败。 这就是这篇论文的核心要点:“连锁崩溃”(Cascading Failures)。 就像多米诺骨牌,一个小小的、发生在早期的错误,会像病毒一样在后续的每一步中传播开来。AI 越复杂,这种连锁崩溃就越严重。目前的问题是,我们缺乏一个好办法,去系统性地理解 AI 到底是在哪一步“想歪了”。我们只看到最后的失败,却抓不住那个引发一切的“万恶之源”。 要想治病,先得“确诊”:给 AI 失败建个分类表 这篇论文的作者们认为,要解决问题,我们首先得能准确描述问题。 于是,他们做的第一件事,就是创建了一个“AI 智能体失败分类表”,名叫 AgentErrorTaxonomy(智能体错误分类法)。 这个分类表非常关键,它不再笼统地说“AI 失败了”,而是把失败的原因归纳到 AI 的核心模块里: 1. 记忆模块(Memory):AI 记错了或“脑补”了信息。比如,它以为自己已经把商品A加入购物车了,但实际上没有。 2. 反思模块(Reflection):AI 错误地评估了当前进展。比如,任务明明卡住了,它却以为“进展顺利,下一步!”。 3. 规划模块(Planning):AI 制订了不合逻辑或无法执行的计划。比如,它计划“先穿墙过去,再开门”。 4. 行动模块(Action):AI 在执行层面出了错。比如,它调用工具时,把参数名字写错了。 5. 系统模块(System):非 AI 自身原因,比如外部工具崩溃了,或者网络超时了。 有了这个分类表,AI 的失败就不再是一个玄学问题,而变成了一个可以被诊断、被归类的工程问题。 有了“诊断标准”,下一步就是需要“临床病例”——一个“AI 失败案例集”。 作者们接着构建了 AgentErrorBench(智能体错误基准)。他们从 ALFWorld(模拟家居环境)、GAIA(问答)、WebShop(模拟网购)等多个知名 AI 智能体测试平台上,收集了足足几百个 AI 真实失败的“黑历史”轨迹。 然后,他们雇佣了专家,用上面那个“失败分类表”去逐一标注: - “看,这个案例,AI 在第 3 步的‘规划’上出了错,它‘忽视了约束条件’。” - “哦,这个案例更典型,它在第 5 步的‘记忆’上‘过度简化’了信息,导致后面全错。” 这个“AI 失败案例集”是业界第一个这么干的。它就像一本“AI 疑难杂症病例手册”,让 AI 开发者终于有了一套靶子,可以用来训练和测试他们的“AI 医生”。 隆重登场:“AI 调试器” AgentDebug 有了“诊断标准”和“病例手册”,这篇论文的“重头戏”来了:一个能自动给 AI 纠错的框架——AgentDebug。 AgentDebug 的核心思想,不是修复 AI 的每一个小毛病,而是去找到那个引发“连锁崩溃”的“0号病人”——也就是“根源错误”(Root-Cause Failures)。 它的工作流程分为三步: 第 1 步:全面体检(Fine-grained Analysis) AgentDebug 会先拿到 AI 失败的完整“行动日志”。然后,它用“失败分类表”作为尺子,给日志里的每一步、每一个模块(记忆、规划、反思……)都打上标签。 第 2 步:定位根源(Critical Error Detection) 这是最关键的一步。AgentDebug 会从头到尾分析这个体检报告,寻找那个最早的、最关键的错误。 怎么才算“关键”?AgentDebug 的判断标准近乎一种“反事实推演”:如果我在这一步修正了你这个错误,整个任务是不是就能转危为安了? - 如果答案是“是”,那恭喜,你就是那个“根源错误”。 - 如果你只是个被上一步带歪的“受害者”,修复你也没用,那就跳过。 这种方式效率极高,因为它直奔主题,而不是在那些无关紧要的“表面错误”上浪费时间。 第 3 步:精准“喂药”(Iterative Debugging) 一旦找到根源错误,AgentDebug 不会粗暴地让 AI “你重来一次”。 相反,它会给出非常具体、可执行的反馈。比如在一个找东西的任务中,它会说: “停。你在第4步的‘规划’模块犯了‘计划低效’的错误。你的计划是只搜寻柜子,但你忽略了台面/桌子这些同样可能的地方。现在,请你从第4步重新开始,修正你的计划,把台面也搜一下。” AI 助手收到这个反馈,就会“回滚”到第 4 步,带着新建议重新执行,最终成功完成了任务。 作者们的实验证明,AgentDebug 效果拔群。在“定位错误”这个能力上,AgentDebug 找出“根源错误”的准确率,比最强的竞品高出了 24%。 在“修复任务”这个能力上,它给 AI 带来的任务成功率提升更是高达 26%。在一款模型上,它甚至把任务成功率从 21% 直接拉升到了 55%。 这篇论文最后总结的第一句话是: > This work focuses on analyzing and improving the robustness of LLM-based agents. 通往强大 AI 的路径,不仅在于让它“更聪明”,更在于让它“更皮实”(Robust)。 一个能认识到自己犯错、能分析错误根源、并能从中吸取教训的 AI,远比一个只会“一条路走到黑”的天才 AI 要可靠得多。 当然这篇论文中提到的方案能否在 AI Agent 的实践中落地,还有待观察,但这些研究还是能给人一些启发。 论文地址:
宝玉
2个月前
我们的CS教育到底缺了什么? 一篇2015年的老文 “那些不存在但本该存在的CS课程” 最近突然在 Hacker News 上“挖坟”并火爆异常,显然,它精准地戳中了当代开发者的痛点。 这篇文章的作者 James Hague 列出了一系列“脑洞大开”的课程,这些课程却又该死的“实用”。比如: - CSCI 2100: 反-面向对象编程 (Unlearning OOP):教你如何使用那些不在对象层次结构里的变量,以及一种叫“函数”的东西——它像方法,但更有用。 - CSCI 3300: 古典软件研究 (Classical Software Studies):解剖 VisiCalc、Zork 和 MacPaint 等“古董”产品,重点研究它们在硬件限制下催生出的用户界面和创造力。 - CSCI 4020: 用慢语言写快代码 (Writing Fast Code in Slow Languages):让你写的 Python 在性能上能媲美甚至击败 C++。 - PSYC 4410: 程序员精神执念 (Obsessions of the Programmer Mind):研究开发者为何总是对代码格式、命名分类、类型系统等“破事”耿耿于怀。 这篇文章与其说是讽刺,不如说是一面镜子。它引发了一场关于“大学CS教育到底教了些啥”以及“我们真正需要学什么”的大讨论。 文章中最主要的几个争议点: 焦点一:“古典研究” vs “基材依赖”——我们到底该不该学习编程“历史”? 原作者提出的“古典软件研究”课程,点燃了第一个火药桶。 这个想法的支持者,以计算机先驱 Alan Kay 为精神领袖,认为我们今天90%的工作都是在“重新发明70年代就已解决的轮子”。一位用户就提到,他大学时选修了一门“软件考古学” (Software Archaeology),重写70年代的编译器练习。当时觉得毫无用处,但后来发现“那门课教给我的系统设计知识,比任何现代框架都多。” 然而,反对的声音异常尖锐且有力。 一位高赞评论者(PaulDavisThe1st)提出了一个振聋发聩的观点:CS 和艺术史没有可比性。 他认为,艺术和哲学的历史跨越千年,而计算机的有效历史不过“三代人的寿命”。更重要的是,艺术和哲学对“物质基材” (material substrate) 的依赖很小,而“计算则完全依赖于其物理基材的性能”(CPU速度、内存大小、网络带宽等)。 换句话说,1970年在几十KB内存上解决问题的经验,对于我们今天在几十GB内存上解决问题,几乎没有“戏剧性”的教训可言。因为“材料”都变了,好比你无法用青铜器时代的冶炼经验来指导如何造航天飞机。 这个观点几乎要终结讨论了,但“反-反方”的见解更加精彩: 有用户(wanderingjew)立刻反驳:谁说艺术不依赖基材?MCM(世纪中期现代)家具的标志性“弯曲胶合板”,是因为二战期间发明了新的胶水技术;19世纪中期颜料的爆发,是因为“合成染料”被发明了;荷兰大师们(Dutch Masters)的油画成就,也离不开当时荷兰盛产的“亚麻籽油”。 另一位评论者(kragen)则给出了一个更深刻的综合观点: “基材依赖”论在1970年是对的,但在今天“基本是错的”。对于我们现在99%的应用(比如你正在看的这个网页),限制我们的早已不是硬件,而是“程序员的想象力”。 但这恰恰是我们要学习历史的原因! 历史中(比如50年代的“感知机”)有大量因为当时“基材限制”而失败的绝妙点子,它们在今天“基材管够”的时代,可能就是下一个金矿。 焦点二:“反-OOP(面向对象编程)”大论战:是“万恶之源”还是“企业基石”? 一个阵营(zkmon)是坚定的“OOP捍卫者”。他们认为,你们这帮玩着Jupyter和REPL的“开发过家家”的人根本不懂什么叫“生产环境”。 他们的论点是:“企业级Java” (Enterprise Java) 运行着全世界银行和大型组织的“业务骨干”。OOP 完美地“镜像了商业实体和自然的层次结构”,而 Python 在“运维就绪”和“集成”方面“还是个婴儿”。 然而,这番“企业级”辩护简直是火上浇油。 反对者(globular-toast, freetonik)立刻群起而攻之:“用银行来当‘把事情搞定’的正面例子,简直是天大的笑话。” 许多大型企业软件“质量极其糟糕”,它们之所以还在用,不是因为 OOP 有多好,纯粹是“历史包袱”。 一位自称“在银行维护Java垃圾代码”的内部人士(m_rpn)更是现身说法:银行用这些,不是因为“选择”,而是因为“偶然”,以及2000年代“OOP咨询顾问”们横行霸道的“遗毒”。 当争论从“Java好不好用”转向“OOP本身”时,全场最精华的一条评论(来自ninetyninenine)出现了。 这位用户发表了一篇堪称“FP宣言”的雄文。他认为,OOP 和 FP 的区别不是语法,而是“哲学上”的: - OOP 的核心是“将行为绑定到可变的状态上”。一个方法属于一个对象,这个对象承载着不断变化的状态。这导致整个程序变成一张“隐藏依赖的网”,牵一发而动全身。最终,“重构不再是创造,而是损害控制。” - FP 的核心则是“切断这条锁链”。它拒绝将行为绑定到可变状态上。函数只依赖输入和输出,使其变得透明、可预测、可移植。“你的代码库不再像一栋联锁的堡垒,而像一箱乐高积木。” 他总结道:OOP 是“把复杂性隐藏在墙后”,而 FP 是“把复杂性分解成足够小、足够透明的部件,以至于复杂性本身变成了可选的。” 当然,也有中间派(GuB-42)指出,问题不在于OOP,而在于我们根本没“真正学懂”它。如果深究底层,方法就是个隐式传递 self 的函数,继承只是组合的一种特例。正如那句禅宗公案(chuckadams 引用)所言:“对象是穷人的闭包”,“闭包是穷人的对象”。 焦点三:真正的“实战课”——从“拒绝Lab”到“软件考古学” 在嘲讽完原作的课程后,社区开始贡献他们自己“血泪中换来的”课程清单。这些课程完美地反映了开发者在现实中真正的“痛”。 1. 模拟真实世界的“恶意” - CSCI 4810: 拒绝实验室 (The Refusal Lab)(由 kelseyfrog 提出):模拟越来越不道德的产品需求和不切实际的Deadline。唯一的及格方式是拒绝,并用专业标准来捍卫你的拒绝。 - CSCI 4812: 职业实验室 (The Career Lab)(由 LPisGood 补充):作为“拒绝Lab”的对照组,这门课让你观看你的同学如何接受那些不道德的需求、过度承诺,然后抢走你的功劳、先一步升职,而你只能在原地收拾残局。 - 管理层 PUA 模拟课(由 epalm 等人提出):当客户(或你的经理)开始疯狂移动“球门”(即改需求)时,你该如何管理自己的反应和项目规格。一位用户(ekidd)分享了 Dartmouth 大学一门课的真实经历:教授总是在项目截止日期前一周(期末考试前)发邮件,“更新”项目规格,以模拟真实世界的混乱。他称之为“一门极其有效的课程”。 2. “数字侦探”与“屎山求生” - 调试 101 (Debugging):这是社区呼声最高的课程之一。许多人(omosubi)抱怨,大学四年没人教过他们“如何调试”,以至于很多高级工程师的调试能力还停留在“到处插 print”。 - 化学实验课式的“代码盲盒”(由 patrickmay 提出):就像化学课上第一天发给你一小瓶“白色粉末”让你去鉴定,CS 课应该第一天发给你一个“塞满了 Bug 和性能问题的遗留代码库”。当你能让所有单元测试和集成测试通过时,这门课就结束了。 - 软件考古学 (Software Archaeology)(由 NBJack 提出):这门课专门教你“数字侦探工作”——如何在拥有大量遗留代码的公司里,通过追踪 bug/tickets、翻阅半死不活的旧 Wiki、分析版本控制历史,来搞清楚“这坨代码到底在干嘛”。 3. 那些本该是“基础”的课 最后,大量评论者指出,许多现代CS毕业生甚至缺乏最基本的“常识”。 - Unix 101:别光学理论,教教学生怎么用 grep, sed, awk 去查日志。 - CI/CD 101:令人震惊的是,几乎没有大学课程会提到 CI/CD、Jenkins、Docker 或 Kubernetes。学生们在真空中编写代码,对“代码如何被部署和运维”一无所知。 CS(科学)与 SE(工程)的巨大鸿沟 这场从2015年延续至今的讨论,最终汇聚到了一个核心问题上:我们一直在混淆“计算机科学 (Computer Science)”和“软件工程 (Software Engineering)”。 正如一位评论者(abdullahkhalids)尖锐指出的,原作中提到的所有“神仙课程”——反OOP、快代码、命令行UX——全都是“工程” (Engineering)、“历史” (History) 或“设计” (Design),没有一个是“科学” (Science)。 这正是 HN 社区怨念的根源:大学的“CS学位”正在培养“科学家”,而业界急需的是“工程师”。 一位资深从业者(jillesvangurp)总结得很好:指望CS学位能让你成为合格的软件工程师,这本身就是一种“误解”。学术界教授大多没有一线的工程背景。一个CS学位真正能证明的,也许只是“你拥有一个能正常运转的大脑”以及“你知道如何学习”。 这场讨论的最终共识是,无论你在学校学了多少算法理论,你真正的“工程教育”,都从你入职后接手的第一个“遗留代码库”和面对的第一个“疯狂改需求的客户”才真正开始。 讨论地址:
宝玉
2个月前
转译:像外科医生一样写代码 很多人都说,AI 会让我们统统变成“经理”或者“编辑”……但我认为,这种看法不仅不完整,甚至还有点危险! 就我个人而言,我正努力像外科医生一样写代码。 外科医生可不是经理,他们是亲自动手干活的人!但他们的技术和时间被一个支持团队极大地放大了。这个团队会处理好所有准备工作、次要任务和行政杂务。这样一来,外科医生就能心无旁骛地专注于他们最擅长的关键事务。 我现在用 AI 编程工具的目标,就是把 100% 的时间都花在真正重要的事情上。(作为一名 UI 原型设计师 (UI prototyper,也就是设计和制作产品初步模型的人),这主要意味着捣鼓各种设计概念。) 事实证明,现在有很多次要任务,AI 智能体 (AI agents) 已经完全有能力帮忙处理了。最近我发现,把下面这些活儿交给 AI 就挺好: - 在开始一项大任务前,先让它写一份关于代码库相关部分的指南。 - 尝试对一个大改动进行“探路” (Spike out,软件开发术语,指快速做一个简单的原型来探索解决方案的可行性)。我经常不会直接用它的结果,但我会把它当作一个草图,帮我看清方向。 - 修复那些有明确要求的 Typescript 错误或 bug。 - 给我正在构建的功能写文档。 我经常发现,让这些次要任务在后台“异步” (async,指任务在后台运行,不会卡住你当前的工作) 跑着非常有用——比如我吃午饭的时候,甚至干脆让它跑上一整夜! 当我坐下来准备开工时,我希望自己就像一个走进准备就绪的手术室的外科医生。一切都已准备停当,就等我来大显身手了。 值得注意的是,我用 AI 处理“主要任务”和“次要任务”的方式,有着天壤之别。 对于核心的设计原型工作,我仍然会大量手写代码。即便用 AI,我也会非常小心,抠很多细节。我需要快速的反馈循环和良好的可见性。(比如,在这种场景下我就很喜欢 Cursor 的 tab 键自动补全功能) 至于次要任务,我的态度就放松多了,我很乐意让一个 AI 智能体在后台“折腾”好几个小时。最终能把活儿干完才是最重要的;至于速度和可见性,就没那么要紧了。过去我处理这种长时间无人值守的任务时,首选是 Claude Code,但 Codex CLI (一个通过命令行使用 AI 编码的工具) 正在成为一个强有力的竞争者,甚至可能成为我的新宠。 这两种工作模式截然不同!这让我想起了 Andrej Karpathy (AI 领域的大牛,特斯拉前 AI 总监) 提出的 “自主性滑块” 概念。把“自主性光谱”的不同部分混为一谈是危险的 —— 它们各自所需的工具和心态,差别真的非常大。 你的智能体不需要职业规划 “软件外科医生”这个概念其实很早就有了——弗雷德·布鲁克斯 (Fred Brooks) 在他 1975 年的经典著作《人月神话》(The Mythical Man-Month) 中,将其归功于哈兰·米尔斯 (Harlan Mills)。他提到一个“首席程序员”应该由包括“副驾驶”(copilot) 和多名管理员在内的各种员工提供支持。当然,在那个年代,这个想法是让真人来扮演这些支持角色。 好了,这里有一个显而易见的观点:“AI 现在让这种方法在经济上变得可行了”,没错没错……但是,我 也注意到一个更微妙的东西在起作用,这和“地位等级”有关。 很多“次要”任务都是“苦差事” (grunt work,指繁琐、重复、技术含量不高的体力活或脑力活),并不是工作中最有成就感或最具创造性的部分。我个人非常推崇那种“人人分担苦差事”的团队;我讨厌把所有脏活累活都丢给团队里地位较低的成员。没错,初级成员(junior)通常会干更多的杂活,但他们也应该得到很多有趣的任务来帮助自己成长。 有了 AI,这种顾虑就完全消失了!现在我可以毫无心理负担地把纯粹的苦差事派出去。 而且 AI 7x24 小时随时待命,这一点太重要了。我绝不会在晚上 11 点打电话给一个人类实习生,叫他早上 7 点前准备好一份代码研究报告……但现在,我正指挥我的 AI 智能体这么干! Notion 也是为“外科医生”准备的? 最后,我想聊聊这种工作方式和我的东家 Notion 有什么关系。 首先,作为一名员工,我发现能在这样一个对 AI 编程工具持“牛市”态度 (bullish,金融术语,指非常看好、积极乐观) 的地方工作,价值真的无可估量。公司支持我大量使用 AI 编程工具,而且代码库也为此做好了准备,这让我的生产力猛增——尤其是对于我这样一个刚接触大型代码库的新人来说。 其次,从产品角度来说——某种意义上,我想说我们正试图将这种工作方式带给程序员之外更广泛的知识工作者。当我想象这一切将如何展开时,我很喜欢这个心智模型:让每个人都能“像外科医生一样工作”。 我们的目标不是让你把核心工作外包出去,而是识别并委派那些次要的苦差事,这样你就能专注于真正重要的大事。 如果你喜欢这个视角,也许你会想读读我写的其他几篇关于人机协作本质的文章: - AI 副驾驶够多了!我们需要的是 AI 抬头显示器 (HUD):“任何严肃对待 AI 设计的人,都应该考虑‘副驾驶’之外的其他形态,那些能更直接地扩展人类思维的形态……” - AI 生成的工具能让编程更有趣:“我没有(让 AI 写代码),而是用 AI 构建了一个自定义的调试器界面……这让我自己写代码变得更有趣了……” - 把 ChatGPT 当作灵感缪斯,而非万能神谕:“如果我们不把大语言模型 (LLM) 看作回答问题的工具,而是把它看作向我们提问、激发我们创造力的工具,会怎么样?” 来源:
宝玉
2个月前
像 Claude Code、Codex 这样的“AI Coding Agent”,能交付高质量代码,这已经不是新鲜事,但这给软件开发带来的真正改变是什么呢? 硅谷顶尖风投 a16z 最近发了一篇文章:《价值万亿的 AI 软件开发新“战局”(The Trillion Dollar AI Software Development Stack)》,文章的重点不是 AI 会不会写代码,也不是它会不会抢走程序员的饭碗。真正的重点是,AI 正在把“软件开发”这件事,从一个“手艺活”彻底重塑为一个全新的、价值万亿美金的“工业体系”。 为什么是“万亿美金”?我们来算一笔账。 全球大概有 3000 万名软件开发者。假设每人每年创造 10 万美金的经济价值(这在美国算保守了),那整个软件开发业的经济贡献就是 3 万亿美金。 去年的时候,像 Copilot 这样的 AI 助手,就已经能给程序员带来大概 20% 的效率提升。 但这只是开胃菜。a16z 估计,一套“顶配”的 AI 开发系统,至少能让开发效率翻倍。这意味着什么?这意味着每年能凭空多创造出 3 万亿美金的价值。这是个什么概念?这相当于法国全年的 GDP。 这就是为什么资本会如此疯狂,为什么这个领域被称为“战国时代”。 那么,这个价值万亿的“新工业体系”到底长什么样?a16z 给出的这张流程图(图1 )就是答案。 这张图的核心,不再是“人去写代码”,而是 AI 全面参与的“计划 -> 编码 -> 审查”新循环。 第一步:AI 帮你“想清楚”(计划与架构) 过去,我们以为 AI 编程是这样的:你对它说“给我写个登录函数”,它给你一段代码,你复制粘贴。 在新的工作流里,AI 从项目最最开始的“产品经理(PM)”和“架构师”阶段就介入了。 你给 AI 一个模糊的需求(比如“我想做个用户反馈系统”),AI 的第一反应不是写代码,而是反过来向你提问: - “用户反馈需要打分吗?” - “需要上传图片吗?” - “数据要存在哪里?” - “需要和哪些系统打通?API 密钥是什么?” 它会帮你把一个模糊的想法,拆解成一份详细的规格说明书(Spec)。这份说明书既是给人类看的,也是后续 AI 自己写代码的指南。 最有意思的是,我们开始为 AI 编写“AI 专属的说明书”(比如 .cursor/rules、Agents .md、Claude .md)。什么意思?就是你告诉 AI:“我们公司的代码规范是这样的”、“这个模块的安全级别最高,不许调用第三方库”、“日志必须这样打印”…… 我们正在创造第一批纯粹为 AI 而不是为人类设计的知识库。你不再是手把手教一个新员工,你是直接把“公司手册”和“最佳实践”灌输给 AI。 第二步:AI 负责“动手干”(编码与审查) 这才是我们传统理解的“写代码”环节,但它也已经面目全非了。它分化成了好几种模式: - 聊天式编辑:这就像你旁边坐了个结对编程的伙伴,你在 IDE(编程软件)里一边打字聊天,它一边帮你实时修改和创建文件。 - 后台智能体(Agent):Codex Claude、Claude Web 现在已经做的比较成熟了。你给它一个完整的任务(比如“修复这个 bug”或“开发这个新功能”),它就自己去后台吭哧吭哧干活了。它会自己写代码、自己运行测试、自己改 bug,几个小时后,它直接给你提交一个“Pull Request”(代码合并请求),说:“老板,活干完了,请审阅。” - AI 应用构建器:你用大白话描述,或者画个草图,它直接“duang”一下给你生成一个功能完整的应用程序。目前这主要用于做原型设计,但离“直接上线”也不远了。 - AI 代码审查员:AI 不仅自己写代码,它还反过来审查人类写的代码。它会像个资深架构师一样,在 GitHub 上评论:“你这里写得有安全漏洞”、“这个逻辑不严谨”、“不符合公司规范,打回重写”。 这里有个特别有意思的改变:Git(版本控制系统)的意义变了。 以前,我们用 Git 关心的是“代码如何被修改”(比如“张三在第 10 行加了个 if”)。但如果整个文件都是 AI 一键生成的,这个“如何”就没意义了。未来我们关心的是“代码为什么被修改”(AI 是根据哪个提示词生成的?)以及“它能跑吗”(AI 的测试结果如何?)。 第三步:AI 成为“后勤保障”(QA 与文档) 代码写完,测试和文档这两件苦差事,AI 也全包了。 - AI QA(质量保证):AI 扮演一个“自主的 QA 工程师”。它会像真人一样去“爬”你的应用,点一点这个、试一试那个,自动生成测试用例、报告 bug,甚至还附上建议的修复代码。a16z 提到一个极端情况:未来,AI 写的代码可能成为一个“黑盒”,人类根本看不懂,但这没关系,只要 AI QA 说它能通过所有测试,那它就是对的。 - AI 写文档:无论是给用户看的产品说明书、给其他程序员看的 API 文档,还是给老板和法务看的合规性报告,AI 都能自动生成,而且保持实时更新。 第四步:给 AI 的“工具箱”(智能体工具) 这可能是最“硬核”的一层,也是很多人没想到的:我们不止在开发“给人类用的 AI 工具”,我们还在开发“给 AI 用的 AI 工具”。 AI Agent 要是想干活,它也需要“工具”: - 代码搜索引擎(Sourcegraph):一个公司动辄上亿行代码,AI 不可能每次都把所有代码读一遍。它需要一个“代码专用搜索引擎”,在 0.1 秒内找到它需要参考的几个关键函数。 - 文档检索引擎:同理,AI 需要“外挂知识库”来查询第三方 API 怎么用。 - 代码沙箱(E2B):这是最关键的。AI 写完代码总得跑跑试试吧?但你敢让它在你的电脑上“瞎跑”吗?万一它产生幻觉,rm -rf / 把你电脑删光了怎么办?“沙箱”就是给 AI 提供的一个安全的、隔离的“模拟器”,让 AI 可以在里面随便折腾、运行、测试,就算玩“炸”了,也不会影响真实环境。 a16z 在文章最后也回答了几个大家最关心的问题: 1. 3000 万程序员要失业了吗? a16z 的回答是:“当然不。” 他们认为“AI 取代程序员”是个“荒谬的叙事”。历史告诉我们,技术进步最终会把蛋糕做大。目前他们看到的真实数据是:那些最懂 AI 的企业,反而在加速招聘程序员。因为他们突然发现,以前要 100 人年才能做的项目,现在 10 个人就能启动了,那为什么不多开几个项目呢? 2. 那程序员的工作会变吗? 会,而且是巨变。 大学里教的那些传统“软件开发”课程,可以说一夜之间就成了“老古董”。 但有两样东西不会过时:算法和架构。因为 AI 经常会“挖坑把自己埋了”,你需要有扎实的基本功,才能把它从坑里“拽出来”。你的角色,从“砌墙的工人”变成了“指挥挖掘机和吊车的工头”。 3. 代码最终会消失吗? 也不会。 有人(比如 AI 大神 Andrej Karpathy)畅想,未来不需要代码了,LLM 直接执行我们的“意图”就行。 a16z 认为这不现实。为什么?因为代码的效率高到变态。 一个现代 GPU 执行一次 16 位整数加法,需要 10 的-14 次方秒。而一个 LLM 哪怕只生成一个 token(单词),也需要 10 的-3 次方秒。 两者之间是 1000 亿倍的效率差距。 所以,代码作为“意图”的最高效、最精确的“编译结果”,在很长很长时间内,都是不可替代的。 AI 对软件开发的革命,不是“工具革命”,而是“工业革命”。它不是在造一把“更好的锤子”,它是在造一整条“自动化生产线”,而且这条生产线还需要“给生产线用的工具”。 这是一个“技术超级周期”(technology supercycle)的开端。在这样的浪潮中,旧的霸主(比如微软、Meta)会很难受,因为船太大、掉头慢。而新的创业公司有绝佳的机会,因为整个游戏规则都变了。 对于我们每个从业者和爱好者来说,最好的消息是:一个充满无限可能的新大陆刚刚被发现,而我们正站在滩头阵地上。 原文地址: 翻译:
宝玉
2个月前
维基百科:AI 搜索和社交视频正在“偷走”我们的流量 作者:Anthony Ha 在这个充斥着有毒社交媒体和 AI 垃圾 (AI slop,指由人工智能生成的大量低质量、甚至是垃圾的内容) 的互联网上,维基百科(Wikipedia)常常被誉为【“最后一个好网站”】。但现在看来,这家在线百科全书似乎也无法完全幸免于大趋势的影响。根据维基媒体基金会(Wikimedia Foundation)的 Marshall Miller 发表的【一篇最新博文】,维基百科的人类页面浏览量同比下降了 8%。 该基金会一直在努力区分人类访客和机器人(bots) (指自动执行任务的程序) 所带来的流量。Miller 写道,这次“过去几个月”的流量下降,是在维基百科更新了其机器人检测系统后才被发现的。更新后的系统显示,“五月和六月期间的异常高流量中,有很大一部分其实来自那些试图规避检测的机器人。” 那流量为什么会下降呢?Miller 将矛头指向了“生成式 AI 和社交媒体对人们获取信息方式的影响”。他特别提到,“搜索引擎正越来越多地使用生成式 AI (generative AI) 直接向搜索者提供答案,而不是链接到像我们这样的网站”;与此同时,“年轻一代更倾向于在社交视频平台上寻找信息,而不是在开放的互联网上。”(不过,谷歌【否认了】 AI 摘要会减少搜索流量的说法。) Miller 表示,基金会欢迎“人们获取知识的新方式”,并认为这并不会降低维基百科的重要性。因为即使人们不访问网站,源自维基百科的知识仍然在触达他们。维基百科自己甚至也尝试过 AI 摘要功能,不过在【编辑们抱怨之后,这个项目被暂停了】。 但这种转变确实带来了风险,尤其是当人们越来越不清楚他们获取的信息到底来自哪里时。正如 Miller 所说:“访问维基百科的人少了,可能意味着更少的志愿者来扩充和丰富内容,也意味着更少的个人捐赠者来支持这项工作。”(顺便一提,这些志愿者中不乏真正的“牛人”,【据报道,就在上周五,几位志愿者在一场维基百科编辑大会上制服了一名持枪歹徒】。) 因此,他呼吁那些使用了维基百科内容的 AI、搜索和社交公司,“必须想办法为”维基百科网站本身“带来更多的访问者”。 他还表示,维基百科自己也在采取行动——例如,正在开发一个新的框架来标明(attributing) (指明确认内容的来源和作者) 那些源自百科全书的内容。该组织还成立了两个团队,专门负责帮助维基百科触达新读者,并且目前也正在招募志愿者。 新闻来源 TechCrunch :
宝玉
2个月前
AI 大神Andrej Karpathy 对 DeepSeek 那篇 DeepSeek-OCR 的论文评价很高,你可能以为他会说:“哇,这个OCR模型真厉害,识别率又提升了!” 但他没有。 相反,他几乎是挥了挥手说:“它是个不错的OCR模型,但这不重要。” 真正让他兴奋的,是这篇论文引出的一个更具颠覆性的想法:我们是不是从一开始就喂错“语料”给AI了? Karpathy的核心观点是:也许,大型语言模型(LLM)的输入端,根本就不应该是“文本”(Text),而应该永远是“像素”(Pixels)。 这个想法听起来有点绕。我们明明有纯文本,为什么非要先把它“渲染”成一张图片,再喂给AI去看呢? Karpathy给出的理由是这样的: 1. 首先,这是个效率问题。 我们现在用“文本”喂AI,是通过一个叫“Tokenizer”(分词器)的东西,把句子切成一个个“词元”(Token)。比如“Hello, world!”可能被切成 ["Hello", ",", " world", "!"]。 问题是,这种方式可能很“浪费”。 而DeepSeek-OCR这篇论文无意中提供了一个佐证:它证明了,AI可以只用100个“视觉词元”(Vision Tokens),就高精度地“解压缩”出包含1000个“文本词元”的原文内容。 这就像,你给AI的不是一长串啰嗦的文字,而是一小块高密度的“信息压缩饼干”(图片)。AI“吃”下去(处理)的上下文窗口更短,效率自然更高。 2. 信息更“保真”,不再丢失细节 想象一下,你让AI帮你阅读一个网页。 现在的“文本”输入方式,就像是你通过电话把网页内容念给AI听。所有加粗、颜色、字体大小、排版布局……这些视觉信息全都丢失了。 而“像素”输入方式,就像是你直接截了一张图发给AI。 哪个信息更全?不言而喻。 Karpathy认为,像素是一个“信息流更广”的输入方式。它不仅能处理纯文本,还能自然地理解文本的样式(粗体、颜色),甚至页面上任意的图表和图像。 3. 绕开AI 分词器 前面两点只是铺垫,Karpathy真正的“怨念”在于:他想彻底干掉“分词器”(Tokenizer)。 他直言不讳地“炮轰”: > “我必须再说一次我有多讨厌分词器。分词器是丑陋的、分离的、非端到端的。它‘进口’了所有Unicode编码、字节编码的丑陋之处,继承了大量历史包袱,还带来了安全/越狱风险……它必须被淘汰。” 为什么他这么恨分词器? 分词器就像是AI的“嘴替”和“眼替”,它强行介入在“原始文本”和“AI大脑”之间。这个“中间商”不仅笨拙,而且会扭曲信息。 Karpathy举了个绝妙的例子:一个笑脸表情符号“😀”。 - 通过“分词器”,AI看到的不是一张“笑脸”,而是一个奇特的内部代码,比如 [tok482]。AI无法利用它在看图时学到的关于“人脸”和“微笑”的知识(迁移学习)来理解这个符号。 - 但如果输入的是一张包含“😀”的图片,AI的“视觉”部分会立刻认出:哦,这是一张微笑的脸。 哪个更符合直觉?哪个更智能? 像素输入,让AI得以“眼见为实”。 4. 重新定义AI的“输入”与“输出” Karpathy的设想是,未来的AI模型,其“输入端”(用户提问)应该只接收图像(像素),而“输出端”(AI回答)则可以保持为文本。 为什么?因为“看懂一张图”(视觉到文本)的任务,远比“画出一张逼真的图”(文本到视觉)要容易得多,也实用得多。 这种“输入用眼(像素),输出用嘴(文本)”的架构,也天然契合了AI处理信息的两种模式: - 输入(Encoding):像人一样,一口气看完整个页面(图片),全盘理解(即双向注意力)。 - 输出(Decoding):像人一样,一个词一个词地往外说(即自回归)。 所以,DeepSeek-OCR这篇论文的真正价值,不在于它提供了一个多好的OCR工具,而在于它充当了一次“概念验证”(Proof-of-Concept)。 它用实验数据证明了:用“看图”的方式来“读书”,是完全可行的,而且可能效率更高。 这不仅仅是“文本到文本”(Text-to-Text)任务变成了“视觉到文本”(Vision-to-Text)任务,它暗示了一个更根本的转变——AI的主要信息入口,正在从“语言”转向“视觉”。 难怪 Karpathy 最后会说,他现在“手很痒”,很想去搞一个“纯图像输入”的聊天机器人了。这个小小的OCR研究,可能真的撬动了一个大大的未来。
宝玉
2个月前
Meta AI 部门大调整:将裁减 600 个职位 作者:Emma Roth Meta 的 AI 团队要迎来一场“大地震”了。根据 Axios 的一篇报道,Meta 正计划在 AI 部门裁掉大约 600 个职位。 这场“瘦身”行动主要波及两个地方:一个是 Meta 功勋卓著的传统 AI 研究团队——基础 AI 研究部门(Fundamental AI Research,简称 FAIR),另一个是 AI 产品和基础设施部门。 但有趣的是,Meta 一边在裁员,另一边却在为他们新组建的“超级智能”团队——TBD Lab 拼命招人。 Meta 的发言人 Ana Brekalo 向 The Verge 证实了 Axios 报道的准确性。 这波操作让人有点看不懂。回顾今年夏天,Meta 才刚刚开启了一场声势浩大的 AI 招聘。 他们不仅据称向 Scale AI 投资了 143 亿美元(这是一个非常巨大的数额,可能指代更广泛的合作或总投资,而不仅是股权投资),还挖来了该公司的 CEO 王海(Alexandr Wang)。 可谁能想到,才过了短短几个月,招聘就突然“急刹车”,Meta 转而宣布要搞重组,集中火力发展 AI 相关的产品和基础设施。 在这场变革中,Meta 曾经的“明星”——AI 研究团队 FAIR,似乎正逐渐“退居二线”(原文:taken a backseat)。FAIR 的原负责人 Joelle Pineau 已于今年早些时候离职。 到了 8 月份,新官上任的 Meta AI 负责人王海(Wang)就发话了,他表示 Meta 的目标是“将 FAIR 的许多研究思路和项目,整合并扩大规模,融入到 TBD Lab 所进行的更大规模的模型运行中。”(通俗点说,就是让 FAIR 的研究成果别只停留在论文上,要尽快转化到 TBD Lab 的“超级智能”项目里去。) 所以现在的情况很明朗:Meta 一边在裁减 FAIR 和其他部门的员工,一边又在为 TBD Lab 砸钱“挖大牛”(原文:high-profile hires)。 王海在 Axios 拿到的一份内部备忘录里是这么解释的:“团队规模变小了,我们做决策需要的沟通就更少。每个人都将承担更重的担子(原文:more load-bearing),同时也会有更大的发挥空间和影响力。” Axios 还提到,Meta 会给这些受影响的员工一个机会,他们可以申请公司内部的其他空缺职位。 10 月 22 日更新: Meta 官方已确认此消息。 来源:[]()
宝玉
2个月前
转译:软件开发成本:为什么AI并没有让价格降下来? 作者:Vincent Schmalbach 总有人问我,AI工具有没有让软件开发变得更便宜? 简单来说:没有。 但详细的答案,要有趣得多。 我从事软件开发已经二十多年了,而过去这两年与AI的亲密接触,已经从根本上改变了我的工作方式。 AI让我的效率显著提高。以前需要3-4个小时才能完成的任务,现在可能只需要1-2个小时。你可能会想,这不就意味着我每小时能收更多钱了,对吧?毕竟,客户花同样的钱,得到了更多价值。 错了。 你不可能走进一间会议室,对客户说:“嘿,我现在用AI,速度是以前的两三倍,所以你付我双倍的钱,咱们双赢。”事情不是这么运作的。 客户对于“软件开发该花多少钱”这件事,心里是有一杆秤的。这个数字是基于市场行情,而不是基于你个人的生产力。 项目的需求“膨胀”了 真正发生变化的,是在给定预算内,你能交付多少东西。 在AI出现之前,客户会带着预算和一堆想要的功能来找我。我们的对话通常是这样的: “在这个预算里,我们可以实现功能A、B和C。功能D、E和F当然也很好,但老实说,它们超出了范围,除非您愿意增加预算,或者接受更长的交付时间。” 而现在,同样的对话变成了: “在这个预算里,我们可以实现功能A到F,如果我们效率高点,没准还能把G也塞进去。” 客户花的钱并没有变少。项目也没有更便宜。他们只是花同样的钱,得到了多得多的功能。价格并没有下降,反倒是项目的“野心”变大了,填满了AI带来的所有效率提升。 效率的鸿沟 在AI出现之前,我估计一个真正优秀的开发者,效率大概是一个能力较弱的开发者的 5倍。当然,大家水平有高有低,但用的基本工具都一样。 AI的出现,把这个5倍的差距,拉大到了差不多 20倍。 那些懂得如何与AI协作的资深开发者,简直是“起飞”了。我们知道什么时候该相信AI的建议,什么时候该忽略它。我们有能力验证AI生成的代码是否真的实现了预期的功能。我们用AI处理那些无聊、重复的杂活,自己则专注于架构设计和解决复杂问题。 但与此同时,我认为AI让那些能力较弱的开发者变得更弱了。 当能力较弱或缺乏经验的开发者开始使用AI工具时,他们的效率往往反而降低了。他们会接受自己并不完全理解的建议。他们会因为无法验证AI的输出,而在代码里引入了各种隐蔽的Bug(即难以发现的程序错误)。他们创造了“维护噩路的噩梦”,因为那些代码表面上看起来不错,底下却藏着根本性的问题。 研究也证实了这一点。有研究表明,当经验不足的开发者使用AI编程助手时,Bug的数量会显著增加。有些开发者用了AI后,表现甚至还不如不用AI。 AI 正在“卷”死初级开发者 那些初级开发者过去赖以“练手”的日常编码工作,现在AI基本上都能搞定了。而且AI做得比初级开发者更快,Bug也更少。 这给软件工程师的职业发展带来了大问题。如果所有入门级的活儿都被自动化了,你还怎么成长为一名资深开发者? 对这个问题,我没有好的答案,我也不确定现在有谁能给出答案。 但我确实知道的是,那些基础、常规的开发工作,其市场正在崩溃。如果你的核心价值是“我能搭一个标准的 CRUD 应用”(CRUD是指Create, Read, Update, Delete,即增加、读取、更新、删除,是大多数软件系统的核心基础功能),那你现在就是在和AI竞争。而AI每个月都在变得更强。 资深开发者更有价值了 在天平的另一端,经验丰富的开发者们,价值从未如此之高。 当AI包揽了所有常规工作后,剩下的就全是硬骨头了。比如复杂的架构决策、棘手的系统集成问题、需要深入理解系统工作原理的性能优化。 有了AI之后,我现在几乎把所有时间都花在了这些有挑战性的问题上。每一项任务都需要真正的专业知识,因为简单的任务都被自动化了。这种工作在脑力上让人精疲力尽,这是AI出现之前所没有的,但它也确实更吸引人了。 一切都变得更简单,也更难了 AI在软件开发领域带来的奇怪现象是,它同时让一切变得更简单,也让一切变得更难了。 说它简单,是因为日常任务被自动化了。 说它更难,是因为“勉强及格”的门槛被大大提高了。客户的期望更高了,因为现在有更多的功能成为可能。 快速“写”出代码变得更容易了。 但要写出真正正确、可维护、高性能的代码,却变得更难了,因为AI能生成大量“看起来很美”但实际上暗藏问题的代码。 优秀的开发者变得极其高效,这更容易了。 而能力不足的开发者想靠“花时间”和“堆工作量”来掩盖自己的短板,这更难了。