2026年2月

opus-4.6 已上线以下分组,充值 4 折!
MAX 高速分组 1.12/刀
AmazonQ 分组 0.32/刀
注册地址: https://code.giot.edu.kg

评论平台 ID ,每 5 楼抽一个 10 刀



全网最低价格 kiro 分组 1000$KEY ,不限制使用场景
API 节点:
香港 2000M 节点: https://hk.giot.edu.kg
美国 100M 节点: https://us.giot.edu.kg

1000$key
sk-yY0e5WMmidxqnQcxODWFbBxA5nhpHAOIsikhjdvhTLWWJXG9

我写了个 macOS 截图小工具:SnapPath
因为用 Claude Code / Cursor / Aider 这类 AI CLI 时,终端里经常没法粘贴图片——但我每次想发报错/UI 截图,真正需要的是文件路径。([GitHub][1])

SnapPath 做的事很小:
快捷键截图 → 自动保存 → 绝对路径自动进剪贴板 → 终端里直接 ⌘V。([GitHub][1])

Repo: https://github.com/leeroy-code/SnapPath

Claude 本次共发布了两个更新:

  1. 模型层面从原先的 Opus4.5 升级到了 Opus4.6 ,相关指标有显著提升!

  2. Claude Code 的升级,新增了 agent-teams 的功能!

/ 先看模型升级 /

opuspingfeng

上述 Opus4.6 模型最新的评分当中,相比于上一代 Opus4.5 有显著提升的指标分别是:

  1. Agentic terminal coding ( Terminal-Bench 2.0 ):该指标是评估 AI 在终端编程环境中自主解决问题能力的评分,主要考察复杂指令解析、环境交互和工作流自动化三大能力。Opus 4.6 是 65.4%,相比于 Opus4.5 59.8% 有相应提升。

  2. Agentic computer use(OSWorld): 是评估 AI 在真实操作系统中自主完成任务的能力,Opus 4.6 拿了 72.7%,比 Opus 4.5 的 66.3% 有明显提升。

这意味着 Claude 通过图形界面或命令行与电脑交互,解决实际问题的能力明显提高,未来操作系统就是 Claude 的基本操作工具,全面 Agent 化有了非常大的可能。

  1. Agentic search(BrowserComp) :是测试 AI 在浏览器环境中自主搜索、筛选和整合信息的能力,比如根据模糊指令找到准确答案,或者对比多个网页内容,进行复杂信息的整合能力。Opus 4.6 是 84.0%,相比于与 Opus4.5 的 67.8 有较高提升。

  2. Novel problem-solving ( ARC AGI 2 ):是评估 AI 解决全新、未见过的复杂问题的能力,比如逻辑推理、数学证明或抽象概念理解,它测试的是 AI 能否像人类一样,通过已有知识灵活组合,找到创新解法。

简单来说,该指标的提升意味着 AI 未来陪你一起“开脑洞”的能力更强了,创新能力找 AI 也没有任何问题。

该指标从原本的 37.6% 升高到了 68.8% ,提升显著!

Opus4.6 支持 1M Token 的上下文窗口

opus2

除了上述模型指标有较高提示外,原本的 Opus4.5 上下文窗口是支持 200K ,本次直接升级到了 1M ,足足翻了五倍!

上下文窗口对于 AI Coding 是有非常重要的含义,上下文不足容易导致 AI Coding 质量下降,本次直接升级到 1M 上下文窗口,AI Coding 开发者的福音!

Claude Code 升级

本次 Claude Code 升级了 agent-teams 的功能。

以前,我们想让 Claude Code 并行跑多个任务的时候,比较简陋的做法是,每次都打开一个新的 CLI 终端,然后 Claude Code 在不同的终端进行执行。

再或者就是直接采用 sub agent ,但 sub agent 的问题是,这些程序在单一会话内运行,只能向主代理汇报。

而本次更新的 agent teams 功能,则是各个 Agent 队友各自独立工作,各自在自己的上下文窗口中,并直接相互沟通!

是的,并不是各个 Agent 向主代理汇报,而是各个 Agent 在自己的上下文窗口中,独自运行,且各个 Agent 之间可以直接沟通,互相协作!完全并行!

不过,由于该功能还是一个实验功能,所以默认在 Claude Code 中是被禁用的,我们可以直接调整 Claude Code 的 setting.json 配置来开启它:

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

开启该配置后,多个 Claude Code 实例之间进行团队协作,共享任务的能力将大大加强!

Claude 团队针对 Claude Code 并行处理能力也单独录制了一部视频,感兴趣的可以直接在这里查看:

https://www.youtube.com/watch?v=vNeIQS9GsZ8

除此之外,关于 Agent teams 能力的详细说明,也可以查看 Claude 官网的最新更新,文档地址是:

https://code.claude.com/docs/en/agent-teams

今年极大可能是 Agent 的元年,无论是前段时间爆火的 OpenClaw ,还是最近 Claude 和 GPT 的模型更新,都直指模型 Agent 能力的提升,无论是写代码,操作浏览器,还是控制操作系统,模型现在都有了较大升级!

跟上节奏!还没用过 Claude Code 今年一定要体验一下!这是入局的最好时机!

入局早了你会觉得 Claude Code 垃圾,入局晚了你会跟不上 Claude Code 的节奏,现在入局正当时。💪

欢迎日常交流

AI 驱动团队开发是这个时代的新命题,欢迎大家加微信互相交流心得。

👉 想要进群的朋友,扫码时备注 “AI 实验群”,看到消息后会第一时间拉你进群。

群定位:AI 工具提效/实战经验互助

群规则:不水群、不广告、干货优先

欢迎访问该链接获取群信息: https://zhaozhihao.com/archives/KRMxDLo4

好文章值得被更多人看见!既然看到这里了,随手点个赞👍和关注,并转发给更多的朋友吧!感谢。

作者:贾克斯的平行世界、V:x_h886688


原文地址:Claude Opus 4.6 发布:Agent 能力暴涨,上下文窗口翻五倍!

近日,英伟达创始人、总裁兼首席执行官 Jensen Huang 和思科董事长兼首席执行官 Chuck Robbins 和进行了一场独家炉边谈话。两人状态都非常放松,黄仁勋五杯酒下肚,罕见地、毫无保留地展望了智能、基础设施的未来,以及正在重新定义地球上每个行业的全球变革。

 

期间,黄仁勋犀利指出,编程就是打字,打字本身就是一种商品。

 

他透露,英伟达内部已经有近乎“失控”的 AI 项目数量,但他仍在任其发展,目前未过早收敛。公司内部百花齐放是创新的必经阶段,他对新 AI 项目的第一反是“yes”,而不是“先证明给我看”。

 

他认为,AI 的真正机会不是“更聪明的软件”,而是“被增强的劳动力”。历史上第一次,数字劳动力的长期经济价值超过了硬件本身。 企业最有价值的知识产权不是答案,而是问题本身,而这些必须在本地。未来每个员工,都会“自带多个 AI”工作。

 

黄仁勋提醒,你可以不是第一个用 AI 的,但千万不要成为最后一个。最后一个,基本等于被淘汰。而真正该优先用 AI 的,不是边角料,而是企业“最核心、最有影响力的工作”。

下面是两人的对话内容,我们进行了翻译和整理,在不改变原意基础上进行了删减。期间有几次两人的开玩笑,以“小剧场”形式展现,以飨读者。

 

小剧场 1

 

黄仁勋:我感觉像是在替谁上班似的。

 

罗宾斯:刚才端酒过来的时候,Jensen 还提醒我说,你知道这在直播吧?我说算了,随它去吧,都这么晚了。

 

黄仁勋:第一原则就是不要造成伤害。

 

罗宾斯:不要伤害任何人,并且要意识到自己有多么幸运。

 

首先,感谢大家在这里坚持这么久。我们今天一大早就开始了,然后一个接一个的演讲,之后休息了大概两个半小时,大家就又回来见我们了。

 

黄仁勋:所以我凌晨一点就起床了。

 

罗宾斯:他刚结束一趟为期两周的行程,跑了亚洲四五个城市,其中一天在中国台湾,昨晚还在休斯顿。

 

黄仁勋:现在我就在这儿了。

 

黄仁勋:我们要重塑计算

 

罗宾斯这家伙已经两周没回家了,现在的问题是,他到底是能不能睡在自己的床上,还是只能住酒店?所以我们会轻松点,聊得开心,也尽量早点放他走。

 

其实你都不用自我介绍了,但还是要谢谢你今天能来,感谢我们的合作关系,也为你和你的团队感到骄傲。让我们从合作开始聊起吧。你提出了 AI 工厂的概念,我们正在一起推进。在企业领域,进展可能不像我们期望的那么快,但我们先聊聊对你来说,什么是 AI 工厂?

 

黄仁勋:首先记住一点,我们正在进行 60 年来的首次计算重塑。以前是显式编程,我们编写程序,通过 API 传递变量,一切都很明确。现在变成了隐式编程,你告诉计算机你的意图,它自己去思考如何解决问题。

从显式到隐式,从通用计算(基本就是算术)到人工智能,整个计算堆栈都被重塑了。人们谈论计算时往往只关注处理层,也就是我们所在的领域,但计算还包括存储、网络和安全,所有这些都在重塑中。

首先是第一部分,我们需要将 AI 发展到对人们有用的水平。目前,所谓的聊天机器人,你给它一个提示,它就想出要回答什么,这挺有意思的,也让人好奇,但并不实用。有时它帮我完成填字游戏,但也仅限于它已经记住和泛化的内容。

 

回想三年前 ChatGPT 刚出现时,我们觉得“天哪,它能生成这么多词,能模仿莎士比亚”,但本质上仍是对已有内容的记忆与泛化。然而我们知道,真正的智能是解决问题。解决问题一方面是知道自己不知道什么,另一方面是推理,即如何解决从未见过的问题,将它分解成你能够轻松解决的部分。这样,通过组合,你就能解决从未见过的问题。

 

此外,还要能够提出策略来执行任务,我们称之为计划。我们现在听到的 Agentic AI,那些术语,像工具调用、检索、基于事实的增强生成、记忆等,本质上讲的都是这些能力。

 

但重要的是,要从通用计算,即我们用 Fortran、C、C++、Cobalt 编写的显式编程,进化到新的形式,需要重新思考整个企业如何利用它。

 

罗宾斯:Cobalt

 

黄仁勋:那是好东西,Chuck,那是好东西。

 

罗宾斯:那是我准备的保底工作。

 

黄仁勋:是的,那是些仍然有价值的技能。我知道,我知道它们仍然有价值,我收到很多 offer。恐龙永远有价值。

 

罗宾斯:我们刚才确认了,你比我老。

 

黄仁勋:我知道,我是史前的。看起来不像,但确实是。很好,我可能是这个房间里年纪最大的。

 

罗宾斯:那么我们来聊聊,当你在思考这个话题时……

 

黄仁勋:所以,我去到 Chuck 说:听着,我们需要重塑计算,Cisco 必须发挥重要作用。我们有全新的计算堆栈 Vera Rubin,Cisco 会和我们一起推广。但那是计算层,还有网络层。Cisco 将集成我们的 AI 网络技术,但将其放入 Cisco Nexus 的控制层,这样从你的角度来看,你能获得 AI 的所有性能,同时具备 Cisco 的可控性、安全性和可管理性。我们在安全方面也会做同样的事情。每个支柱都需要重塑,这样企业计算才能充分利用它。

