Mohamed bin Zayed人工智能大学深度解剖Claude Code的设计哲学
Mohamed bin Zayed人工智能大学深度解剖Claude Code的设计哲学
  • 2026-04-27 03:15:28
    来源:重振旗鼓网

    Mohamed bin Zayed人工智能大学深度解剖Claude Code的设计哲学

    字体:

    这项由阿联酋穆罕默德·本·扎耶德人工智能大学(Mohamed bin Zayed University of Artificial Intelligence)VILA实验室主导的研究,于2026年4月以预印本形式发布,论文编号为arXiv:2604.14228v1,有兴趣深入了解的读者可通过该编号在arXiv平台查询完整论文。

    你有没有想过,当你把一个任务交给AI,它不只是给你一段文字回复,而是真的打开了你的电脑文件,跑了几条命令,修改了几行代码,然后把结果交到你手上——这背后究竟发生了什么?这篇研究正是试图打开这个"黑箱",把一款叫做Claude Code的AI编程工具的完整内部构造,清清楚楚地摆在桌面上。

    要理解Claude Code是什么,不妨把它想象成一个受过严格训练的智能助理,而不是一个普通的聊天机器人。普通聊天机器人只会"说",而Claude Code会"做"——它能在你的电脑上运行命令、读写文件、连接外部服务,甚至可以把一个大任务拆分给多个"下属"去分头完成。研究团队通过分析Claude Code公开发布的TypeScript源代码(版本v2.1.88),系统地还原了这套工具从零到一的设计思路,并将其与另一个独立开源AI系统OpenClaw进行了横向对比。这不是一篇简单的功能评测,而是一次深入骨髓的架构解剖,试图回答一个根本性问题:当AI真正开始"动手干活"时,它的大脑和骨骼是怎么搭建的?

    一、从"聊天机器人"到"动手助理":Claude Code究竟是什么?

    要理解这项研究的意义,得先明白AI编程工具的进化史。最早的AI编程助手,比如GitHub Copilot,就像一个坐在你旁边的打字员,你写到一半,它帮你补全剩下的代码,本质上是"猜你下一步要写什么"。后来出现了Cursor这样的工具,开始能跟你对话,讨论代码问题,在多个文件之间联动修改。而Claude Code走得更远——它已经是一个会自主规划、会执行多步骤任务、会迭代修正、会调用外部工具的完整代理(Agent)系统。

    用一个更贴近生活的比喻:如果说Copilot是一个帮你写购物清单的助理,Cursor是一个能讨论菜谱的厨房顾问,那么Claude Code就是那个你完全可以把钥匙交给他、让他去超市采购、回来下厨、然后把饭端到桌上的全能管家。这种跨越不仅仅是功能量的叠加,而是系统架构上的根本性变化。

    研究团队来自阿联酋穆罕默德·本·扎耶德人工智能大学,他们注意到一个有趣的现象:Anthropic公司(Claude的开发商)虽然公开了用户使用文档,却从未发布过这套系统的详细架构说明。于是他们做了一件相当有价值的事——直接读源代码,像读一本建筑蓝图一样,把整栋大楼的结构图画出来。值得一提的是,Anthropic内部的一项调查发现,在132名工程师和研究员中,约27%使用Claude Code完成的工作是他们原本根本不会去尝试的任务。这个数字意味着,Claude Code不只是让人干活更快,而是让人敢于承担原本不敢碰的挑战。

    二、这套系统的灵魂:五个核心价值观

    研究团队做的第一件重要工作,是从整个代码库中提炼出驱动系统设计的底层哲学。他们发现,Claude Code的每一个技术决定背后,都能追溯到五个核心价值观,就像一栋建筑的地基,决定了上面每一面墙、每一根柱子的位置。

    第一个价值观是"人类决策权至上"。系统被设计成这样:无论AI多么聪明,人类始终保有最终的控制权。Claude Code内部构建了一个"权威层级"——Anthropic公司位于最高层,然后是使用这套工具的运营商(比如企业),最后是终端用户。这个层级决定了谁有权限做什么决定。更有趣的是,Anthropic发现用户会对93%的权限请求直接点击"同意",这说明人们很快就产生了"审批疲劳"——不管AI要做什么都习惯性地放行。面对这个发现,设计者的回应不是增加更多警告弹窗,而是重新设计了安全边界:让AI在一个明确划定的沙盒范围内自由行动,而不是在每一步都来打扰人类。

    第二个价值观是"安全、安保与隐私"。这与第一个价值观有微妙区别——前者关注人的"选择权",后者关注系统的"保护义务"。即便用户粗心大意、没有认真审查,系统也必须保护用户的代码、数据和基础设施不受损害。研究团队发现,系统专门针对四种风险设计了防御:过于激进的AI行为、诚实但错误的操作、提示词注入攻击(有人在文件里藏了恶意指令欺骗AI),以及模型价值观偏差。

    第三个价值观是"可靠执行"。AI必须真正做到用户想要的事,而不只是做了"一些事"。这个价值观不仅关乎单次任务的准确性,还关乎跨越很长时间的稳定性——当任务持续数小时、跨越多个对话窗口、涉及多个子任务时,AI是否还能保持连贯和正确?

    第四个价值观是"能力放大"。系统必须实质性地提升人类能完成的事情的边界,而不只是把原来的工作变得更快。正如前面提到的那27%,最有价值的地方在于解锁了原本不敢尝试的任务。Anthropic的设计者把这个系统描述为"Unix工具"而非"传统产品"——它应该是小而有用、易于理解、可以扩展的基础构件。

    第五个价值观是"情境适应性"。系统要能适应每个用户的特定项目、工具、习惯和技能水平,而且这种适应性应该随时间不断改善。数据显示,用户的"自动批准率"(让AI不用请示直接做某件事)从最初的20%,经过750次会话后上升到40%以上。这说明人与AI的关系是一种随时间共同建立起来的信任轨迹,而不是一个固定不变的状态。

    在这五个价值观之外,研究团队还提出了第六个"评估视角":长期人类能力的保护。这个视角不是系统的设计目标,但它是一个值得深思的担忧——当AI把太多工作包揽了,人类是否在悄悄失去相关技能?这个问题贯穿全文,在最后的讨论中变得尤为重要。

    三、十三条设计原则:从哲学到工程的桥梁

    有了价值观,还需要一套可以落地的规则。研究团队整理出了十三条设计原则,每一条都是对一个具体工程问题的明确回答。

    其中最重要的几条值得单独说说。"默认拒绝、人工升级"原则规定:当系统遇到一个没有明确授权的操作时,默认是拒绝,而不是允许。只有用户明确开了绿灯,AI才能执行。这就像一个保安,默认不让任何人进门,除非名单上有名字。与此对应的是"纵深防御"原则——安全不依赖单一机制,而是多层叠加,任何一层失效都有其他层兜底,就像银行保险库既有密码锁又有警卫又有监控。

    "上下文是稀缺资源"原则则承认了一个现实约束:AI每次处理任务时能"记住"的内容是有限的(就像短期记忆),所以系统必须精心管理哪些信息塞进这个有限的空间里。这催生了一套复杂的"压缩管道",后面会详细介绍。"仅追加的持久状态"原则意味着系统对历史记录只能添加,不能修改或删除——每一步操作都留有完整痕迹,方便事后审计。"可逆性加权风险评估"原则则是说,对于那些可以轻松撤销的操作(比如读取文件),系统可以放宽审查;而对于难以逆转的操作(比如删除文件),则需要更严格的把关。

    这些原则放在一起,形成了一个清晰的设计逻辑:最大化AI的行动能力,同时最小化不可逆错误的风险,并把人类的审查成本控制在合理范围内。

    四、系统的骨架:七个组件和五层结构

    读懂了价值观和原则,就可以看系统的实际构造了。研究团队画出了两张图——一张粗粒度的"七组件图",一张细粒度的"五层架构图"。

    七组件模型就像一栋房子的平面图,清楚地标出了每个功能区域。用户通过"界面层"与系统交互——无论是交互式命令行、无头命令行、Agent SDK还是IDE集成,所有入口都汇聚到同一个核心:代理循环(Agent Loop)。代理循环是这栋房子的"大厅",所有事情都从这里出发。它把任务传给"权限系统"审批,审批通过后交给"工具集"执行,工具集与"执行环境"(文件系统、命令行、网络)互动,产生结果后反馈回循环。与此同时,"状态与持久化"层负责把对话记录存储下来,支持断点续传和历史回溯。

    五层架构图则是把这栋房子的每面墙、每根管道都标注出来。表面层(Surface Layer)是用户看到的界面;核心层(Core Layer)是代理循环和压缩管道;安全/行动层(Safety/Action Layer)包含权限系统、钩子管道、扩展机制、工具集、沙盒和子代理派发;状态层(State Layer)管理上下文装配、运行时状态、会话持久化和记忆文件;后端层(Backend Layer)对接真实的执行环境和外部资源。

    特别有意思的一个发现是:整个代码库中,只有大约1.6%的代码是"AI决策逻辑",剩下98.4%全是"运营基础设施"。这意味着系统的设计哲学是:不是用代码去约束AI怎么思考,而是用代码为AI创造一个良好的环境,让它能在这个环境里自由地做出好决策。就像一个顶级厨师不需要有人站在旁边告诉他每一个切菜的动作,但厨房的刀具必须是锋利的、食材必须是新鲜的、炉灶必须是可靠的。

    五、心脏的跳动:代理循环是怎么运转的

    Claude Code的心脏是一个叫做`queryLoop()`的函数,它就是那个不断跳动的循环——问模型、执行工具、收结果、再问模型,周而复始,直到任务完成或被叫停。

    每一次循环的内部流程是这样的。首先,系统收集参数,包括系统提示、用户上下文、权限回调函数等固定信息。然后初始化一个可变状态对象,存放本轮的消息、工具上下文、压缩跟踪数据等。接着装配上下文——把从上次压缩边界之后的消息取出来,确保旧的、已被压缩的内容以摘要形式出现,而不是原始的长串对话。在正式调用模型之前,还要经过五个"预模型处理器"的处理,依次减少上下文压力(这五个处理器后面会专门讲)。然后才是真正的模型调用,AI的回复以流式方式返回。如果回复中包含工具调用请求,就进入权限审查流程;审查通过后执行工具,把结果追加到对话中,再次循环。如果回复里只有文字没有工具调用,那这一轮就结束了。

    工具的执行有一个聪明的设计:能并行的就并行,不能并行的就串行。读取文件这类"只读"操作可以同时进行多个,而修改文件、执行命令这类"写"操作则必须排队等候。更有趣的是,系统使用了一个叫`StreamingToolExecutor`的机制,AI的回复还没说完,工具就已经开始执行了,这大大减少了等待时间。同时还有一个"兄弟进程中止控制器"——如果其中一个命令执行出错,其他正在跑的命令会立刻被终止,而不是让它们继续跑到各自结束。

    循环还内置了多种容错机制。当输出超过了模型的最大长度限制时,系统会自动提升上限重试,最多三次。当上下文快满了,系统会临时触发一次紧急压缩,释放空间。如果API返回"提示词太长"的错误,系统会先尝试上下文折叠和紧急压缩,实在不行才终止任务。这些容错机制让整个系统表现得更像一个稳健的生产级工具,而不是一个脆弱的实验项目。

    六、门卫与通行证:权限系统是怎么工作的

    每当AI想要执行一个操作,都必须过权限系统这一关。这套系统的设计思路是"层层防守",研究团队识别出了七道独立的防线。

    第一道是"工具预过滤":在AI甚至还没开口请求之前,那些被明确禁止的工具就已经从AI能看到的工具列表里消失了,根本不给它提出请求的机会。第二道是"拒绝优先的规则评估":系统维护着一套"允许/询问/拒绝"规则,而且拒绝规则的优先级永远最高,无论允许规则有多具体,只要有一条拒绝规则匹配,这个操作就会被拒绝。第三道是"权限模式约束":整个系统有七种权限模式,从最保守的"计划模式"(什么都要人类先批准方案)到最宽松的"绕过权限模式",构成一个自主性由低到高的梯度。第四道是"自动模式分类器":这是一个基于机器学习的系统,会把工具调用请求与当前对话上下文对照分析,判断这个请求是否安全,产出"允许/拒绝/需人工确认"三种结论。第五道是"命令行沙盒":即便操作通过了上面所有审查,在真正执行时还会被放进一个沙盒里,对文件系统和网络的访问受到额外限制。第六道是"恢复时不还原权限":当用户继续上一个中断的会话时,上次会话中积累的权限授予不会自动带入新会话,每次都重新开始——这是一个刻意的安全保守选择。第七道是"基于钩子的拦截":任何注册了钩子(Hook)的外部代码,都可以在工具执行前后介入,进一步影响权限决定。

    这七道防线并不是重复的,它们各自针对不同的威胁场景。研究团队还发现了一个有趣的安全漏洞模式:有两个已披露的安全漏洞(CVE-2025-59536和CVE-2026-21852)共享同一个根本原因——在用户看到信任确认对话框之前,某些代码已经开始执行了,这创造了一个"预信任执行窗口",这段时间里权限系统尚未完全激活。这说明权限系统描述的是空间上的检查顺序,但时间维度上的初始化顺序同样重要,而后者更难被设计者意识到。好消息是这些漏洞在被发现后数周内都得到了修补。

    七种权限模式中,有一个特别值得提一下:`auto`模式,它依赖机器学习分类器自动判断请求是否安全,整个过程不需要打扰用户。这个模式的设计动机直接来自那个93%批准率的数据——既然人类几乎不会认真审查,不如让机器来做这件事,同时通过沙盒等机制保底。

    七、系统的工具箱:四种扩展机制

    Claude Code能做多少事,很大程度上取决于它有哪些"工具"可用。系统内置了最多54种工具(19种无条件可用,35种根据配置或用户类型有条件启用),但更重要的是,系统提供了四种让外部能力接入进来的机制,就像一个工具箱里的不同插孔。

    第一种叫MCP服务器(Model Context Protocol,模型上下文协议)。这是主要的外部工具集成通道,可以理解为"远程工具墙"——AI可以连接到一台外部服务器,使用服务器提供的各种工具,就像连接WiFi就能上网一样。MCP客户端支持超过8种传输协议,从标准输入输出到SSE、HTTP、WebSocket应有尽有。这是上下文代价最高的一种扩展方式,因为每个工具的定义描述都要占用宝贵的上下文空间。

    第二种叫插件(Plugins)。插件是一种"打包发行"的机制,一个插件包可以同时包含命令、技能、钩子、MCP服务器、LSP服务器、输出样式等多达十种组件类型。开发者可以把一套完整的工作流封装成一个插件,用户安装后就能一键获得所有功能。这是第三方扩展的主要发行渠道。

    第三种叫技能(Skills)。技能是通过一个叫SKILL.md的文件定义的,文件头部有结构化的参数,正文是AI接到这个技能时会被注入的指令说明。技能的上下文代价很低,因为只有技能的简短描述会一直留在上下文里,完整内容只在调用时才被注入。技能可以定义自己允许使用的工具范围、执行上下文(独立运行还是在当前对话中)、所需的努力等级等。

    第四种叫钩子(Hooks)。钩子是代价最低的扩展方式,因为它默认不占任何上下文空间。系统定义了27种钩子事件,覆盖工具授权、会话生命周期、用户交互、子代理协调、上下文管理、工作区事件和通知等各个方面。外部代码可以在这些事件触发时执行,拦截、修改或记录工具调用的输入和输出。比如,可以写一个钩子,让每次文件被修改时自动发一条Slack消息;或者让某类敏感命令在执行前先做一次合规检查。

    研究团队解释了为什么要设计四种机制而不是一种统一的API:因为不同类型的扩展对上下文的消耗完全不同。钩子消耗零,技能消耗极少,插件消耗中等,MCP服务器消耗最多。如果强行统一成一种机制,要么代价高昂的功能会拖慢整个系统,要么代价低廉的功能会被过度限制。四种机制形成了一个代价梯度,让开发者根据实际需求选择合适的接入方式。

    八、有限的记忆,无限的任务:上下文管理与记忆系统

    这一章要讲的是Claude Code最精妙也最复杂的部分之一:如何在有限的"记忆容量"里完成不断扩大的任务。

    AI的上下文窗口就像一个有限容量的工作台——你只能在台面上放那么多东西,放不下的就得想办法处理。Claude Code的上下文窗口最大是200K到1M个词元,听起来很大,但对于一个长时间运行、不断积累工具调用结果的任务来说,依然捉襟见肘。

    研究团队发现,每次调用模型之前,系统都会经历一个五步压缩流程,像一套逐步升级的过滤器,从最轻量到最重量依次出手。

    第一步是"预算削减"——永远开启,对每条工具调用结果设置大小上限,超出部分用一个引用替代,就像把一篇长文章换成一个书签。第二步是"裁剪压缩"——去掉较老的历史片段,腾出空间给近期内容。第三步是"微型压缩"——细粒度的缓存感知压缩,会考虑API的提示词缓存机制,避免因为压缩操作让之前缓存好的内容失效,白费成本。第四步是"上下文折叠"——这是最有意思的一种:它不真正修改存储的历史记录,而是在读取时做一个虚拟投影,让模型看到的是折叠后的简化版,但原始完整历史仍然保存完好,可以随时恢复。第五步是"自动压缩"——终极手段,调用模型本身来生成整段对话的语义摘要,然后用这个摘要替换原始内容。这一步只在前四步都不够用时才触发。

    与此同时,系统还有一套"记忆层级",通过一种叫CLAUDE.md的文件系统来实现。这是一系列纯文本的Markdown文件,按不同层级存放指令:系统级(管理员给所有用户设的规则)、用户级(个人全局指令)、项目级(随代码库一起存放,团队共享)、本地级(不进版本控制,个人私密配置)。文件从根目录一直到当前工作目录逐层加载,越靠近当前目录的文件优先级越高,越靠后加载的内容越受模型关注。

    有一个设计细节值得特别指出:CLAUDE.md的内容被当作"用户消息"而非"系统提示"注入到对话中。这意味着AI遵守这些指令是"大概率的",而不是"强制性的"。强制性的执行依靠的是权限规则系统,这两者一个是"劝说",一个是"法规",在架构上刻意分开。

    记忆文件支持一种`@include`指令,可以引用其他文件的内容,就像编程语言里的`import`,方便模块化管理大型指令集。系统还有"自动记忆"功能:AI可以在对话过程中自己把重要信息写入记忆文件,供未来的会话使用。记忆检索不使用向量数据库或语义嵌入,而是用AI自身扫描记忆文件的标题来判断哪些文件与当前任务相关,最多调取五个文件。这种设计牺牲了检索的精确性,但保留了完全的透明性——用户可以直接读取、编辑甚至用Git管理所有记忆文件。

    九、拆分任务、各自为营:子代理系统

    当一个任务足够复杂,需要同时探索多个方向时,Claude Code可以派出"子代理"——就像一个项目经理把不同模块的开发任务分配给不同的程序员,每个人在自己的工作区独立操作,最后把结果汇总。

    子代理通过一个叫`AgentTool`的工具派发,系统内置了最多六种类型的子代理:专门做只读调查的"探索型"、制定计划的"规划型"、通用的"通用型"、帮你熟悉项目的"引导型"、运行测试和检查的"验证型",以及配置终端状态栏的"状态栏设置型"。此外,用户还可以通过`.claude/agents/`目录里的Markdown文件定义完全自定义的子代理,每个子代理可以有自己专属的工具集、模型选择、权限模式、钩子、记忆范围、隔离模式等,本质上是一个配置完整的微型AI系统。

    子代理的隔离有三种模式。"工作树模式"会为子代理创建一个独立的Git工作树副本,子代理的所有修改不会影响主代理的工作区,完成后再合并。"远程模式"(仅内部用户可用)在远程环境中运行,始终在后台执行。"进程内模式"(默认)与主代理共享文件系统,但拥有完全独立的对话上下文。

    在权限继承方面,系统有一套精心设计的规则:子代理可以设置自己的权限模式,但如果主代理已经处于"绕过权限"或"自动"等高自主性模式下,子代理的权限设置会被覆盖,因为这些模式代表了用户的明确决定。对于后台运行的异步子代理,在显示用户确认对话框之前,会先等待自动检查(分类器和钩子)完成。

    每个子代理都有自己的独立对话记录文件(JSONL格式),这些文件不会合并到主代理的记录里,防止子代理的大量交互内容撑爆主代理的上下文。子代理完成任务后,只把文字摘要和元数据返回给父代理,完整的对话历史留在各自的记录文件里,方便调试和审计但不占主上下文的空间。

    多代理协作模式下,代理之间的任务协调使用文件锁机制,而不是消息队列或分布式协调服务。任务列表存放在共享文件里,每个代理通过锁文件机制互斥地认领任务。这个设计听起来有点"土",但有两个明显优点:部署时不需要任何外部基础设施,而且任何代理的状态都可以通过直接读取JSON文件来检查,极易调试。

    十、历史的存档:会话持久化与恢复

    一次AI辅助的编程任务可能持续数小时,中间会涉及大量的工具调用、文件修改和决策过程。这些历史如何保存?如果中途断掉了怎么办?

    Claude Code使用的是"追加优先"的JSONL文件作为会话记录。每条消息、每个工具调用结果、每个压缩边界标记,都按时间顺序逐行追加到文件末尾,原则上不修改已写入的内容(清理性重写是明确的例外)。文件存放在项目特定的路径下,文件名是会话ID。

    系统维护了三个相互独立的持久化通道。第一个是会话记录(Session Transcript):完整的对话历史,包括用户消息、AI回复、工具调用、工具结果、压缩边界标记、文件快照、归因快照等各种事件类型,按项目分文件存储。第二个是全局提示历史(Global Prompt History):只记录用户输入的提示词,存在一个统一的`history.jsonl`文件里,支持用上下箭头翻看历史输入。第三个是子代理旁链记录(Subagent Sidechain):每个子代理有自己独立的记录文件,不计入主会话。

    当用户使用`--resume`参数恢复上一次会话时,系统会重放记录文件来重建对话状态。但有一个刻意的设计决策:上次会话中用户授予的权限不会被恢复,每次重启都需要重新获得权限。这看起来有点麻烦,但背后逻辑是:情境可能已经变化了,上次批准的操作在新情境下不一定安全,所以宁愿让用户重新确认一次,也不要悄悄带入可能已经过时的信任决定。

    会话还支持"分支"操作(Fork):从某个历史节点创建一个新的会话分支,就像Git的分支一样,让你可以在不破坏原有历史的情况下探索另一条路径。压缩边界被精心设计成"可重建"的:即使历史被压缩成摘要,原始的完整历史也保留在记录文件里,通过边界标记里的UUID信息可以在读取时重新链接。

    十一、镜子前的比较:Claude Code与OpenClaw的六维对比

    为了更好地说明设计选择如何受到应用场景的塑造,研究团队把Claude Code与OpenClaw进行了系统对比。OpenClaw是一个多通道个人助理网关,能同时连接WhatsApp、Telegram、Slack、Discord等二十余个消息平台,并在本地运行一个持久化的WebSocket服务器。

    两者最根本的区别在于"系统定位"。Claude Code是一个绑定到单个项目目录的临时性命令行进程,每次会话随终端开关而生灭。OpenClaw则是一个永远在线的守护进程,是整个多通道助理系统的"控制平面",代理循环只是这个控制平面里的一个内嵌组件。这个根本差异决定了以下所有设计选择的方向。

    在安全模型上,两者采取了截然不同的策略。Claude Code把信任边界划在模型与执行环境之间:每一个工具调用都经过逐一审查,因为"不信任的AI在受信任的机器上运行"。OpenClaw把信任边界划在网关入口处:谁能连接到这个网关、谁能给AI发消息,通过配对码和发件人白名单来管控。一旦通过了入口审查,系统内部相对信任。沙盒在OpenClaw里是可选功能,支持Docker、SSH等后端,并非默认开启。

    在扩展架构上,Claude Code的四种机制(MCP、插件、技能、钩子)都是为了扩展单个代理的能力表面;OpenClaw的插件系统则通过一个中央注册表为整个网关注册能力,影响所有代理。OpenClaw也有独立的技能层和内置的MCP支持,但其核心定位是"扩展网关能力"而不是"扩展某个代理的上下文"。

    在记忆系统上,两者都采用文件透明的方式,但侧重点不同。Claude Code把更多精力放在五层渐进式压缩管道上,优化有限上下文的利用效率。OpenClaw则更注重长期记忆的结构化管理:有专门的MEMORY.md存储持久事实,有按日期命名的日记笔记,甚至有一个实验性的"做梦"系统——在空闲时间后台整理记忆、评分筛选、把值得保留的短期记忆升级为长期记忆。当配置了嵌入向量提供商时,OpenClaw的记忆检索可以使用向量相似度加关键词的混合检索,比Claude Code的LLM头部扫描更精准。

    在多代理架构上,两者处理了完全不同的问题。Claude Code的多代理是"任务委派":父代理派子代理完成特定子任务,子代理汇报结果。OpenClaw的多代理解决的是"多租户路由":同一个网关可以托管多个完全独立的代理实例,每个代理有自己的身份、工作区、会话历史和模型配置,通过绑定规则被路由到不同的消息渠道或发件人。

    更有趣的是,这两个系统并非只是替代关系,而是可以叠加:OpenClaw可以通过其ACP(代理客户端协议)把Claude Code作为一个外部编程助手接入自己的体系,成为OpenClaw控制平面上的一个工具。这揭示了一个重要的架构趋势:AI代理系统可能形成层次化结构,网关级系统与任务级助手可以组合嵌套。

    十二、几个尚未解决的开放问题

    研究团队最后列出了六个未来值得深入探索的方向,每一个都直指当前架构的某个边界或盲区。

    第一个问题是"无声失败与可观察性"。有研究估计,已部署AI代理中约78%的失败是"不可见的"——系统正常运行,没有报错,但产出了错误或次优的结果。Claude Code的记录系统让操作过程可以被观察,但评估层(主动检验结果是否真的对)尚未内置。是否应该在当前27种钩子事件旁边增加评估类钩子,让开发者可以插入自动化的质量检验?这是一个架构层面的开放问题。

    第二个问题是"跨会话持久化与长期协作关系"。当前的记忆系统在两个极端之间:一端是无状态的对话,一端是静态的CLAUDE.md指令文件。中间缺少一层"积累型知识"——那些从过去的协作经历中学到的、应该自动沉淀下来的经验和策略。如何建立这样一层,同时保持CLAUDE.md的文件透明性?会话恢复时不恢复权限的设计如何与这样的积累层共存?

    第三个问题是"工具执行框架的边界演化"。随着模型能力不断提升,AI能执行的任务类型也在扩展:从文本代码扩展到视觉界面操作,从单机任务扩展到跨机器协作,从被动响应扩展到主动提出建议甚至在后台持续运行。系统框架是否需要根本性地重构来适应这些扩展?还是当前架构已经足够灵活?

    第四个问题是"任务时域的扩展"。Claude Code目前的基本单位是单次会话,支持到会话续接。但如果任务的时间跨度是数天、数周甚至更长,需要在多个会话之间协调进展、维护一致性,当前的架构能否支撑?自主科学研究、长期软件项目维护这类应用场景正在对这个边界发出挑战。

    第五个问题是"治理与监管合规"。随着AI代理系统越来越强大,监管要求正在成形。欧盟AI法案于2026年8月全面生效,对AI系统的日志、透明度和人类监督提出了具体要求。当前的会话记录系统满足了内部审计需求,但是否满足外部监管机构的审计需求?"价值观优先于规则"的设计原则是否与监管要求的明确规则表达兼容?

    第六个也是最深刻的问题:使用AI助手会不会让人越来越不会思考?一个随机对照实验发现,AI工具让有经验的开发者慢了19%——尽管他们自己感觉快了20%。另一项对807个代码库的因果分析发现,使用AI辅助工具后代码复杂度上升了40.7%,而且初期的效率提升在三个月内就归零了,上升的复杂度反而成为了未来开发的负担。还有一项脑电图研究发现,长期使用LLM助手的人,在停止使用AI后神经连接度依然低于对照组。这些数据提示,短期能力放大可能与长期能力保护之间存在真实的张力,而当前的Claude Code架构并没有内置任何机制来主动解决这个矛盾。

    说到底,这篇研究做了一件相当有价值的事:它把一个已经被数百万人使用、但内部运作从未被公开描述过的系统,用清晰的建筑图纸表达出来。Claude Code不是一个神秘的黑盒,而是一套有清晰设计哲学、有精心权衡的架构决策、有具体代码实现可以对应的工程作品。

    这套架构的核心思路可以用一句话概括:把98%的代码用于"创造让AI发挥好的环境",只用2%的代码"约束AI怎么做决定"。这是对AI工具本质的一种清醒认识——越来越强大的模型不需要越来越复杂的脚手架来限制它,而是需要越来越可靠的基础设施来支持它。

    当然,这个判断是否正确,是否在AI能力继续提升后依然成立,是否能在跨越更长时间跨度的任务中保持有效,是否能在引入更多子代理并行协作时不产生全局不一致的问题——这些都是悬而未决的问题,等待着未来的研究和实践来回答。

    归根结底,Claude Code的故事提醒我们:当AI真正开始"干活"的时候,你需要思考的不只是AI有多聪明,而是围绕着这个聪明的AI,那些默默维护秩序、保护安全、管理记忆、确保可靠的"脚手架"——究竟有多扎实。

    有兴趣深入探讨原始研究的读者,可通过arXiv编号2604.14228在arXiv平台查阅完整论文。

    Q&A

    Q1:Claude Code的权限系统有几层保护,每层分别起什么作用?

    A:Claude Code的权限系统共有七层独立防护。第一层是工具预过滤,在AI看到工具列表之前就把禁止的工具移除。第二层是拒绝优先规则,拒绝规则永远优先于允许规则。第三层是七种权限模式,从"什么都要批准"到"几乎不打扰"形成梯度。第四层是机器学习分类器,在自动模式下判断请求是否安全。第五层是命令行沙盒,对文件和网络访问做额外隔离。第六层是恢复时不还原权限,每次重启都必须重新授权。第七层是钩子拦截,外部代码可以在工具执行前后介入。

    Q2:Claude Code的上下文压缩是怎么工作的?

    A:Claude Code的上下文压缩分五步依次进行,从轻量到重量逐步升级。第一步是预算削减,对每条工具结果设定大小上限,超出部分用引用替代。第二步是裁剪压缩,去掉较老的历史片段。第三步是微型压缩,结合提示词缓存机制做细粒度处理。第四步是上下文折叠,不修改原始历史,只在读取时生成虚拟的简化视图。第五步是自动压缩,调用模型生成整段对话的语义摘要,是最后手段。只有前一步不够用时才启动下一步。

    Q3:Claude Code和OpenClaw在安全设计上有什么本质区别?

    A:两者的信任边界位置完全不同。Claude Code把信任边界划在AI模型与执行环境之间,对每个工具调用逐一审查,因为AI被视为潜在的不可信组件。OpenClaw把信任边界划在系统入口,通过配对码和发件人白名单控制谁能连接网关,一旦通过了入口审查,系统内部相对信任。简单说,Claude Code是"在城墙内部每扇门都设关卡",OpenClaw是"只守城门,城内自由行动"。两种策略各有适用场景,取决于你更担心哪种威胁。

    【纠错】【责任编辑:陪库里下山】