cass

安装量: 46
排名: #16233

安装

npx skills add https://github.com/dicklesworthstone/agent_flywheel_clawdbot_skills_and_integrations --skill cass

CASS - Coding Agent Session Search

Unified, high-performance CLI/TUI to index and search your local coding agent history. Aggregates sessions from 11 agents: Codex, Claude Code, Gemini CLI, Cline, OpenCode, Amp, Cursor, ChatGPT, Aider, Pi-Agent, and Factory (Droid).

CRITICAL: Robot Mode Required for AI Agents

NEVER run bare cass - it launches an interactive TUI that blocks your session!

WRONG - blocks terminal

cass

CORRECT - JSON output for agents

cass search "query" --robot cass search "query" --json # alias

Always use --robot or --json flags for machine-readable output.

Quick Reference for AI Agents Pre-Flight Check

Health check (exit 0=healthy, 1=unhealthy, <50ms)

cass health

If unhealthy, rebuild index

cass index --full

Essential Commands

Search with JSON output

cass search "authentication error" --robot --limit 5

Search with metadata (elapsed_ms, cache stats, freshness)

cass search "error" --robot --robot-meta

Minimal payload (path, line, agent only)

cass search "bug" --robot --fields minimal

View source at specific line

cass view /path/to/session.jsonl -n 42 --json

Expand context around a line

cass expand /path/to/session.jsonl -n 42 -C 5 --json

Capabilities discovery

cass capabilities --json

Full API schema

cass introspect --json

LLM-optimized documentation

cass robot-docs guide cass robot-docs commands cass robot-docs schemas cass robot-docs examples cass robot-docs exit-codes

Why Use CASS Cross-Agent Knowledge Transfer

Your coding agents create scattered knowledge:

Claude Code sessions in ~/.claude/projects Codex sessions in ~/.codex/sessions Cursor state in SQLite databases Aider history in markdown files

CASS unifies all of this into a single searchable index. When you're stuck on a problem, search across ALL your past agent sessions to find relevant solutions.

Use Cases

"I solved this before..."

cass search "TypeError: Cannot read property" --robot --days 30

Cross-agent learning (what has ANY agent said about X?)

cass search "authentication" --robot --workspace /path/to/project

Agent-to-agent handoff

cass search "database migration" --robot --fields summary

Daily review

cass timeline --today --json

Command Reference Indexing

Full rebuild of DB and search index

cass index --full

Incremental update (since last scan)

cass index

Watch mode: auto-reindex on file changes

cass index --watch

Force rebuild even if schema unchanged

cass index --full --force-rebuild

Safe retries with idempotency key (24h TTL)

cass index --full --idempotency-key "build-$(date +%Y%m%d)"

JSON output with stats

cass index --full --json

Search

Basic search (JSON output required for agents!)

cass search "query" --robot

With filters

cass search "error" --robot --agent claude --days 7 cass search "bug" --robot --workspace /path/to/project cass search "panic" --robot --today

Time filters

cass search "auth" --robot --since 2024-01-01 --until 2024-01-31 cass search "test" --robot --yesterday cass search "fix" --robot --week

Wildcards

cass search "auth" --robot # prefix: authentication, authorize cass search "tion" --robot # suffix: authentication, exception cass search "config" --robot # substring: misconfigured

Token budget management (critical for LLMs!)

cass search "error" --robot --fields minimal # path, line, agent only cass search "error" --robot --fields summary # adds title, score cass search "error" --robot --max-content-length 500 # truncate fields cass search "error" --robot --max-tokens 2000 # soft budget (~4 chars/token) cass search "error" --robot --limit 5 # cap results

Pagination (cursor-based)

cass search "TODO" --robot --robot-meta --limit 20

Use _meta.next_cursor from response:

cass search "TODO" --robot --robot-meta --limit 20 --cursor "eyJ..."

Match highlighting

cass search "authentication error" --robot --highlight

Query analysis/debugging

cass search "auth*" --robot --explain # parsed query, cost estimates cass search "auth error" --robot --dry-run # validate without executing

Aggregations (server-side counts)

cass search "error" --robot --aggregate agent,workspace,date

Request correlation

cass search "bug" --robot --request-id "req-12345"

Source filtering (for multi-machine setups)

cass search "auth" --robot --source laptop cass search "error" --robot --source remote

Traceability (for debugging agent pipelines)

cass search "error" --robot --trace-file /tmp/cass-trace.json

