Skip to content

aledanee/qcmd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QCMD - AI-powered Command Generator

QCMD is a powerful command-line tool that generates shell commands from natural language descriptions using Qwen2.5-Coder via Ollama. The tool now features a modular architecture for improved maintainability and extensibility.

Features

  • Generate shell commands from natural language descriptions
  • Interactive shell with command history and autocompletion
  • Auto-correction mode that fixes commands automatically
  • Log analysis and monitoring with AI assistance
  • System status monitoring and configuration management
  • Safe command execution with dangerous command detection
  • Highly customizable UI with color themes and display options

Installation

From PyPI

pip install ibrahimiq-qcmd

From Source (Development Mode)

git clone https://github.com/aledanee/qcmd.git
cd qcmd
pip install -e .

Make sure you have Ollama installed and running with the Qwen2.5-Coder model:

ollama pull qwen2.5-coder:0.5b
ollama serve

Usage

Running QCMD

There are several ways to run QCMD:

  1. Using the installed command:
qcmd "list all files in the current directory"
  1. Using the Python module:
python -m qcmd_cli "list all files in the current directory"
  1. Using the wrapper script (if in project directory):
./qcmd "list all files in the current directory"
  1. Using the run_qcmd.py script (if in project directory):
./run_qcmd.py "list all files in the current directory"

Basic Command Generation

qcmd "list all files in the current directory"

Execute the Generated Command

qcmd --execute "check disk space"

Interactive Shell

qcmd --shell

Log Analysis

qcmd --logs

System Status

qcmd --status

Modular Architecture

QCMD has been refactored into a modular architecture for better maintainability and extensibility. The main components are:

Core Modules

  • qcmd_cli.core.command_generator: Generates and executes shell commands
  • qcmd_cli.core.interactive_shell: Interactive shell functionality

Utility Modules

  • qcmd_cli.utils.history: Command history management
  • qcmd_cli.utils.session: Session management
  • qcmd_cli.utils.system: System status and monitoring

Log Analysis

  • qcmd_cli.log_analysis.analyzer: Log content analysis
  • qcmd_cli.log_analysis.log_files: Log file discovery and selection
  • qcmd_cli.log_analysis.monitor: Log file monitoring

User Interface

  • qcmd_cli.ui.display: UI elements and formatting

Configuration

  • qcmd_cli.config.settings: Configuration management

Command Handling

  • qcmd_cli.commands.handler: Command-line argument parsing and execution

See MODULAR_ARCHITECTURE.md for a detailed explanation of the modular design.

Development

Setting Up Development Environment

  1. Clone the repository:
git clone https://github.com/aledanee/qcmd.git
cd qcmd
  1. Install in development mode:
pip install -e .
  1. Install development dependencies:
pip install pytest

Testing

Run the tests to verify the modular architecture:

python -m pytest tests/

Directory Structure

qcmd/
├── qcmd_cli/                 # Main package
│   ├── commands/             # Command handlers
│   ├── config/               # Configuration management
│   ├── core/                 # Core functionality
│   ├── log_analysis/         # Log analysis modules
│   ├── ui/                   # User interface
│   └── utils/                # Utility modules
├── tests/                    # Test suite
└── run_qcmd.py               # Entry point script

Contributing

Contributions are welcome! Here's how you can contribute:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and commit them: git commit -m 'Add some feature'
  4. Push to the branch: git push origin feature-name
  5. Submit a pull request

Please make sure to update tests as appropriate and ensure all tests pass before submitting a pull request.

Configuration

QCMD stores configuration in ~/.qcmd/config.json. You can customize:

  • Default model
  • Temperature for generation
  • UI settings (banner, colors, compact mode)
  • Update checking behavior
  • Maximum attempts for auto-correction

License

MIT

Credits

Powered by Ollama and Qwen2.5-Coder.

About

Command-line AI assistant for analyzing logs and suggesting secure commands using LLMs.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published