但最终我们还是回到那个问题:为什么三年前企业 AI 还没有准备好?为什么你现在不得不尽快参与进来?别掉队。我认为你不必是第一个采用 AI 的公司,但千万别做最后一个。

英伟达“AI 项目数量已经失控了”

 

罗宾斯:如果你现在是一家企业,你的建议是什么?他们应该采取哪些步骤来做好准备?

 

黄仁勋:我经常被问到 ROI 这类问题,但我不建议从那里入手。原因在于,任何技术在早期部署时,很难用电子表格来量化新工具、新技术的投资回报率。我建议做的是,找出公司的本质是什么,我们做的最有影响力的工作是什么,不要胡闹,不要在边缘事务上浪费时间。

 

在我们公司,AI 项目就像千朵花在盛开。公司里 AI 项目的数量已经失控了,但这很好。创新并不总是可控的。如果你想要控制,首先你得去看心理医生。其次,控制只是幻觉。你无法控制公司。如果你希望公司成功,你不能控制它,你可以影响它,但不能控制它。

 

所以我认为第一点,太多公司、太多人想要明确的、具体的、可证明的 ROI。但要在早期证明值得做的事情的价值是困难的。

我会说,让百花齐放。让人们尝试,让人们安全地尝试。我们在公司里尝试各种东西,我们用 Anthropic、用 Codex、用 Gemini,我们什么都用。当我们的团队说我对某个 AI 感兴趣时,我的第一反应是“yes”,然后再问为什么,我不会先问为什么,再说“yes”。

 

原因很简单,我希望我的公司能像我对孩子的期望一样,去探索生活。他们说想尝试什么,我的回答是“可以”,然后他们问“为什么”,我不会让他们向我证明。我不会让他们证明做这件事将来会带来经济成功或某种快乐。但在工作场所我们却经常这样做,你不觉得这很奇怪吗?这对我来说无法理解。

 

所以我们对待 AI 的态度,就像以前对待互联网、云计算一样,让它百花齐放。然后在某个时刻,你需要运用自己的判断来决定何时开始整理花园,因为一千朵花会让花园变得凌乱。

 

在某个时候你必须开始“修剪”,才能找到最合适的花朵,也就是最好的方法或最佳平台,这样你可以把所有的资源集中在一个方向上。但你不想过早地集中资源,万一选错了方向呢?那就先让千朵花一起绽放,然后在某个时候进行整理。

 

说明一下,我还没有开始整理,到处都是花在绽放。但我鼓励每个人去尝试。然而,我清楚地知道对我们公司来说最重要的是什么、我们公司的本质是什么、我们最重要的工作是什么。我确保我有大量的专业知识和能力集中在使用 AI 来革命化这些工作上。对我们来说,就是芯片设计、软件工程、系统工程。

 

你们也注意到了,我们和 Synopsys、Cadence、Siemens 等公司合作,就是为了把我们的技术嵌进去。他们需要什么、想用什么,我都会给,给到极致。因为只有这样,我才能彻底革新我们设计下一代产品所依赖的工具。

 

这告诉了你一些关于我的态度,对我来说最重要的是什么,以及我会如何革新自己的工作。

 

想想 AI 能做什么。AI 降低智能的成本,或者以数量级创造智能的丰富性。换种说法,我们以前需要一年才能完成的事情,现在可能一天就能完成。以前需要一年的,现在可能一小时就能完成。甚至可以实时完成。

原因是我们身处一个丰富性的世界。摩尔定律?天哪,那太慢了,就像蜗牛一样。记住摩尔定律是每 18 个月翻一番、每 5 年翻 10 倍、每 10 年翻 100 倍。而现在呢?每 10 年增长一百万倍。在过去 10 年里,我们将 AI 推进到了如此远的地步,以至于工程师们说:嘿,为什么不在全世界的数据上训练一个 AI 模型呢?

 

他们指的不是从我硬盘里收集数据,而是把全世界的所有数据拉下来训练一个模型。这就是“丰富性”的定义。丰富性就是面对一个如此巨大的问题,你说“我要全部搞定”。“我要治愈所有疾病领域的所有病症,我不会只做研究癌症。”开玩笑吗?那太疯狂了。我们要解决人类的所有苦难,这就是丰富性。

最近,当我思考一个问题时,我通常会这样假设:我的技术、我的工具、我的仪器、我的飞船是无限快的。去纽约要多久?一秒钟就到了。那么如果我一秒钟就能到纽约,我会做哪些不同的事情?如果以前需要一年现在能够实时完成,我会做哪些不同的事情?如果以前很重的东西现在变得像反重力一样轻,我会做哪些不同的事情?当你用这种态度面对一切时,你就是在运用 AI 思维。

 

举个例子,我们正在合作的很多公司,都在做图分析,处理各种依赖关系、关联关系。这些图里有无数节点和边,多到是万亿级的。过去的做法是,只能切一小块一小块地算。现在呢?直接把整个图给我就行了,有多大无所谓。这种思维方式正在被应用到各个领域。如果你还没用这种方式思考,那基本就是做错了。

 

速度重要吗?不重要,你已经达到光速了。重量重要吗?你已经是零重力、零质量了。如果一些以前对你来说极其困难的事情,你现在的态度是“无所谓”,那你就没有应用这个逻辑,你就没有做对。

 

现在,试着把这种思维用在你公司里最难、最关键的问题上,这才是真正能推动事情发生变化的方式。如果你自己还没这么想,那不妨想一想:你的竞争对手是不是已经在这么想了?或者,更可怕的是,一家刚刚要成立的新公司,已经完全是用这种方式在思考。这会改变一切。

 

所以,我的建议是找到你公司里最有影响力的工作,把“无限”套上去,把“零成本”套上去,把“光速”套上去,然后再去问 Chuck,怎么才能真的把这件事做成。

“大多数有价值的东西被称为直觉和智慧”

 

罗宾斯:那我们现在聊聊如何实现。你有那个“五层蛋糕”的比喻,因为大家都在谈论基础设施、模型、应用。我要如何入手?你能聊聊这个吗?

 

黄仁勋:首先,成功人士会做的事情之一,是思考事物的本质。

 

大约 15 年前,一个算法和两个工程师解决了计算机视觉问题。智能包括感知、推理、规划。计算机视觉基本上是智能的第一部分:感知。感知是“我是谁?发生了什么?我的环境是什么?”推理是“我如何比较这与我的目标?”然后提出一个计划来实现它。比如喷气式战斗机的问题,首先是感知、定位,然后是行动。

 

智能就是这三件事。没有感知就无法有第二和第三部分,你无法在不理解环境的情况下理解或决定该做什么。而环境是高度多模态的。有时是 PDF,有时是表格,有时是信息,有时甚至是感官,比如气味、环境,“我们在哪里?在干什么?面对的是谁?”我们常说“读空气”“看场面”,说的就是感知。

大约 13、14 年前,我们在计算机视觉方面取得了巨大飞跃,这是感知问题的第一层。这超级困难,如何解决计算机视觉?AlexNet 是我们看到的第一个突破。这就像我喜欢的那部电影《First Contact》,这是我们与 AI 的第一次接触。

当时我们在想:这意味着什么?为什么两个工程师,靠几块 GPU,就能超越我们三十年来所有人积累的算法?

 

我昨天还和 Ilya Sutskever、Alex Krizhevsky 聊过这个问题:两个年轻人,怎么做到的?我们把问题彻底拆解,十年前我得出的结论是:世界上绝大多数真正困难、真正有价值的问题,其实都可以用这种方式来解决。

 

原因在于,这些问题根本不存在所谓“原则性的算法”。没有 F=ma,没有麦克斯韦方程,没有 没有薛定谔方程,没有欧姆定律,也没有热力学定律,它们并不精确。大多数有价值的东西被称为直觉和智慧。

 

我们所说的直觉、智慧,以及你我每天要面对的那些问题,答案往往只有一句话:要看情况。如果答案是 3,那就太好了;如果是 3.14,那更完美。但现实中最有价值、最困难的问题,几乎全都是“要看具体情况”,因为它们高度依赖上下文。

 

正是在十二三年前,计算机视觉被攻克了,我们意识到借助深度学习,这条路是可以不断扩展的,模型可以越来越大。唯一的问题是:怎么训练?而真正的突破来自自监督学习、无监督学习,让 AI 自己去学。直到今天,我们已经几乎不再受限于人工标注。

 

正是这个突破,彻底打开了闸门,让模型从几百参数、几亿参数,一路扩展到数十亿、数万亿参数。我们能编码的知识、能通过算法学到的技能,出现了爆炸式增长。但方法本身并没有变。

 

于是我们意识到,这也正是我们今天对话的起点:计算本身将被彻底重塑。从显式编程,走向一种全新的计算方式:软件不再是写出来的,而是“学出来的”。

 

那么,如果再退一步,这对计算堆栈意味着什么?对如何开发软件意味着什么?对你公司中的工程组织意味着什么?对规定产品的产品营销团队意味着什么?对编码产品的工程团队意味着什么?对评估产品的 QA 团队意味着什么?这些产品未来会变成什么样?我们如何部署产品?如何保持更新?如果它基于机器学习,如何永远刷新它?如何给软件打补丁?

关于未来计算的问题,我大概问过上千个。最终我和公司得出的结论是:这一切将改变所有事情。于是我们基于这个核心信念,彻底调整了公司的方向。

 

简单来说,Chuck 讲的就是:我们从一个“一切都是预先录制好的”世界走了出来。Chuck 当年写的软件,非常厉害。

 

罗宾斯:那真不错,它运行了很久。

 

黄仁勋:还是用希伯来文写的。(笑)

 

罗宾斯:这是真的。那是另一项技能。

 

黄仁勋:房间里唯一懂希伯来文 Cobalt 的人。

 

总之,那是预先录制的。

 

那我们先想一个问题:现在的软件到底是什么?因为它是有上下文的,而每一个上下文都不一样。每一个使用软件的人不一样,每一次输入的提示也不一样,你给它的前置信息、背景条件都不同。结果就是软件的每一次运行实例,都是不一样的。

 

这也是为什么过去的软件计算量相对固定,那种模式叫“基于检索”。你拿起手机点一下,它只是去把某个软件文件、图片取出来给你看。但未来不一样,未来一切都会是生成式的,就像现在正在发生的这样。

 

小剧场 2

 

黄仁勋:这场对话以前从未发生过。概念以前存在,先验以前存在,但这序列中的每个词以前从未出现过。原因很明显,我们已经喝了四杯酒了。(笑)

 

罗宾斯:Cobalt 和希伯来语从未消失。

 

黄仁勋:谢天谢地这不是在校园里或正在直播。所以,你理解我在说什么吗?Chuck 今天到现在唯一给我吃的东西就是四杯酒。

 

罗宾斯:公平点说,我只给了你一杯,另外三杯是你自己从自助台拿的。

黄仁勋:我当时正盯着那些食物,我心想我太饿了。食物离我大概 40 英尺远。

 

罗宾斯:因为你在拍照。

 

黄仁勋:但离得那么近,真的那么近,有一次我确实向食物靠了过去,但又被推回来了。

 

罗宾斯:你知道发生了什么吗?你的团队提前告诉我们,给他三杯葡萄酒后,他的状态最佳。四杯之后,他不得了。

 