Session Analysis

Export conversation to markdown/HTML/JSON

cass export /path/to/session.jsonl --format markdown -o conversation.md cass export /path/to/session.jsonl --format html -o conversation.html cass export /path/to/session.jsonl --format json --include-tools

Expand context around a line (from search result)

cass expand /path/to/session.jsonl -n 42 -C 5 --json

Shows 5 messages before and after line 42

View source at line

cass view /path/to/session.jsonl -n 42 --json

Activity timeline

cass timeline --today --json --group-by hour cass timeline --days 7 --json --agent claude cass timeline --since 7d --json

Find related sessions for a file

cass context /path/to/source.ts --json

Status & Diagnostics

Quick health (<50ms)

cass health cass health --json

Full status snapshot

cass status --json cass state --json # alias

Statistics

cass stats --json cass stats --by-source # for multi-machine

Full diagnostics

cass diag --verbose

Aggregation & Analytics

Aggregate search results server-side to get counts and distributions without transferring full result data:

Count results by agent

cass search "error" --robot --aggregate agent

→ { "aggregations": { "agent": { "buckets": [{"key": "claude_code", "count": 45}, ...] } } }

Multi-field aggregation

cass search "bug" --robot --aggregate agent,workspace,date

Combine with filters

cass search "TODO" --agent claude --robot --aggregate workspace

Aggregation Field Description agent Group by agent type (claude_code, codex, cursor, etc.) workspace Group by workspace/project path date Group by date (YYYY-MM-DD) match_type Group by match quality (exact, prefix, fuzzy)

Top 10 buckets returned per field, with other_count for remaining items.

Remote Sources (Multi-Machine Search)

Search across sessions from multiple machines via SSH/rsync.

Setup Wizard (Recommended) cass sources setup

The wizard:

Discovers SSH hosts from ~/.ssh/config Probes each for agent data and cass installation Optionally installs cass on remotes Indexes sessions on remotes Configures sources.toml Syncs data locally cass sources setup --hosts css,csd,yto # Specific hosts only cass sources setup --dry-run # Preview without changes cass sources setup --resume # Resume interrupted setup

Manual Setup

Add a remote machine

cass sources add user@laptop.local --preset macos-defaults cass sources add dev@workstation --path ~/.claude/projects --path ~/.codex/sessions

List sources

cass sources list --json

Sync sessions

cass sources sync cass sources sync --source laptop --verbose

Check connectivity

cass sources doctor cass sources doctor --source laptop --json

Path mappings (rewrite remote paths to local)

cass sources mappings list laptop cass sources mappings add laptop --from /home/user/projects --to /Users/me/projects cass sources mappings test laptop /home/user/projects/myapp/src/main.rs

Remove source

cass sources remove laptop --purge -y

Configuration stored in ~/.config/cass/sources.toml (Linux) or ~/Library/Application Support/cass/sources.toml (macOS).

Robot Mode Deep Dive Self-Documenting API

CASS teaches agents how to use itself:

Quick capability check

cass capabilities --json

Returns: features, connectors, limits

Full API schema

cass introspect --json

Returns: all commands, arguments, response shapes

Topic-based docs (LLM-optimized)

cass robot-docs commands # all commands and flags cass robot-docs schemas # response JSON schemas cass robot-docs examples # copy-paste invocations cass robot-docs exit-codes # error handling cass robot-docs guide # quick-start walkthrough cass robot-docs contracts # API versioning cass robot-docs sources # remote sources guide

Forgiving Syntax (Agent-Friendly)

CASS auto-corrects common mistakes:

What you type What CASS understands cass serach "error" cass search "error" (typo corrected) cass -robot -limit=5 cass --robot --limit=5 (single-dash fixed) cass --Robot --LIMIT 5 cass --robot --limit 5 (case normalized) cass find "auth" cass search "auth" (alias resolved) cass --limt 5 cass --limit 5 (Levenshtein <=2)

Command Aliases:

find, query, q, lookup, grep → search ls, list, info, summary → stats st, state → status reindex, idx, rebuild → index show, get, read → view docs, help-robot, robotdocs → robot-docs Output Formats

Pretty-printed JSON (default)

cass search "error" --robot

Streaming JSONL (header + one hit per line)

cass search "error" --robot-format jsonl

Compact single-line JSON

cass search "error" --robot-format compact

With performance metadata

cass search "error" --robot --robot-meta

