turbomind66

Context Lens — Data skill for Claude Code

Data community

See what actually eats your LLM context window.

How to install Context Lens

This entry records only its repository, not the path inside it, so there is no exact command to give. Open turbomind66/context-lens and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Context Lens does

See what actually eats your LLM context window. Cross-agent session analytics for WorkBuddy, Qwen, Doubao, Claude Code & Codex - context breakdown, per-request trends, token cost. Zero deps, local-only.

Alternatives in Data

README

Context Lens

把本机各个 AI Agent 的会话日志汇总成一个看板:**一个会话的上下文被什么吃掉了、花了多少 token、调了哪些工具**。

跨宿主、可筛选、能实时刷新。纯本地运行,只读日志,不联网、不上传。

**[🔗 在线演示](https://turbomind66.github.io/context-lens/)**(脱敏数据,直接点开就能玩)

![Context Lens 总览](docs/screenshot.png)

支持的宿主

Agent 数据来源 token 口径
WorkBuddy 5.x ~/.workbuddy/projects/*/*.jsonl + workbuddy.db 实报
WorkBuddy AI 5.8 ~/.workbuddy-ai/projects/*/*.jsonl + workbuddy.db 实报
CodeBuddy CLI ~/.codebuddy/projects/*/*.jsonl 实报
Qwen Code ~/.qwen/projects/*/chats/*.jsonl 实报
千问办公 AppData/Roaming/QwenWorkCN/data/agents.db(SQLite) 估算
豆包工作 .doubaowork/.../.sessions/*/agents/*/system/trajectory.jsonl 估算 + 上下文构成实报
Claude Code ~/.claude/projects/*/*.jsonl 实报
Codex CLI ~/.codex/sessions/**/rollout-*.jsonl 实报

「实报」= 日志里有 `usage`(input / output / cache_read);「估算」= 宿主不上报,按字符密度推算(CJK ≈ 1 token/字,其它 ≈ 3.5 字符/token),并以实报 input 归一。

快速开始

python serve.py        # 实时模式,自动打开 http://127.0.0.1:8765
python collect.py      # 只生成静态快照 data.js,用浏览器直接打开 index.html 也能看

零依赖,Python 3.8+ 即可(`leveldb.py` 是自己实现的,不需要编译)。

首次扫描 700+ 会话约 30 秒,之后走增量缓存,只重新解析变过的文件。

三个页签

**总览** — 跨宿主汇总。6 个 KPI、每日用量(按宿主堆叠)、宿主分布、会话清单。 筛选:宿主多选 / 工作区 / 时间范围 / 关键词 / 排序,四处联动。点任意一行进入该会话。

**上下文** — 单个会话的透视:

  • 输入输出、缓存命中、成本、输出速度
  • 上下文构成:宿主注入(系统提示词 + 工具定义)/ 用户消息 / 助手消息 / 模型思考 / 工具参数 / 工具结果
  • 逐次请求的上下文趋势(累计 / 增量两种视图)
  • 上下文浏览器:哪些消息、哪个工具结果最占地方
  • 耗时拆解:模型耗时 / 工具耗时 / 空档

**编队** — 同一工作区的会话关系(本机日志里没有子 Agent 谱系事件,所以按工作区聚合,UI 里已标注)。

它是怎么算的

一次「步」= 一次模型调用(日志里的 `function_call`)。累计上下文 = 截至该次请求所有消息 + 工具定义的总和。

分项估算后按供应商实报的 `input_tokens` 归一,差额归给「宿主注入」——所以各分项之和永远等于实报值,不会出现比例对不上的情况。

有官方 token-meter 时优先用官方的:

  • WorkBuddy 系列读 workbuddy.db 的 sessions.context_window + session_usage.used,窗口是真实值(192k / 256k / 300k / 1M 各不相同),不是统一假设。
  • 豆包工作从 IndexedDB 里挖 context_window_usage,直接拿到官方四桶:系统提示词 / 对话消息 / 技能 / 工具定义。

leveldb.py

纯 Python 的 LevelDB 读取器,用来读 Chrome /