agent-lens
npx skills add https://github.com/multicam/qara --skill agent-lens
Agent 安装分布
Skill 文档
Agent Lens
Real-time observability dashboard for multi-agent Claude Code sessions.
Features
Dual-Pane Interface
- Process Timeline – Hierarchical view of events with parent-child relationships
- Results & Metrics – Session statistics, event details, and performance data
- Resizable panes – Drag to adjust layout (25%-60% width)
Event Visualization
- Hierarchical timeline – Nested events show tool call relationships
- Collapse/expand – Show/hide child events
- Event icons – Visual indicators for tool types
- Session cards – Track individual sessions and lifecycle
Metrics & Monitoring
- Token tracking – Estimate usage per session
- Cost calculation – Track AI model costs (2026 pricing)
- Tool usage breakdown – Most frequently used tools
- Performance metrics – Latency, duration, error rates
- Context tracking – Monitor context window usage (CC 2.1.6)
HITL (Human-in-the-Loop)
- Approval interface – Review and approve/reject requests
- Timeout indicators – Visual countdown for time-sensitive actions
- Three-action pattern – Approve, Edit, or Reject
- Browser notifications – Alert on urgent requests
Event Types Captured
- SessionStart – New Claude Code session begins
- UserPromptSubmit – User sends a message
- PreToolUse – Before tool execution
- PostToolUse – After tool completion
- Stop – Main agent task completes
- SubagentStop – Subagent task completes
- SessionEnd – Session ends
Quick Start
Start the Dashboard
# Terminal 1: Start server
cd ~/.claude/skills/agent-lens/apps/server
bun run dev
# Terminal 2: Start client
cd ~/.claude/skills/agent-lens/apps/client
bun run dev
# Or use the project convenience script:
cd /path/to/qara
bun run start-obs
Open browser: http://localhost:5173
Using with Claude Code
Once the dashboard is running:
- Open Claude Code
- Use any tool (Read, Write, Bash, etc.)
- Launch subagents with Task tool
- Watch events appear in real-time on the dashboard
Data Storage
Events are stored in JSONL (JSON Lines) format:
~/.claude/history/raw-outputs/YYYY-MM/YYYY-MM-DD_all-events.jsonl
Each line is a complete JSON object:
{"source_app":"qara","session_id":"abc123","hook_event_type":"PreToolUse","payload":{...},"timestamp":1234567890,"timestamp_aedt":"2025-01-28 14:30:00 AEDT"}
Configuration
Environment Variables
PAI_DIR – Path to PAI directory (defaults to ~/.claude/)
export PAI_DIR="/Users/yourname/.claude"
Session Tracking (CC 2.1.9+)
Agent Lens automatically tracks sessions using Claude Code’s native session IDs:
- Current session:
${CLAUDE_SESSION_ID} - Events file:
~/.claude/history/raw-outputs/YYYY-MM/YYYY-MM-DD_all-events.jsonl - Session state:
~/.claude/state/agent-lens/sessions/${CLAUDE_SESSION_ID}.json
Each event includes the session_id field for correlation across the observability dashboard.
Hooks Configuration
Hooks should be configured in ~/.claude/settings.json. The capture-all-events hook is required for Agent Lens to function.
Troubleshooting
No events appearing
- Check PAI_DIR:
echo $PAI_DIR - Verify hooks exist:
ls ~/.claude/hooks/capture-all-events.ts - Check hook is executable:
ls -l ~/.claude/hooks/capture-all-events.ts - Verify today’s events file:
ls ~/.claude/history/raw-outputs/$(date +%Y-%m)/
Server won’t start
- Check Bun:
bun --version - Install dependencies:
cd apps/server && bun install - Check port:
lsof -i :4000
Client won’t connect
- Ensure server is running first
- Check browser console for WebSocket errors
- Verify firewall not blocking localhost:4000
Architecture
Claude Code (with hooks)
â
capture-all-events.ts hook â JSONL files
â
file-ingest.ts (Bun server) â In-memory stream
â
Vue 3 Client â Real-time dashboard
Approach: Filesystem-based event capture with in-memory streaming. No database required.
Credits
Inspired by @indydevdan‘s work on multi-agent observability for Claude Code.
Our implementation uses filesystem-based event capture and in-memory streaming instead of SQLite database persistence.