Kode-cli/docs/develop/architecture.md
CrazyBoyM d8f0a22233 feat: Implement intelligent completion system with advanced fuzzy matching
- Add advanced fuzzy matching with 7+ strategies (exact, prefix, substring, acronym, initials, fuzzy, Levenshtein)
- Create comprehensive database of 500+ common Unix commands for smart autocompletion
- Implement intelligent Tab completion with @ prefix injection for agents and files
- Add sophisticated input pattern recognition for commands like "dao", "gp5", "py3"
- Enhance mention system with TaskProgressMessage component for better user feedback
- Update documentation with comprehensive intelligent completion guide
- Clean up 21 temporary markdown files to maintain repository cleanliness
- Improve project structure and configuration documentation
- Optimize completion system performance with advanced caching and scoring
2025-08-22 13:07:48 +08:00

356 lines
13 KiB
Markdown

# System Architecture
## High-Level Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ User Interface Layer │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ CLI Entry │ │ REPL │ │ React/Ink UI │ │
│ │ (cli.tsx) │ │ (REPL.tsx) │ │ Components │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Command & Control Layer │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Commands │ │ Query │ │ Context │ │
│ │ (Slash /) │ │ Engine │ │ Management │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Tool Execution Layer │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ File Tools │ │ System Tools │ │ AI Tools │ │
│ │ (R/W/Edit) │ │ (Bash/Grep) │ │ (Task/Think) │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Service Integration Layer │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ AI Providers│ │ MCP Servers │ │ External APIs │ │
│ │(Claude/GPT) │ │ (stdio/SSE) │ │ (Git/Sentry) │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Infrastructure Layer │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │Configuration│ │ Permissions │ │ Logging & │ │
│ │ Management │ │ System │ │ Error Handling │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## Component Relationships
### Data Flow Architecture
```
User Input → Command Parser → Route Decision
┌─────────────────────┐
│ Slash Command? │
└─────────────────────┘
Yes ←───────────┼───────────→ No
↓ ↓
┌──────────────┐ ┌──────────────┐
│Command Handler│ │ AI Query │
└──────────────┘ └──────────────┘
↓ ↓
┌──────────────┐ ┌──────────────┐
│ Execute │ │Tool Selection│
└──────────────┘ └──────────────┘
↓ ↓
┌──────────────┐ ┌──────────────┐
│Return Result │ │Tool Execution│
└──────────────┘ └──────────────┘
↓ ↓
└──────────┬──────────────────┘
┌──────────────┐
│Render Response│
└──────────────┘
```
### Module Dependency Graph
```
cli.tsx (Entry Point)
├── REPL.tsx (Interactive Mode)
│ ├── PromptInput.tsx
│ ├── MessageResponse.tsx
│ └── query.ts (AI Orchestration)
│ ├── tools.ts (Tool Registry)
│ │ ├── BashTool
│ │ ├── FileEditTool
│ │ ├── GrepTool
│ │ └── [Other Tools]
│ ├── permissions.ts
│ └── context.ts
├── commands.ts (Command System)
│ ├── Built-in Commands
│ ├── MCP Commands
│ └── Custom Commands
└── services/
├── claude.ts
├── openai.ts
├── mcpClient.ts
└── statsig.ts
```
## Core Module Interactions
### 1. Conversation Flow
```
User Prompt
Context Injection (AGENTS.md, git status, etc.)
Model Selection (based on context size)
API Request with Tools
Streaming Response
Tool Use Detection
Permission Check
Tool Execution
Result Integration
Continue or Complete
```
### 2. Tool Execution Pipeline
```
AI Requests Tool Use
Tool Validation (Zod Schema)
Permission Check
├── Permissive Mode → Auto-approve safe operations
└── Safe Mode → Request user permission
Tool Execution (Async Generator)
├── Yield progress updates
├── Handle cancellation
└── Return results
Format Results for AI
Continue Conversation
```
### 3. Configuration Cascade
```
Environment Variables
Global Config (~/.claude/config.json)
Project Config (./.claude/config.json)
Runtime Overrides (CLI flags)
Effective Configuration
```
### 4. MCP Server Integration
```
MCP Server Configuration
Server Startup (stdio/SSE)
Tool Discovery
Dynamic Tool Registration
Tool Available in Conversation
Tool Execution via MCP Protocol
Result Translation
```
## Key Architectural Decisions
### 1. Tool Abstraction
Every capability is a Tool implementing a standard interface:
```typescript
interface Tool {
name: string
description: string
inputSchema: ZodSchema
needsPermissions(): boolean
call(): AsyncGenerator<ToolCallResult>
renderResultForAssistant(): string
}
```
### 2. Streaming Architecture
All long-running operations use async generators:
- Enables real-time progress updates
- Supports cancellation at any point
- Allows incremental result display
### 3. React in Terminal
Using React with Ink for terminal UI:
- Component reusability
- State management
- Complex interactive UIs
- Consistent styling
### 4. Permission Layers
Multi-level permission system:
- **Tool Level**: Each tool declares permission needs
- **Session Level**: Temporary permissions for current session
- **Persistent Level**: Saved permissions across sessions
- **Mode Level**: Safe vs Permissive modes
### 5. Context Management
Automatic context injection:
- Project files (AGENTS.md, CLAUDE.md)
- Git status and recent commits
- Directory structure
- Previous conversation history
## Module Communication Patterns
### Event-Driven Updates
Components communicate through:
- React props and callbacks
- Abort signals for cancellation
- Progress generators for updates
- Event emitters for cross-cutting concerns
### Service Integration
External services accessed through:
- Dedicated service modules
- Unified error handling
- Retry logic with backoff
- Streaming response handling
### Configuration Access
Configuration accessed via:
- Singleton config manager
- Lazy loading on first access
- Automatic migration on version change
- Validation on load
## Security Architecture
### Permission Model
```
Request → Permission Check → Decision
↓ ↓
┌──────────────┐ ┌──────────┐
│ Check Cache │ │ Deny │
└──────────────┘ └──────────┘
┌──────────────┐
│ Check Session│
└──────────────┘
┌──────────────┐
│ Ask User │
└──────────────┘
┌──────────────┐
│Cache Decision│
└──────────────┘
```
### File System Security
- Directory-based access control
- Path traversal prevention
- Symbolic link resolution
- Hidden file protection
### Command Execution Security
- Command approval system
- Environment variable sanitization
- Working directory restrictions
- Output size limits
## Performance Considerations
### Caching Strategy
- Model responses cached in memory
- File reads cached with freshness checks
- Configuration cached per session
- MCP tool discovery cached
### Lazy Loading
- Commands loaded on first use
- MCP servers started on demand
- Context loaded incrementally
- Heavy dependencies loaded when needed
### Streaming Optimizations
- Chunked response processing
- Incremental rendering
- Partial result display
- Early termination support
## Extension Points
### Adding New Tools
1. Create class extending Tool
2. Implement required methods
3. Register in tools.ts
4. Tool automatically available
### Adding AI Providers
1. Implement provider interface
2. Add to ModelManager
3. Configure in model profiles
4. Provider available for use
### Adding Commands
1. Create command handler
2. Register in commands.ts
3. Command available via slash
### Adding MCP Servers
1. Configure server details
2. Server tools auto-discovered
3. Tools available in conversation
## System Boundaries
### Internal Boundaries
- Clear module interfaces
- Dependency injection
- Service abstractions
- Tool isolation
### External Boundaries
- API rate limiting
- File system access control
- Network request timeouts
- Resource consumption limits
## Scalability Considerations
### Horizontal Scalability
- Stateless command execution
- Independent tool operations
- Parallel tool execution (when safe)
- Distributed MCP servers
### Vertical Scalability
- Streaming for large responses
- Chunked file processing
- Incremental context loading
- Memory-efficient caching
This architecture provides a robust, extensible foundation for an AI-powered development assistant while maintaining security, performance, and user experience as primary concerns.