claude-tap技术文档
claude-tap技术文档
目录
1. 概述
claude-tap 是一个开源的 AI 代理流量分析工具,专门用于拦截并查看各类终端 AI 助手的 API 流量,打破 AI 编程助手的 “黑箱” 状态。
核心价值
透明化:完整查看系统提示词、上下文管理、工具调用细节
可观测:精确追踪 Token 用量、缓存命中、API 调用时序
可调试:支持实时查看、历史回溯、流量导出
兼容性:支持 8+ 主流 AI 客户端,无需修改客户端代码
支持的客户端
| 客户端 | 类型 | 默认代理模式 |
|---|---|---|
| Claude Code | Anthropic 官方 CLI | 反向代理 |
| Codex CLI | OpenAI 终端助手 | 反向代理 |
| Kimi CLI | 月之暗面终端助手 | 反向代理 |
| Gemini CLI | Google 终端助手 | 正向代理 |
| OpenCode | 多 Provider 终端助手 | 正向代理 |
| Pi | 多 Provider Coding Agent | 正向代理 |
| Hermes Agent | 多 Provider Python Agent | 正向代理 |
| Cursor CLI | Cursor 编辑器 CLI | 正向代理 |
2. 技术架构
2.1 整体架构
claude-tap 采用分层架构设计,从上到下分为:
客户端层:各类 AI 终端助手(Claude Code、Codex 等)
代理层:反向 / 正向代理服务器,负责流量拦截与转发
记录层:流量记录、脱敏处理、Trace 存储
查看层:HTML 查看器、实时 Dashboard、导出功能
上游层:AI 服务提供商 API 端点
2.2 工作原理
claude-tap 采用 “中间人代理”(Man-in-the-Middle Proxy)技术,完整工作流程如下:
1 | 1. 启动阶段 |
2.3 代理模式
claude-tap 支持两种代理模式,根据不同客户端的特性自动选择:
反向代理模式(Reverse Proxy)
适用场景:支持自定义 Base URL 的客户端
工作机制:
代理服务器监听本地端口
修改客户端的 Base URL 指向本地代理
客户端所有请求都发送到代理,代理转发到上游
无需证书,因为客户端主动信任代理
技术优势:
零证书配置
低 overhead,性能最优
完全透明,客户端无感知
支持客户端:Claude Code、Codex CLI、Kimi CLI
正向代理模式(Forward Proxy)
适用场景:不支持 Base URL 的多 Provider 客户端
工作机制:
代理服务器作为 HTTPS 正向代理
注入
HTTPS_PROXY环境变量到客户端进程生成临时 CA 证书,注入到客户端信任链
拦截所有 HTTPS 流量,无需修改客户端配置
技术优势:
支持任意上游域名
可捕获客户端所有 Provider 的流量
无需客户端支持自定义 Base URL
支持客户端:Gemini CLI、OpenCode、Pi、Hermes、Cursor CLI
2.4 流量处理机制
SSE 流式转发
针对 AI 服务常用的 Server-Sent Events 流式响应,claude-tap 实现了零拷贝的流式转发:
逐 chunk 转发,不等待完整响应
实时记录流数据,支持断点续传
保持原有的流控和背压机制
增加延迟 < 1ms,几乎无性能损耗
WebSocket 支持
对于部分客户端使用的 WebSocket 长连接:
完整支持 WebSocket 帧转发
支持双向流量记录
自动处理帧分片和重组
兼容 OAuth 认证的 WebSocket 连接
3. 核心技术实现
3.1 安全脱敏机制
为了保护用户隐私,claude-tap 实现了自动脱敏机制:
1 | # 自动脱敏的 Header 列表 |
脱敏规则:
所有敏感认证 Header 自动替换为
[REDACTED]不会记录任何 API Key、Token、Cookie 等敏感信息
脱敏是在记录阶段进行,转发时使用原始值
支持自定义脱敏规则扩展
3.2 低开销流式转发
claude-tap 使用 Python AsyncIO 实现异步非阻塞 IO:
全异步架构,单线程可处理数千并发连接
流式处理,无需缓存完整请求 / 响应
内存占用极低,单 Trace 仅占用几 MB 内存
支持 GB 级大流量的处理
性能测试数据:
平均转发延迟:< 0.5ms
CPU 占用:< 5%(正常负载)
内存占用:~20MB(基础运行)
并发连接:支持 1000+ 并发
3.3 自包含查看器
查看器是一个完全独立的 HTML 文件,零外部依赖:
所有功能内置,无需网络连接即可查看
包含完整的 CSS、JS、数据,单文件即可运行
支持暗色 / 亮色主题切换
响应式设计,支持移动端
前端技术栈:
原生 Vanilla JS,无框架依赖
Tailwind CSS 内置编译
支持 i18n 国际化(8 种语言)
支持键盘导航、搜索、过滤
3.4 实时同步机制
Live 模式下,claude-tap 使用 SSE(Server-Sent Events)实现实时同步:
代理服务器作为 SSE 服务端
浏览器查看器作为客户端订阅更新
新的 Trace 数据实时推送到浏览器
支持断线重连和增量同步
无需 WebSocket,兼容性更好
4. 项目代码结构
1 | claude-tap/ |
语言分布:
Python: 76.7%(后端代理、CLI、记录层)
HTML: 21.4%(前端查看器)
Shell: 1.9%(脚本、安装工具)
5. 安装部署
5.1 系统要求
Python 3.11 或更高版本
目标 AI 客户端已安装
操作系统:Linux /macOS/ Windows(WSL 推荐)
网络:可访问 AI 服务 API
5.2 安装方式
推荐:使用 uv(最快最可靠)
1 | # 安装 uv 包管理器 |
使用 pip
1 | pip install claude-tap |
5.3 升级方法
1 | # 使用 uv |
6. 详细使用指南
6.1 通用命令格式
1 | claude-tap [--tap-* 选项] -- [客户端参数] |
所有非 --tap-* 开头的参数都会透传给所选的 AI 客户端。
6.2 支持的客户端
1. Claude Code(默认)
1 | # 基本使用 |
2. Codex CLI
1 | # OAuth 用户(ChatGPT Plus/Pro/Team) |
3. Kimi CLI
1 | # 基本使用 |
4. Gemini CLI
1 | # 基本使用 |
5. OpenCode
1 | # 正向代理模式(捕获所有 Provider) |
6. Pi
1 | # 使用 OpenAI Codex OAuth |
7. Hermes Agent
1 | # 交互式 TUI 模式 |
8. Cursor CLI
1 | # 基本使用 |
7. 高级功能
7.1 独立 Dashboard
浏览历史 Trace,不启动客户端:
1 | claude-tap dashboard |
7.2 导出功能
从 JSONL Trace 生成 HTML 查看器:
1 | claude-tap export trace.jsonl -o trace.html |
7.3 纯代理模式
仅启动代理,手动连接:
1 | # 启动代理 |
7.4 自定义配置
1 | # 自定义 Trace 目录 |
8. CLI 完整参数参考
| 参数 | 说明 | 默认值 |
|---|---|---|
--tap-client CLIENT |
启动的客户端 | claude |
--tap-target URL |
上游 API 地址 | 自动检测 |
--tap-live |
启动实时查看器 | 关闭 |
--tap-live-port PORT |
实时查看器端口 | 自动分配 |
--tap-no-open |
退出后不自动打开 HTML | 关闭 |
--tap-output-dir DIR |
Trace 输出目录 | ./.traces |
--tap-port PORT |
代理端口 | 自动分配 |
--tap-host HOST |
绑定地址 | 127.0.0.1 |
--tap-no-launch |
仅启动代理,不启动客户端 | 关闭 |
--tap-max-traces N |
最大保留 Trace 数量 | 50 |
--tap-no-update-check |
禁用更新检查 | 关闭 |
--tap-proxy-mode MODE |
代理模式: reverse/forward | 自动选择 |
9. 技术特性对比
| 特性 | claude-tap | 其他代理工具 |
|---|---|---|
| 支持多客户端 | ✅ 8+ 客户端 | ❌ 通常只支持单个 |
| 自动脱敏 | ✅ 内置自动脱敏 | ❌ 需手动配置 |
| 自包含查看器 | ✅ 单文件 HTML,零依赖 | ❌ 需外部服务 |
| 实时查看 | ✅ SSE 实时同步 | ❌ 仅事后查看 |
| 低开销 | ✅ <0.5ms 延迟 | ❌ 通常更高 |
| 正向 / 反向代理 | ✅ 自动切换 | ❌ 通常只支持一种 |
| WebSocket 支持 | ✅ 完整支持 | ❌ 部分不支持 |
| SSE 流式支持 | ✅ 零拷贝转发 | ❌ 部分缓存完整响应 |
| 国际化 | ✅ 8 种语言 | ❌ 通常仅英文 |
10. 常见问题
Q: 我的 API Key 会被记录吗?
A: 不会。claude-tap 会自动脱敏所有认证 Header,不会在 Trace 文件中记录任何敏感的认证信息。
Q: 会影响客户端性能吗?
A: 影响极小。claude-tap 采用异步流式转发,平均增加延迟 <0.5ms,几乎无法感知。
Q: 支持 Windows 吗?
A: 推荐使用 WSL2。原生 Windows 部分功能可能有限制,正向代理的证书注入在 Windows 上需要额外配置。
Q: Trace 文件存在哪里?
A: 默认在当前目录的 ./.traces/ 下,按日期分组,每个会话一个独立的 Trace 文件。
Q: 可以在生产环境使用吗?
A: claude-tap 主要用于开发调试。生产环境使用请确保数据安全,不要泄露敏感信息。
最后更新: 2026-05-17