f99010fae1
CI / lint (push) Failing after 1s
CI / frontend (push) Failing after 1s
CI / scripts (push) Failing after 1s
CI / Go Test (ubuntu-latest) (push) Failing after 0s
CI / frontend-node-25 (push) Failing after 1s
CI / docs (push) Failing after 0s
CI / coverage (push) Failing after 0s
CI / e2e (push) Failing after 0s
Docker / build-and-push (push) Failing after 1s
CI / integration (push) Failing after 4m43s
CI / Go Test (windows-latest) (push) Has been cancelled
CI / Desktop Unit Tests (Windows) (push) Has been cancelled
Desktop Artifacts / Desktop Build (Linux (arm64)) (push) Has been cancelled
Desktop Artifacts / Desktop Build (Linux) (push) Has been cancelled
Desktop Artifacts / Desktop Build (Windows) (push) Has been cancelled
Desktop Artifacts (macOS) / Desktop Build (macOS (aarch64)) (push) Has been cancelled
Desktop Artifacts (macOS) / Desktop Build (macOS (x86_64)) (push) Has been cancelled
205 lines
7.3 KiB
Markdown
205 lines
7.3 KiB
Markdown
---
|
|
title: Stats
|
|
description: Experimental workspace analytics via agentsview stats
|
|
---
|
|
|
|
`agentsview stats` is a top-level CLI command added in 0.23.0 for
|
|
window-scoped reporting over your local session archive. It emits a
|
|
human-readable summary by default and can also emit JSON for scripts
|
|
and downstream tooling.
|
|
|
|
!!! warning "Experimental"
|
|
`agentsview stats` is experimental. The human-readable output is not
|
|
stable, and the exact JSON output may change in future releases.
|
|
Treat it as a moving surface and parse it defensively.
|
|
|
|
## What It Reports
|
|
|
|
The command pulls together several categories of information:
|
|
|
|
- **Session totals** — total sessions, human versus automation
|
|
sessions, total messages, total user messages
|
|
- **Session archetypes** — automation, quick, standard, deep, and
|
|
marathon buckets
|
|
- **Session shape** — mean duration, user-message counts, peak
|
|
context, and tools-per-turn
|
|
- **Velocity** — turn-cycle timing, first-response timing, and
|
|
messages per active hour
|
|
- **Tool, model, and agent mix** — top tool categories plus token
|
|
and session mix by model and agent
|
|
- **Claude-only optional sections** — cache economics, plan-mode
|
|
adoption, subagent activity, and skill counts when the window has
|
|
compatible data
|
|
- **Temporal activity** — active UTC-hour buckets plus the reporter
|
|
timezone
|
|
- **Git outcomes** — commit, LOC, file-change, and optional PR
|
|
totals for repos enclosing session working directories
|
|
- **Session outcomes** — aggregate counts, grade distribution,
|
|
retry rate, compactions per session, and edit churn. The raw
|
|
[four outcomes](/session-intelligence/#outcome-classification)
|
|
(`completed`, `abandoned`, `errored`, `unknown`) are rolled up
|
|
here into three buckets: `success` (= `completed`), `failure`
|
|
(= `abandoned` or `errored`), and `unknown` (= `unknown` plus
|
|
any unrecognized value). The rollup applies to both the human
|
|
summary and the JSON `outcomes` block.
|
|
- **Code attribution** — optional AI-authored code attribution from
|
|
host-local attribution sources such as Cursor.
|
|
|
|
## Automation Scope
|
|
|
|
As of 0.25.0, `agentsview stats` uses each session's stored
|
|
`is_automated` value as the authority for human versus automation
|
|
scope. That classification drives session totals, archetypes, the
|
|
`scope_human` distributions, and the human-scoped
|
|
`agent_portfolio` fields (`by_sessions_human`, `by_messages_human`,
|
|
`by_tokens_human`, and `primary_human`). `scope_all` still includes
|
|
every session in the selected window.
|
|
|
|
For the `user_messages.scope_human` distribution only, sessions with
|
|
fewer than two user messages are omitted from that distribution's
|
|
mean and buckets because the human bucket set starts at two user
|
|
messages. They still contribute to `scope_all` and to the session
|
|
totals according to their `is_automated` value.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# Human-readable summary for the last 28 days
|
|
agentsview stats
|
|
|
|
# Fixed date range as JSON
|
|
agentsview stats --format json --since 2026-04-01 --until 2026-04-15
|
|
|
|
# Narrow to one agent and one project
|
|
agentsview stats --agent claude --include-project my-app
|
|
```
|
|
|
|
## Flags
|
|
|
|
| Flag | Default | Description |
|
|
|------|---------|-------------|
|
|
| `--format` | `human` | Output format: `human` or `json` |
|
|
| `--json` | `false` | Alias for `--format json` |
|
|
| `--since` | `28d` | Start of window, either a compact duration like `28d` or a `YYYY-MM-DD` date |
|
|
| `--until` | now | End of window as `YYYY-MM-DD` |
|
|
| `--agent` | `all` | Restrict to one agent, or leave as `all` |
|
|
| `--include-project` | | Repeatable project allowlist |
|
|
| `--exclude-project` | | Repeatable project blocklist |
|
|
| `--timezone` | local | Timezone used for temporal reporting |
|
|
|
|
## Data Scope
|
|
|
|
Session-derived stats summarize the selected window in the local
|
|
AgentsView archive. When the command talks to a local SQLite daemon, the
|
|
daemon answers from that same archive. If it falls back to a direct
|
|
read-only SQLite open, it reads the archive file directly.
|
|
|
|
Code attribution is different: it is not synced session data. When
|
|
present, the Cursor source in the `code_attribution.sources` array is
|
|
read live from the Cursor attribution database on the host answering
|
|
the stats request:
|
|
`~/.cursor/ai-tracking/ai-code-tracking.db` by default, or the path in
|
|
`AGENTSVIEW_CURSOR_ATTRIBUTION_DB`.
|
|
|
|
That means the Cursor source is machine-local. It is not aggregated
|
|
across synced machines, is not pushed to PostgreSQL, and is not available
|
|
from PostgreSQL read-only serving. Project filters cannot be represented
|
|
against Cursor's attribution database, so project-filtered stats include
|
|
a Cursor source with `status: "unsupported_filter"` instead of silently
|
|
reporting zero attribution.
|
|
|
|
## Human Output
|
|
|
|
The default human output is organized into named sections. Depending
|
|
on the data available in the selected window, you may see:
|
|
|
|
- `Totals`
|
|
- `Archetypes`
|
|
- `Session shape`
|
|
- `Velocity`
|
|
- `Tool mix`
|
|
- `Model mix`
|
|
- `Agent portfolio`
|
|
- `Cache economics`
|
|
- `Adoption`
|
|
- `Temporal`
|
|
- `Outcome stats`
|
|
- `Outcomes`
|
|
- `Code attribution`
|
|
|
|
Some sections are optional. For example, git-based outcome stats are
|
|
omitted when AgentsView cannot derive any repos from the sessions in
|
|
the selected window, and Claude-only sections are omitted when the
|
|
window has no compatible data.
|
|
|
|
## JSON Output
|
|
|
|
JSON output currently carries `schema_version: 1` and is divided into
|
|
top-level blocks such as:
|
|
|
|
- `window`
|
|
- `filters`
|
|
- `totals`
|
|
- `distributions`
|
|
- `archetypes`
|
|
- `velocity`
|
|
- `tool_mix`
|
|
- `model_mix`
|
|
- `agent_portfolio`
|
|
- `temporal`
|
|
- `generated_at`
|
|
|
|
Optional blocks may also appear:
|
|
|
|
- `cache_economics`
|
|
- `adoption`
|
|
- `outcome_stats`
|
|
- `outcomes`
|
|
- `code_attribution`
|
|
|
|
`code_attribution.sources` lists attribution sources that contributed to
|
|
the selected stats request. Each source carries `provider`, `scope`,
|
|
`status`, optional `warnings`, and provider-specific `metrics`. The
|
|
Cursor source currently uses `scope: "machine_local"`.
|
|
|
|
Current source statuses are `available`, `empty`, `unavailable`, `error`,
|
|
and `unsupported_filter`. Check a source's `warnings` before interpreting
|
|
missing metrics or zero counters as zero AI code activity. If an agent
|
|
filter excludes Cursor, the Cursor source is omitted. If no source
|
|
contributes, the whole `code_attribution` block is omitted.
|
|
|
|
Even though the JSON currently includes a version number, it is still
|
|
best to treat it as experimental and additive: expect new fields,
|
|
optional blocks, and formatting changes over time.
|
|
|
|
## Git And PR Aggregation
|
|
|
|
`agentsview stats` uses session working directories to discover git
|
|
repositories and then aggregates git activity for the configured
|
|
author in each repo.
|
|
|
|
That includes:
|
|
|
|
- commit counts
|
|
- lines added and removed
|
|
- files changed
|
|
|
|
Pull-request counts are optional and use CLI-oriented GitHub token
|
|
sources:
|
|
|
|
- If `AGENTSVIEW_GITHUB_TOKEN` is set, AgentsView uses it.
|
|
- Otherwise it tries `gh auth token`.
|
|
- If neither source yields a token, PR counts are omitted instead of
|
|
being reported as zero.
|
|
|
|
This distinction matters in JSON output: a missing PR field means
|
|
"GitHub lookup not configured", not "configured and zero PRs found".
|
|
|
|
## Relationship To Session Intelligence
|
|
|
|
[`Session Intelligence`](/session-intelligence/) is the per-session
|
|
surface for health scores, outcomes, and signal inspection.
|
|
|
|
`agentsview stats` is the aggregate surface: it summarizes the whole
|
|
archive over a window rather than explaining one session at a time.
|