Design principle: stdout = JSON only; diagnostics go to stderr.

Token Budget Management

LLMs have context limits. Control output size:

Flag Effect --fields minimal Only source_path, line_number, agent --fields summary Adds title, score --fields score,title,snippet Custom field selection --max-content-length 500 Truncate long fields (UTF-8 safe) --max-tokens 2000 Soft budget (~4 chars/token) --limit 5 Cap number of results

Truncated fields include *_truncated: true indicator.

Structured Error Handling

Errors are JSON with actionable hints:

{ "error": { "code": 3, "kind": "index_missing", "message": "Search index not found", "hint": "Run 'cass index --full' to build the index", "retryable": false } }

Exit Codes Code Meaning Action 0 Success Parse stdout 1 Health check failed Run cass index --full 2 Usage error Fix syntax (hint provided) 3 Index/DB missing Run cass index --full 4 Network error Check connectivity 5 Data corruption Run cass index --full --force-rebuild 6 Incompatible version Update cass 7 Lock/busy Retry later 8 Partial result Increase --timeout 9 Unknown error Check retryable flag Search Modes

Three search modes, selectable with --mode flag:

Mode Algorithm Best For lexical (default) BM25 full-text Exact term matching, code searches semantic Vector similarity Conceptual queries, "find similar" hybrid Reciprocal Rank Fusion Balanced precision and recall cass search "authentication" --mode lexical --robot cass search "how to handle user login" --mode semantic --robot cass search "auth error handling" --mode hybrid --robot

Hybrid combines lexical and semantic using RRF:

RRF_score = Σ 1 / (60 + rank_i)

Pipeline Mode (Chained Search)

Chain searches by piping session paths:

Find sessions mentioning "auth", then search within those for "token"

cass search "authentication" --robot-format sessions | \ cass search "refresh token" --sessions-from - --robot

Build a filtered corpus from today's work

cass search --today --robot-format sessions > today_sessions.txt cass search "bug fix" --sessions-from today_sessions.txt --robot

Use cases:

Drill-down: Broad search → narrow within results Cross-reference: Find sessions with term A, then find term B within them Corpus building: Save session lists for repeated searches Query Language Basic Queries Query Matches error Messages containing "error" (case-insensitive) python error Both "python" AND "error" "authentication failed" Exact phrase Boolean Operators Operator Example Meaning AND python AND error Both terms required (default) OR error OR warning Either term matches NOT error NOT test First term, excluding second - error -test Shorthand for NOT

Complex boolean query

cass search "authentication AND (error OR failure) NOT test" --robot

Exclude test files

cass search "bug fix -test -spec" --robot

Either error type

cass search "TypeError OR ValueError" --robot

Wildcard Patterns Pattern Type Performance auth Prefix Fast (edge n-grams) tion Suffix Slower (regex) config Substring Slowest (regex) Match Types

Results include match_type:

Type Meaning Score Boost exact Verbatim match Highest prefix Via prefix expansion High suffix Via suffix pattern Medium substring Via substring pattern Lower fuzzy Auto-fallback (sparse results) Lowest Auto-Fuzzy Fallback

When exact query returns <3 results, CASS automatically retries with wildcards:

auth → auth Results flagged with wildcard_fallback: true Flexible Time Input

CASS accepts a wide variety of time/date formats:

Format Examples Relative -7d, -24h, -30m, -1w Keywords now, today, yesterday ISO 8601 2024-11-25, 2024-11-25T14:30:00Z US Dates 11/25/2024, 11-25-2024 Unix Timestamp 1732579200 (seconds or milliseconds) Ranking Modes

Cycle with F12 in TUI or use --ranking flag:

Mode Formula Best For Recent Heavy relevance0.3 + recency0.7 "What was I working on?" Balanced relevance0.5 + recency0.5 General search Relevance relevance0.8 + recency0.2 "Best explanation of X" Match Quality Penalizes fuzzy matches Precise technical searches Date Newest Pure chronological Recent activity Date Oldest Reverse chronological "When did I first..." Score Components Text Relevance (BM25): Term frequency, inverse document frequency, length normalization Recency: Exponential decay (today ~1.0, last week ~0.7, last month ~0.3) Match Exactness: Exact phrase=1.0, Prefix=0.9, Suffix=0.8, Substring=0.6, Fuzzy=0.4 Blended Scoring Formula Final_Score = BM25_Score × Match_Quality + α × Recency_Factor

