
How It Works
File Identification uses a multi-layer approach to file discovery:Core Features
Lightning-Fast Indexing
File Identification leverages ripgrep for blazing-fast file discovery:- Scans 5,000+ files in milliseconds
- Follows symlinks automatically
- Respects
.gitignorepatterns - Excludes common build directories (
node_modules,dist,.git)
Ripgrep is 10-100x faster than traditional file search tools, making it ideal for large codebases.
Intelligent File Filtering
Automatic exclusion of irrelevant directories:Active File Prioritization
Files you’re actively working on appear first:- Currently open in tabs
- Recently edited
- Visible in the editor
- Part of the current diff view
Fuzzy Search
File Identification uses Fuse.js for intelligent fuzzy matching:- Match Scoring
- Gap Scoring
Files are ranked by multiple factors:Scoring criteria:
- Filename matches (weighted 2x)
- Full path matches
- Fewer gaps between matched characters
- Shorter paths preferred
Multi-Root Workspace Support
File Identification seamlessly handles multi-root workspaces:Workspace Hints
Search specific workspace roots:
@frontend:/componentsSearches only the frontend workspace.Parallel Search
Searches all roots simultaneously:
Deduplication
Handles duplicate filenames:
Workspace Labels
Each result includes workspace name:
src/services/search/file-search.ts:209
File Context Tracking
HAI Build tracks which files are in the AI’s context:Context Status Indicators
File Mention Tracking
Every file operation is tracked:read_file: File content readwrite_to_file: File created or modifiedreplace_in_file: File editedlist_files: Directory listingsearch_files: File search results
Context Warnings
Users are warned when files are removed:File Type Detection
Automatic file type detection and categorization:Type Verification
Type Verification
Verifies file types using
fs.lstat():Directory Discovery
Directory Discovery
Automatically builds directory tree:Enables folder-level operations and navigation.
Search Strategies
Different search approaches for different scenarios:Exact Match
When you know the filename:
UserService.tsReturns exact matches first.Partial Match
When you remember part of the name:
user servFuzzy matches across path segments.Path-Based
When you know the directory:
components/authSearches full paths.Extension Filter
When you need specific file types:
*.test.tsFilters by extension pattern.Integration with AI
Automatic File Suggestions
The AI uses File Identification to:- Find relevant files for a task
- Suggest imports based on available modules
- Locate configuration files automatically
- Discover test files for testing tasks
- Navigate project structure efficiently
Context-Aware Mentions
File Identification powers the@ mention feature:
Performance Optimization
Lazy Loading
Results are loaded incrementally:- Initial 20 results displayed immediately
- More results loaded on scroll
- Prevents UI blocking on large workspaces
Caching Strategy
File index is cached per workspace:- Cache invalidated on file system changes
- Active files cache updated every 500ms
- Search results cached for 5 seconds
Limits and Throttling
Configuration
Custom Exclusions
Add workspace-specific exclusions:Search Behavior
Customize search parameters:Best Practices
Use Descriptive Filenames
Use Descriptive Filenames
- Clear names improve search accuracy
- Include feature/component in filename
- Use consistent naming conventions
- Avoid generic names like
utils.ts
Organize with Directories
Organize with Directories
- Group related files together
- Use feature-based folder structure
- Keep directory depth reasonable (3-5 levels)
- Mirror logical application structure
Leverage Active File Priority
Leverage Active File Priority
- Open relevant files before starting AI tasks
- Keep related files in tabs
- Use split editor for context files
- Close unrelated files to reduce noise
Optimize Large Workspaces
Optimize Large Workspaces
- Use workspace hints in multi-root setups
- Add irrelevant directories to exclusions
- Increase file limit if needed
- Consider breaking into multiple workspaces
Troubleshooting
Files not appearing in search
Files not appearing in search
- Check exclusion patterns
- Verify file isn’t in
.gitignore - Confirm file exists on disk
- Refresh file index
Slow file search
Slow file search
- Reduce file limit
- Add more exclusion patterns
- Check for symlink loops
- Disable deep directory scanning
Incorrect file rankings
Incorrect file rankings
- Use more specific search terms
- Include path segments in query
- Adjust fuzzy search threshold
- Try exact filename match
Next Steps
Inline Editing
Make quick edits to discovered files
AI-Powered Coding
See how the AI uses file context
Focus Chain
Track which files are being worked on
Multi-Root Workspaces
Work with multiple project roots