context-audit 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- context_audit-0.1.0/LICENSE +21 -0
- context_audit-0.1.0/PKG-INFO +177 -0
- context_audit-0.1.0/README.md +160 -0
- context_audit-0.1.0/context_audit/__init__.py +1 -0
- context_audit-0.1.0/context_audit/analyzer.py +729 -0
- context_audit-0.1.0/context_audit/classifier.py +89 -0
- context_audit-0.1.0/context_audit/cli.py +157 -0
- context_audit-0.1.0/context_audit/events.py +16 -0
- context_audit-0.1.0/context_audit/parser.py +235 -0
- context_audit-0.1.0/context_audit/parsers.py +83 -0
- context_audit-0.1.0/context_audit/reporter.py +482 -0
- context_audit-0.1.0/context_audit.egg-info/PKG-INFO +177 -0
- context_audit-0.1.0/context_audit.egg-info/SOURCES.txt +19 -0
- context_audit-0.1.0/context_audit.egg-info/dependency_links.txt +1 -0
- context_audit-0.1.0/context_audit.egg-info/entry_points.txt +2 -0
- context_audit-0.1.0/context_audit.egg-info/requires.txt +5 -0
- context_audit-0.1.0/context_audit.egg-info/top_level.txt +1 -0
- context_audit-0.1.0/pyproject.toml +36 -0
- context_audit-0.1.0/setup.cfg +4 -0
- context_audit-0.1.0/tests/test_audit.py +109 -0
- context_audit-0.1.0/tests/test_enhancements.py +167 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Antigravity / DeepMind Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: context-audit
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A CLI tool to audit LLM context token usage, timelines, repetition, and waste in agent logs.
|
|
5
|
+
License: MIT
|
|
6
|
+
Classifier: Programming Language :: Python :: 3
|
|
7
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
8
|
+
Classifier: Operating System :: OS Independent
|
|
9
|
+
Requires-Python: >=3.8
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: rich>=13.0.0
|
|
13
|
+
Requires-Dist: tiktoken>=0.5.0
|
|
14
|
+
Provides-Extra: dev
|
|
15
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
16
|
+
Dynamic: license-file
|
|
17
|
+
|
|
18
|
+
# context-audit
|
|
19
|
+
|
|
20
|
+
> **A common assumption about context pruning breaks down in coding-agent workflows.**
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## ๐ The Problem
|
|
25
|
+
|
|
26
|
+
Almost every engineer building or using agentic coding tools (like Claude Code, Cursor, Aider, or custom IDE agents) complains about context size growth and high API bills. The standard engineering intuition for optimization is to prune the history or enable static prompt caching.
|
|
27
|
+
|
|
28
|
+
We built `context-audit` to inspect where coding agent tokens actually go, translating raw token counts into **dollars and cents**, measuring how much content is repeated turn-after-turn, and simulating caching and retrieval savings.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## ๐ Cross-Session Benchmark Summary (27 Sessions)
|
|
33
|
+
|
|
34
|
+
Instead of cherry-picking a single session, we benchmarked a directory of **27 real-world developer session transcripts** scanned recursively from our IDE brain directory (representing a total of **$753.24** in standard input spend):
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
+-------------------------- context-audit benchmark --------------------------+
|
|
38
|
+
| CROSS-SESSION BENCHMARK SUMMARY |
|
|
39
|
+
| Directory: C:\Users\ishu\.gemini\antigravity-ide\brain |
|
|
40
|
+
| |
|
|
41
|
+
| Sessions Analyzed: 27 |
|
|
42
|
+
| |
|
|
43
|
+
| Cumulative Session Tokens: |
|
|
44
|
+
| Avg: 9.3M | Median: 1.2M | Max: 76.3M |
|
|
45
|
+
| Peak Context Size: |
|
|
46
|
+
| Avg: 58.7k | Median: 35.2k | Max: 246.0k |
|
|
47
|
+
| Final Context Size: |
|
|
48
|
+
| Avg: 58.7k | Median: 35.2k |
|
|
49
|
+
| Context Reuse Ratio: |
|
|
50
|
+
| Avg: 94.5% | Median: 97.1% |
|
|
51
|
+
| Average Novel Context Ratio: 5.5% |
|
|
52
|
+
| |
|
|
53
|
+
| Financial Cost Aggregations (USD): |
|
|
54
|
+
| Total Standard Spend: $753.24 |
|
|
55
|
+
| Avg Session Cost (No Cache): $27.90 | Median: $3.48 |
|
|
56
|
+
| Avg Session Cost (With Cache): $27.63 | Median: $3.37 |
|
|
57
|
+
| Total Potential Cache Savings: $7.33 (Avg: $0.27 / session, 1.0%) |
|
|
58
|
+
| |
|
|
59
|
+
+-----------------------------------------------------------------------------+
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Context Size Scaling Analysis
|
|
63
|
+
Our benchmark data indicates that larger sessions become increasingly repetitive, approaching saturation:
|
|
64
|
+
|
|
65
|
+
| Session Size Class (Final Turn) | Session Count | Avg Context Reuse % | Avg Cache Savings ($) | Avg Peak Context Size | Avg Cumulative Tokens |
|
|
66
|
+
| :--- | :---: | :---: | :---: | :---: | :---: |
|
|
67
|
+
| **< 5k tokens** | 2 | 66.3% | $0.00 | 1.6k | 4.9k |
|
|
68
|
+
| **5k - 20k tokens** | 5 | 92.5% | $0.04 | 12.7k | 226.6k |
|
|
69
|
+
| **20k - 50k tokens** | 11 | 96.8% | $0.10 | 32.5k | 1.2M |
|
|
70
|
+
| **> 50k tokens** | 9 | 99.2% | $0.68 | 129.0k | 26.3M |
|
|
71
|
+
|
|
72
|
+
*(For the complete cross-session benchmark report, see [benchmark_summary.md](examples/benchmark_summary.md).)*
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### Why This Matters
|
|
77
|
+
|
|
78
|
+
Long-running coding-agent sessions often exceed 50kโ200k tokens. Most optimization discussions focus on prompt caching, retrieval filtering, and pruning unused context. Our measurements suggest those may not be the dominant costs in this dataset.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## ๐ Two Killed Hypotheses
|
|
83
|
+
|
|
84
|
+
Our measurements falsified two common assumptions about optimizing agent context:
|
|
85
|
+
|
|
86
|
+
* **Killed Hypothesis 1: Static Prompt Caching Saves the Day**
|
|
87
|
+
We expected caching the static prefix (system prompt + tool definitions) would drastically cut costs. Across the 27-session benchmark, caching the static prefix saved only **1.0% ($7.33 of $753 spend)**. Because static prompts are tiny (~500 tokens) compared to the dynamically expanding message history (which grows to over 50k tokens), prefix-caching has almost zero impact.
|
|
88
|
+
* **Killed Hypothesis 2: Unused Retrieval/Context Bloats the Bill**
|
|
89
|
+
We expected that agents were inflating context by carrying around unused tool declarations or retrieved files. In reality, the average cost of unused context (files fetched but never referenced in model outputs) was only **$0.12 per session (0.4%)**, suggesting that the agent's retrieval is highly relevant and does not carry redundant payload.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## ๐ก The Novel Observation: Coding Agents Have Two Memory Systems
|
|
94
|
+
|
|
95
|
+
In this dataset, the dominant contributor to context growth appears to be the accumulated conversation history. However, coding agents are architecturally different from standard chatbots: they have two distinct memory systems:
|
|
96
|
+
|
|
97
|
+
1. **Workspace Memory (Disk-Backed)**
|
|
98
|
+
* *Examples*: Terminal command outputs, read file payloads, file structure listings, and compiler logs.
|
|
99
|
+
* *Verdict*: **Candidate for compaction** (often recoverable from the workspace). Once code changes are written to the workspace, the filesystem becomes the agent's absolute memory. Carrying the raw chat transcripts of how those files were read or built is redundant. In this session, this represents over **80% of technical/execution context** that was entirely prunable without causing technical regressions. Technical history is often recoverable from the workspace and therefore a candidate for compaction.
|
|
100
|
+
2. **Conversational Memory (Not Disk-Backed)**
|
|
101
|
+
* *Examples*: User preferences, constraints, stylistic choices, design philosophies, and rejected options (e.g., "why we are not using embeddings").
|
|
102
|
+
* *Verdict*: **Must persist**. These preferences reside purely in the conversational narrative. Pruning them naively causes social regression โ the agent suggesting previously rejected approaches because it lacks the alignment context. (See [regression_case.md](examples/regression_case.md) for how this looks in practice).
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## ๐งช Simulated Pruning Example: Side-by-Side
|
|
107
|
+
|
|
108
|
+
To demonstrate this behavior, we ran a simulation of a hypothetical **Turn 124** prompt from a developer session:
|
|
109
|
+
|
|
110
|
+
> *"Should we add an LLM-as-a-judge step to score the relevance of repeated blocks, and should we generate a glassmorphic HTML dashboard?"*
|
|
111
|
+
|
|
112
|
+
Here is the comparison of the agent's simulated response under two configurations:
|
|
113
|
+
|
|
114
|
+
| Configuration A: Full History Context (No Pruning) | Configuration B: Naively Pruned Context (Last 15 Turns) |
|
|
115
|
+
| :--- | :--- |
|
|
116
|
+
| **Context Size**: ~47.0k tokens (entire conversation history) | **Context Size**: ~5.0k tokens (System + Tools + Turns 108โ123) |
|
|
117
|
+
| **Model Response**: | **Model Response**: |
|
|
118
|
+
| *"We should avoid both. In Turns 20 and 30, we explicitly decided to drop the HTML dashboard to avoid over-engineering, and we banned LLM-as-a-judge/AI-judging to keep the tool fast, deterministic, and objective (relying strictly on MD5 exact block hashing)."* | *"Yes, that is a great idea! We can use a lightweight model like GPT-4o-mini to score the semantic relevance of blocks on a scale of 1-5, and we can output a beautiful interactive HTML dashboard with glassmorphism to make the cost summaries highly visual."* |
|
|
119
|
+
| **Result**: **CORRECT & ALIGNED** | **Result**: **CRITICAL REGRESSION** |
|
|
120
|
+
| **Verdict**: The model retains social constraints and user preferences that only existed in the chat history. | **Verdict**: The model reverts to generic AI helpfulness, suggesting exactly the features the user explicitly rejected. |
|
|
121
|
+
|
|
122
|
+
*(For a deeper breakdown of this experiment, see the [regression_case.md](examples/regression_case.md) example.)*
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## ๐ Terminal Run Output
|
|
127
|
+
|
|
128
|
+
Running `context-audit run` on a single developer transcript outputs a clean, crash-safe ASCII report breaking down the timeline, costs, and repetition metrics:
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
+---------------------------- context-audit v0.1 -----------------------------+
|
|
132
|
+
| CONTEXT AUDIT REPORT |
|
|
133
|
+
| Target: transcript.jsonl |
|
|
134
|
+
| |
|
|
135
|
+
| Cumulative Session Tokens: 2.8M tokens |
|
|
136
|
+
| Peak Context Size: 47.0k tokens |
|
|
137
|
+
| Final Context Size: 47.0k tokens |
|
|
138
|
+
| Total Turns: 123 |
|
|
139
|
+
| |
|
|
140
|
+
| Context Reuse Ratio: 98.3% |
|
|
141
|
+
| Novel Context Ratio: 1.7% |
|
|
142
|
+
| |
|
|
143
|
+
| Financial Cost Estimates: |
|
|
144
|
+
| Est. Input Cost (No Caching): $8.40 |
|
|
145
|
+
| Est. Cost (With Prompt Caching): $8.24 |
|
|
146
|
+
| Potential Cache Savings (this session): $0.16 (1.9%) |
|
|
147
|
+
| |
|
|
148
|
+
| [Note: Context Reuse represents cumulative tokens consisting of previously |
|
|
149
|
+
| seen blocks. |
|
|
150
|
+
| Prompt Caching assumes system prompt + tool schemas are cached after the |
|
|
151
|
+
| first turn.] |
|
|
152
|
+
+-----------------------------------------------------------------------------+
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
*(For the full output, including the repeated blocks analysis and consumers table, see [single_session_report.md](examples/single_session_report.md).)*
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## ๐ Usage
|
|
160
|
+
|
|
161
|
+
`context-audit` scans local logs and prints clean summaries.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Audit a single transcript JSONL or session JSON file
|
|
165
|
+
context-audit run path/to/transcript.jsonl
|
|
166
|
+
|
|
167
|
+
# Benchmark all logs in a directory recursively
|
|
168
|
+
context-audit benchmark path/to/logs_directory
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## ๐ Honest Scope & Limitations
|
|
174
|
+
|
|
175
|
+
* **Tested on coding agents with disk-backed state**: All observations are based on software development tasks where code changes can be written to, and inspected from, a local workspace disk.
|
|
176
|
+
* **Reasoned Simulation**: Experiment 2's pruned-context response is a reasoned simulation demonstrating narrative coherence degradation, not a literal blind LLM replay. (See the detailed comparison in [regression_case.md](examples/regression_case.md)).
|
|
177
|
+
* **Scope Restriction**: This tool and these findings have not been tested on RAG, conversational chat, or non-coding workflows.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# context-audit
|
|
2
|
+
|
|
3
|
+
> **A common assumption about context pruning breaks down in coding-agent workflows.**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ๐ The Problem
|
|
8
|
+
|
|
9
|
+
Almost every engineer building or using agentic coding tools (like Claude Code, Cursor, Aider, or custom IDE agents) complains about context size growth and high API bills. The standard engineering intuition for optimization is to prune the history or enable static prompt caching.
|
|
10
|
+
|
|
11
|
+
We built `context-audit` to inspect where coding agent tokens actually go, translating raw token counts into **dollars and cents**, measuring how much content is repeated turn-after-turn, and simulating caching and retrieval savings.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## ๐ Cross-Session Benchmark Summary (27 Sessions)
|
|
16
|
+
|
|
17
|
+
Instead of cherry-picking a single session, we benchmarked a directory of **27 real-world developer session transcripts** scanned recursively from our IDE brain directory (representing a total of **$753.24** in standard input spend):
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
+-------------------------- context-audit benchmark --------------------------+
|
|
21
|
+
| CROSS-SESSION BENCHMARK SUMMARY |
|
|
22
|
+
| Directory: C:\Users\ishu\.gemini\antigravity-ide\brain |
|
|
23
|
+
| |
|
|
24
|
+
| Sessions Analyzed: 27 |
|
|
25
|
+
| |
|
|
26
|
+
| Cumulative Session Tokens: |
|
|
27
|
+
| Avg: 9.3M | Median: 1.2M | Max: 76.3M |
|
|
28
|
+
| Peak Context Size: |
|
|
29
|
+
| Avg: 58.7k | Median: 35.2k | Max: 246.0k |
|
|
30
|
+
| Final Context Size: |
|
|
31
|
+
| Avg: 58.7k | Median: 35.2k |
|
|
32
|
+
| Context Reuse Ratio: |
|
|
33
|
+
| Avg: 94.5% | Median: 97.1% |
|
|
34
|
+
| Average Novel Context Ratio: 5.5% |
|
|
35
|
+
| |
|
|
36
|
+
| Financial Cost Aggregations (USD): |
|
|
37
|
+
| Total Standard Spend: $753.24 |
|
|
38
|
+
| Avg Session Cost (No Cache): $27.90 | Median: $3.48 |
|
|
39
|
+
| Avg Session Cost (With Cache): $27.63 | Median: $3.37 |
|
|
40
|
+
| Total Potential Cache Savings: $7.33 (Avg: $0.27 / session, 1.0%) |
|
|
41
|
+
| |
|
|
42
|
+
+-----------------------------------------------------------------------------+
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Context Size Scaling Analysis
|
|
46
|
+
Our benchmark data indicates that larger sessions become increasingly repetitive, approaching saturation:
|
|
47
|
+
|
|
48
|
+
| Session Size Class (Final Turn) | Session Count | Avg Context Reuse % | Avg Cache Savings ($) | Avg Peak Context Size | Avg Cumulative Tokens |
|
|
49
|
+
| :--- | :---: | :---: | :---: | :---: | :---: |
|
|
50
|
+
| **< 5k tokens** | 2 | 66.3% | $0.00 | 1.6k | 4.9k |
|
|
51
|
+
| **5k - 20k tokens** | 5 | 92.5% | $0.04 | 12.7k | 226.6k |
|
|
52
|
+
| **20k - 50k tokens** | 11 | 96.8% | $0.10 | 32.5k | 1.2M |
|
|
53
|
+
| **> 50k tokens** | 9 | 99.2% | $0.68 | 129.0k | 26.3M |
|
|
54
|
+
|
|
55
|
+
*(For the complete cross-session benchmark report, see [benchmark_summary.md](examples/benchmark_summary.md).)*
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### Why This Matters
|
|
60
|
+
|
|
61
|
+
Long-running coding-agent sessions often exceed 50kโ200k tokens. Most optimization discussions focus on prompt caching, retrieval filtering, and pruning unused context. Our measurements suggest those may not be the dominant costs in this dataset.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## ๐ Two Killed Hypotheses
|
|
66
|
+
|
|
67
|
+
Our measurements falsified two common assumptions about optimizing agent context:
|
|
68
|
+
|
|
69
|
+
* **Killed Hypothesis 1: Static Prompt Caching Saves the Day**
|
|
70
|
+
We expected caching the static prefix (system prompt + tool definitions) would drastically cut costs. Across the 27-session benchmark, caching the static prefix saved only **1.0% ($7.33 of $753 spend)**. Because static prompts are tiny (~500 tokens) compared to the dynamically expanding message history (which grows to over 50k tokens), prefix-caching has almost zero impact.
|
|
71
|
+
* **Killed Hypothesis 2: Unused Retrieval/Context Bloats the Bill**
|
|
72
|
+
We expected that agents were inflating context by carrying around unused tool declarations or retrieved files. In reality, the average cost of unused context (files fetched but never referenced in model outputs) was only **$0.12 per session (0.4%)**, suggesting that the agent's retrieval is highly relevant and does not carry redundant payload.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## ๐ก The Novel Observation: Coding Agents Have Two Memory Systems
|
|
77
|
+
|
|
78
|
+
In this dataset, the dominant contributor to context growth appears to be the accumulated conversation history. However, coding agents are architecturally different from standard chatbots: they have two distinct memory systems:
|
|
79
|
+
|
|
80
|
+
1. **Workspace Memory (Disk-Backed)**
|
|
81
|
+
* *Examples*: Terminal command outputs, read file payloads, file structure listings, and compiler logs.
|
|
82
|
+
* *Verdict*: **Candidate for compaction** (often recoverable from the workspace). Once code changes are written to the workspace, the filesystem becomes the agent's absolute memory. Carrying the raw chat transcripts of how those files were read or built is redundant. In this session, this represents over **80% of technical/execution context** that was entirely prunable without causing technical regressions. Technical history is often recoverable from the workspace and therefore a candidate for compaction.
|
|
83
|
+
2. **Conversational Memory (Not Disk-Backed)**
|
|
84
|
+
* *Examples*: User preferences, constraints, stylistic choices, design philosophies, and rejected options (e.g., "why we are not using embeddings").
|
|
85
|
+
* *Verdict*: **Must persist**. These preferences reside purely in the conversational narrative. Pruning them naively causes social regression โ the agent suggesting previously rejected approaches because it lacks the alignment context. (See [regression_case.md](examples/regression_case.md) for how this looks in practice).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## ๐งช Simulated Pruning Example: Side-by-Side
|
|
90
|
+
|
|
91
|
+
To demonstrate this behavior, we ran a simulation of a hypothetical **Turn 124** prompt from a developer session:
|
|
92
|
+
|
|
93
|
+
> *"Should we add an LLM-as-a-judge step to score the relevance of repeated blocks, and should we generate a glassmorphic HTML dashboard?"*
|
|
94
|
+
|
|
95
|
+
Here is the comparison of the agent's simulated response under two configurations:
|
|
96
|
+
|
|
97
|
+
| Configuration A: Full History Context (No Pruning) | Configuration B: Naively Pruned Context (Last 15 Turns) |
|
|
98
|
+
| :--- | :--- |
|
|
99
|
+
| **Context Size**: ~47.0k tokens (entire conversation history) | **Context Size**: ~5.0k tokens (System + Tools + Turns 108โ123) |
|
|
100
|
+
| **Model Response**: | **Model Response**: |
|
|
101
|
+
| *"We should avoid both. In Turns 20 and 30, we explicitly decided to drop the HTML dashboard to avoid over-engineering, and we banned LLM-as-a-judge/AI-judging to keep the tool fast, deterministic, and objective (relying strictly on MD5 exact block hashing)."* | *"Yes, that is a great idea! We can use a lightweight model like GPT-4o-mini to score the semantic relevance of blocks on a scale of 1-5, and we can output a beautiful interactive HTML dashboard with glassmorphism to make the cost summaries highly visual."* |
|
|
102
|
+
| **Result**: **CORRECT & ALIGNED** | **Result**: **CRITICAL REGRESSION** |
|
|
103
|
+
| **Verdict**: The model retains social constraints and user preferences that only existed in the chat history. | **Verdict**: The model reverts to generic AI helpfulness, suggesting exactly the features the user explicitly rejected. |
|
|
104
|
+
|
|
105
|
+
*(For a deeper breakdown of this experiment, see the [regression_case.md](examples/regression_case.md) example.)*
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## ๐ Terminal Run Output
|
|
110
|
+
|
|
111
|
+
Running `context-audit run` on a single developer transcript outputs a clean, crash-safe ASCII report breaking down the timeline, costs, and repetition metrics:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
+---------------------------- context-audit v0.1 -----------------------------+
|
|
115
|
+
| CONTEXT AUDIT REPORT |
|
|
116
|
+
| Target: transcript.jsonl |
|
|
117
|
+
| |
|
|
118
|
+
| Cumulative Session Tokens: 2.8M tokens |
|
|
119
|
+
| Peak Context Size: 47.0k tokens |
|
|
120
|
+
| Final Context Size: 47.0k tokens |
|
|
121
|
+
| Total Turns: 123 |
|
|
122
|
+
| |
|
|
123
|
+
| Context Reuse Ratio: 98.3% |
|
|
124
|
+
| Novel Context Ratio: 1.7% |
|
|
125
|
+
| |
|
|
126
|
+
| Financial Cost Estimates: |
|
|
127
|
+
| Est. Input Cost (No Caching): $8.40 |
|
|
128
|
+
| Est. Cost (With Prompt Caching): $8.24 |
|
|
129
|
+
| Potential Cache Savings (this session): $0.16 (1.9%) |
|
|
130
|
+
| |
|
|
131
|
+
| [Note: Context Reuse represents cumulative tokens consisting of previously |
|
|
132
|
+
| seen blocks. |
|
|
133
|
+
| Prompt Caching assumes system prompt + tool schemas are cached after the |
|
|
134
|
+
| first turn.] |
|
|
135
|
+
+-----------------------------------------------------------------------------+
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
*(For the full output, including the repeated blocks analysis and consumers table, see [single_session_report.md](examples/single_session_report.md).)*
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## ๐ Usage
|
|
143
|
+
|
|
144
|
+
`context-audit` scans local logs and prints clean summaries.
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Audit a single transcript JSONL or session JSON file
|
|
148
|
+
context-audit run path/to/transcript.jsonl
|
|
149
|
+
|
|
150
|
+
# Benchmark all logs in a directory recursively
|
|
151
|
+
context-audit benchmark path/to/logs_directory
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## ๐ Honest Scope & Limitations
|
|
157
|
+
|
|
158
|
+
* **Tested on coding agents with disk-backed state**: All observations are based on software development tasks where code changes can be written to, and inspected from, a local workspace disk.
|
|
159
|
+
* **Reasoned Simulation**: Experiment 2's pruned-context response is a reasoned simulation demonstrating narrative coherence degradation, not a literal blind LLM replay. (See the detailed comparison in [regression_case.md](examples/regression_case.md)).
|
|
160
|
+
* **Scope Restriction**: This tool and these findings have not been tested on RAG, conversational chat, or non-coding workflows.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|