Claude Code 黑箱揭秘

一次拆解 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 光片一样观察它的内部运作。

我是怎么做的?

工具的原理很简单:

  1. 找到全局安装的 @anthropic-ai/claude-code
  2. 修改它的 cli.js,Hook 住 this.beta.messages.create() 方法
  3. 把所有请求和响应记录到日志
  4. 用一个 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...

欢迎大家交流学习,如果你有新的发现或者改进点,欢迎一起讨论。

相关推荐
吃饺子不吃馅15 小时前
[开源] 从零到一打造在线 PPT 编辑器:React + Zustand + Zundo
前端·svg·图形学
鬼火儿15 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
cr7xin16 小时前
缓存三大问题及解决方案
redis·后端·缓存
小马哥编程16 小时前
【软考架构】案例分析-Web应用设计(应用服务器概念)
前端·架构
鱼与宇16 小时前
苍穹外卖-VUE
前端·javascript·vue.js
啃火龙果的兔子16 小时前
前端直接渲染Markdown
前端
z-robot16 小时前
Nginx 配置代理
前端
用户479492835691516 小时前
Safari 中文输入法的诡异 Bug:为什么输入 @ 会变成 @@? ## 开头 做 @ 提及功能的时候,测试同学用 Safari 测出了个奇怪的问题
前端·javascript·浏览器
没有故事、有酒16 小时前
Ajax介绍
前端·ajax·okhttp
朝新_16 小时前
【SpringMVC】详解用户登录前后端交互流程:AJAX 异步通信与 Session 机制实战
前端·笔记·spring·ajax·交互·javaee