一次拆解 Claude Code 的实验:如何看懂它的运作机制?
最近,Claude Code 在程序员圈子里可谓是大火。
它几乎以一己之力,把「命令行里的 AI 编程助手」这个概念推向了高潮:
- 不用打开 VS Code,也不用开网页,你只要在 CLI 里打一行命令,它就能理解上下文,直接生成大段可运行的代码。
- 不仅能帮写,还能调试、执行、解释,就像一个随时待命的"AI 结对程序员"。
- 在交互体验上,它甚至比 GitHub Copilot CLI 或 OpenAI 出的一些实验性工具要更"超前",让人第一次有了"AI 真正接管命令行"的感觉。
但问题也随之而来:
👉 Claude Code 究竟是如何做到的?
- 它的 上下文压缩 是怎么做的,才能在有限的 token 内理解我们整个项目结构?
- 它的 工具调用机制 又是怎么实现的?到底有哪些内置的工具?是通过 JSON schema 还是其他协议?
- 它在背后调用模型时,prompt 是如何写的,能让大模型既听懂人话,又能正确执行系统命令?
这些问题,官方几乎没有透露太多细节。于是,Claude Code 成了一个"黑箱"------大家都在用,都觉得很强,但很少有人真的搞清楚它的内部逻辑。
带着这些疑问,我写了一个小工具 ------ claude-code-proxy, 它可以劫持 Claude Code 的 API 调用,把整个过程「可视化」出来,让我们像看 X 光片一样观察它的内部运作。
我是怎么做的?
工具的原理很简单:
- 找到全局安装的
@anthropic-ai/claude-code
包 - 修改它的
cli.js
,Hook 住this.beta.messages.create()
方法 - 把所有请求和响应记录到日志
- 用一个 Web 界面展示出来
效果就是: 你可以在浏览器里看到 Claude Code 的所有输入和输出,包括:
- 系统 prompt
- 用户输入
- 可用工具定义
- AI 的回复
- tool 调用详情
启动
命令非常简单:
bash
npm install -g claude-code-proxy
claude-code-proxy
运行之后会自动:
- 修改 Claude Code 的 CLI 文件
- 启动本地服务器 (http://localhost:3000)
- 自动打开一个 Web 界面
在界面里,你能直观地看到:
- Conversation 面板:完整的输入输出对话
- Global Tool Set:工具定义
- Guessed System Prompts:Claude 隐藏的系统提示
- Input / Output 面板:请求参数、响应内容、token 用量等
就像是给 Claude Code 接了一台「黑箱解剖机」。
授人以渔
在教会了大家怎么用以后,我更希望你们能亲自跑起来,真正去观察 Claude Code 的行为模式。
因为很多细节,只有在你自己抓到日志、对比不同场景下的输入输出后,才会真正「恍然大悟」:
- 上下文压缩:你会发现它并不是把所有文件都塞进去,而是做了"提取 + 摘要"的策略,这样才能在有限的 token 内保留关键信息。
- 工具调用:它的工具定义其实就是一组 JSON schema,你能清楚看到大模型是怎么通过 structured output 来触发系统调用的。
- 系统提示词:Claude 的隐藏 prompt 里,往往暗藏了对 Agent 行为的规范约束,理解这些提示能让你知道它为什么会「听话」。
这些部分就像「黑箱」的骨架和血肉,你不跑一跑日志是看不到的。
所以,这个工具本质上不是"教你怎么用 Claude Code",而是教你怎么拆解一个 AI Agent 的工作机制 。
等你亲手拆过一次,再去看其他的 AI 编程助手,就能更快看懂它们的设计思路。
项目地址
工具已经开源在 GitHub,感兴趣的朋友可以看看: 👉 github.com/shanhexi/cl...
欢迎大家交流学习,如果你有新的发现或者改进点,欢迎一起讨论。