Skip to content

Latest commit

 

History

History
134 lines (90 loc) · 6.92 KB

File metadata and controls

134 lines (90 loc) · 6.92 KB

在线试用

点击即用 — 无需安装、构建或注册。

English · Русский · Español · Français · 中文 · العربية

Claude Code Chat Viewer

许可证:Unlicense 零运行时依赖 离线可用 6 种界面语言

截图

用于浏览 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.htmllib/ 目录。

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/stdin

许可证

Unlicense — 公有领域。随意使用,无需署名。