本地 wire 级可观测性

看清 Claude Code
实际发送的
wire 内容。

Claude Code 展示的是它自己的会话视图。CC Wire Analyzer 录制尚未被它事后加工的完整 HTTP 请求与响应:系统提示词、工具定义、隐藏调用、SSE 时序、上游错误和精确 Token 用量。

  • Windows + macOS
  • 无需 Python
  • 无遥测
  • 代码 MIT
实时请求 · wire 视图
POST /v1/messages req_7f3a · 4.5s
  • system提示词分块 · 水印原样保留
  • tools[77]名称 · 描述 · JSON Schema
  • messages[24]主线 · 子代理 · 工具结果
  • usage45k 输入 · 800 输出 · 44k 缓存
SSE message_start → content_block_delta → message_delta → message_stop
凭据头脱敏 · 正文原样录制
CC Wire Analyzer 捕获列表,显示 Claude Code 请求、模型、延迟、Token 与失败调用
真实捕获列表——请求、隐藏分类器、延迟、失败和 Token 都在同一处。 深色专业主题 · 录制只留在本机

缺失的那一层

记录穿过边界的事实,不在事后重建一个近似版本。

wire 是 Claude Code 与模型真实对话存在的地方。录一次后,你可以在 GUI 里看,也可以让另一个 agent 通过同一套 HTTP API 自己查询。

system[]

实际发送的提示词

查看完整 system prompt、注入的 reminder,以及标题生成、上下文压缩和安全审查提示词。

tools[77]

工具与子代理

检查每份工具 Schema、派生子代理的 prompt,以及随后发生的整条请求链。

event: delta

SSE 与上游错误

沿流式时序查看每个事件,并读到 Claude Code 自己的会话视图没有展示的失败。

GET /api/*

agent 可读的证据

GUI 与开放的本地 HTTP API 共享同一真源,agent 可以自行搜索、交叉分析和诊断。

CC 没展示的一次失败

会话标题悄无声息地停止生成。

界面没有任何错误,但失败的辅助请求仍然存在于 wire 上,而且已经带着上游给出的诊断。

一次录制 → 一次 agent 查询 → 找到根因
wire 诊断
GET /api/diagnose/errors

output_config.effort 'max' is not supported
when thinking is disabled on this model.

settings.json      effortLevel: low
environment        CLAUDE_CODE_EFFORT_LEVEL: max

根因:环境变量胜出 → 请求参数互相矛盾

三种互补视图

Wire、JSONL 与 OTLP 回答的是不同问题。

CC Wire Analyzer 不取代 Claude Code 日志或遥测。它补上两者都无法表达的一层:与上游端点之间未经加工的原始交互。

WIRE
原始 HTTP

实际发送的提示词、Header、Body、SSE 分块、上游错误与原始用量。

JSONL
Claude Code 视图

会话结构、本地元数据,以及被 Claude Code 处理后的对话。

OTLP
聚合指标

跨会话的延迟、成本、Token 与运行指标。

从设计上保持本地

一个流量分析器应该把自己碰了什么说清楚。

请求仍然发往 Claude Code 原本就在使用的上游。应用只在本机录制、脱敏凭据 Header,并只改一个设置字段把流量导向自己。

录制只留在你的机器

纯 JSONL 写入 ~/.cc-wire-analyzer/,没有账号、云存储和遥测。

只改一个路由字段

只 patch ANTHROPIC_BASE_URL,停止或退出时从备份恢复。

凭据会脱敏

Authorization 等 Header 不会原样保存;消息 Body 则保持原文,因为那正是需要检查的证据。

没有静默网络活动

可选 AI 分析与更新检查都只在你点击时运行,使用的端点也明确展示给你。

开源 · 本地 · 可检查

录一次会话,再问 wire 到底发生了什么。

下载 Windows 可执行文件或 macOS 应用,启动本地代理,之后照常使用 Claude Code。Release 构建无需 Python。