CursorLens
Cursor IDE 用量分析与成本追踪仪表盘,拦截 AI 请求记录 token 消耗
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Cursor IDE 用量分析与成本追踪仪表盘,拦截 AI 请求记录 token 消耗
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有过这样的经历——用 Cursor 写了三天代码,月底收到一张四位数的 API 账单,才意识到 AI 每次补全都在悄悄烧钱?对于个人开发者和小型团队来说,AI 编程工具的费用透明度一直是痛点。Cursor Lens 正是为解决这一困境而生:它是一个开源的中间层代理,专门为 Cursor IDE 构建使用分析和成本追踪仪表盘。
这个项目由独立开发者 HamedMP 于 2024 年创建,2024 年 8 月登上 ProductHunt 并获得精选,目前 GitHub 收获 398 颗星。它的核心思路非常巧妙——不修改 Cursor 本身,而是在 Cursor 和 AI 提供商之间插入一个"代理节点",自动记录每一次请求的 token 消耗、响应耗时和费用估算。
Cursor Lens 的运行架构可以分为三层理解:
代理层(Proxy Layer):Cursor Lens 充当 AI 请求的 HTTP 代理。用户在 Cursor 中将 AI Base URL 配置为指向本地运行的 Cursor Lens 服务(如 http://localhost:3000),再通过 ngrok 将其暴露到公网。Cursor 的所有 AI 请求先经过 Cursor Lens,由 Next.js API Routes 处理后再转发给真正的 AI 提供商(OpenAI、Anthropic、Cohere、Mistral 等)。
存储层(Database Layer):Prisma ORM 搭配 PostgreSQL,记录每次请求的完整信息。数据模型包含 Log(日志)、AIConfiguration(AI 配置)和 ModelCost(模型价格)三张表。其中 Log 表捕获 method、url、headers、body、response 和 metadata;AIConfiguration 支持用户自定义模型参数(temperature、maxTokens、topP 等)并设为默认。
展示层(UI Layer):Next.js 14 + React 构建的全栈应用,前端使用 Tailwind CSS + shadcn/ui 组件库,通过 Recharts 绑制统计图表。页面包括首页(实时日志流)、Logs(日志列表与详情)、Stats(统计分析)、Configurations(多模型配置管理)四大部分。
项目使用 @vercel/ai SDK(v3.3.14)作为 AI 调用统一封装层。该 SDK 由 Vercel 维护,支持 OpenAI、Anthropic、Google、Cohere、Mistral、Amazon Bedrock 等 20+ 提供商,并提供统一的流式响应接口。Cursor Lens 在 src/lib/model-config.ts 中定义了各模型的价格参数,输入 token 价格从 GPT-4o-mini 的 $0.15/1M 到 GPT-4 的 $30/1M 不等。
2024 年 8 月的更新引入了 Anthropic 上下文缓存支持。用户可以在 /configuration 页面创建一个 antropicCached 类型配置,将 Cursor CMD+L 和 CMD+I 对话中的系统消息和上下文消息自动加入缓存,缓存 TTL 为 5 分钟。这一功能可显著降低长对话场景下的 token 消耗成本。
model Log {
id String @id @default(cuid())
method String
url String
headers Json
body Json
response Json?
timestamp DateTime @default(now())
metadata Json // 含 token 消耗、成本估算
@@index([timestamp])
}
model AIConfiguration {
id String @id @default(cuid())
name String @unique
provider String @default("openai")
model String
isDefault Boolean @default(false)
// ... 模型参数
}
项目提供 docker-compose.yml,包含 PostgreSQL 数据库、Next.js 应用和 ngrok 三个服务。Dockerfile 基于 node:18-alpine,使用 pnpm 安装依赖,构建分三个阶段:依赖安装 → Prisma Client 生成 → Next.js 编译。启动脚本 start.sh 执行数据库迁移(prisma migrate deploy)和初始化数据(prisma db seed)。
然而实际部署中最"卡脖子"的环节是 ngrok。由于 Cursor 运行在用户本地浏览器中,Cursor Lens 的服务必须暴露到公网才能被 Cursor 访问,而国内用户使用 ngrok 需要翻墙或者换用国内穿透工具(如内网穿透工具),这增加了配置复杂度。
仅支持 OpenAI 兼容接口:Cursor Lens 的代理层假设 AI 请求遵循 OpenAI API 格式。虽然 Vercel AI SDK 支持多提供商,但实际使用时模型必须与 Cursor 的 API 兼容格式匹配。
ngrok 强依赖:生产环境推荐通过域名 + 反向代理(如 Caddy/Nginx)替代 ngrok,但这需要用户自行修改 docker-compose.yml。
数据隐私:所有日志存储在本地 PostgreSQL,若多人共用同一实例,日志数据将混合。缺乏用户隔离机制。
测试覆盖:项目包含 Vitest 单元测试和 React Testing Library 组件测试,但整体测试覆盖率未知,代码质量评分参考值为 7.5/10。
Cursor Lens 的出现反映了一个趋势:随着 AI 编程工具的普及,"用量可见"和"成本可控"将成为团队和个人的刚性需求。GitHub Copilot 采用订阅制,Cursor 按 token 计费,Claude API 按调用收费——不同的商业模式背后是同样的底层逻辑:AI 能力是有价的,而对价的感知和管理正在从"黑箱"走向"白盒"。
Cursor Lens 作为一个相对年轻的项目(仍处于 alpha 阶段),已经在 ProductHunt 上验证了需求真伪。如果能解决 ngrok 依赖问题、加入团队协作功能,其潜力远不止于个人工具。