Mode α Value Effect Recent Heavy 1.0 Recency dominates Balanced 0.4 Moderate recency boost Relevance Heavy 0.1 BM25 dominates Match Quality 0.0 Pure text matching Supported Agents (11 Connectors) Agent Location Format Claude Code ~/.claude/projects JSONL Codex ~/.codex/sessions JSONL (Rollout) Gemini CLI ~/.gemini/tmp JSON Cline VS Code global storage Task directories OpenCode .opencode directories SQLite Amp ~/.local/share/amp + VS Code Mixed Cursor ~/Library/Application Support/Cursor SQLite (state.vscdb) ChatGPT ~/Library/Application Support/com.openai.chat JSON (v1 unencrypted) Aider ~/.aider.chat.history.md + per-project Markdown Pi-Agent ~/.pi/agent/sessions JSONL with thinking Factory (Droid) ~/.factory/sessions JSONL by workspace

Note: ChatGPT v2/v3 are AES-256-GCM encrypted (keychain access required). Legacy v1 unencrypted conversations are indexed automatically.

TUI Features (for Humans)

Launch with cass (no flags):

Keyboard Shortcuts

Navigation:

Up/Down: Move selection Left/Right: Switch panes Tab/Shift+Tab: Cycle focus Enter: Open in $EDITOR Space: Full-screen detail view Home/End: Jump to first/last result PageUp/PageDown: Scroll by page

Filtering:

F3: Agent filter F4: Workspace filter F5/F6: Time filters (from/to) Shift+F3: Scope to current result's agent Shift+F4: Clear workspace filter Shift+F5: Cycle presets (24h/7d/30d/all) Ctrl+Del: Clear all filters

Modes:

F2: Toggle theme (6 presets) F7: Context window size (S/M/L/XL) F9: Match mode (prefix/standard) F12: Ranking mode Ctrl+B: Toggle border style

Selection & Actions:

m: Toggle selection Ctrl+A: Select all A: Bulk actions menu Ctrl+Enter: Add to queue Ctrl+O: Open all queued y: Copy path/content Ctrl+Y: Copy all selected /: Find in detail pane n/N: Next/prev match

Views & Palette:

Ctrl+P: Command palette 1-9: Load saved view Shift+1-9: Save view to slot

Source Filtering (multi-machine):

F11: Cycle source filter (all/local/remote) Shift+F11: Source selection menu

Global:

Ctrl+C: Quit F1 or ?: Toggle help Ctrl+Shift+R: Force re-index Ctrl+Shift+Del: Reset all TUI state Detail Pane Tabs Tab Content Switch With Messages Full conversation with markdown [ / ] Snippets Keyword-extracted summaries [ / ] Raw Unformatted JSON/text [ / ] Context Window Sizing Size Characters Use Case Small ~200 Quick scanning Medium ~400 Default balanced view Large ~800 Longer passages XLarge ~1600 Full context, code review

Peek Mode (Ctrl+Space): Temporarily expand to XL without changing default.

Theme Presets

Cycle through 6 built-in themes with F2:

Theme Description Best For Dark Tokyo Night-inspired deep blues Low-light environments Light High-contrast light background Bright environments Catppuccin Warm pastels, reduced eye strain All-day coding Dracula Purple-accented dark theme Popular developer theme Nord Arctic-inspired cool tones Calm, focused work High Contrast Maximum readability Accessibility needs

All themes validated against WCAG contrast requirements (4.5:1 minimum for text).

Role-Aware Message Styling Role Visual Treatment User Blue-tinted background, bold Assistant Green-tinted background System Gray/muted background Tool Orange-tinted background Saved Views

Save filter configurations to 9 slots for instant recall.

What Gets Saved:

Active filters (agent, workspace, time range) Current ranking mode The search query

Keyboard:

Shift+1 through Shift+9: Save current view 1 through 9: Load view from slot

Via Command Palette: Ctrl+P → "Save/Load view"

Views persist in tui_state.json across sessions.

Density Modes

Control lines per search result. Cycle with Shift+D:

Mode Lines Best For Compact 3 Maximum results visible Cozy 5 Balanced view (default) Spacious 8 Detailed preview Bookmark System

Save important results with notes and tags:

In TUI: Press b to bookmark, add notes and tags.

Bookmark Structure:

title: Short description source_path, line_number, agent, workspace note: Your annotations tags: Comma-separated labels snippet: Extracted content

