我在调试 AI Coding Agent 时遇到的问题,以及如何做了一个本地可观测工具解决它

简介: ccglass 是一款开源本地代理+仪表盘工具,专为提升 AI 编程助手(如 Claude Code、Codex 等)的可观测性而设计。它通过拦截并记录 Agent 与大模型 API 的完整请求/响应(含 prompt、tool calls、tokens、cost、延迟等),提供实时可视化分析,所有数据仅存本地,无需联网或注册。

最近一段时间,我在开发中高频使用 AI Coding Agent,比如 Claude Code、Codex、OpenCode、DeepSeek-TUI、Reasonix、Kimi 等。

这些工具已经不只是“代码补全”了。它们可以读取项目、修改文件、执行命令、调用工具、根据报错继续修复问题。也正因为它们越来越像一个自动化开发代理,我开始遇到一个很 实际的问题:

当 Agent 做出一个决定时,我很难知道它到底看到了什么。

终端里看到的是最终回答,或者一部分执行日志。但真正决定 Agent 行为的内容,往往藏在它发给模型的请求里:

  • system prompt
  • message history
  • tool schema
  • tool call
  • tool result
  • 当前上下文
  • token usage
  • cache hit
  • streamed response
  • latency
  • cost

如果这些内容不可见,很多问题就只能靠猜。

比如:

  • 为什么 Agent 没有调用预期的工具?
  • 为什么它重复读取同一个文件?
  • 为什么一次任务消耗了异常多的 token?
  • 为什么上下文越来越大?
  • 为什么同样的提示在不同客户端表现不一样?
  • 它到底有没有把敏感信息发给模型?

这些问题本质上都是可观测性问题。

传统抓包方式并不总是有效

最开始我尝试过 Charles、mitmproxy、系统代理等方式。

但在 AI Coding Agent 这类工具上,这条路并不稳定。很多客户端是 Node 或 native 应用,它们不一定遵守系统的 HTTP_PROXY / HTTPS_PROXY。有些工具会使用自己的网络实 现,有些场景会走 WebSocket,有些还会受到 TLS 证书或请求路径变化的影响。

结果就是:你以为自己已经开始抓包,但实际上什么都没有抓到;Agent 仍然能正常返回结果,说明它绕过了你配置的代理。

对于调试来说,这种“不确定是否真的观测到请求”的状态很难接受。

从 base URL 入手

后来我换了一个思路。

很多大模型客户端虽然不一定走系统代理,但会支持配置 API Base URL。例如:

  • OpenAI-compatible 客户端通常支持 OPENAI_BASE_URL
  • Anthropic-compatible 客户端通常支持 ANTHROPIC_BASE_URL
  • 一些本地模型、网关和第三方平台也支持自定义 endpoint
  • 部分 Agent 可以通过环境变量切换请求入口

既然如此,可以让 Agent 主动请求本地的一个 HTTP 服务,再由这个本地服务转发到真实上游 API。

整体链路类似这样:

AI Coding Agent -> localhost proxy -> real model API

这样有几个好处:

  1. 不需要改 Agent 源码
  2. 不依赖系统代理
  3. 不需要全局 TLS 抓包
  4. 可以完整记录请求和响应
  5. dashboard 可以直接基于这些记录做分析

这就是我后来做 ccglass 的起点。

ccglass 是什么

ccglass 是一个开源的本地 logging reverse proxy + web dashboard,用来观察 AI Coding Agent 和模型 API 之间的真实通信。

安装方式:

npm install -g ccglass

运行:

ccglass

也可以直接指定客户端:

ccglass claude ccglass codex ccglass opencode

启动后,它会:

  1. 在本机启动一个 proxy
  2. 设置目标客户端需要的 base URL 环境变量
  3. 启动对应的 AI Coding Agent
  4. 打开本地 dashboard
  5. 实时展示请求、响应、token、cost、tool calls 等信息

所有数据都保存在本地,不需要注册账号,也没有云端后台。

它能观察什么

