Quick reference for choosing between rg, grepai, Serena & ast-grep
Know exact text? → rg
Know exact name? → rg or Serena
Know concept? → grepai
Know structure? → ast-grep
Need dependencies? → grepai trace
Fast ←─────────────────────────────────→ Smart
rg Serena ast-grep grepai
~20ms ~100ms ~200ms ~500ms
Exact Symbols Structure Meaning
| Task | Tool | Command |
|---|---|---|
| "Find TODO comments" | rg |
rg "TODO" |
| "Find login function" | rg/Serena |
rg "login" or serena find_symbol |
| "Find auth code" | grepai |
grepai search "authentication" |
| "Who calls login?" | grepai |
grepai trace callers "login" |
| "Get file structure" | Serena |
serena get_symbols_overview |
| "Async without try/catch" | ast-grep |
ast-grep "async function $F" |
| "React class → hooks" | ast-grep |
Migration pattern |
| "Remember decision" | Serena |
serena write_memory |
| Feature | rg | grepai | Serena | ast-grep |
|---|---|---|---|---|
| Exact match | ✅ | ❌ | ✅ | ✅ |
| Semantic | ❌ | ✅ | ❌ | ❌ |
| Call graph | ❌ | ✅ | ❌ | ❌ |
| Symbols | ❌ | ❌ | ✅ | ❌ |
| AST patterns | ❌ | ❌ | ❌ | ✅ |
| Memory | ❌ | ❌ | ✅ | ❌ |
| Setup | ✅ |
Example: Refactor authentication
# 1. DISCOVER (grepai - semantic)
grepai search "authentication flow"
# 2. STRUCTURE (Serena - symbols)
serena get_symbols_overview --file auth.service.ts
# 3. DEPENDENCIES (grepai - call graph)
grepai trace callers "login"
# 4. PATTERNS (ast-grep - structure)
ast-grep "async function login"
# 5. VERIFY (rg - exact)
rg "validateSession" --type ts| ❌ Wrong | ✅ Right |
|---|---|
grepai search "createSession" |
rg "createSession" |
rg "auth.*login.*session" |
grepai search "auth flow" |
rg + sed for refactoring |
Serena find_symbol |
| Refactor without checking callers | grepai trace callers first |
Start: rg (90% of searches)
↓
Need meaning? → grepai
Need symbols? → Serena
Need AST? → ast-grep
📖 Search Tools Mastery - Complete workflows, scenarios, benchmarks
Print this page for quick reference | Last updated: January 2026