-
Notifications
You must be signed in to change notification settings - Fork 2
Closed
Labels
Description
Problem
Currently, current-session.txt only tracks operation counts, NOT actual token savings:
{
"lastOptimized": 0,
"sessionId": "aad1f532-43d3-44af-ba65-6f89c409b122",
"sessionStart": "20251031-082211",
"totalOperations": 2201,
"totalTokens": 0
}Users must manually call get_session_stats() MCP tool to see their savings. This creates friction for:
- Real-time monitoring during sessions
- Quick checks of optimization effectiveness
- Dashboard integrations
- Automation scripts
Proposed Solution
Auto-update current-session.txt with token savings data from get_session_stats():
{
"sessionId": "aad1f532-43d3-44af-ba65-6f89c409b122",
"sessionStart": "20251031-082211",
"totalOperations": 2201,
"savings": {
"totalTokensSaved": 125430,
"tokenReductionPercent": 68.2,
"originalTokens": 184000,
"optimizedTokens": 58570,
"cacheHitRate": 42.5,
"compressionRatio": 3.2,
"lastUpdated": "20251031-092500"
}
}Implementation
Where: handlers/token-optimizer-orchestrator.ps1 - Update-SessionOperation function
How:
- After incrementing
totalOperations, call token-optimizer MCP'sget_session_stats - Extract savings data from response
- Add
savingsobject to session file - Write atomically to prevent corruption
Code Example:
function Update-SessionOperation {
# ... existing operation count logic ...
# Auto-update token savings every N operations (e.g., every 10)
if ($session.totalOperations % 10 -eq 0) {
try {
$stats = Invoke-MCP -Server "token-optimizer" -Tool "get_session_stats" -ToolArguments @{}
if ($stats -and $stats.result) {
$savingsData = $stats.result.content[0].text | ConvertFrom-Json
$session.savings = @{
totalTokensSaved = $savingsData.totalTokensSaved
tokenReductionPercent = $savingsData.tokenReductionPercent
originalTokens = $savingsData.originalTokens
optimizedTokens = $savingsData.optimizedTokens
cacheHitRate = $savingsData.cacheHitRate
compressionRatio = $savingsData.compressionRatio
lastUpdated = Get-Date -Format "yyyyMMdd-HHmmss"
}
}
} catch {
Write-Log "[WARN] Could not update token savings: $($_.Exception.Message)" "WARN"
}
}
# Write updated session
$session | ConvertTo-Json -Depth 10 | Out-File $SESSION_FILE -Encoding UTF8
return $session
}User Experience Improvements
Before (current):
# User must manually call MCP tool
$stats = Invoke-MCP -Server "token-optimizer" -Tool "get_session_stats" -ToolArguments @{}
$stats.result.content[0].text | ConvertFrom-JsonAfter (proposed):
# User can just read the file
Get-Content "C:\Users\cheat\.claude-global\hooks\data\current-session.txt" -Raw | ConvertFrom-Json
# Savings data is already there!Benefits:
- No MCP calls needed for quick checks
- Dashboard-friendly (just poll the file)
- Automation-friendly (parse JSON directly)
- Real-time visibility into optimization effectiveness
Success Criteria
-
current-session.txtincludessavingsobject with 7 fields - Savings data updates automatically during session (every 10 operations)
- Handles MCP errors gracefully (logs warning, continues without savings data)
- Performance impact < 50ms per update (batched every 10 operations)
- Documentation updated in README.md explaining the new fields
Related Issues
- feat: implement granular per-hook/per-action/per-MCP-server token analytics #112 (granular token analytics) - This issue provides simplified user-facing version of that data