目前 ccglass 主要提供这些能力:

  • 实时请求列表
  • 查看完整 system prompt
  • 查看 message history
  • 查看 tool schemas
  • 查看 tool calls 和 tool results
  • 重组 streamed response
  • 展示 input/output/cache tokens
  • 估算每次请求成本
  • 统计 cache hit rate
  • 展示请求延迟
  • turn-to-turn diff
  • 按 model 过滤请求
  • session summary
  • 导出 raw HTTP、Markdown、JSON、HAR

我自己最常用的是两个视图。

第一个是完整请求内容。它能让我看到 Agent 到底给模型发送了哪些上下文。

第二个是 turn-to-turn diff。很多 Agent 会在多轮循环中不断携带历史消息,如果上下文膨胀,diff 能直观看到是哪一轮开始引入了大量内容。

一个典型调试场景

假设我让 Agent 修复一个测试失败的问题。

终端里可能只看到:

Read file Run tests Edit file Run tests again Done

但如果从请求层面看,里面可能包含更多信息:

  • Agent 收到了哪些 system instructions
  • 它有哪些工具可以调用
  • 每个工具的 schema 是什么
  • 测试失败结果如何被塞回上下文
  • 模型为什么决定先读某个文件
  • 下一轮请求相比上一轮新增了什么
  • 这次修复一共消耗多少 token
  • 哪些输入命中了 cache
  • streamed response 最终被如何重组

这些信息对定位问题非常关键。

如果 Agent 做错了,我们可以判断问题是在 prompt、tool schema、上下文、模型输出,还是客户端执行逻辑上。

AI Agent 也需要可观测性

传统后端服务里,我们很自然地会关注日志、指标、链路追踪、错误率、延迟、资源消耗。

但到了 AI Agent 上,很多系统级能力反而缺失了。

Agent 的行为越来越复杂:它会读取文件、执行命令、调用工具、维护上下文、访问外部 API、在多轮循环中自我修正。这个过程如果完全黑盒,开发者就很难做稳定性分析和成本 控制。

我认为 AI Agent 的可观测性至少应该包括几个层面:

  • Prompt 可见性:模型到底收到了什么
  • Tool 可见性:模型能用什么工具,实际调用了什么
  • Context 可见性:上下文如何随轮次变化
  • Cost 可见性:每轮请求花了多少 token 和成本
  • Latency 可见性:慢在哪里,是上游慢还是生成慢
  • Privacy 可见性:有没有不该发送的内容进入请求

ccglass 不是让模型更聪明的工具,它更像是给 AI Coding Agent 加了一个 Network Panel。

支持的客户端和提供方

目前它支持多种常见客户端和提供方,包括:

  • Claude Code
  • Codex
  • OpenCode
  • DeepSeek-TUI
  • Reasonix
  • Kimi
  • Ollama
  • LM Studio
  • OpenRouter
  • GLM/Zhipu
  • AWS Bedrock
  • Google Vertex AI
  • CodeBuddy
  • 以及可通过 OpenAI-compatible / Anthropic-compatible endpoint 配置的自定义工具

对于更通用的场景,也可以使用:

ccglass run --provider openai --

或者只启动 proxy,让 IDE 或其他客户端手动接入:

ccglass proxy --provider openai

目前的限制

这个方案也不是万能的。

如果某个客户端完全不支持自定义 base URL,或者使用无法通过 base URL 覆盖的 WebSocket 通道,就不一定能被观察到。

例如 Codex 如果使用 ChatGPT 登录模式,可能会走 chatgpt.com 的 WebSocket 通道,这时 OPENAI_BASE_URL 不会生效,dashboard 里就看不到请求。需要切换到 API key 模式 才适合用这种方式观察。

还有一些 IDE 内置模型会硬编码上游地址,这类场景需要 forward proxy 或单独适配,复杂度会更高。

所以更准确地说,ccglass 适合观察那些支持自定义 API endpoint 的 AI Coding Agent 和 LLM 客户端。

隐私和安全边界

因为这个工具会看到完整 prompt、上下文和响应,所以隐私边界必须讲清楚。

