2.9 KiB
2.9 KiB
Implementation Plan: Session Insights (session_insights_20260306)
Reference: Spec | Architecture Guide
Phase 1: Token Timeline Data
Focus: Collect token usage over session
-
Task 1.1: Initialize MMA Environment
-
Task 1.2: Add token history state
- WHERE:
src/gui_2.pyorsrc/app_controller.py - WHAT: Track tokens per API call
- HOW:
self._token_history: list[dict] = [] # [{"time": t, "input": n, "output": n, "model": s}, ...]
- WHERE:
-
Task 1.3: Record on each API response
- WHERE:
src/gui_2.pyin response handler - WHAT: Append to history
- HOW:
# After API call self._token_history.append({ "time": time.time(), "input": input_tokens, "output": output_tokens, "model": model })
- WHERE:
Phase 2: Token Timeline Visualization
Focus: Render token usage graph
-
Task 2.1: Extract cumulative tokens
- WHERE:
src/gui_2.py - WHAT: Calculate running totals
- HOW:
cumulative_input = 0 cumulative_output = 0 input_values = [] output_values = [] for entry in self._token_history: cumulative_input += entry["input"] cumulative_output += entry["output"] input_values.append(cumulative_input) output_values.append(cumulative_output)
- WHERE:
-
Task 2.2: Render timeline
- WHERE:
src/gui_2.pysession insights panel - HOW:
if imgui.collapsing_header("Token Timeline"): imgui.plot_lines("Input", input_values) imgui.plot_lines("Output", output_values) imgui.text(f"Total: {cumulative_input + cumulative_output:,} tokens")
- WHERE:
Phase 3: Cost Projection
Focus: Estimate remaining cost
-
Task 3.1: Calculate burn rate
- WHERE:
src/gui_2.py - WHAT: Tokens per minute
- HOW:
if len(self._token_history) >= 2: elapsed = self._token_history[-1]["time"] - self._token_history[0]["time"] total_tokens = sum(e["input"] + e["output"] for e in self._token_history) burn_rate = total_tokens / (elapsed / 60) if elapsed > 0 else 0
- WHERE:
-
Task 3.2: Display projection
- WHERE:
src/gui_2.py - HOW:
imgui.text(f"Burn rate: {burn_rate:.0f} tokens/min") imgui.text(f"Session cost: ${session_cost:.4f}")
- WHERE:
Phase 4: Efficiency Score
Focus: Calculate tokens per useful change
- Task 4.1: Define efficiency metric
- WHERE:
src/gui_2.py - WHAT: Ratio of tokens to completed tickets
- HOW:
completed_tickets = sum(1 for t in self.track.tickets if t.status == "completed") total_tokens = sum(e["input"] + e["output"] for e in self._token_history) efficiency = total_tokens / completed_tickets if completed_tickets > 0 else 0
- WHERE:
Phase 5: Testing
- Task 5.1: Write unit tests
- Task 5.2: Conductor - Phase Verification