黄仁勋:这并非最佳解决方案。

 

总之,是的,听听我的话。AI 是什么?(大笑)我们需要留下一些智慧。

 

罗宾斯:能再来杯酒吗?

 

黄仁勋:这不仅是 Dave Chappelle 那种水平。

 

AI 的机会不再是创造工具,而是劳动力

小剧场 3

 

罗宾斯:让我们聊聊别的。

 

黄仁勋:聊聊能源。能源、芯片、基础设施,包括硬件和软件,然后是 AI 模型。但 AI 最重要的部分是应用。每个国家、每家公司,下面那些层都只是基础设施,你需要做的是应用技术。

 

看在上帝的份上,应用这项技术吧。使用 AI 的公司不会陷入危险,你不会因为 AI 而失去工作,你会因为那些使用 AI 的人而失去工作。所以赶紧行动,这是最重要的事。尽快给 Chuck 打电话。

 

罗宾斯:你打给我,我打给他。我们时间不多,我不确定。

 

黄仁勋:我们有的是时间。

 

罗宾斯:是吗?多少时间?

 

黄仁勋:看看 Chuck,Chuck 按时钟工作。我都不戴表。你按时钟工作,我不,不达到预期价值之前我不会离开的。[掌声] 哪怕需要整晚,我要折磨你们所有人直到……

 

罗宾斯:Jensen ,这就是为什么像我这样的人需要手表。[笑]

 

黄仁勋:好吧,在你说你学到了东西之前,你将被困在这里。我们会在价值交付之前折磨每个人。

 

罗宾斯:我确认过了还有酒。

 

罗宾斯:你能说说你对物理 AI 的看法吗?

 

黄仁勋:还记得什么是软件吗?软件是一个工具。有一种观点认为,工具行业在衰落,将被 AI 取代。你能看出来,因为很多软件公司的股价压力很大,似乎 AI 要取代它们。这是世界上最不合逻辑的事情,时间会证明这一点。

 

让我们做个终极思想实验。假设我们是终极人工通用机器人。你觉得你能解决任何问题,因为你知道自己是类人生物。如果作为人类或机器人,你会使用螺丝刀还是发明一个新的螺丝刀?毕竟我只用一个。你会使用锤子还是发明新锤子?你会使用链锯还是发明新链锯?

 

不会新搞的。首先,理想情况下他们根本不用。但理解我的意思吗?作为人类或机器人、人工通用机器人,你会使用工具还是重新发明工具?答案显然是使用工具。

 

那同样的逻辑,放到数字世界里。如果作为人工通用智能,你会使用像 ServiceNow、SAP、Cadence、Synopsys 这些现成工具,还是自己重新发明一个计算器?当然你会直接使用计算器。这就是为什么最近 AI 最大的突破之一,是“工具使用”。因为工具本身就是为明确问题而设计的。

这个世界上有很多问题就是 F=ma。拜托,不要再搞一个新版本。F=ma 不是“差不多等于 ma”, 它就是 ma。V=IR,IR 就是 IR,不是“近似 IR”,也不是“统计意义上的 IR”。所以我们真正想要的,是通用人工智能、通用机器人使用工具,这是核心思想。

 

我认为在下一代物理 AI 里,我们会拥有真正理解物理世界、理解因果关系的 AI。比如我把这个推倒,会不会把后面的一排全带倒?

 

你知道什么是多米诺骨牌,小孩子都懂这个概念:推倒一个,就会一个接一个。多米诺骨牌这个概念本身非常深刻,里面包含了因果、接触、重力、质量。一个很小的骨牌,可以推倒一个更大的,最后甚至带倒一整吨重量的东西。孩子理解起来毫不费力,但一个大语言模型完全不懂。所以我们必须教授、创建一种新型的物理 AI。

 

那么,机会是什么?

 

到目前为止,我和 Chuck 所在的行业,其实一直是在创建工具。我们做的是“螺丝刀和锤子”的生意,一辈子都在把工具交到人手里。但这是历史上第一次,我们要创造的不是工具,而是“劳动力”,增强型劳动力。

 

举个例子,什么是自动驾驶汽车?本质上是一个数字司机。那什么是数字司机?数字司机的价值是多少?它的价值远远大于那辆车本身。原因在于,数字司机一生创造的经济价值,第一次超过了硬件本身的价值。

 

也正因为如此,我们第一次真正触及到了一个规模大 100 倍的市场。严格说,这在数学上是成立的:IT 行业大约是万亿美元左右,而世界经济大约是百万亿美元。我们第一次有机会进入这个层级。所以在座的每一个人,都有机会应用这项技术创办一家科技公司。

 

让我给一些例子。我真的相信,就像我观察到的:我喜欢 Disney,我们喜欢和 Disney 合作,但我很确定他们更愿意成为 Netflix;我喜欢 Mercedes,我是坐着 Mercedes 来的,但我很确定他们更愿意成为 Tesla;我喜欢 Walmart,但我很确定他们更愿意成为 Amazon。

 

你们同意吗?到目前为止,我是不是全中?我相信我们有机会帮助把每家公司转型为技术公司。

 

要技术优先。技术是你的超能力,行业和领域只是应用场景。而不是反过来,把行业当成身份,再去寻找技术。为什么?因为技术优先的公司,处理的是电子,不是原子。电子的数量是无限的,而原子受质量限制。这也是为什么当企业从 CD-ROM 这种“原子载体”切换到电子分发后,市值能暴涨上千倍。

 

你们要像我们一样,成为一家“电子公司”,说白了,就是科技公司。机会已经摆在你们面前了。换个角度说,其实就是 AI。

 

我们刚才说过,即使像 Chuck 这样只会用希伯来语编程的人[笑]

 

罗宾斯:这是一种天赋。

 

黄仁勋:他的工具选择是按序从右到左[笑] 否则它会造成混淆。

 

罗宾斯:其实挺聪明的。

 

黄仁勋:聪明人做聪明的事。

 

妙就妙在,如果你了解编程语言,那就知道,对所有公司来说,软件并非我们的强项,但知识、直觉、领域专长是你的优势。

 

现在,你们第一次可以用自己的语言,把想要的东西完整地告诉计算机。还记得我们是怎么从显式编程,走到隐式编程的吗?历史上第一次,你可以“隐式地”给计算机编程,只要告诉它你想要什么,表达你的意图,代码由计算机来写。

 

编程,如你所知,只是打字。而事实证明打字也是一种商品。

 

这就是你们的好机会。你们所有人都能超越以前限制你们的“原子局限”。摆脱没有足够的软件工程师的限制,因为打字是商品化的,而你们都拥有极具价值的东西:领域专长来理解客户、理解问题。

 

终极价值是理解意图。当你刚从大学软件学院毕业时,你可能是一个超级程序员,但你不知道客户想要什么,不知道要解决什么问题。但现在所有人都知道客户想要什么,知道要解决什么问题。编码部分很简单,只需告诉 AI 去做,所以这就是你的超能力。Chuck 和我在这里帮助你实现这一点。

 

那个结束语是我喝了五杯酒后说的。听着,这真是一个奇迹。

 

罗宾斯:介于两者之间的是某人在桌子上工作,这是人工智能的真实写照,也许这是增强版。

 

黄仁勋:我只想说,与你们所有人一起工作很愉快。大家都知道,Cisco 在计算机发明史上有两根极其重要的支柱:网络和安全。没有 Cisco,就没有现代计算。而这两根支柱,在 AI 时代都被重新定义了。计算本身,在很多层面已经逐渐商品化,但 Cisco 深耕的那些能力,依然极其关键、极其有价值。我们双方结合在一起,非常愿意、也非常有能力,帮助大家真正走进 AI 的世界。

之前有人问过我一个问题,我觉得值得再说一遍: 到底是只租云,还是要自己动手建算力?

我的建议和我给自己孩子的建议完全一样:一定要自己建一套。哪怕 PC 已经无处不在,哪怕技术已经非常成熟,也请你亲手做一次。你必须知道每一个组件为什么存在。就像你如果身处汽车或交通行业,不能只会用 Uber,你得掀开引擎盖,换一次机油,真正理解一辆车是怎么运转的。

理解技术是至关重要的。这项技术对未来太重要了,你必须对它有“上手级”的理解。掀开盖子,动手做点东西,不一定要很大,但一定要做。你可能会发现自己在这方面天赋惊人,也可能会发现,这正是你公司未来必须具备的能力。

 

你也会意识到,世界并不是“全租”或者“全自建”这么简单。有些东西你要租,有些东西你必须自己掌控。 比如涉及主权、安全、专有信息的部分,就应该放在本地。有些问题,你就是不愿意让所有人都看到。

 

打个比方,当你去看心理医生时,你肯定不希望那些问题被放到网上。公司也是一样。你们有很多问题、很多讨论、很多不确定性,这些对话,本就应该是私密的。我自己就不放心把 Nvidia 所有的内部对话都放到云上,所以我们在本地构建了超级 AI 系统。因为我逐渐意识到,对我来说最有价值的知识产权,并不是答案,而是问题本身。

 

能理解我的意思吗?我的问题就是我最有价值的知识产权,答案是商品化商品。我知道问什么,我在识别什么是重要的。 而我不希望别人知道,我认为哪些事情是重要的。这些思考,只属于一个小房间,只属于本地,我希望创建我自己的 AI。

 

已经 11 点了,最后一个想法想要补充。(笑)

 

有一种观点认为 AI 应该始终有人类参与其中。这恰恰是错误的想法,应该反过来,每家公司都应该让 AI 参与其中。

 

原因很简单,我们希望公司每天都变得更好、更有价值、更有知识积累。我们不想倒退,不想停滞,更不想每次从零开始。如果我们让 AI 参与其中,它就能不断吸收公司的经验。

未来每个员工都会有参与其中的 AI,很多 AI,而这些 AI 将成为公司的知识产权。这就是未来的公司。因此,我认为你们所有人现在就给 Chuck 打电话是明智的。

 

罗宾斯:我给 Jensen 打了。

 

黄仁勋:无论如何,这就是我的结束语。

 

罗宾斯:听着,两周的旅行,Jensen 今天特地飞到这里,和我们共度一个夜晚,之后才能好好回家睡一觉。我们由衷感谢你能来,真的非常感谢。

黄仁勋:还有,在我眼角余光中,看到那里还有那些烤串。

 

参考链接:

https://www.youtube.com/watchv=6fbyiPRhMSs

编者按: 在 AI 大模型浪潮中,GPU 选型究竟隐藏着哪些工程师必须掌握的核心门道?

我们今天为大家带来的文章,作者的核心观点是:GPU 并非一个黑箱式的整体产品,而是一个由微架构、内存子系统与互联方式共同构成的复杂技术系统 —— 只有理解其内在结构,AI 工程师才能做出真正高效、可扩展的硬件选择。

文章首先从“计算能力”这一核心概念切入,解释了其如何决定硬件特性与软件兼容性;随后,作者通过解读技术规格速查表,深入剖析了显存(VRAM)、带宽及 MIG 多实例技术对 AI 模型训练与推理的关键影响;最后,文章重点对比了 PCIe 与 SXM 封装形式及 NVLink 互连方案的优劣,并基于计算能力、内存和互联性能三大维度,为 AI 工程师提供了在不同部署环境下(云端或本地)选择 GPU 的实用决策框架。

