LLM 检查器
概述
LLM 检查器是一个本地中间人代理工具,专门用于监听、捕获和分析 AI 客户端与 LLM API 之间的网络通信。它就像一根"探针"插在你的 AI 应用和 API 服务之间,让你能清晰看到每个请求的完整面貌。
典型场景
- 调试 AI 应用:想知道你的 AI 客户端到底发了什么系统提示词?打开 LLM 检查器看看
- 对比不同客户端:同一个 API,不同客户端构造的请求体有什么区别?捕获对比一目了然
- 排查 API 通信问题:请求莫名其妙失败?检查器帮你还原请求头和请求体的真实面貌
- 学习 LLM API 协议:想了解流式响应的 SSE 格式长什么样?捕获一个实时流看看
核心功能
- 一键启动/停止的本地代理:配置端口和目标地址,点击启动即可开始捕获
- 实时请求记录:自动捕获每个经过代理的 HTTP 请求,按时间顺序排列
- 完整的请求/响应详情:展开任意记录查看完整的请求头、请求体、响应头和响应体
- 流式数据实时展示:支持 SSE(Server-Sent Events)流式响应,实时累积显示数据块
- 智能搜索与过滤:支持按关键词搜索 URL,按状态(处理中/已完成)过滤记录
- API Key 打码保护:复制请求信息时自动隐藏敏感 API Key,避免误泄露
- 请求头覆盖规则:可配置自定义的请求头覆盖规则,灵活修改转发时的请求头
- 活跃流计数:实时显示当前有多少个流式请求正在进行中
- 目标地址历史:历史输入的目标地址自动保存,下次使用自动补全
快速上手
三步完成第一次捕获
第一步:进入工具
在左侧工具列表中找到 LLM 检查器,点击进入。你将看到一个顶部配置面板 + 左右分栏记录列表的界面。
TODO: 截图 - LLM 检查器整体界面,标注配置面板、记录列表和详情区域
第二步:配置并启动
在顶部的配置面板中:
- 设置监听端口(默认
8999),确保端口未被其他服务占用 - 输入目标 API 地址,例如你要监听 OpenAI 的请求就填
https://api.openai.com - 点击 启动检查器 按钮
启动成功后,状态栏会显示绿色指示灯和运行中的代理地址(如 http://localhost:8999)。
TODO: 截图 - 配置面板填写好端口和地址,点击启动按钮后的状态
第三步:让 AI 客户端指向代理
回到你的 AI 客户端(比如 NextChat、Open WebUI 或你的自定义应用),修改 API 地址指向代理:
原地址:https://api.openai.com/v1/chat/completions
改为: http://localhost:8999/v1/chat/completions现在正常使用你的 AI 客户端,每一次请求都会先经过 LLM 检查器,所有通信内容都会被记录下来。
TODO: 截图 - 客户端配置代理地址的界面
查看捕获结果
配置面板下方分左右两栏:
- 左侧(记录列表):按时间倒序排列所有捕获的请求,每行显示方法(POST/GET 等)、URL 路径片段和当前状态(🟡 处理中 / ✅ 已完成)
- 右侧(记录详情):点击某条记录后,右侧展示该请求的完整信息,包括请求头、请求体、响应头、响应体
TODO: 截图 - 捕获到请求后,左侧列表和右侧详情的对应状态
功能详解
配置面板
配置面板位于界面顶部,包含所有控制选项。
端口与启动控制
| 控件 | 说明 |
|---|---|
| 端口输入框 | 设置本地监听端口,范围 1024-65535,服务运行中不可修改 |
| 启动/停止按钮 | 绿色启动、红色停止,点击切换检查器运行状态 |
| 清空记录 | 一键清空所有已捕获的记录,不影响检查器运行 |
目标地址
可输入任意 HTTP/HTTPS API 地址,如 https://api.openai.com、https://api.deepseek.com 等。输入框带有自动补全功能,会记住你之前输入的地址历史。
当检查器正在运行时,修改目标地址后需点击 更新地址 按钮使其生效——这在你想切换监听不同 API 服务时特别方便,无需停止再启动。
TODO: 截图 - 目标地址输入框的自动补全下拉
请求头设置
点击 请求头设置 按钮,打开请求头覆盖规则管理对话框。在这里你可以:
- 添加规则:指定要覆盖或新增的请求头键名(如
User-Agent)和值 - 启用/禁用规则:每条规则可独立开关,方便临时开启或关闭
- 自定义转发:某些 API 需要特殊请求头才能正常通信,用此功能即可灵活适配
TODO: 截图 - 请求头覆盖规则管理对话框
统计信息
配置面板中的统计栏显示三个关键指标:
| 指标 | 说明 |
|---|---|
| 总记录 | 检查器启动以来捕获的所有请求数 |
| 已完成 | 已收到完整响应的请求数 |
| 处理中 | 正在等待响应的请求数(通常为流式请求) |
TODO: 截图 - 统计信息区域
API Key 打码开关
勾选 复制时打码 API Key 后,在记录详情中复制请求体或响应体时,API Key 相关的字段值会被自动替换为 ***。推荐在需要分享或导出捕获内容时开启此功能。
记录列表
位于左下区域的记录列表展示所有捕获的请求记录。
搜索与过滤
列表顶部提供:
- 搜索框:输入关键词,实时过滤匹配 URL 的记录
- 状态筛选:下拉选择「全部」「处理中」「已完成」,快速定位特定状态的请求
TODO: 截图 - 搜索框和状态筛选下拉框
记录条目
每条记录显示:
- HTTP 方法(如
POST) - URL 路径(如
/v1/chat/completions) - 状态标识:🟡 表示请求已收到但响应尚未完成(流式请求正在传输中),✅ 表示请求已完成
- 时间戳:请求发起的时间
记录详情
点击某条记录后,右侧详情区域展示完整的请求/响应信息。
请求信息
| 区域 | 内容 |
|---|---|
| 请求头 | 逐行展示所有 HTTP 请求头,键值对形式 |
| 请求体 | 原始请求体内容,JSON 格式会保留原始缩进 |
| 请求大小 | 请求体的字节数 |
响应信息
| 区域 | 内容 |
|---|---|
| 状态码 | HTTP 状态码(如 200 OK) |
| 响应头 | 完整的响应头列表 |
| 响应体 | 完整的响应内容;如果是流式响应,会累积显示所有收到的数据块 |
| 响应大小 | 响应体的字节数 |
| 耗时 | 从请求发出到收到完整响应的耗时(毫秒) |
TODO: 截图 - 记录详情面板,标注请求头、请求体、响应头、响应体区域
流式响应实时展示
当捕获的是流式请求(SSE)时,详情面板中的响应体会实时更新——你可以看到内容逐段增加,就像在 AI 聊天界面中看到逐字输出一样。详情面板顶部还会显示该记录的活跃流状态。
高级用法
同时监听多个 API 服务
LLM 检查器在同一时间只能监听一个目标地址。如果你需要切换监听不同的 API 服务:
- 在配置面板修改目标地址
- 点击 更新地址 按钮
- 检查器会自动将后续请求转发到新地址,无需停止重启
这样你就可以在同一会话中连续捕获 OpenAI、Anthropic 和本地模型等多个服务。
对比不同客户端的请求差异
假设你想了解两个 AI 客户端对同一 API 的调用差异:
- 启动 LLM 检查器,目标地址设为目标 API
- 客户端 A 发送一条消息 → 捕获记录 #1
- 客户端 B 发送同样的消息 → 捕获记录 #2
- 在记录列表中分别点开两条记录,对比它们的请求体、请求头差异
💡 小提示:可以结合 API Key 打码 功能,在对比时屏蔽掉认证信息的干扰。
调试自定义工具的 API 调用
如果你正在开发一个调用 LLM API 的工具或应用:
- 在开发阶段将 API 地址指向 LLM 检查器
- 触发一次 API 调用
- 在检查器中查看完整的请求详情——确认请求头、请求体和 URL 是否正确
- 如果调用失败,查看响应体内的错误信息定位问题
请求头覆盖规则的实际应用
某些 LLM 服务商要求特定的请求头才能正常响应(如 Anthropic 需要 anthropic-version)。通过配置请求头覆盖规则,你可以:
- 补全缺失的头:客户端未发送但服务端要求的头
- 覆盖已有的头:修改客户端发出的某些请求头以满足特定需求
- 添加测试标记:在测试环境中添加自定义的跟踪头
记录管理与分析
当捕获了大量记录时:
- 使用 搜索框 按 URL 关键词快速定位特定请求
- 使用 状态筛选 只查看已完成或仍在处理中的请求
- 需要重新捕获时点击 清空记录,从干净状态开始
- 在详情面板中直接复制请求/响应内容到剪贴板,便于外部分析
常见问题
Q:启动检查器后,我的 AI 客户端连接失败,怎么办?
按以下步骤排查:
- 检查检查器状态指示灯是否为绿色——确认服务正在运行
- 确认你已在 AI 客户端中将 API 地址的域名部分替换为
http://localhost:8999 - 检查端口是否被其他程序占用——可以换一个端口(如
8998)试试 - 系统防火墙可能阻止了本地连接——检查防火墙规则是否允许本地端口通信
- 如果客户端要求 HTTPS 连接,而本地代理是 HTTP,需要更换支持 HTTPS 的客户端或使用其他调试方式
Q:为什么我捕获到的响应体是空的?
可能的原因:
- 流式请求尚未完成:如果记录状态是"处理中",说明流式传输还在进行中,等待传输完成即可看到完整响应体
- 请求本身无响应体:某些 HTTP 方法(如
DELETE)或特定 API 端点可能不返回响应体 - 响应体过大:检查器对请求/响应体大小有一定限制,超大响应可能被截断
Q:Stream(流式)模式下的实时数据怎么看?
LLM 检查器天然支持 SSE 流式响应。当你捕获到一个流式请求后:
- 记录列表中的该记录状态会保持"处理中",直到流结束
- 右侧详情面板的响应体会不断更新,实时追加新的数据块
- 流结束后记录状态变为"已完成",响应体为完整内容
- 配置面板中的 活跃流计数 会实时显示当前正在进行的流式请求数量
Q:打码 API Key 功能会影响已保存的记录吗?
不会。打码功能只在复制操作时生效,即当你从详情面板复制请求体或响应体内容时,API Key 相关的字段值会被替换为 ***。检查器界面中显示的原始内容不受影响,已保存的配置文件也不会被修改。
Q:检查器能捕获 HTTPS 流量吗?
LLM 检查器工作在应用层,它拦截的是你的 AI 客户端发出的 HTTP 请求,然后原样转发到目标 API 地址。由于你的客户端将请求发到了本地 HTTP 端口(http://localhost:8999),所以请求本身是明文 HTTP——但转发到目标 API 时仍然是 HTTPS。这种方式适合调试应用层协议内容,不适合也不用于解密别人的 HTTPS 流量。
Q:如何导出捕获的数据供其他人分析?
目前没有内置的导出功能。你可以:
- 在记录详情面板中手动复制请求/响应内容
- 开启 API Key 打码 保护敏感信息后再复制分享
- 后续版本可能会添加导出功能
Q:启动时提示"端口被占用"怎么办?
换一个端口号即可。常见被占用的端口有 8999、3000、8080 等,建议使用 9000 以上的端口,冲突概率较低。