Skip to content

为什么需要 agent-eyes

未来代码大多由 AI 写,但二次调试和 bug 校验常常无人读代码——无论你还是 AI agent,调试时缺的都是同一样东西:浏览器里到底发生了什么

下面是日常开发中最常踩的三个"盲区",也是这个插件存在的理由。

三个让你抓瞎的盲区

你在控制台 console.log(await fetch(...)) 只能看到响应体,看不到最关键的鉴权信息:

  • 请求带了哪些 Cookie?服务端 Set-Cookie 设了什么 Domain / Secure / SameSite
  • 有没有发生重定向?重定向链路上 cookie 丢了没?
  • CORS 预检为什么失败?

典型场景:登录接口明明返回 200,下个请求却 401。你怀疑是 token 没存,但 localStorage / cookie 里明明有——问题其实出在 cookie 的 DomainSameSite 属性上,浏览器默默拒收了。而 fetch 层面你完全看不到这些。详见招牌案例:登录成功却 401

2. 错误流不可追溯:控制台错误转瞬即逝

控制台的错误有几个致命问题:

  • 一闪而过:页面一刷新、一跳转,之前的错误全没了
  • 混着噪声:React dev warning、浏览器扩展报错、库的 deprecation 混在一起
  • 没法分类:同一个错误刷了 100 次,控制台看不出频次,没法判断"这个到底要不要紧"

典型场景:agent 帮你改完代码,你问"刚才那个报错还在吗"——但控制台早被新一轮日志冲掉了,谁也答不上来。

3. 接口字段只能猜:类型定义和真实返回对不上

你的 TypeScript 类型说 user.email: string,但接口实际返回的是 user.emailAddress。代码按类型写,线上崩。

典型场景:后端改了字段,没通知前端;或者 mock 数据和真实接口结构不一致。你只能靠"跑一下看报不报错"来验证,而报错信息往往在三层层包装之后。

这个插件做了什么

把上面三个盲区全部落成 结构化、可解析、每次启动清空、最新记录在最上方 的运行时日志文件:

盲区对应的日志你能看到的
网络层盲区proxy-<host>.log请求/响应的 Cookie / Set-Cookie / status,包括被浏览器拒收的
错误流不可追溯errors.log聚合去重 + 频率计数,顶部是 Top Errors,按频次排序
字段只能猜api-calls.log真实的请求体 + 响应体,不带任何类型假设

0.9.0 起额外记录脱敏登录态画像,0.10.0 起自动记录脱敏交互轨迹——让 agent 能还原"先到哪个页面、点了哪个按钮、触发了什么问题"。

和别的方案有什么不同

你可能会问:这些 Chrome DevTools 不都能看吗?MSW 不是能 mock 吗?

  • DevTools 是给人看的,不是给 agent 看的。它在 GUI 里,agent 没法读取;刷新就没了;没法跨会话对比。
  • MSW 是 mock 工具,不是观测工具。它能造数据,但真实接口返回什么它不管。
  • 这个插件的日志是文件,agent 能 cat / grep / head,每次启动自动清空,跨工具链通用。

下一步