作者 | Alex Razvant

编译 | 岳扬

大多数 AI 工程师都将 NVIDIA GPU 作为其 AI 工作负载的计算平台。不过,很多人只知道 GPU 叫什么名字,却不知道要让一个 AI 系统真正跑起来(部署上线),到底需要搞懂哪些关键的门道。

从大家用来训练 LoRA 适配器的 RTX 3/4/590,到驱动(并仍在驱动)大语言模型集群的 H100,再到专为大规模生成式 AI 训练与推理而进入数据中心的全新 Blackwell B100+ 芯片 —— GPU 的选择和配置参数可谓五花八门。但仅仅知道 GPU 的名字,并不能告诉你最关键的一点:

GPU 并不是单一、不可分割的整体产品。

它是由多个相互关联的技术模块或子系统组成的复杂系统:

  • 一种微架构(例如 Pascal、Ampere、Hopper、Blackwell),它定义了芯片的底层特性,包括支持哪些精度格式、具备哪些张量运算能力等;
  • 一套内存子系统,它决定了模型权重和激活值的传输速度;
  • 一种封装形式与互连方式(PCIe、SXM、NVLink),决定了多块 GPU 能否在充分发挥各自性能的同时协同扩展。

本指南将从 AI 工程师的视角出发,拆解 NVIDIA GPU 产品线的内在逻辑:

某种架构具体带来了哪些实际的 AI 计算能力?内存子系统与互联方案如何限制或赋能 AI 工作负载?消费级 GPU 与数据中心级 GPU 除了价格和营销之外,究竟有何本质区别?

01 我的第一块 GPU

我的第一块 GPU 是 NVIDIA 7300GT,配备有 256MB 显存和 128 位显存总线。如今,就连一台微波炉的算力都比它强。2008 年,我(外)祖母给我买了人生第一台台式电脑,这块显卡就装在那台机器里。

记得当时我试图在电脑上运行《侠盗猎车手4》(Grand Theft Auto 4),结果游戏根本启动不了 —— 我猜,可能连渲染 Rockstar Games 的 Logo 第一帧对这块小家伙来说都太吃力了。我还记得,我曾试图努力说服父母给我买一块 NVIDIA 9500GT,因为有个朋友用的就是这款,他的电脑能在 1280x1024 分辨率下以高画质流畅运行那款游戏。但这完全超出了当时家里的经济承受能力。

你能想象,后来我一有机会就泡在他家里玩游戏。最终,经过各种折腾,我终于在自己的电脑上以 340x280 分辨率、全部最低画质勉强能玩一会儿了。

我还记得自己进入 Windows/ProgramFiles 目录,修改游戏的 .ini 配置文件,尝试调整 DirectX 9.0 设置,关掉能找到的每一项图形特效 —— 全靠当时能找到的每一篇教程指导。而那时我用的是拨号上网,网速只有 40kb/s,加载一页文字或一段视频常常要等好几分钟。

游戏画面大概像下图这样,但像素更模糊,帧数最高只有 12-13 FPS,显卡风扇在 70-80 摄氏度高温下疯狂运转。

不过嘛,好歹能玩了 :)

图 1. 《GTA 4》在NVIDIA GT7300上的运行效果(10FPS/最低画质/英特尔酷睿i5/8GB内存)。来源:YouTube 视频截图

有意思的是,正是从那时起,我开始接触到 NVIDIA SLI、不同的 GPU 系列、显存、内存这些概念。虽然当时我并不真正理解这些是什么,也并不想深究 —— 我唯一的念头,就是让这款全校同学都在聊的游戏在我的电脑上跑起来,好让我也能加入那个“圈子”。

回到现在,我们甚至可以直接在手机上流畅运行画质远胜当年的游戏,轻松达到 30+ FPS,还不怎么耗电。

我想通过这段经历传达的是:GPUs、图形处理技术、超级计算机、AI 计算,乃至整个科技领域,已经走了非常非常远。如今的计算设备不仅更快、更强、更节能,而且比以往任何时候都更便宜。

02 深度学习始于两块 GTX 550

在最近一期的 Joe Rogan 播客节目中[1],黄仁勋提到了一段如今容易被遗忘的深度学习历史。2012 年,Alex Krizhevsky 和 Ilya Sutskever 训练了 AlexNet,这个图像分类模型一举击败了当时所有主流的计算机视觉算法。

图 2. 近期 Joe Rogan 播客节目的截图,嘉宾为 NVIDIA 首席执行官黄仁勋。

他们就用了 2 张 NVIDIA GTX 580 游戏显卡(每张配备 3 GB显存)就实现了快速卷积运算,这便是他们当时的全部配置。

他们开源的 cuda-convnet[2] 非常优秀,以至于在随后数年间成为行业标准,推动了深度学习爆发初期的头几年发展。2012 年的这次成功也暗示了一点:AI 的进步将极度依赖 GPU 硬件。

但是,硬件只占一半。如果你今天在编写或部署现代 AI 模型,几乎可以肯定你用的是 NVIDIA 硬件。这不仅仅关乎 FLOPs(浮点运算次数)或 GPU 显存有多大,同样重要的是软件栈 —— 那些底层库、框架和 SDK,让 AI 工程师能够训练、优化并部署自己的模型。

作为一名 AI 工程师,如果你了解 NVIDIA 如何构建其 GPU 体系,你的工作会轻松得多。

本文将以硬件优先的视角,为你提供该体系的实用指南:

  • 软件视角:计算能力(compute capability)与 CUDA 特性
  • 架构视角:Ampere → Hopper → Blackwell
  • 硬件视角:PCIe 与 SXM、NVLink 的对比,以及它们何时重要

03 理解计算能力(Compute Capability)

每一块 NVIDIA GPU 都拥有一个“计算能力”(Compute Capability,简称 CC)版本号,例如 7.0、8.9、9.0 等。这个数字定义了该 GPU 支持哪些指令、CUDA 核心、Tensor Core、内存操作以及其他功能。简单来说,CC 版本号决定了每种 GPU 架构所具备的硬件特性。

如果我们查看下表,就能看到从早期的 Tesla GPU 到专为 AI 设计的最新 Blackwell 芯片,每个 GPU 芯片家族对应的 CC 版本号。

我 2008 年使用的 GT7300,便属于 Tesla 架构家族。有趣的是,一款基于 Tesla 家族 GPU(7800GTX)的修改版本 —— 名为 RSX(Reality Synthesizer)的芯片,曾被用于 PlayStation 3 主机。该芯片由索尼与英伟达合作开发。

图 3. 计算能力与GPU架构的对应关系图,展示了各 CUDA SDK 版本所涵盖的计算能力版本号范围。图片来源:维基百科,附有补充标注。

如果你拥有一块 NVIDIA GPU,可以在终端中运行以下命令查看它的 CC:

nvidia-smi --query-gpu=name,compute_cap --format=csv

图 4. 执行上述命令后,我的 RTX4080 GPU 的计算能力 (CC) 及其他 nvidia-smi 详细信息。

有几个关键特性与计算能力紧密相关:

  • Tensor Core 与精度格式

    • Ampere(A100、RTX 30XX):支持 TF32 和 FP16 Tensor Core
    • Hopper(H100):通过 Transformer Engine 新增 FP8 支持
    • Blackwell(B100/B200):进一步推进至 FP4/NVFP4,用于推理优化

图 5. Tensor Core 的组成结构对应的计算能力(Compute Capability, CC)。对于每一个 CC 版本号,Tensor Core 的配置都不同,并且经过了更进一步的优化。该图来自维基百科。

  • 内存:更新的 CC 支持更先进的高带宽内存(如 HBM2E、HBM3、HBM3e)、更大的显存容量,以及更快的 NVLink 互连技术。
  • CUDA 与库支持:新的 CUDA 特性在某个时间点后将不再向后兼容旧的计算能力版本。

分析 GPU 时的一个经验法则是:CC 版本号越高,对现代 AI 特性(FP8/FP4、更好的稀疏性、更大的内存、新的互连技术)获得的“原生”支持就越好。 下图概述了 GPU 的架构家族与具体型号,涵盖了从消费级 GPU 到数据中心 GPU 的范围,并展示了它们各自对应的计算能力(Compute Capability)分数。

图 6:以更宏观的视角展示了 GPU 架构与计算能力(CC)之间的关联,并包含了具体的 GPU 型号。该图源自维基百科,并添加了额外的标注说明。

总结本节内容:计算能力(Compute Capability)告诉你一块 GPU 实际支持哪些硬件特性,以及你的 CUDA kernel 能否以全速运行。显存(VRAM)、计算性能(FLOPs)和互连技术固然重要,但前提是这些功能必须被该 GPU 的计算能力所支持,才能真正发挥作用。

在了解了计算能力(Compute Capability, CC)之后,我们可以通过查阅“技术规格速查表”(Technical Cheatsheet)进一步理解 GPU 性能,我们可以从中提取诸如接口类型、浮点运算性能(FLOPs)、显存带宽(Memory Bandwidth)等具体细节。

04 解读技术规格速查表

在理解了计算能力之后,GPU 技术规格速查表(Technical Cheatsheet)是 AI 工程师用来掌握硬件与软件优化细节的另一关键参考工具。在一份技术规格速查表中,工程师可以查找到关于 CPU 性能、功耗、不同精度格式下的理论算力以及 GPU 封装形式等核心指标。

其中,最后一项(封装形式)对于计算集群的构建尤为重要,因为集群中需要连接多块 GPU 并共享资源池。通过速查表,你可以快速回答以下问题:

  • 这款 GPU 是否支持所需的精度模式?
  • 其显存容量与带宽是否充足?
  • GPU 之间的互联带宽是否足以支撑模型并行?
  • 它能否顺利部署到现有的硬件基础设施中?

在下图中,我们以 Hopper H200 GPU 的技术速查表为例,重点查看其 FLOPs 相关参数,并解释 SXM 与 PCIe 等不同封装形式之间的区别。

图 7. 带注释示例的 NVIDIA H200 GPU 技术速查表,以及展示 PCIe 与 SXM 外观形态差异的图片。

根据这份速查表,AI 工程师通常会首先关注显存容量、带宽以及特定精度类型的 FLOPS,这些指标直接决定 AI 模型训练与推理的速度。

以这款 GPU 为例,单块 H200 GPU 拥有 141GB 显存,带宽高达 4.8 TB/秒。对于视觉类工作负载(例如实时视觉 AI 推理),该 GPU 配备了 NVDEC 视频解码引擎,能够将视频数据解码并直接转换为张量就绪的数据结构(tensor-ready structures),无需经过 CPU 处理。

4.1 MIG - 多实例 GPU(Multi Instance GPU)

另一个重要细节是 MIG(Multi Instance GPU),它允许工程师将单块物理 GPU 切分为多个虚拟 GPU 实例,每个实例都运行在相互隔离的环境中。

例如,一块 H200 可被划分为 4 个 MIG 实例,每个实例拥有 36GB 显存。这意味着 4 位不同的 AI 工程师可以各自在独立环境中运行自己的工作负载。

比如在“多智能体系统”(multi-agent system)场景中,多个大语言模型(LLM)各自驻留在独立的显存(VRAM)和 GPU 资源边界内,同时并行处理不同的任务。

