mcpField
O
openclaw-session-viewer

openclaw-session-viewer

github.com/theangrypitAgent 工作流042 次安装今天更新
代码仓库

关于 openclaw-session-viewer

将 Codex、Claude Code、OpenClaw 和 Pi 会话记录转换为可在浏览器查看的 HTML。支持规范化或原始导出、完整历史读取,以及可重复使用的文件选择器查看器。

主要功能

  1. 01将支持的会话记录转为 HTML
  2. 02规范化与原始导出模式
  3. 03可复用的文件选择器查看器
  4. 04支持浏览器搜索工具输入与输出
  5. 05可选限制读取量并提示内容省略

适用场景

  1. 01在浏览器中检查 Agent 会话记录
  2. 02导出会话记录以供分享
  3. 03搜索会话历史中的工具输入与输出

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/theangrypit/theangryskills --skill openclaw-session-viewer

安装后在 Claude Code 中输入/openclaw-session-viewer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
MIRROR.md
package.json
tsconfig.json
agents/
openai.yaml
scripts/
html.ts
open-browser.ts
read-session.ts
session-viewer.test.ts
session-viewer.ts
styles.ts
scripts/core/
detect.ts
jsonl.ts
types.ts
scripts/importers/
claude.ts
codex.ts
pi-openclaw.ts

详细介绍

会话查看器

当用户要求在浏览器中查看、导出、检查或分享 Codex、Claude Code、OpenClaw 或 Pi 会话记录时使用。

命令

如果不知道会话路径,且 agent-transcript 技能可用,请先使用它查找可能的 JSONL 会话:

.agents/skills/openclaw-agent-transcript/scripts/agent-transcript find \
  --query "$USER_GOAL_OR_TITLE $BRANCH_OR_URL" \
  --cwd "$PWD" \
  --since-days 14

选择置信度最高的 file 结果,然后使用 session-viewer 渲染。

在包含此技能的仓库中:

node skills/openclaw-session-viewer/scripts/session-viewer.ts <session.jsonl> --out /tmp/session.html --open

常用模式:

node skills/openclaw-session-viewer/scripts/session-viewer.ts <session.jsonl> --out session.html
node skills/openclaw-session-viewer/scripts/session-viewer.ts <session.jsonl> --raw --out session.html
node skills/openclaw-session-viewer/scripts/session-viewer.ts --blank --out viewer.html --open

在通过 .agents/skills 同步共享技能的下游仓库中,将 skills/openclaw-session-viewer 替换为 .agents/skills/openclaw-session-viewer。

默认行为:

  • 检测 codex、claude 或 pi-openclaw
  • 将规范化后的会话数据嵌入单个 HTML 文件
  • 将工具的输入/输出文本保留在 DOM 中,以便浏览器搜索
  • 读取完整会话文件,在两种导出模式下都保留完整历史记录
  • --raw 会嵌入原始 JSONL,并由浏览器解析
  • --blank 会创建一个可重复使用的文件选择器查看器

如需明确导出部分内容,请使用带正整数限制的 --max-read-bytes N(例如,使用 --max-read-bytes 8388608 表示 8 MiB)。对于超出限制的文件,会保留开头和结尾,并在 CLI 和导出的查看器中显示明显的省略警告。可能会省略被截断的边界记录;--raw 只会嵌入保留的 JSONL。大小不超过限制的文件会保持完整。短读取会重试;如果文件意外结束,导出将失败,而不会报告读取完整。

此可选读取限制仅适用于 CLI 文件导出。浏览器的文件选择器仍会加载完整文件。

会话存放位置

Codex:

find "${CODEX_HOME:-$HOME/.codex}/sessions" -name 'rollout-*.jsonl' -type f | sort
ls -t "${CODEX_HOME:-$HOME/.codex}"/sessions/*/*/*/rollout-*.jsonl | head

OpenClaw/Pi:

AGENT_ID="<agentId>"
SESSION_DIR="${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/agents/$AGENT_ID/sessions"
ls -t "$SESSION_DIR"/*.jsonl | head
find "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/agents" -path '*/sessions/*.jsonl' -type f | sort

使用同一目录中的 sessions.json 将会话键映射到会话 ID。

Claude Code:

find "$HOME/.claude/projects" -name '*.jsonl' -type f | sort
ls -t "$HOME/.claude/projects"/**/*.jsonl | head

某些 Claude 安装还会在项目专属的缓存文件夹中保存导出的 JSON/JSONL;优先选择其父文件夹路径中包含目标仓库路径的最新 JSONL 文件。

开发

脚本采用原生 Node TypeScript 编写。请确保它们可擦除:

  • 可以使用:类型、接口、联合类型、satisfies
  • 避免使用:枚举、命名空间、装饰器、参数属性
  • 不使用 tsconfig 路径别名;请使用相对导入

导入器职责:

  • scripts/importers/codex.ts:Codex rollout JSONL
  • scripts/importers/claude.ts:Claude Code JSONL
  • scripts/importers/pi-openclaw.ts:Pi/OpenClaw 会话 JSONL

验证:

npm ci --ignore-scripts
npm run typecheck
node --test skills/openclaw-session-viewer/scripts/session-viewer.test.ts
scripts/validate-skills

评论

支持 Markdown