138 lines
4.3 KiB
Markdown
138 lines
4.3 KiB
Markdown
# Clover CLI
|
|
|
|
Clover is a terminal-based AI assistant that works with various AI models to help build and manage projects. It provides tools for file operations, project structure management, command execution, and repository integration while supporting multiple LLM providers.
|
|
|
|
## Features
|
|
|
|
- **File Operations**: Read, create, update, and delete files
|
|
- **Project Management**: Generate and maintain project structures
|
|
- **Command Execution**: Safe execution of system commands with permission prompts
|
|
- **Git Integration**: Repository status, diff, commit, and push operations
|
|
- **Code Quality Tools**: Linting (flake8, pylint) and formatting (black, isort)
|
|
- **Multiple Model Support**: Works with various AI models through an OpenAI-compatible API
|
|
- **Configuration Management**: Set timeouts and thread limits for operations
|
|
|
|
## Installation
|
|
|
|
1. Create a virtual environment:
|
|
```bash
|
|
python -m venv clover_env
|
|
```
|
|
|
|
2. Activate the virtual environment:
|
|
```bash
|
|
source clover_env/bin/activate # On macOS/Linux
|
|
# or
|
|
clover_env\Scripts\activate # On Windows
|
|
```
|
|
|
|
3. Install dependencies:
|
|
```bash
|
|
pip install openai requests python-dotenv tqdm GitPython pylint black isort bandit docker pydantic
|
|
```
|
|
|
|
## Running Clover CLI
|
|
|
|
After installation and activation of virtual environment, run:
|
|
|
|
```bash
|
|
source clover_env/bin/activate # Activate the environment
|
|
cd /path/to/clover/project # Navigate to project directory
|
|
PYTHONPATH=. python main.py # Run the CLI with proper module path
|
|
```
|
|
|
|
### Interactive Mode
|
|
|
|
Simply run `python main.py` without arguments to enter interactive mode:
|
|
|
|
```bash
|
|
source clover_env/bin/activate
|
|
cd /path/to/clover/project
|
|
PYTHONPATH=. python main.py # Enter interactive mode
|
|
```
|
|
|
|
In interactive mode, you can run commands directly without the 'clover' prefix:
|
|
- `/init` - Initialize project summary file
|
|
- `/list` - List available models
|
|
- `/timeout 300` - Set timeout to 300 seconds
|
|
- `/threads 5` - Set thread limit to 5
|
|
- `/git_status` - Check Git repository status
|
|
- `/lint_file main.py` - Lint a specific file
|
|
|
|
### Simple Examples
|
|
|
|
To get help:
|
|
```bash
|
|
PYTHONPATH=. python main.py --help
|
|
```
|
|
|
|
To initialize a project:
|
|
```bash
|
|
PYTHONPATH=. python main.py /init
|
|
```
|
|
|
|
To enter interactive mode:
|
|
```bash
|
|
PYTHONPATH=. python main.py
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
clover/
|
|
├── main.py # Main entry point
|
|
├── cli/ # CLI module
|
|
│ ├── __init__.py
|
|
│ ├── commands.py # Command implementations
|
|
│ └── parser.py # CLI argument parsing
|
|
├── tools/ # Core tool implementations
|
|
│ ├── __init__.py
|
|
│ ├── file_tools.py # File operations (read, create, update, delete)
|
|
│ ├── project_tools.py # Project operations (summarize, structure)
|
|
│ ├── commandline_tool.py # Command line execution tool
|
|
│ ├── git_tools.py # Git repository operations
|
|
│ └── lint_format_tools.py # Linting and formatting tools
|
|
├── models/ # Model interaction modules
|
|
│ ├── __init__.py
|
|
│ ├── model_manager.py # Manage available models
|
|
│ └── api_client.py # API client for different LLM providers
|
|
├── config/ # Configuration management
|
|
│ ├── __init__.py
|
|
│ └── settings.py # Settings and configuration handling
|
|
└── requirements.txt # Dependencies list
|
|
```
|
|
|
|
## Development
|
|
|
|
### Running Tests
|
|
|
|
After activating the virtual environment:
|
|
```bash
|
|
source clover_env/bin/activate # Activate venv
|
|
cd /path/to/clover/project
|
|
PYTHONPATH=. python -m pytest tests/
|
|
```
|
|
|
|
### Adding New Tools
|
|
|
|
To add new tools, create a new module in the `tools/` directory and import it in `cli/commands.py`. Follow the existing pattern for consistency.
|
|
|
|
## Configuration
|
|
|
|
Environment variables supported:
|
|
|
|
- `CLOVER_TIMEOUT` - Timeout for operations (default: 300)
|
|
- `CLOVER_THREADS` - Maximum concurrent threads (default: 5)
|
|
- `CLOVER_MODEL` - Default AI model to use (default: gpt-4)
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create feature branch (`git checkout -b feature/AmazingFeature`)
|
|
3. Commit changes (`git commit -m 'Add some AmazingFeature'`)
|
|
4. Push branch (`git push origin feature/AmazingFeature`)
|
|
5. Open pull request
|
|
|
|
## License
|
|
|
|
MIT License |