Files
adolf/extensions/open-prose/skills/prose/lib/cost-analyzer.prose
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

175 lines
4.8 KiB
Plaintext

# Cost Analyzer
# Analyzes runs for token usage and cost patterns
#
# Usage:
# prose run @openprose/lib/cost-analyzer
#
# Inputs:
# run_path: Path to run to analyze, or "recent" for latest runs
# scope: single | compare | trend
#
# Outputs:
# - Token usage breakdown by agent/phase
# - Model tier efficiency analysis
# - Cost hotspots
# - Optimization recommendations
input run_path: "Path to run, or 'recent' for latest runs in .prose/runs/"
input scope: "Scope: single (one run) | compare (multiple runs) | trend (over time)"
# ============================================================
# Agents
# ============================================================
agent collector:
model: sonnet
prompt: """
You collect and structure cost/token data from .prose runs.
Extract from run artifacts:
- Model used per session (haiku/sonnet/opus)
- Approximate token counts (estimate from content length)
- Session count per agent
- Parallel vs sequential execution
"""
agent analyzer:
model: opus
prompt: """
You analyze cost patterns and identify optimization opportunities.
Consider:
- Model tier appropriateness (is opus needed, or would sonnet suffice?)
- Token efficiency (are contexts bloated?)
- Parallelization (could sequential steps run in parallel?)
- Caching opportunities (repeated computations?)
"""
agent tracker:
model: haiku
persist: user
prompt: """
You track cost metrics across runs for trend analysis.
Store compactly: run_id, program, total_cost_estimate, breakdown.
"""
# ============================================================
# Phase 1: Collect Run Data
# ============================================================
let runs_to_analyze = session: collector
prompt: """
Find runs to analyze.
Input: {run_path}
Scope: {scope}
If run_path is a specific path, use that run.
If run_path is "recent", find the latest 5-10 runs in .prose/runs/
For scope=compare, find runs of the same program.
For scope=trend, find runs over time.
Return: list of run paths to analyze
"""
let run_data = runs_to_analyze | pmap:
session: collector
prompt: """
Extract cost data from run: {item}
Read state.md and bindings to determine:
1. Program name
2. Each session spawned:
- Agent name (or "anonymous")
- Model tier
- Estimated input tokens (context size)
- Estimated output tokens (binding size)
3. Parallel blocks (how many concurrent sessions)
4. Total session count
Estimate costs using rough rates:
- haiku: $0.25 / 1M input, $1.25 / 1M output
- sonnet: $3 / 1M input, $15 / 1M output
- opus: $15 / 1M input, $75 / 1M output
Return structured JSON.
"""
context: item
# ============================================================
# Phase 2: Analyze
# ============================================================
let analysis = session: analyzer
prompt: """
Analyze cost patterns across these runs.
Data: {run_data}
Scope: {scope}
For single run:
- Break down cost by agent and phase
- Identify the most expensive operations
- Flag potential inefficiencies
For compare:
- Show cost differences between runs
- Identify which changes affected cost
- Note if cost increased/decreased
For trend:
- Show cost over time
- Identify if costs are stable, growing, or improving
- Flag anomalies
Always include:
- Model tier efficiency (are expensive models used appropriately?)
- Context efficiency (are contexts lean or bloated?)
- Specific optimization recommendations
Return structured JSON with:
{
"summary": { total_cost, session_count, by_model: {...} },
"hotspots": [ { agent, cost, percent, issue } ],
"recommendations": [ { priority, description, estimated_savings } ],
"details": { ... }
}
"""
context: run_data
# ============================================================
# Phase 3: Track for Trends
# ============================================================
resume: tracker
prompt: """
Record this cost analysis for future trend tracking.
{analysis.summary}
Add to your historical record.
"""
context: analysis
# ============================================================
# Output
# ============================================================
output report = session "Format report"
prompt: """
Format the cost analysis as a readable report.
Analysis: {analysis}
Include:
1. Executive summary (total cost, key finding)
2. Cost breakdown table
3. Hotspots (where money goes)
4. Recommendations (prioritized)
5. If scope=trend, include trend chart (ascii or description)
Format as markdown.
"""
context: analysis