在模型训练的实验阶段,MIG 同样非常实用 —— 你可以用它并行运行同一实验的不同配置或优化策略。例如,一个 MIG 实例使用 FP8 量化、以 batch size 32 进行推理,另一个则使用 FP4 量化、batch size 64。

4.2 封装形式(Form Factor) —— SXM 还是 PCIe?

现在让我们聚焦于封装形式,因为它也直接影响 GPU 性能。在这份速查表中,列出了两种形态:PCIe 和 SXM。PCIe(Peripheral Component Interconnect Express)是一种通用接口标准,常见于消费级 GPU。

在附图中,可以看到一张游戏 PC 主板,其配备 PCIe 5.1 插槽,可用于安装如 RTX 4080/4090/5090 等显卡。而 SXM 是一种直接嵌入主板的特殊芯片封装形式,专用于数据中心集群。

例如,一台 H200 DGX 服务器包含 8 块 H200 GPU —— 它们并非通过 PCIe 连接,而是通过 SXM 直接连接,并通过 NVLink 互连。

图 8. H200 SXM 封装形式 GPU(左)和 PCIe 封装形式 GPU(右)的特写。下图是芯片在控制板上的外观。

采用 SXM 封装形式,GPU 能获得更高的供电能力,从而维持更高的持续时钟频率,并通过 NVLink 交换芯片实现 GPU 与 GPU 之间的直连通信。这对训练或部署大模型至关重要 —— 因为 AI 工程师可充分利用张量并行(Tensor Parallel)或流水线并行(Pipeline Parallel)等技术,同时保持极低的 GPU 间通信延迟。

例如,H100 的 SXM 封装版本可以组成 NVLink/NVSwitch 互联拓扑结构,在这种结构中,16 块 GPU 能够共享高达数百 GB/s 的双向通信带宽。这类多 GPU 集群通常用于训练和推理大型稠密 LLM 或 MoE(Mixture-of-Experts)模型 —— 因为 MoE 网络中的 token 路由和激活值交换,极度依赖高速的 GPU-GPU 通信。

图 9:由 NVIDIA NCCL 库所支持或优化的、包含 16 块 GPU 的互联拓扑结构。来源:NVIDIA[3]

4.3 什么是 NVLink?

要理解 NVLink 和 NVSwitch,我们可以先回顾一下早期的 SLI 接口。2012 年用于训练 AlexNet 的两块 GTX 580,就是通过 SLI 桥接器(SLI Bridge)连接,以实现更快的计算和两块卡之间的数据共享。SLI 诞生于游戏时代,当时 NVIDIA 主要面向消费市场销售用于图形渲染的 GPU。

图 10:使用 SLI 桥接器连接的 NVIDIA GeForce GPU。来源:维基百科。

NVLink 是 SLI 的继任者,专为 AI 工作负载设计。

对于桌面端(PCIe 显卡) :NVLink 通过一种外置物理桥接器(NVLink Bridge)连接。这是一种紧凑的 PCB 结构件,插入两张相邻 GPU 顶部的专用 NVLink 接口,类似于老式的 SLI 桥。

对于服务器端(SXM 模块) :在高密度服务器环境(如 NVIDIA DGX 系统)中,NVLink 连接直接集成在多 GPU 载板上。SXM 形态的 GPU 模块插入该载板后,NVLink 连接就成为服务器内部结构的一部分。

例如,下图展示了两块 A100 PCIe 显卡通过 NVLink 桥接器连接的情形。

图 11:两块采用 PCIe 封装形式的 NVIDIA A100 GPU,使用 NVLink 桥接器连接。

05 AI 工程师如何选择GPU

典型的 AI 工程工作流高度依赖专用硬件来加速模型训练与推理。尽管大部分工作负载运行在云计算平台上,但许多团队(尤其是处理高度敏感数据或有特殊需求的团队)仍会使用本地计算集群。无论部署环境如何,关于使用哪种 GPU 的决策都应该基于充分的研究、规划。

AI 工程师常见的部署环境包括:

  • 云计算平台:诸如 AWS、Azure、GCP 或原生的 NVIDIA DGX Cloud 等服务提供可扩展、按需付费的顶级硬件访问权限(例如 NVIDIA H100)。LambdaCloud 或 RunPod 等特色供应商也提供了颇具吸引力的替代方案。
  • 本地实验室:在私人数据中心或专用实验室工作的工程师对硬件拥有完全的控制权,通常使用 NVIDIA DGX 或 HGX 系统。

本地部署是目前大多数顶尖 AI 实验室(如 OpenAI、Anthropic、X 和 Meta)的主流选择 —— 他们都采购了 DGX 集群或大量 NVIDIA GPU 来自建数据中心。

这是因为在多数 AI 研究中,如果需要进行 100 次实验,其中 70 次可能失败。若使用按需付费的云资源,面临冷启动问题并在大型云集群上调配资源,成本将十分高昂。

在对比具体 GPU 型号时(无论是在云端还是本地),工程师通常会依据三大技术层面进行评估:

1)计算能力(硬件与软件层面)

对于 NVIDIA 而言,计算能力指标决定了 GPU 支持的底层特性,包括支持的精度格式、Tensor Core 或 CUDA Cores 的配置。

2)可用内存(VRAM 与带宽)

VRAM 指的是可用内存大小,而带宽则决定了数据存取的速率。 尽管大语言模型正趋向小型化(如 12B、30B 参数的模型已表现非常优异),但在预训练的 BF16 精度下将此类模型加载到内存中仍需大量 VRAM。

带宽是另一个关键的性能维度。训练或微调 LLM 涉及大量读写操作,这些操作不仅占用 VRAM,还会利用 GPU 的所有内存层级。GPU 除了显存(VRAM)之外,还拥有 SRAM 和寄存器(Registers)。这些高速存储单元用于临时缓存 kernel 计算产生的数据 —— 要么供另一个 kernel 接着使用,要么将数据写回 VRAM,以便 CPU 能够访问。

最新一代 GPU 大多采用 HBM,这种高带宽内存比消费级 GPU 常用的 GDDR-X 内存更适配 AI 工作负载。

3)互联能力(通信性能)

这一指标决定了 GPU 间相互通信的速度,对于分布式训练非常重要 —— 因为大多数模型并非在单卡上训练或微调,而是通常涉及多 GPU 集群。

注:例如 Mistral 8x7B MoE 模型就是基于 240 块 H100 GPU 从头开始训练的,这种配置在大多数 LLM 预训练中相当典型。

此处的关键区别在于连接接口的选择:是 PCIe 标准,还是 SXM+NVLink 组合。后者是大规模分布式 LLM 训练的首选方案。

遵循软件能力、内存和互联性能这三大技术层面来评估 GPU 选项,能够有效筛选出符合需求的 GPU 型号,并让我们能根据工作负载的具体要求对系统进行针对性调优。

06 结语

AI 世界日新月异,但底层的核心问题从未改变:

  • 我的 GPU 能否运行所需的 kernels?→ 看计算能力与架构
  • 我的模型和 batch size 能否装下?→ 看显存、内存类型与带宽
  • 我的 GPU 之间的通信速度是否够快?→ 看 PCIe 与 SXM

归根结底,AI 工程师做出正确选择的关键,在于将这些核心需求与合适的工具、生态系统及可扩展性要求相匹配。明确你当前处理的 AI 工作负载(预训练、微调或推理)的具体需求范围,将极大简化选择合适计算资源的过程。

END

本期互动内容 🍻

❓如果你今天要搭建一个专用于 7B 参数级模型微调的实验室,会选 4 张消费级RTX 4090 还是 2 张专业级 A100?为什么?

文中链接

[1]https://www.youtube.com/watch?v=3hptKYix4X8

[2]https://code.google.com/archive/p/cuda-convnet/

[3]https://developer.nvidia.com/blog/doubling-all2all-performanc...

本文经原作者授权,由 Baihai IDP 编译。如需转载译文,请联系获取授权。

原文链接:

https://read.theaimerge.com/p/an-ai-engineers-guide-to-choosing

最开始使用 ide, 使用谷歌的 antigravity 和腾讯的 codebuddy ide, 最近在使用 Cli 工具,Claude code cli, Codex cli , 使用了几次 opencode cli, 发现还是 claude cli 最好用,其次 codex 。opencode 用几次总感觉有 bug,用不习惯。 大家是怎么选的?

当前公司的业务代码中存在类似一下的代码逻辑:
一个代码解析器 然后内部存在一个不断增长的解析代码

public class CodeParser{

    static parseHtml();
    static parseCSS();
    static parseJSP();
    static ParseJAVA();
    static ParsePython();
}

原有的 CodeParser 类将 多种代码解析逻辑集中在一个类中,通过静态方法区分不同解析方式。

随着解析类型的增加,这种写法会带来:

  • 单个类职责不断膨胀
  • 不同解析逻辑相互耦合
  • 可读性、可测试性下降
  • 新增解析类型需要频繁修改当前的 CodeParser

那么如何重构代码呢?


二、原始设计的问题

1. 职责过于集中

public class CodeParser {
    parseHtmlCode(...)
    parseCSS(...)
}
  • 一个类承担了多种不相关的解析规则
  • 修改任一解析逻辑,都需要修改同一个类

2. 扩展方式不可控

当需要支持新的解析类型(如 Vue / React / Markdown)时:

  • 只能继续在 CodeParser 中新增方法
  • 类会持续膨胀
  • 违反 开闭原则(OCP)

三、重构的核心思路

将不同的解析逻辑拆分成独立的类,每个类只负责一种解析方式,从而提升可维护性和扩展性。

四、重构后的设计思路

1. 抽象解析行为

将“解析代码”抽象为一个统一接口:

public interface CodeParser<T> {
    T parse(String content);
}

表达的设计意图是:

“代码解析是一种行为,可以有多种实现。”

2. 拆分不同解析实现

HTML解析
public class HtmlCodeParser implements CodeParser<HtmlCodeResult> {
    @Override
    public HtmlCodeResult parse(String content) {
        
    }
}
CSS 解析
public class CSSCodeParser implements CodeParser<CSSCodeResult> {
    @Override
    public CSSCodeResult parse(String content) {
        
    }
}

每个解析类:

  • 只关注自身规则
  • 互不影响

五、重构的好处

1. 可维护性显著提升

  • 每个解析逻辑独立
  • 避免误修改其他解析逻辑

2. 扩展成本更低

新增解析类型时:

class VueCodeParser implements CodeParser { ... }

无需修改已有解析类。

3. 为未来演进留好空间

后续如果需要:

  • 自动识别解析类型
  • 引入 Router / Registry
  • 接入第三方解析库(再引入 Adapter)

当前结构 无需推倒重来


六、与 Adapter / Strategy 的关系说明

当前阶段

  • 不是 Adapter 模式
  • 因为不存在“被适配的第三方接口”
  • 所有解析逻辑均为系统内部可控实现

未来可能演进

当引入第三方解析库时:

ThirdPartyParser -> CodeParser

此时才会自然引入 Adapter


七、总结

**本次重构的目的,是将不同代码解析逻辑按职责拆分,
降低单个类复杂度,提高系统的可维护性与可扩展性。**

什么是 Agent Skill

在与 AI Agent 协作开发时,我们常常希望它能遵循一些特定的、可复用的操作流程,比如按照固定格式创建 Git Release、执行项目代码检查、或是生成符合团队规范的文档。OpenCode Agent Skill 提供了一种机制,允许我们将这些可复用的指令和行为封装起来,供 Agent 在需要时发现并调用。