ccglass 默认本地运行:

  • dashboard 是本机地址
  • 没有 SaaS 后台
  • 不上传日志
  • 捕获记录保存在本机
  • 用户可以自行删除、导出和分析

但这不代表可以无脑在任何环境使用。对于包含生产密钥、客户数据、内部源码的项目,仍然应该谨慎处理日志保存和分享。

我的目标不是收集数据,而是让开发者能在自己的机器上看清 Agent 行为。

总结

AI Coding Agent 的能力正在快速增强,但围绕它们的调试和可观测工具还没有完全跟上。

当 Agent 只是补全几行代码时,看不到内部细节问题不大。但当它开始读项目、改文件、执行命令、调用工具、持续多轮工作时,我们就需要更工程化的观察手段。

ccglass 是我对这个问题的一次尝试:用一个本地 reverse proxy 和 dashboard,把 AI Coding Agent 发给模型的真实请求展示出来。

项目已开源:

https://github.com/jianshuo/ccglass

如果你也在使用 Claude Code、Codex、OpenCode 或类似的 AI Coding Agent,我很想知道:你最想观察 Agent 的哪一部分行为?是 prompt、tool call、token 成本,还是完整 的执行链路?

相关文章
|
4天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
5天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
8648 37
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
5天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
658 4
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
5天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
663 5
|
5天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
727 148
|
5天前
|
存储 安全 Java
AgentScope Java 2.0:打造分布式、企业级智能体底座
AgentScope 2.0 面向分布式部署、稳定运行、权限安全等企业级需求全面升级,打造支持多租户隔离与长期稳定运行的企业级智能体底座。
|
5天前
|
人工智能 运维 自然语言处理
阿里云百炼Qwen3.7-Max模型详解:综合能力、核心优势与订阅计划参考指南
2026年,大模型技术持续向通用化、高性能、场景化方向迭代,阿里云百炼作为一站式大模型服务平台,持续推出迭代升级的模型产品,Qwen3.7-Max便是当前主力旗舰级大模型之一。该模型依托深度优化的底层架构与大规模训练数据,在文本理解、逻辑推理、多模态交互、代码生成、长文本处理等多个维度实现能力升级,同时搭配灵活的订阅计划体系,能够适配个人开发者、中小企业、大型企业、政企机构等不同类型用户的使用需求。
569 2
|
5天前
|
人工智能 缓存 自然语言处理
阿里Qwen3.7-Max评测:Agent能力显著提升,耗时与调用成本大幅下降
阿里云百炼推出面向智能体的旗舰大模型Qwen3.7-Max,具备长周期自主执行能力,显著提升编程、办公自动化等复杂任务处理水平;支持MCP集成与多框架兼容,并以限时5折+100万Tokens免费试用大幅降低使用门槛,助力企业高效落地AI应用。在阿里云百炼平台快速体验:https://t.aliyun.com/U/fPVHqY
1962 10
|
5天前
|
JSON 缓存 安全
通过 CC Switch 本地路由让 Codex CLI 接入 DeepSeek 等第三方模型
CC Switch 通过本地路由(`127.0.0.1:15721`)实现协议转换:将 Codex 的 Responses API 请求自动映射为 DeepSeek 等厂商的 Chat Completions 接口,兼容流式响应与工具调用,无需修改 Codex 源码,安全隔离 API Key。(239字)
1640 2
通过 CC Switch 本地路由让 Codex CLI 接入 DeepSeek 等第三方模型
|
5天前
|
人工智能 运维 API
2026年阿里云百炼通义千问Qwen3.7-plus深度介绍 功能特性、使用优势及618大促订阅方案指南
大模型技术的普及,让AI能力逐步融入个人办公、内容创作、代码编写、企业运营、教育培训等各类场景。不同定位的模型对应不同使用需求,旗舰级模型性能强劲但使用成本偏高,轻量化模型价格低廉却难以胜任复杂任务,而介于两者之间的中端主力模型,凭借均衡的能力、亲民的定价、广泛的场景适配性,成为绝大多数个人用户、小型团队、中小企业的首选。
773 1

热门文章

最新文章