News

揭秘Claude CLI源码:深入剖析Anthropic大型AI Agent产品设计

揭秘Claude CLI源码:深入剖析Anthropic大型AI Agent产品设计

近期,Anthropic公司Claude Code CLI工具的实现细节因其npm包中残留的Source Map而得以被部分重构并广为流传。尽管这并非Anthropic官方开源发布,但对这些重构代码的分析,揭示了其独特的设计特征。

首先令人惊讶的是其庞大的代码库规模。在一个已重构的副本中,约有1,900个文件,代码行数高达51万行。这远非一个简单的单用途CLI工具,而是一个集终端UI、工具执行、安全控制、IDE集成、内存管理和扩展机制于一体的大型产品级代码库。

从技术层面看,该项目以TypeScript为中心,运行时采用Bun,终端UI则基于React/Ink风格的栈。这表明它更像是一个“以AI体验为核心的、扎实的TypeScript产品”,而非“在小CLI基础上简单叠加AI功能”。

在提示词(Prompt)构建方面,重构代码揭示了一个令人意外的发现:系统指令层中相当大一部分位于客户端代码中,然后运行时上下文会被注入其中。这些运行时上下文包括当前日期、Git状态、最新提交、Git用户信息以及本地指令文件的内容。在此基础上,额外的指令和与内存相关的文本被组合成接近最终的系统提示词。

这尤其有趣,因为它与“真正的提示词必须在服务器端以黑盒方式组装”的直观假设并不完全相符。虽然这并不能排除服务器端存在额外的处理,但它明确显示,相当一部分提示词逻辑确实存在于客户端。

在工具设计方面,另一个引人注目的特点是它明确区分了模型可见的工具层和管理执行权限的独立层。尽管系统功能丰富,但常规暴露的工具与内部工具、通过功能标志(feature flags)控制的工具或有条件启用的工具之间存在清晰的界限。

↗ 阅读原文