今年三月份发生了一件挺有意思的事——Anthropic的Claude Code,大概51万行源码,就这么泄露到公网上了。原因说起来还挺低级的,就是有个开发人员往NPM上发包的时候,不小心把Source Map文件给带上了。
对,这个事情其实在DevOps领域不算罕见。Source Map本来是用来调试的,它能把编译压缩后的代码映射回原始源码。正常发布的时候,你得在配置文件里把它排除掉。结果Anthropic这边没配好,这个Map文件直接指向了他们Cloudflare R2存储桶里的原始TypeScript代码。就相当于你把家门钥匙挂在了门把手上。
哈哈,这个比喻很形象。不过说实话,虽然是安全事故,但对开发者社区来说反而是个意外的礼物。1902个源码文件,51万行代码,这可是目前最成功的AI编程助手之一的核心实现啊。
确实。而且GitHub上已经有人做了系统性的梳理,目录结构、核心机制、架构亮点都整理出来了。我看完之后有两个发现特别让我意外。
哪两个?
第一个,Claude Code的核心语言是TypeScript,不是Python。很多人下意识会觉得AI相关的东西肯定是Python写的嘛,毕竟PyTorch、TensorFlow那些框架都在Python生态里。但你仔细想想,Claude Code它不是做模型训练的,它是一个命令行工具加IDE插件。VS Code本身就是TypeScript和Electron搭的,扩展API也全是TypeScript生态,所以用TypeScript其实是顺理成章的。
嗯,这么一说确实合理。而且TypeScript的强类型系统在处理LLM返回的那些复杂JSON结构时应该更安全,不容易出幺蛾子。
没错,还有Node.js的异步I/O模型,你想啊,Claude Code要同时处理用户输入、文件监听、API调用这些并发任务,非阻塞模型天然就有优势。所以这个技术选型其实挺讲究的。
好,那第二个发现呢?
第二个更重要——Claude Code之所以这么好用,核心在于它采用了一套叫Harness的架构。这个词直译是'线束'或者'驾驭',借鉴了汽车和航空工业里线束的概念。你知道汽车里那一大堆电线吧?线束就是把它们组织成有序的束状系统,确保复杂电气系统可靠运行。在AI Agent这个语境下,Harness的意思就是——LLM是一个强大但需要被驾驭的引擎。
你看这个思路就很Anthropic。他们一直强调AI安全,深知LLM的输出有内在的不确定性。所以与其祈祷模型每次都给出完美答案,不如工程化地给它套上一套安全带。
对,说得特别准确。Harness架构不是简单地封装一下API调用,它更关注的是运行时的控制和治理——不光要解决'怎么调模型',还要解决'怎么确保模型在复杂任务中持续可靠地工作'。整套架构包含七个核心机制。
七个,挺多的。咱们一个一个来聊?
好。第一个是上下文管理。这个其实是LLM最根本的限制之一。即使Claude支持200K token的上下文窗口,面对一个中等规模的项目——动辄几十万行代码——还是远远不够。所以Claude Code需要智能地挑选跟当前任务最相关的代码片段,而不是把所有文件一股脑塞进去。这里面涉及到RAG检索增强、滑动窗口策略、上下文蒸馏这些技术,直接决定了任务完成质量和token消耗成本。
嗯,这就像一个优秀的程序员,他不会把整个代码库都装进脑子里,而是知道什么时候该看哪个文件。
很好的类比。第二个是工具调用编排。这是AI Agent区别于传统聊天机器人的核心能力。Claude Code能读写文件、执行终端命令、搜索代码、操作Git,这些都是工具。编排层要决定什么时候调哪个工具、传什么参数、怎么处理返回结果,还得处理并发、超时、重试这些运维问题。第三个是状态追踪,维护复杂任务的执行状态。第四个是错误恢复,处理各种异常情况。
等一下,我想在权限控制这块多聊两句,因为这个对用户来说特别直观。
你说的对,权限控制是第五个机制,也是我觉得最能体现Anthropic安全基因的地方。比如说Agent要执行rm -rf这种危险命令,必须先让用户确认;写文件之前要检查权限边界,确保不会越权操作文件系统。你想想,一个能直接操作你电脑的AI助手,如果没有这层控制,那后果是很可怕的。
确实,这就是'能力越大责任越大'在工程层面的体现。剩下两个呢?
第六个是输出解析,从LLM的输出中可靠地提取结构化信息。第七个是流程编排,把多步骤任务组织成连贯的执行流。这七个机制相互配合,形成了一个完整的Agent运行时环境,从简单的代码补全到复杂的项目重构都能搞定。
我觉得特别值得注意的是Harness架构的设计哲学——模块化、可观测、容错、可扩展。每个机制独立运作,可以单独优化和替换,系统状态透明便于调试。这不就是传统软件工程里那些经典原则在AI时代的延续吗?
其实你提到了一个特别关键的点。很多人做AI Agent的时候,思路还停留在'怎么让模型更聪明'上,但Claude Code告诉我们,工程化的驾驭能力可能比模型本身的能力更重要。
说到这儿我想问一下,跟市面上其他Agent框架比,比如LangChain、AutoGen,Harness架构有什么本质区别?
区别挺大的。LangChain主打的是丰富的集成生态和快速原型开发,但社区也批评它过度抽象、API变来变去。AutoGen是微软做的多Agent协作框架,让多个AI角色互相对话来完成任务。而Claude Code的Harness架构走的是完全不同的路——它专注于单Agent的深度优化。不追求多Agent协作的花哨,而是让一个Agent在编程场景中做到极致的可靠和高效。
这背后其实反映了一个行业认知——在当前阶段,一个精心调教的单Agent系统,往往比松散协作的多Agent系统更实用、更稳定。
没错。所以我建议想深入学习的开发者,先去看GitHub上的源码解析总结建立整体认知,然后重点理解这七大机制的设计意图和交互方式,再试着在自己的项目里实现一个简化版的Harness架构。最后再跟LangChain、AutoGen做对比,理解不同方案背后的取舍逻辑。
嗯,虽然这次泄露是个安全事故,但客观上确实给AI Agent工程化领域提供了一份极其珍贵的参考材料。Harness架构展示的核心思路——用工程化手段驾驭不确定的LLM——我觉得这个思路的价值,可能比任何单个技术细节都要大。对于正在构建AI Agent的开发者来说,这51万行代码里藏着的不只是实现细节,更是一种做产品的思维方式。