SkyWalking AI Sessionizer 0.3.0 is released. Go to downloads page to find release tars.
This is the first Apache release of AI Sessionizer, voted by the SkyWalking PMC. It ships a signed source package and signed binary packages for macOS, Linux and Windows, on both AMD64 and ARM64. The 0.1.0 and 0.2.0 builds on GitHub came before the vote and are not Apache releases.
Changes by Version
0.3.0
Commands
asz collectruns the whole pipeline in one pass: it lands new records, parses every session that changed, then sends whatexport.otlpasks for. All enabled local adapters are read in the same pass.- New
asz serverruns the pipeline and the local conversation page in one process, for watching your own conversations. asz viewis now read-only. It serves a storage root that already holds conversations, such as one copied from another machine, and never collects, parses or sends.asz pushmakes one pass and exits.export.otlp.intervalis removed; the collector’sintervalis the only period.asz verifynow reports a lost first or last landed file of a stream against its append cursor, including a newend gapline.asz scenario buildkeeps building sessions with--every, reads several scenario files or a directory, and supports--pickand--seed.--removesets when a pipeline may delete the sessions a build wrote. Real Claude Code sessions are never removed.
Workspace changes
- The files a tool call changed are shown beside its step. The Claude Code adapter records the patch of every
EditandWriteresult. - A new Claude Code plugin records the changes of shell commands and of edits made inside subagents. It ships in every binary package under
claude-code-plugin/. - A new
claude-code-changesadapter, on by default, collects the plugin’s records. asz.viewaddsworkspace_changes, joining every change record to its step.
Metrics
claude-code-localwithmetrics: truederivesclaude_code.token.usagefrom the landed files, per minute, by token type, model, query source and session.metrics_lookback, 24 hours by default, bounds the first derivation over existing history.- New
claude-code-otlpadapter: an OpenTelemetry receiver, over gRPC and HTTP on one port, that Claude Code’s own exporter can point at. Metrics can be enabled on only one of the two adapters, so tokens are never counted twice. export.otlp.logsandexport.otlp.metricsswitch sending of logs and metrics independently.
Conversation list and page
- The conversation list shows talks, model calls, subagents, Bash runs and changes with lines added and removed, matching Horizon’s conversation list. Later loads reuse cached results until the conversation changes.
- The conversation page is drawn by Horizon’s conversation renderer, embedded in the binary, so
asz serverandasz viewshow a conversation the same way the SkyWalking UI does, with no network access. Tool inputs and results appear as fields, edits as line diffs, and the inspector has a Changes tab.
Collection
- Landed records keep the provider
modela call ran on, so per-model metrics can be derived from landed data alone. - Source JSON keeps its original bytes apart from whitespace, instead of escaping
<,>,&, U+2028 and U+2029. - Parts that are not valid UTF-8 are kept in base64 with
encoding: base64, instead of losing bytes. The schema stayssd/1, and files landed earlier read as before. - Cursors of source files that Claude Code pruned are now marked
source_gone, and set back toactivewhen a file is restored.
Reliability
- A round file is published only when it is complete, read-only and synced, so an interrupted write no longer leaves a truncated
.sffile that breaks later parses. This also works on exFAT storage on macOS. asz repackrefuses a destination that already holds data.- Adapter configuration: omitting
enabledno longer disables a local adapter, and an entry withoutexcludeinherits the default/private/tmp/**exclusion. - Token derivation survives interrupted passes and files that are still being written, without overlapping or double-counted windows.
- The Claude Code plugin applies roots, exclusions and content limits to subagent edits. Its
readonly-v2policy detects writes by command wrappers and writing modes that were skipped before. - The plugin’s hooks start the binary directly, without a shell.
Export
push.staterecords which receiver files were sent to and which files it rejected.- A receiver’s partial success is counted as
rejectedand not retried. - Over HTTP, a 2xx response counts as sent only when its body is empty or protobuf, and redirects are not followed, so an HTML or login page no longer marks files as sent.
Packaging
- Windows ARM64 joins the binary packages, for six platforms in total.
- The container image
ghcr.io/apache/skywalking-ai-sessionizeris published as<version>andlatestonly. Newmajor.minortags are no longer published. - The source package no longer contains the conversation page’s fonts. A build from source draws the page with system fonts, while the binary packages still embed them.
All issues and pull requests are here