一个 Skill 本质上是一份包含了特定指令的 Markdown 文件,它定义了一项任务的名称、描述以及具体的执行步骤。通过这种方式,我们可以将复杂的、重复性的工作流程标准化,让 Agent 能够像调用工具一样,精确、一致地执行这些预定义的任务。这不仅提升了协作效率,也确保了输出结果的规范性。

创建一个 Skill

创建一个 Skill 的过程非常直接,核心是在指定的目录中放置一个名为 SKILL.md 的文件。

Skill 的存放位置

OpenCode 会在特定路径下搜索 SKILL.md 文件。这些路径分为项目本地和全局两种,方便我们将 Skill 应用于特定项目或是在所有项目中共享。

项目本地路径允许我们将 Skill 与代码仓库绑定在一起,当其他开发者克隆项目后,也能立即使用这些为项目定制的 Skill。OpenCode 会从当前工作目录向上搜索,直到 Git 仓库的根目录,并加载所有符合以下模式的 Skill 文件:

  • .opencode/skill/<skill-name>/SKILL.md
  • .claude/skills/<skill-name>/SKILL.md

全局路径则用于存放那些通用的、与具体项目无关的 Skill。这些 Skill 定义在用户的主目录下,对所有项目都可见:

  • ~/.config/opencode/skill/<skill-name>/SKILL.md
  • ~/.claude/skills/<skill-name>/SKILL.md

这里的 <skill-name> 是一个目录名,它必须与 Skill 本身的名称保持一致。这种目录结构使得每个 Skill 的定义都清晰地隔离在自己的文件夹内。下面的两种方式,选一种就好:

OpenCode Agent Skills 使用指南!一文介绍

Skill 的文件内容

每个 SKILL.md 文件都由两部分组成:YAML Frontmatter 和 Markdown 正文。

Frontmatter 位于文件的最顶端,使用 --- 分隔,用于定义 Skill 的元数据。Agent 正是通过这些元数据来发现和理解 Skill 的用途。

一个合法的 SKILL.md 文件必须包含 namedescription 两个字段。

---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
  audience: maintainers
  workflow: github
---

## What I do

- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command

## When to use me

Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.

在上面的例子中,namedescription 是必填项,它们直接影响 Agent 如何识别和选择 Skill。而 licensecompatibilitymetadata 等字段是可选的,用于提供额外的信息。

name 字段的值必须符合特定的命名规范:

  • 长度在 1 到 64 个字符之间。
  • 只能包含小写字母、数字和单个连字符 -
  • 不能以连字符开头或结尾。
  • 不能包含连续的连字符。
  • 最重要的一点是,它必须与存放 SKILL.md 文件的目录名完全相同。

description 字段的长度限制在 1 到 1024 个字符之间。它的作用是向 Agent 清晰地描述这个 Skill 的功能,以便 Agent 在众多可用 Skill 中做出正确的选择。一个好的描述应该具体、明确,准确传达 Skill 的核心用途。

文件的正文部分则使用标准的 Markdown 语法,详细说明 Skill 的具体行为、使用场景和执行逻辑。这部分内容是 Agent 加载 Skill 后获取的核心指令,因此编写得越清晰,Agent 的执行效果就越好。

Agent 如何发现和使用 Skill

当 OpenCode 启动时,它会自动扫描所有预定路径,发现可用的 Skill。然后,它会将这些 Skill 的 namedescription 提取出来,以工具描述的形式呈现给 Agent。你也可以直接问:

OpenCode Agent Skills 使用指南!一文介绍

Agent 看到的可用 Skill 列表大致如下所示:

<available_skills>
  <skill>
    <name>git-release</name>
    <description>Create consistent releases and changelogs</description>
  </skill>
</available_skills>

Agent 会根据当前任务的需求,分析这个列表中的 description,判断哪个 Skill 最适合解决问题。一旦决定使用某个 Skill,它就会调用内置的 skill 工具,并通过 name 来指定要加载的具体 Skill。

例如,当 Agent 决定使用 git-release 这个 Skill 时,它会执行如下调用:

skill({ name: "git-release" })

这个调用会触发 OpenCode 加载对应的 SKILL.md 文件的完整内容(包括 Markdown 正文),并将其作为上下文提供给 Agent。Agent 接收到这些详细指令后,就会按照文件中定义的方式继续执行任务。整个过程实现了 Skill 的按需加载,既高效又灵活。

配置 Skill 的访问权限

在团队协作中,并非所有 Skill 都适合对所有 Agent 或所有场景开放。例如,一些具有高风险操作的内部 Skill 可能只希望被特定的维护者 Agent 使用。OpenCode 提供了基于模式匹配的权限系统,可以精细化地控制 Agent 对 Skill 的访问。

权限配置在项目根目录的 opencode.json 文件中进行。我们可以在 permission.skill 对象里定义一系列规则。

一个基础的配置可能如下所示,它允许所有 Agent 访问所有 Skill:

{
  "permission": {
    "skill": {
      "*": "allow"
    }
  }
}

规则的键是匹配 Skill 名称的模式,支持 * 通配符。例如,internal-* 可以匹配 internal-docsinternal-tools 等所有以 internal- 开头的 Skill。规则的值则决定了权限行为。

权限行为描述
allowAgent 可以直接加载并使用该 Skill。
deny该 Skill 对 Agent 完全隐藏,Agent 无法发现也无法访问。
ask当 Agent 尝试加载该 Skill 时,系统会向用户发起确认请求,只有在用户批准后才能继续。

通过组合这些规则,我们可以实现复杂的权限控制。例如,以下配置允许访问 pr-review,禁止访问所有 internal- 系列的 Skill,并在访问 experimental- 系列 Skill 时向用户确认。

{
  "permission": {
    "skill": {
      "*": "allow",
      "pr-review": "allow",
      "internal-*": "deny",
      "experimental-*": "ask"
    }
  }
}

为特定 Agent 覆盖权限

除了全局配置,我们还可以为特定的 Agent 单独设置权限,覆盖全局默认规则。

对于自定义 Agent,可以直接在其定义的 Frontmatter 中添加 permission 块:

---
permission:
  skill:
    "documents-*": "allow"
---

对于像 plan 这样的内置 Agent,则可以在 opencode.json 文件中进行配置:

{
  "agent": {
    "plan": {
      "permission": {
        "skill": {
          "internal-*": "allow"
        }
      }
    }
  }
}

这种分层配置的能力为管理复杂的 Agent 体系提供了极大的便利。

彻底禁用 Skill 工具

在某些情况下,我们可能希望某个 Agent 完全不使用任何 Skill。OpenCode 也支持彻底禁用 skill 工具。

对于自定义 Agent,在其 Frontmatter 中设置 tools.skillfalse 即可:

---
tools:
  skill: false
---

对于内置 Agent,同样在 opencode.json 中配置:

{
  "agent": {
    "plan": {
      "tools": {
        "skill": false
      }
    }
  }
}

skill 工具被禁用后,Agent 将不会看到 <available_skills> 列表,也无法调用 skill 工具,从而完全隔离了它与 Skill 系统的交互。

解决加载问题

如果发现某个 Skill 没有按预期出现在可用列表中,可以从以下几个方面进行排查:

  1. 文件名检查:确保文件名是 SKILL.md,全大写。
  2. Frontmatter 检查:确认 SKILL.md 文件中包含了必需的 namedescription 字段。
  3. 名称唯一性:检查所有扫描路径下是否存在同名的 Skill。Skill 名称必须是唯一的,如果出现冲突,加载行为可能不确定。
  4. 权限检查:检查 opencode.json 中的权限配置,deny 规则会直接将 Skill 从列表中隐藏。

通过这些检查,通常可以快速定位并解决 Skill 加载失败的问题。

对大模型技术发展的几点判断:

1 、技术发展方向改变。
正在从大模型训练向工程应用方面转变。
昨天,Anthropic 和 OpenAI 分别发布自己最新的编程大模型。从发布的产品来看,没有什么特别新的东西,更多的是工程方面的一些改进,模型本身的能力的提升相对有限。

2 、正在从通用领域大模型,转向编程领域大模型。
通用大模型的付费意愿不高,而编程等高价值领域的使用者有更高的付费意愿,各家开始争夺编程大模型市场。

各位 V 友,

在开发 Web 视频应用时,大家是否遇到过这些“心累”的时刻:

  • 为了跑通 HLS 、DASH 、FLV ,不得不引入一堆不同的插件,甚至还要处理它们之间的冲突。
  • 面对 RTSP 监控流,在 Chrome 禁用 Flash 后,依然找不到轻量级的网页无插件播放方案。
  • 老板突然要求支持 WebRTC 低延时,还得去兼容阿里、腾讯、百度各家特色的协议。
  • 好不容易集成了播放器,发现截图、弹幕、画中画、倍速、甚至是音量增益等“基础功能”全都要自己手撸代码实现。

为了彻底解决这些痛点,我们开发了 **zwplayer (Zero Web Player)**。
官网地址:https://www.zwplayer.cn

🚀 为什么叫 Zero ?

我们的核心目标是:将开发者的成本降至无限接近于零。
你不需要是流媒体专家,不需要了解各种协议的技术细节。你只需要给它一个地址,剩下的交给 zwplayer 内部的智能引擎。

✨ 核心亮点:

  1. **全协议通吃 (开箱即用)**:
  • 直播/点播:HLS, DASH, HTTP-FLV, WebSocket, HTTP-TS 等全覆盖。
  • 超低延时:深度集成 WebRTC (WHEP 标准),官方适配阿里云 ARTC 、腾讯云 TRTC 、百度云 BRTC ,端到端延迟低至 240ms
  • RTSP 网页直放:配合服务器端转发,实现在浏览器无需插件直接播放 RTSP 监控流。
  • 本地播放:支持直接加载用户本地视频文件进行播放。
  1. “傻瓜式”的集成体验
  • 无依赖:纯原生 JS 编写,不依赖第三方库 ,支持 Vue 2/3 。
  • API 永久固化:升级版本只需替换 JS 文件,不破坏现有业务代码。
  • WordPress 插件无缝集成:提供 WordPressZWPlayer播放器插件,无需编写代码,像插入图片一样即可调用。
  1. 内置“全家桶”级功能
  • 交互增强:内置弹幕系统、双语字幕渲染、字幕搜索、章节搜索、进度条预览缩略图。
  • 画面操控:支持亮度/对比度调节、画面多角度旋转、视频截图。
  • 特色业务AB 片段循环音量 4 倍增益实时录制/音频提取,以及专为在线教育设计的强锁禁控模式(失去焦点自动暂停)。
  1. 真正意义上的 0 成本
  • 完全免费:个人/商业用途均免费,无 License 限制,无广告,无联网后门。
  • 私网友好:不依赖 CDN ,内网/私有云环境解压即用。


🔗 相关链接:

欢迎各位 V 友试用并提出宝贵建议!如果你正被复杂的流媒体协议折磨,或者厌倦了反复造轮子写 UI ,zwplayer 也许能让你早点下班。

应用截图:
界面截图.png

一个是投入的成本确实足够,再一个可以通过实物(结合外卖生活)的形式给到用户实打实的获利,还能宣传:“我靠,用你 app 都可以点奶茶了,现在的智能体真牛逼” 相比元宝的拼多多式红包,个人感觉千问在活动规划和格局上赢了(个人简介,没有广告)

