本地回看 AI 会话,展开工具调用与执行结果
29.6/100
综合分
0
GitHub 星标
17
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add session-analyzernpm 源 · session-analyzer 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 52 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包session-analyzer @ 0.2.0
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 02:03:22
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 73 处,展示前 47 条)
- 读取本地文件server.js:716
const data = await fsp.readFile(target); - 读取本地文件src/runtime-diagnostics.js:31
if (!fs.existsSync(logDir)) return []; - 读取本地文件src/runtime-diagnostics.js:32
return fs.readdirSync(logDir, { withFileTypes: true }) - 读取本地文件src/runtime-diagnostics.js:36
return { filePath, mtimeMs: fs.statSync(filePath).mtimeMs }; - 删除本地文件src/runtime-diagnostics.js:43
fs.rmSync(entry.filePath, { force: true }); - 写入本地文件src/runtime-diagnostics.js:95
fs.mkdirSync(logDir, { recursive: true }); - 写入本地文件src/runtime-diagnostics.js:112
fs.appendFileSync(filePath, `${JSON.stringify(payload)}\n`, 'utf8'); - 删除本地文件src/project-query-disk.js:25
fs.rmSync(state.directory, { recursive: true, force: true }); - 写入本地文件src/project-query-disk.js:90
fs.chmodSync(directory, 0o700); - 删除本地文件src/project-query-disk.js:93
if (directory) fs.rmSync(directory, { recursive: true, force: true }); - 读取本地文件src/codex.js:896
const stream = fs.createReadStream(descriptor.physicalPath, { start: 0, end: expectedBytes - 1 }); - 读取本地文件src/codex.js:1909
text = await fsp.readFile(configPath, 'utf8'); - 读取本地文件src/codex.js:1936
project.exists = (await fsp.stat(project.repoRoot)).isDirectory(); - 读取本地文件src/codex.js:1951
? fs.createReadStream(descriptor.physicalPath, { encoding: 'utf8' }) - 读取本地文件src/codex.js:2078
project.exists = (await fsp.stat(project.repoRoot)).isDirectory(); - 读取本地文件src/codex.js:2096
text = await fsp.readFile(indexPath, 'utf8'); - 读取本地文件src/claude.js:146
const stat = await fsp.stat(candidate.filePath); - 读取本地文件src/claude.js:270
return (await fsp.stat(target)).isDirectory(); - 读取本地文件src/claude.js:279
entries = await fsp.readdir(directory, { withFileTypes: true }); - 读取本地文件src/claude.js:296
fsp.realpath(resolvedRoot), - 读取本地文件src/claude.js:297
fsp.realpath(resolvedTarget), - 读取本地文件src/claude.js:309
physicalHome = await fsp.realpath(resolvedHome); - 读取本地文件src/deepseek-harness.js:3619
stat = await fsp.stat(filePath); - 读取本地文件src/deepseek-harness.js:3644
project.exists = (await fsp.stat(project.repoRoot)).isDirectory(); - 读取本地文件src/deepseek-harness.js:3665
entries = await fsp.readdir(dir, { withFileTypes: true }); - 读取本地文件src/deepseek-harness.js:3860
stat = await fsp.stat(filePath); - 读取本地文件src/shared/codex-source-stat.js:10
await fsp.stat(filePath, { bigint: true }), - 读取本地文件src/codex-rollout-storage.js:153
return normalizeStat(await fsp.stat(descriptor.physicalPath, { bigint: true }), descriptor); - 读取本地文件src/codex-rollout-storage.js:213
const stat = await fsp.stat(candidate); - 读取本地文件src/codex-rollout-storage.js:252
entries = await fsp.readdir(dir, { withFileTypes: true }); - 读取本地文件src/codex-rollout-storage.js:553
const stream = fs.createReadStream(descriptor.physicalPath, options.streamOptions || {}); - 读取本地文件src/codex-rollout-storage.js:560
const input = fs.createReadStream(descriptor.physicalPath, options.streamOptions || {}); - 读取本地文件src/deepseek-harness-storage.js:174
const before = await fsp.stat(filePath, { bigint: true }); - 读取本地文件src/deepseek-harness-storage.js:176
const buffer = await fsp.readFile(filePath, { signal }); - 读取本地文件src/deepseek-harness-storage.js:178
const after = await fsp.stat(filePath, { bigint: true }); - 读取本地文件src/deepseek-harness-storage.js:597
siblings = await fsp.readdir(path.dirname(filePath), { withFileTypes: true }); - 读取本地文件src/codex-rollout-snapshots.js:43
const before = await fsp.stat(file, { bigint: true }); - 读取本地文件src/codex-rollout-snapshots.js:45
const stream = fs.createReadStream(file, { signal }); - 读取本地文件src/codex-rollout-snapshots.js:52
const after = await fsp.stat(file, { bigint: true }); - 删除本地文件src/codex-rollout-snapshots.js:64
await fsp.rm(entry.directory, { recursive: true, force: true, maxRetries: 2, retryDelay: 10 }); - 写入本地文件src/codex-rollout-snapshots.js:142
await fsp.chmod(directory, 0o700); - 写入本地文件src/codex-rollout-snapshots.js:149
await pipeline(decode(), counter, fs.createWriteStream(target, { flags: 'wx', mode: 0o600 }), { signal }); - 删除本地文件src/codex-rollout-snapshots.js:155
await fsp.rm(directory, { recursive: true, force: true }); - 删除本地文件src/codex-rollout-snapshots.js:164
await fsp.rm(directory, { recursive: true, force: true, maxRetries: 2, retryDelay: 10 }).catch(() => {}); - 读取本地文件src/codex-rollout-snapshots.js:166
try { await fsp.access(directory); } catch { privateDirectories.delete(directory); } - 读取本地文件src/codex-rollout-snapshots.js:177
input = fs.createReadStream(entry.file, { signal: options.signal }); - 删除本地文件src/codex-rollout-snapshots.js:201
try { fs.rmSync(directory, { recursive: true, force: true }); } catch { }
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 本地回看会话历史
- 展开工具调用与结果
- 按项目搜索会话
本地会话历史查看器,支持 Codex、Claude Code 和 DeepSeek Harness。回看智能体工作过程,检查工具调用与结果,按项目搜索会话。
最近更新
在 GitHub 查看全部 →v0.2.12026-10-05
· Upgrade the pinned Markdown renderer to markdown-it 14.3.2, including the security fix for excessive CPU use when linkifying repeated emails or unregistered URL schemes (GHSA-253c-mchw-3w2r).
· Interpret native DeepSeek bash/pwsh foreground outcomes for direct and Code Mode calls, including nonzero exits, signals, timeouts and stops. Classify unambiguous durable Codex exec_command requests as commands and read their native exit, duration and output receipts. Running results remain incomplete, missing exits remain unknown, and Raw stays exact.
· Preserve Codex skipped-artifact diagnostics in committed indexes and startup reports, including reused indexes. Search complete admitted configuration facts independently of preview truncation.
· Read Codex .jsonl.zst rollouts with sibling deduplication, stable Raw line references, private decoded snapshots and isolated compression diagnostics.
· Show valid named Codex external inputs independently of tool executions, preserve asynchronous question/option semantics, and display ordered file-image references with explicit offline preview placeholders. Keep unknown canonical items and execution metadata in their documented Protocol/Raw boundaries.
· Add recorded file activity and cross-session reading navigation, including related sessions, reading return, patch-file directories, Code Mode ownership and Raw-to-Logical links. Exact file activity preserves POSIX literal backslashes while accepting Windows separator variants.
· Show background terminal poll/input requests with links to their confirmed origin and previous/next requests. Long continuation directories remain bounded and expose further records through navigation.
· Keep reading controls visible, preserve the return position when leaving a project, retain Trajectory overview keyboard focus after detail loading, and contain long command segments within their event cards.
· Improve patch reading with complete parent paths, emphasized filenames and com
v0.2.02026-09-10
Session Analyzer 0.2.0 把本地会话回顾扩展到多个来源,新增一种浏览工具密集对话的方式,并大幅重做了大会话历史的索引与加载机制。
· 亮点
轨迹呈现
在默认的时间线之外,新增可选的轨迹视图。它提供紧凑的输入 / 模型 / 工具序列概览,支持缩放、平移和适配控制,同时让对话本身保持叙事优先的可读布局。工具活动可以分组和展开,不会丢失底层事件和细节。
DeepSeek Harness 支持
DeepSeek Harness 现在作为第三个记录来源,与 Codex 和 Claude Code 并列。
Session Analyzer 可以在本地读取受支持的 DeepSeek JSONL 和 Zstandard 会话历史,结构化覆盖会话与工具生命周期、血缘与派生会话、压缩、Code Mode 与工作流溯源、重试、Goal/Todo 状态、权限及相关记录元数据。不支持的事件族仍可通过 Protocol 和 Raw 记录查看。
npx session-analyzer@0.2.0 --source deepseek-harness
可扩展的会话加载
Codex 和 Claude Code 历史现在采用更严格的索引 / 物化会话模型。项目索引保留紧凑信息用于浏览和搜索,完整会话只在需要时从来源重建。
这样就不必把每个完整会话图都常驻内存,大会话历史下的表现也更好。物化会话通过有界缓存保留,配合请求合并、受控重建、取消处理和有界预热。
Codex 改进
· 改进显式派生会话和子代理会话的父级关联。
· 改进声明的 Code Mode 投影和命令标注。
· 新增按请求的 token 用量呈现。
· 新增保守的缓存复用不连续观察,并附 Protocol 证据支持。这些观察不声称缓存已显式过期,也不暴露服务端隐藏的缓存状态。
· 快速上手
Codex 仍是默认来源:
npx session-analyzer@0.2.0
Claude Code:
npx session-analyzer@0.2.0 --source claude-code
DeepSeek Harness:
npx session-analyzer@0.2.0 --source deepseek-harness
然后在浏览器中打开。
Session Analyzer 在本地读取已有记录,不修改也不上传其内容。
· 要求
· Node.js 22 或更高版本
· 推荐 Node.js 24
· 读取 DeepSeek Zstandard 会话文件需要 Node 内置的 Zstandard 支持
各来源的具体行为、边界以及 0.2.0 的完整变更列表,见 README 和 CHANGELOG。
v0.1.42026-08-15
· Added empirical capacity guidance for large matching transcript histories, including a stable non-blocking [SESSION_ANALYZER_LARGE_TRANSCRIPT_HISTORY] warning at 800 MiB candidate bytes, temporary Node heap recovery instructions specifically for V8 heap exhaustion, and aggregate-only --log-dir capacity diagnostics with current and peak process memory.
· Significantly reduced resident memory for large Codex indexes with compact resident projections and source-backed detail hydration, while hardening exact transcript fingerprinting and source-snapshot/reindex freshness.
· Recognized copied-prefix Codex Materialized Fork Sessions, excluded inherited history from continuation-owned titles, Logical metrics, and search while preserving physical Raw records, and folded uniquely inactive sources as Earlier Branches with mixed related-session hierarchy and Raw segment headings.
· Unified inherited-context parent navigation across Codex materialized and Claude pointer forks with Main-first, Raw-fallback fork-point targets; a targetless source keeps the current search, filters, and layer during ordinary parent navigation.
· Promoted direct Claude Code Read calls from other_tool_call to an independent read kind with dedicated filtering, counts, localized labels, structured detail routing, and folding-rule compatibility.
· Added runtime Transcript Source switching: POST /api/source changes the active Codex/Claude Code source and optional source home directories without restarting the server; the Select project chooser exposes a source switcher with custom home directories, and stale project discovery is rejected through source revisions.
· Added per-source last-selected repository storage with a one-time migration of the legacy Codex key, and made project-selection copy source-neutral (sourceHome instead of codexHome).
· Added source-switch and race-regression coverage across backend, browser, and documentation.
· Hardened Claude Code 2.1.220 compatibility for order-in
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成Session Analyzer
English README
Codex、Claude Code 与 DeepSeek Harness 的本地会话历史查看器。
回看 AI 做了什么、具体怎么做的。 消息容易被工具调用和长输出淹没,想检查某一步的细节也不方便。Session Analyzer 把消息与工具活动放在一起连贯呈现,让你结合上下文展开命令、文件修改和执行结果。需要先找回旧工作时,还可以按项目浏览和搜索历史会话。
Session Analyzer 在本地读取已有转录,不修改或上传其内容。在浏览器中即可回顾当前或历史会话已保存的工作记录。
快速开始 · 回顾会话 · 查看操作 · 搜索历史
Session Analyzer 左侧显示项目会话,中间连贯呈现工作过程,右侧展示命令详情
查看具体操作时,周围的工作上下文始终可见。下方演示均使用合成 Codex 转录。
快速开始
准备 Node.js 24(推荐)和 npm。
选择运行版本:npm 0.2.0 已公开,支持 Codex、Claude Code 与 DeepSeek Harness,包括 Timeline 与 Trajectory。请使用下方匹配的 package 命令。
展开完整文档(README 剩余 1 节)
Session Analyzer English README Codex、Claude Code 与 DeepSeek Harness 的本地会话历史查看器。 回看 AI 做了什么、具体怎么做的。 消息容易被工具调用和长输出淹没,想检查某一步的细节也不方便。Session Analyzer 把消息与工具活动放在一起连贯呈现,让你结合上下文展开命令、文件修改和执行结果。需要先找回旧工作时,还可以按项目浏览和搜索历史会话。 Session Analyzer 在本地读取已有转录,不修改或上传其内容。在浏览器中即可回顾当前或历史会话已保存的工作记录。 快速开始 · 回顾会话 · 查看操作 · 搜索历史 Session Analyzer 左侧显示项目会话,中间连贯呈现工作过程,右侧展示命令详情 查看具体操作时,周围的工作上下文始终可见。下方演示均使用合成 Codex 转录。 快速开始 准备 Node.js 24(推荐)和 npm。 选择运行版本:npm 0.2.0 已公开,支持 Codex、Claude Code 与 DeepSeek Harness,包括 Timeline 与 Trajectory。请使用下方匹配的 package 命令。 按转录来源选择一个启动命令: Codex npx session-analyzer@0.2.0 Claude Code npx session-analyzer@0.2.0 --source claude-code DeepSeek Harness npx session-analyzer@0.2.0 --source deepseek-harness 如需从 Analyzer checkout 进行本地开发或验证,请运行: node server.js --source deepseek-harness 打开 *,选择项目,等待索引完成,再从左侧打开一个会话。从 Main timeline(主时间线) 开始阅读。查找旧会话时,点击搜索旁的 session(会话) 范围按钮,再选择 Entire project(整个项目)。 启动时指定项目可添加 --repo /path/to/project。Windows 示例: npx session-analyzer@0.2.0 --repo 'C:\path\to\project' --repo 是你想查看历史的项目。Analyzer checkout 或安装目录、目标项目和转录根目录是不同的位置。也可以让 agent 按启动与验收指南替你配置。 回顾一次会话做了什么 下方示例中,agent 修改两个文件,遇到测试失败,补充修复后再次运行测试。在默认 Timeline 中按顺序阅读消息与工具活动,收起输出,并随时展开需要的细节。 工具密集的合成会话在折叠 Timeline 中仍能连贯阅读消息与工具活动 工具调用太多时,切换到 Trajectory,用紧凑视图回看同一段对话与工具活动。展开工具组可查看具体操作,也可以通过序列概览导航。 同一会话片段的 Trajectory 呈现,保留可读消息并紧凑归组可展开的工具活动 两种视图都显示当前已加载的事件;长会话可继续加载更多。 查看一次具体操作怎么做的 需要核查某次修改或失败命令时,在 Timeline 中展开对应事件,或在 Trajectory 中选择该操作。Timeline 在事件内显示命令输出与高亮修改,并在右侧提供补充详情;Trajectory 则在右侧打开所选操作的详情。结合周围的工作上下文,看清请求了什么、返回了什么。 展开的 Timeline 补丁在中间显示高亮修改,右侧提供结果、文件与来源信息 看清请求了什么、修改了什么、工具返回了什么,再继续阅读会话。Protocol layer(协议层) 提供支持这些活动的运行记录。结构化详情不足时,可通过 Raw records(原始记录) 或事件的原始引用核对最初的转录条目。 找回旧会话,继续阅读 记得文件名、命令或一句话,却忘了在哪次会话中?点击搜索旁的 session(会话) 范围按钮,选择 Entire project(整个项目),搜索消息、命令、文件路径与输出。打开命中即可进入另一个会话的对应事件,再接着阅读周围的工作。 从一个会话发起整个项目搜索,打开另一个会话中的命中并继续阅读 演示从会话 A 开始,搜索 npm test -- project-switch,在会话 B 中找到该命令,最后停在 B 的对应操作与上下文。实际使用时,换成自己历史中记得的文件名、命令或短语。搜索按忽略大小写的普通文本匹配;通过独立的文件、类型和状态筛选缩小范围。status:failed 等文字仍按字面搜索。 需要时,补全上下文 - 关联会话:沿受支持的 review、subagent 与 fork 关系查看继承上下文、返回父会话。可用性取决于各来源实际记录的关系。 - Code Mode:通过结构化请求与结果查看工具编排中受支持的操作。展示覆盖取决于来源与已记录的证据。 - Codex Token 与缓存观测:查看单次请求的 Token 计量,以及保守推断的缓存复用下降,并跳转到对应的协议层证据。这些观测不证明缓存过期,也不代表服务端缓存状态。 合成 Codex review 派生会话展示继承上下文,并导航返回父会话 这个 Codex review 示例展示继承上下文导航。不同来源之间的差异见来源支持与边界。 来源与环境要求 | 来源 | 默认转录根目录 | 自定义根目录参数 | | Codex(默认) | ~/.codex | --codex-home | | Claude Code | ~/.claude | --claude-home | | DeepSeek Harness | ~/.dsh/sessions | --dsh-home | 在对应参数后填写转录根目录。DeepSeek Harness 使用会话持久化目录作为根。也可以在项目选择界面切换来源或编辑根目录,无需重启。任一时刻只扫描活跃来源,不构建混合来源索引。 已安装 CLI 支持 Node.js 22 起的 LTS 版本,推荐 24,并使用 npm 安装。DeepSeek session.jsonl.zstd 需要 Node 内置 Zstandard API;Node 22 从 22.15.0 起提供,最终以实际能力检查为准。没有该能力时,未压缩的 session.jsonl 仍可读取。源码开发另有更严格的 Node/npm 策略。 当前会话阅读基于已持久化的历史,不承诺实时监控或自动刷新。视图呈现记录中的操作与结果,不推断隐藏思维或因果关系。 Claude Code 外置的 tool-results/ payload 暂不加载或搜索。受支持格式中未识别的事件保留 Protocol/Raw 兜底,但并非每类事件都有专门的展示。未支持的 DeepSeek 格式版本会被跳过,并显示诊断。 服务器默认绑定 127.0.0.1。通过 --host 暴露到 localhost 之外,可能让其他机器读取当前进程可访问的转录。v0.2 支持的接口是 CLI;内部 HTTP API 与具体版本相关。 常见问题与故障排查 没有项目或会话? 核对当前来源、转录根目录与项目路径,再清除筛选。零匹配不代表没有历史。见故障排查。 页面打开了,历史就能读了吗? 等待索引完成,检查会话数与诊断。页面可访问只证明 HTTP 就绪;可读会话也可能与被跳过的工件同时存在。Agent 指南区分这些结果。 历史很大,或索引失败? 先尝试普通索引。诊断与内存恢复指南提供聚合日志收集方法,以及仅在相关失败后临时调整 heap 的步骤。 让 agent 替你启动 复制以下请求,填写项目与来源后交给 agent: 请为我在本地启动 Session Analyzer:https://github.com/Yijia-Zhou/session-analyzer 目标项目:转录来源:选择支持该来源的版本,并按对应 README 及其链接的启动指南操作。 核验索引完成,再实际打开一个会话确认可读。 告诉我本地访问地址、实际版本、会话数及任何诊断。 在线启动与验收指南涵盖版本选择、配置及实际阅读核验。使用指南是在线文档,不承诺包含在 npm 包内。 开发与贡献 参阅开发环境、检查命令与仓库结构、文档索引、架构及性能设计。反馈问题时请附版本、来源和复现步骤;公开报告中使用合成或脱敏转录。 BSD 3-Clause。见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Yijia-Zhou/session-analyzer
本地回看 AI 会话,展开工具调用与执行结果
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目