Storage: ~/.local/share/coding-agent-search/bookmarks.db (SQLite)

Optional Semantic Search

Local-only semantic search using MiniLM (no cloud):

Required files (place in data directory):

model.onnx tokenizer.json config.json special_tokens_map.json tokenizer_config.json

Vector index stored as vector_index/index-minilm-384.cvvi.

CASS does NOT auto-download models; you must manually install them.

Hash Embedder Fallback: When MiniLM not installed, CASS uses a hash-based embedder for approximate semantic similarity.

Watch Mode

Real-time index updates:

cass index --watch

Debounce: 2 seconds (wait for burst to settle) Max wait: 5 seconds (force flush during continuous activity) Incremental: Only re-scans modified files

TUI automatically starts watch mode in background.

Deduplication Strategy

CASS uses multi-layer deduplication:

Message Hash: SHA-256 of (role + content + timestamp) - identical messages stored once Conversation Fingerprint: Hash of first N message hashes - detects duplicate files Search-Time Dedup: Results deduplicated by content similarity

Noise Filtering:

Empty messages and pure whitespace System prompts (unless searching for them) Repeated tool acknowledgments Performance Characteristics Operation Latency Prefix search (cached) 2-8ms Prefix search (cold) 40-60ms Substring search 80-200ms Full reindex 5-30s Incremental reindex 50-500ms Health check <50ms

Memory: 70-140MB typical (50K messages) Disk: ~600 bytes/message (including n-gram overhead)

Response Shapes

Search Response:

{ "query": "error", "limit": 10, "count": 5, "total_matches": 42, "hits": [ { "source_path": "/path/to/session.jsonl", "line_number": 123, "agent": "claude_code", "workspace": "/projects/myapp", "title": "Authentication debugging", "snippet": "The error occurs when...", "score": 0.85, "match_type": "exact", "created_at": "2024-01-15T10:30:00Z" } ], "_meta": { "elapsed_ms": 12, "cache_hit": true, "wildcard_fallback": false, "next_cursor": "eyJ...", "index_freshness": { "stale": false, "age_seconds": 120 } } }

Aggregation Response:

{ "aggregations": { "agent": { "buckets": [ {"key": "claude_code", "count": 120}, {"key": "codex", "count": 85} ], "other_count": 15 } } }

Environment Variables Variable Purpose CASS_DATA_DIR Override data directory CHATGPT_ENCRYPTION_KEY Base64 key for encrypted ChatGPT PI_CODING_AGENT_DIR Override Pi-Agent sessions path CASS_CACHE_SHARD_CAP Per-shard cache entries (default 256) CASS_CACHE_TOTAL_CAP Total cached hits (default 2048) CASS_DEBUG_CACHE_METRICS Enable cache debug logging CODING_AGENT_SEARCH_NO_UPDATE_PROMPT Skip update checks Shell Completions cass completions bash > ~/.local/share/bash-completion/completions/cass cass completions zsh > "${fpath[1]}/_cass" cass completions fish > ~/.config/fish/completions/cass.fish cass completions powershell >> $PROFILE

API Contract & Versioning cass api-version --json

cass introspect --json

→ Full schema: all commands, arguments, response types

Guaranteed Stable:

Exit codes and their meanings JSON response structure for --robot output Flag names and behaviors _meta block format Integration with CASS Memory (cm)

CASS provides episodic memory (raw sessions). CM extracts procedural memory (rules and playbooks):

1. CASS indexes raw sessions

cass index --full

2. Search for relevant past experience

cass search "authentication timeout" --robot --limit 10

3. CM reflects on sessions to extract rules

cm reflect

Troubleshooting Issue Solution "missing index" cass index --full Stale warning Rerun index or enable watch Empty results Check cass stats --json, verify connectors detected JSON parsing errors Use --robot-format compact Watch not triggering Check watch_state.json, verify file event support Reset TUI state cass tui --reset-state or Ctrl+Shift+Del Installation

One-liner install

curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/coding_agent_session_search/main/install.sh \ | bash -s -- --easy-mode --verify

Windows

irm https://raw.githubusercontent.com/Dicklesworthstone/coding_agent_session_search/main/install.ps1 | iex

Integration with Flywheel Tool Integration CM CASS provides episodic memory, CM extracts procedural memory NTM Robot mode flags for searching past sessions Agent Mail Search threads across agent history BV Cross-reference beads with past solutions

返回排行榜