Mistral 发布 Voxtral Transcribe 2 系列语音转文字模型

Mistral AI 于 2 月 4 日发布两款 Voxtral Transcribe 2 系列模型,分别为面向批量处理的 Voxtral Mini Transcribe V2,以及用于实时转录的 Voxtral Realtime。其中,Voxtral Realtime 以 Apache 2.0 许可开源发布。

Svvjb6BohomXs2xXYKucfKwUnmd

Voxtral Realtime 参数规模为 4B,面向低延迟用场景设计,采用全新的流式架构,可在即时转录,将整体延迟压缩至 200 ms 以下。Voxtral Mini Transcribe V2 主打高性价比转录 API,准确率表现优于 GPT-4o mini Transcribe 与 Gemini 2.5 Flash,单次请求最多可处理 3 小时录音。

两款模型均支持包括中文在内的 13 种语言。定价方面,Voxtral Mini Transcribe V2 API 价格为每分钟 0.003 美元,Voxtral Realtime 为每分钟 0.006 美元。来源


佳能推出 PowerShot G7 X Mark III 限量版相机

佳能为纪念 PowerShot 系列问世 30 周年,于 2 月 5 日推出 PowerShot G7 X Mark III 限量版相机。该版本定价 1299 美元,套装内包含限量版 Peak Design 腕带与 32GB SD 卡,计划于 2026 年 4 月开始发货。

WZOab7bmeoQ82YxFR39crFT1nDh

此次限量版在核心规格上与近 7 年前发布的 PowerShot G7 X Mark III 保持一致,主要区别集中在外观与细节设计。新机采用石墨灰配色,机身前部加入滚花控制环,同时印有 30 周年纪念标志。硬件方面,相机配备 2010 万像素传感器、可翻转 3 英寸触控屏,以及等效 24 至 100 mm 的 ƒ/1.8 至 2.8 镜头,并提供独立麦克风接口。视频规格支持无裁切 4K 30 帧拍摄与 1080P 120 帧慢动作,同时可通过 Wi-Fi 直接向 YouTube 直播。来源


sudo 项目维护者公开寻求赞助

2 月 4 日,sudo 项目维护者 Todd C. Miller 对外表示,正在为 sudo 公开寻找赞助。据悉,Miller 自 1993 年起一直独自负责项目维护。此前,Quest Software 从 2010 年开始为 sudo 提供赞助,但合作已在 2024 年 2 月结束,时间上与 Miller 离开其子公司 One Identity 基本重合。

失去企业资助后,sudo 仍在持续更新,并陆续修复多起高危漏洞,其中包括本地用户可绕过权限控制直接获取 root 权限的问题。Miller 表示,目前并没有将项目交由他人接手的打算,但如果长期缺乏稳定资金,开发进度势必受到影响。他同时提到,许多关键开源基础设施过度依赖少数维护者,这种结构性问题正在威胁整个计算生态,类似讨论近年来也频繁出现在 GitHub 等社区与公开议题中。来源


微软弃用「3D 查看器」

微软于 2 月 5 日宣布,「3D 查看器」应用列入弃用名单。据悉,「3D 查看器」曾随 Windows 10 默认预装,用于轻量级查看与渲染 3D 模型,最初定位服务于混合现实场景,并在多年间多次更名。微软已确认,该应用将于 2026 年 7 月 1 日起从 Microsoft Store 下架,现有用户虽可继续运行,但后续将不再获得功能更新与安全维护。

微软建议使用 Babylon.js Sandbox 等工具作为替代方案,开源社区则更倾向于 F3D、MeshLab 等本地应用。来源


看看就行的小道消息

  • 据报道,macOS 26.3 RC 版本系统新增了两组 SoC 标识 T6051 与 T6052,分别关联平台代码 H17C 与 H17D。结合 Apple 过往 M 系列芯片的编号规则推算,这两组代码很可能对应即将发布的 M5 Max 与 M5 Ultra 芯片。但仍未出现预计应属于 M5 Pro 的相关标识。来源
  • Google 于 2 月 5 日正式官宣 Pixel 10a 手机,定位面向预算有限的用户群体,计划于 2 月 18 日上市。目前官方尚未披露具体硬件规格。在整体设计上,Pixel 10a 与 Pixel 9a 风格接近,最明显的变化在于背部摄像模组不再凸起,而是与机身背板齐平。根据此前曝光的信息,该机正面或将配备一块 6.3 英寸 120 Hz 显示面板,后置 48MP 主摄与 13MP 超广角双摄组合。性能方面,手机可能搭载「强化版」Tensor G4 芯片,配备 8GB RAM,并提供 128GB 与 256GB 存储版本。电池容量预计为 5100 mAh,支持 23W 有线充电。来源
  • 据 The Information 报道,受行业内存价格上涨导致供应趋紧,以及英伟达将产能优先投向 AI 芯片等因素影响,RTX 50 系列 SUPER 显卡的发布计划将被推迟。在此背景下,面向游戏玩家的下一代产品线 RTX 60 系列量产时间也将顺延,预计要到 2027 年底才会启动大规模生产。这意味着该系列显卡的上市时间可能推迟至 2028 年,甚至更晚。来源


少数派的近期动态

  • 少数派年度征文来了,古法手搓大战人工智能,你会是哪条赛道的大赢家?参与一下
  • 我们正在优化并改进新的首页版式,如果你在使用过程中发现了任何问题或者有改进建议,请通过反馈表单告知我们。首页反馈收集
  • 将设计装进耳朵:少数派×飞傲联名 CD 机盖板设计大赛已经开始啦。了解详情
  • 没什么用,但就是好玩:盘点或恶搞或无聊的「神经病」应用。看看都有啥

