点击即用 — 无需安装、构建或注册。
English · Русский · Español · Français · 中文 · العربية
用于浏览 Claude Code 会话记录(JSONL 格式)的 HTML 查看器。在浏览器中直接打开 — 无需服务器,无需构建,只有一个本地打包的依赖。开箱即用,完全离线工作。
Claude Code 把每次会话写入 ~/.claude/projects/<project>/<session-uuid>.jsonl — 每行一条记录(用户消息、模型回复、thinking、tool_use、tool_result、attachment 等)。原始文件几乎无法阅读;内置命令如 /resume 能显示对话,但不能导出或事后分析。
这个查看器把这样的 .jsonl 变成可读的时间流,按角色着色,服务块(thinking / tools / results)可折叠,附带过滤器。
- user(蓝色)— 真实的用户消息
- assistant(绿色)— Claude 的文字回复
- thinking(紫色)— extended thinking,默认折叠
- tool_use(琥珀色)— 工具调用,附带参数预览
- tool_result(青色 / 错误为红色)— 工具响应
- meta / task-note(黄色)— 系统注入和子代理的
<task-notification> - system / attachment / ui-state — 服务记录(默认隐藏)
每个块都是独立的一行,左侧有彩色条。没有聊天气泡:这是一份日志,不是聊天界面。
按喜好选择:
A. 下载单文件 — 最简单。从最新 release 下载独立 HTML,双击即可。一个文件,永久离线可用。
B. 克隆仓库 — 想改代码就选这个。需要 index.html 和 lib/ 目录。
C. 在线使用 — 直接打开 https://hitmman55.github.io/claude-code-chat-viewer/。无需下载。
打开后,点击文件选择器(或拖放文件,或点击「试用示例」按钮),选择一个 .jsonl 记录。
Claude Code 的记录位于:
~/.claude/projects/<project-slug>/<session-uuid>.jsonl
其中 <project-slug> 是你的工作目录,/ 替换成 -。例如:/home/user/myproj → -home-user-myproj。
- 文件选择器 — 点击「选择文件」并选取一个
.jsonl。 - 拖放 — 把文件拖到页面任意位置。虚线边框标示拖放区域。文件夹和非文件的拖放会被温和拒绝。
- 试用示例 — 初始状态(在线访问时)显示一个按钮,加载内置的
demo.jsonl展示所有条目类型。
- 阅读模式 — 标题栏开关,隐藏除真实用户消息和助手文本回复之外的所有内容。无 thinking,无工具调用,无服务记录。
- 逐条消息复制 — 每条条目标题栏的
📋按钮。把文本复制到剪贴板,显示 1.2 秒✓确认。使用navigator.clipboard.writeText,对file://上下文回退到document.execCommand。 - 友好的工具名称 — 已知工具配有图标(例如
📖 Read file、🖥️ Shell、📝 Edit file)。未知 / MCP 工具 →🔧 {raw_name}。 - 自动主题 — 查看器默认跟随系统的
prefers-color-scheme。点击太阳/月亮按钮固定选择;固定后跨会话保存。 - 六种界面语言 — English、Русский、Español、Français、中文、العربية。阿拉伯语自动切换为 RTL。标题栏中的下拉选择器,偏好会保存。
- 流式解析 —
.jsonl通过file.stream()+TextDecoderStream读取,不会整体加载为单个字符串。 - 原生虚拟化 — 每条记录使用
content-visibility: auto:浏览器跳过屏幕外条目的布局和绘制。可扩展到成千上万条记录。 - 分块渲染 — 每块 500 条,剩余部分通过「加载更多」按钮加载。
- 过滤器 — 五个复选框(thinking / tools / results / system / ui-state),通过容器上的单个 CSS 类切换类别(无 DOM reflow)。
- XSS 安全渲染 — 每个文本块在传入 markdown 解析器之前会先进行 HTML 转义。Markdown 图片被中和(显示为惰性文本,永不加载)。链接限制为
http(s)并使用rel="noopener noreferrer nofollow"。 - 大小限制 — prose 块截断至 20 KB,服务块截断至 5 KB。复制操作继承这些限制 — 页面从不把兆字节文本发到剪贴板,也不会让浏览器卡死。
.json回退 — 如果文件不是 JSONL 而是普通的 JSON 数组/对象,会作为记录列表解析。
- Chrome / Edge 85+
- Safari 18+
- Firefox 125+
都是为了 content-visibility: auto。在旧版浏览器上查看器仍可打开,但大文件的滚动会明显变慢。
只有一个,在本地 lib/ 中打包:
- marked — markdown → HTML(~35 KB)
没有 CDN,没有网络,没有 Subresource Integrity。克隆即可运行。
一切都在你的浏览器本地运行。查看器本身不发起任何自动网络请求 — 没有 CDN,没有分析,没有远程字体。记录中嵌入的 Markdown 图片会被中和:以惰性文本形式显示(URL 可见但不会被获取)。外部链接(仅限 http(s))只在你点击时才会在新标签页打开,并带有 rel="noopener noreferrer nofollow"。你的记录留在你的机器上。
- 超过约 100 MB 的文件需要基于 line-offset 的索引化加载与窗口化渲染(尚未实现)。
- 没有导出到 Markdown/HTML 的功能(目标是浏览,不是转换)。
- 代码块中没有语法高亮(有意为之 — 保持依赖最小)。
所有代码都在一个 HTML 文件里。直接编辑即可 — 样式在 <style>,逻辑在 <script>,翻译在脚本开头的 I18N 对象中。
不用浏览器检查 JS 语法:
sed -n '/^<script>$/,/^<\/script>$/p' index.html | sed '1d;$d' | node --check /dev/stdinUnlicense — 公有领域。随意使用,无需署名。