你可能错过的好文章

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀

    GitHub CEO Thomas Dohmke 近日发出了一则措辞严厉的警告:“要么拥抱 AI,要么离开这个职业。”但所谓拥抱 AI,并不只是使用代码自动补全工具那么简单。它意味着我们核心能力的一次转移——从对语法的熟练掌握,转向系统思维(Systems Thinking),学会把问题不断拆解,直到小到可以交由 AI 去解决。一句话概括:我们现在都是架构师了。

    我正在开发一个 IoT 应用,整体由设备端固件、后端系统以及 Web UI 组成。尽管我本身具备软件工程背景,但在这个项目中,我一直在使用 Claude Code 来提升开发效率,并帮助我应对一些并不十分熟悉的语言和框架。我的技术栈包括:设备端使用 Python + PyTorch,前端采用 React + TypeScript,后端则由 MQTT + Node.js + Postgres 构成。起初,与 Claude 的协作并不顺利。我的请求经常会引发对整个代码库的大规模改动。随着我逐渐学会如何更合理地组织代码结构、并对提示词进行调整和约束,情况开始好转。现在,我已经可以在不进行逐行代码审查的情况下,基本信任 Claude 所做的修改。在这个过程中,我逐渐总结出了一些模式,并将其称为 Skeleton Architecture(骨架式架构)。我认为,这些模式对提升 AI 编程助手的生产力非常有帮助,因此希望在这里分享出来。

    随着 AI 编程行业逐步成熟,我们开始意识到一个事实:如果使用方式不当,AI 会带来大量技术债务。要在这场转型中生存下来,我们必须识别并建立合适的架构模式,使 AI 生成的代码在安全性、可维护性和可靠性方面都可控。这需要一套明确的策略,核心建立在三个支柱之上:为 AI 的“消费”方式而组织代码结构;实施严格而清晰的防护与约束机制(guardrails);以及将我们自身的技能重心,从“翻译需求”转向“建模系统”。

    结构化代码:上下文约束

    AI 辅助工程中最核心的约束,是 上下文窗口(Context Window)。随着上下文规模的扩大,模型的准确性会因为“中段信息丢失(Lost in the Middle)”现象而呈反向下降,而响应延迟与使用成本则会线性上升。

    因此,AI 原生架构的“黄金法则”,就是尽可能缩小模型在工作记忆中必须同时容纳的问题范围。我们必须设计一种系统,对信息流施加“物理约束”,将依赖关系隔离开来,使 AI 能够把完整的问题空间装进一个高度聚焦的提示词中。这种隔离具备两层作用:一方面,通过减少噪声来最大化推理能力;另一方面,通过确保某个代理在处理一个组件时“看不到”其他组件,从而避免无意中破坏系统整体的完整性。

    目前,有两种架构模式正在逐渐被采用,用以解决这一问题。

    Atomic Architecture(原子化架构) 作用于微观层面。该理念由 Brad Frost 于 2013 年提出,最初用于应对响应式 Web 设计的复杂性。它以一种“生物学式”的方式组织系统:从不可再分的“原子”(如 HTML 标签、工具函数)开始,组合成“分子”,最终构成复杂的“有机体”。虽然它最初是一种 UI 方法论,但在 AI 辅助工程中重新焕发了价值,因为它强制执行了一种严格的“上下文卫生(context hygiene)”。相比让 AI 一次性生成一个庞大的功能模块,让其只生成一个独立、隔离的“原子”,可以大幅降低幻觉风险,并确保生成的代码高度聚焦、无状态、且易于验证。但代价也同样明显——这会产生一种“碎片化税(fragmentation tax)”:AI 可以完美地产出单个组件,但将这些无状态原子连接成一个完整系统的高强度认知负担,要么必须被塞进 AI 的上下文中,要么就完全回到了人类架构师身上。

    为了解决宏观结构层面的组织问题,我们需要引入 Vertical Slice Architecture(垂直切片架构)。这一架构由 Jimmy Bogard 推广,旨在打破传统 N 层“千层面代码(lasagna code)”的僵化结构。它按照业务功能(例如“下单”)而非技术层级(如“服务层”“数据访问层”)来组织系统。

    这种模式对 AI Agent 尤其友好,因为它针对“引用局部性(Locality of Reference)”进行了优化。在分层架构中,AI 为了理解一条完整业务流程,往往需要在多个目录之间来回检索文件,大量无关代码会污染上下文窗口。而垂直切片遵循“一起变化的东西,就放在一起”的原则,使 AI 能够一次性加载某个功能的完整上下文,而无需对缺失的依赖进行“脑补式生成”。但这同样会引入一种“重复税(Duplication Tax)”:为了保持切片之间的独立性,AI 往往会在不同切片中生成重复的数据结构,用牺牲 “DRY(Don’t Repeat Yourself,不重复自己)”原则,换取更强的隔离性。

    垂直切片在隔离性方面表现出色,但它并不能解决切片之间的协同问题。诸如安全性、可扩展性、性能、认证等关键的非功能性需求,都是系统级不变量,无法被拆散到各个切片中分别实现。如果让每一个垂直切片都自行实现授权体系或缓存策略,最终只会导致“治理漂移(Governance Drift)”:安全策略不一致,代码重复严重。这也迫使我们引入一个新的统一概念:Skeleton(骨架)与 Tissue(组织)。

    解决方案:骨架与组织

    我们将系统明确拆分为两个彼此区隔的领域。Stable Skeleton(稳定骨架) 代表由人类定义的、刚性且不可变的结构(如抽象基类、接口、安全上下文),这些结构可能由 AI 编写,但设计权属于人类。Vertical Tissue(垂直组织) 则由高度隔离、以具体实现为主的功能模块组成(如具体类、业务逻辑),主要由 AI 生成。

    这种架构借鉴了两种经典的软件思想:Actor 模型 和 面向对象中的控制反转(Inversion of Control)。世界上一些最可靠的软件系统之所以能够长期稳定运行,并非偶然——例如 Erlang,其核心正是通过 Actor 模型来维持系统稳定性。同样,在控制反转结构中,不同切片之间的交互由抽象基类来管理,确保具体实现类依赖的是稳定的抽象,而不是反过来。

    为了在工程实践中强制落实这一点,我们采用了 模板方法模式(Template Method Design Pattern)。依赖反转原则负责在设计层面保护高层策略不被底层细节侵蚀,而模板方法模式则在运行层面将这一原则“落地”,通过锁定执行流程来实现。

    在这种模型下,人类架构师会在基类中定义一个最终的 run() 方法,用于统一处理日志、异常捕获、认证等横切关注点。AI 则只被允许实现一个受保护的 _execute() 方法,并由 run() 在合适的时机调用。这种区分至关重要:AI 在物理层面上就不可能“忘记”记录日志,或绕过安全检查,因为它从一开始就不拥有整个执行流程的控制权;它只是填补了架构师预留出来的一段逻辑空位。

    在我系统的设备端代码中,包含了多个用于图像处理的 AI 算法。我决定用一个继承自 ABC(Python 抽象基类)的类 TaskBase 来表示每一种算法。其余的骨架部分,则由一组负责高效传递图像数据、并调度这些算法运行的协调类构成。

    代码示例:由人类掌控的 Skeleton

    下面的示例展示了 BaseTask 如何将缓冲管理和就绪状态检查的复杂性完全屏蔽在 AI 之外,让 AI 可以只专注于“处理逻辑”本身。

    Python# source: task.pyclass BaseTask(ABC):    """    Abstract base class for pipeline tasks.    The AI implements the concrete logic; the Human controls the flow.    """    def __init__(self, name: Optional[str] = None):        self.inputs: List['Buffer'] = []        self.outputs: List['Buffer'] = []        self._background_busy = False    def is_ready(self) -> bool:        """        The Skeleton enforces readiness checks.        The AI never sees this complexity, ensuring it cannot break         scheduling logic or cause deadlocks.        """        if not self.inputs:            return True # Source tasks                # Default policy: Ready if ANY input has data and ALL outputs have space        has_input = any(buf.has_data() for buf in self.inputs)        can_output = all(buf.can_accept() for buf in self.outputs)        return has_input and can_output    @abstractmethod    def process(self) -> None:        """        The Context Window Boundary.        The AI only needs to implement this single method.        """        pass
    复制代码

    对这种架构的一种常见质疑是:过于刚性的 Skeleton,可能会限制 AI 的自由,从而抑制创新。对此的回应是——这种刚性并不是缺陷,而是一种刻意设计的特性。它明确地强制实施了“架构治理(Architectural Governance)”。如果系统的核心控制流程或整体行为需要被修改,那么这个决策必须由人类架构师亲自介入完成。这种约束相当于一道必要的防火墙,用来抵御“架构漂移(Architecture Drift)”:防止 AI——这种天然偏好局部最优的系统——引入临时性的捷径或不一致的模式,而这些问题若不受约束,最终会一点点侵蚀系统的长期设计完整性。

    交互方式:“导演”角色

    把代码助手比作初级开发者,是一种危险的拟人化认知。AI 并不是学习型个体,而是一种高速运行的随机优化引擎,它的目标是尽快完成任务,并且往往会把安全检查视为需要绕开的“阻力”。提示词是柔性的,而架构是刚性的。因此,开发者必须以高度警惕的方式对 AI 代理进行监督。根据我的经验,即便已经明确给出“绝对不能绕过安全机制”的指令,像 Claude 这样的模型仍可能为了让代码运行成功,尝试关闭认证机制以解决冲突。

    要让这种“导演式管理”具备可扩展性,我们必须建立“硬护栏(Hard Guardrails)”——也就是将约束直接嵌入系统本身,使 AI 在物理层面上难以绕过。这些护栏构成应用系统不可更改的基本法则。

    在我的应用中,最关键的一道护栏,是确保设备端、UI 与后端之间的数据一致性(Schema-First Surety)。如果缺乏这一机制,Claude 很快就会修改系统不同模块之间的通信协议,最终导致数据结构彼此不一致。我将 JSON Schema 作为 OpenAPI 与 AsyncAPI 文档的一部分,作为系统的“单一真实来源(Source of Truth)”,以确保组件之间的契约不可被破坏。同时,我在基类中加入了一个“快速失败(Fail-Fast)”验证器,一旦检测到协议违规,就会直接触发 sys.exit(1) 强制终止程序。当 AI 生成的代码虽然满足提示词要求,但违反系统契约时,系统会立即崩溃。这会迫使人类开发者介入,将原本可能被忽视的隐性缺陷,转变为一个明确且可见的“治理事件(Governance Event)”。至关重要的一点是:该验证器必须运行在 Skeleton 层,因为在这一层中 Claude 无法修改相关逻辑。

    理想情况下,我们还应当超越运行时检查,通过 CICD 流程中的自动化工具来保证系统结构完整性。例如,我们可以使用 ArchUnit 这样的编译期工具来强制执行系统拓扑规则。开发者可以编写测试断言,例如:“任何 AI 生成的模块都不得直接导入数据库包”。这可以有效阻止 AI 通过架构捷径绕过 Skeleton 层的控制。

    为了获得最高级别的安全保障,我们甚至可以采用物理隔离策略。我们可以将 Skeleton(包括接口、基类以及安全逻辑)迁移到一个独立且只读的代码仓库中。AI 在构建 Tissue(组织层代码)时只能导入这些定义,但在权限层面上无法修改这些规则。这种方式确实会带来一定摩擦,例如 AI 无法在未经人工批准的情况下“凭空创造”新的消息类型。但作为回报,系统行为可以获得几乎绝对的可控性与确定性。

    最后,我们还必须对副作用进行隔离。当业务逻辑与外部组件交互混杂在一起时,AI 代理通常难以编写稳定可靠的测试代码,往往会“臆造”复杂的模拟对象,或生成容易失效的集成测试。我们的解决方法,是将交互行为上移到 Skeleton 层,而将业务逻辑保留在 Tissue 层(即所谓“Functional Core”)。由于 Skeleton 定义的工作流具有清晰边界,因此可以通过 AI 生成的模拟对象轻松测试;而 Tissue 层的类由于本身就是垂直切片结构,也可以通过简单的测试框架进行验证。

    代码示例:不可变的护栏机制

    该验证器会在 AI 任务真正处理消息之前执行。sys.exit(1) 能够确保系统采用“快速失败”的安全策略,而 AI 无法覆盖这一行为。

    # source: mqtt_validator.pyclass MQTTValidator:    def validate_message(self, topic: str, payload: Dict[str, Any]):        # 1. Match Topic against Whitelist        schema_key = self._get_schema_for_topic(topic)        if schema_key is None:        logger.critical(f"FATAL: Unknown MQTT topic: {topic}")        sys.exit(1) # Device terminates on security violation        # 2. Enforce Schema Integrity    try:        validate(instance=payload, schema=self.schemas.get(schema_key))    except ValidationError:        logger.critical("Device terminating due to validation failure")        sys.exit(1)
    复制代码

    学习方式的转变:从语法到系统性思维

    这种架构层面的转变,迫使我们对开发者技能进行一次根本性的再评估。相较于语言特性或算法实现——这些正在迅速商品化的能力——开发者必须将重心转向建模、信息流设计,以及对非功能性需求的严格管理。在一个“会写排序算法”几乎不再具备任何价值的时代,工程师的价值不再由“翻译”(把想法转成代码)来定义,而是由“建模”(定义代码运行所受的约束条件)来决定。

    我们已经进入了系统性思维(Systemic Thinking)的时代。功能实现很容易,系统韧性却极其困难。AI 代理会为了让测试用例通过而进行优化,却完全无视内存泄漏、延迟抖动或可观测性缺失等问题。因此,工程师必须走上“导演”角色,在发出任何一个提示词之前,就先在脑中构建好信息流与组件之间的交互关系。非功能性需求(NFRs),必须由导演来承担。

    由于 AI 无法真正“关心”内存管理问题,人类架构师必须将这些防护机制直接构建进 Skeleton 之中。

    进一步来看,这意味着工程师需要熟悉系统架构的世界,并且持续思考诸如“这个系统在实际运行中会如何表现”这样的问题。

    除了保护系统本身,Skeleton Architecture 还回应了一个正在逼近的挑战——“学徒危机”(Apprenticeship Crisis)。在一个实现层代码大多由 AI 生成的世界里,初级工程师要如何积累成长为架构师所必需的“伤疤组织”(scar tissue)?答案在于:Skeleton 本身就成为了教学大纲。通过强制初级工程师在 TaskBase 与 Validator 这些刚性约束中工作,我们用结构化的“填空题”,取代了令人无从下手的“空白页”。他们不是通过阅读抽象理论来学习系统设计,而是直接生活在一个高质量的架构中。一个在物理层面上阻止坏习惯产生的架构。反馈回路也因此被极大压缩:从过去等待代码评审的数天时间,缩短为撞上护栏时的毫秒级反馈。每一次错误,都会立刻变成一堂架构课。

    代码示例:系统级安全网

    AI 负责编写图像处理逻辑,而人类架构师则通过在框架中实现 weakref 跟踪机制,确保系统不会因为内存泄漏而崩溃。

    # source: memory_monitor.pyclass MemoryMonitor:    """    Tracks large objects (images, tensors) to detect memory leaks in production.    The AI uses the simple API, while the 'Systemic Thinking' logic lives here.    """    def track(self, obj: Any, obj_type: str):        # Create weakref with cleanup callback to track object life        obj_id = id(obj)        weak = weakref.ref(obj, lambda ref: self._on_object_deleted(obj_id))        self.tracked[obj_id] = ObjectLifetime(time.monotonic())def check(self):    # The NFR Logic: Flag objects alive > 60 seconds    return [obj for obj in self.tracked if obj.age > 60.0]
    复制代码

    总结

    垂直切片为 AI 提供专注,Skeleton 为人类保留控制权,而其他硬性约束则为团队提供确定性。我们并不是在“训练”AI,而是在约束它。通过构建一套刚性的 Skeleton,我们让 AI 可以高速前进,同时不至于折断软件系统的脊梁骨。

    参考文献

    Bogard, J.(2018)。《Vertical Slice Architecture》。Dohmke, T.(2023 年 11 月 8 日)。GitHub Universe 2023 Opening Keynote: Copilot in the Age of AI[视频]。YouTube。Farry, P.(未注明日期)。《AI-Generated Code Creates New Wave of Technical Debt, Report Finds》。InfoQ。Frost, B.(2013)。《Atomic Design》。Gamma, E., Helm, R., Johnson, R., & Vlissides, J.(1994)。《Design Patterns: Elements of Reusable Object-Oriented Software》。Addison-Wesley。Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F., & Liang, P.(2023)。《Lost in the Middle: How Language Models Use Long Contexts》。Stanford University、UC Berkeley、Samaya AI。Martin, R. C.(未注明日期)。《The Dependency Inversion Principle》。

    原文链接:

    https://www.infoq.com/articles/skeleton-architecture/