Un agente AI che automatizza il ciclo di sviluppo, dal task alla pull request, passando per test e fix automatici.
Questo progetto implementa una pipeline di agenti AI in grado di ricevere un task di sviluppo tramite Telegram, scrivere il codice, testarlo, correggerlo e, infine, creare una pull request su GitLab. L'obiettivo è ridurre drasticamente i tempi di sviluppo per task ripetitivi e ben definiti.
Il loop di esecuzione segue questo schema:
Telegram -> Orchestrator -> Dev Agent (Aider) -> QA Agent (Docker/Curl) -> Fixer Agent -> Push to Git
- Input via Telegram: Un utente invia un comando, come
/run implementa la feature X. - Orchestrator: Riceve il messaggio e avvia la pipeline, coordinando i vari agenti.
- Dev Agent: Utilizza
aider-chatper scrivere o modificare il codice necessario a completare il task. - QA Agent: Esegue test automatici per validare il codice generato.
- Fixer Agent: Se i test falliscono, questo agente analizza i log di errore e tenta di correggere il codice.
- Push to Git: Una volta che il codice passa i test, viene committato e inviato al repository.
- Python 3.10+
- Docker
- Ollama (per l'esecuzione di modelli di linguaggio in locale)
-
Clonare il repository:
git clone <url-del-repository> cd <nome-cartella-progetto>
-
Creare un file di ambiente: Crea un file
.envnella root del progetto. Questo file conterrà le variabili d'ambiente, come il token del bot di Telegram. Il file.gitignoreè già configurato per ignorare.env, garantendo che le tue chiavi private non vengano committate.# Esempio di contenuto per .env TELEGRAM_TOKEN=your_telegram_token_here -
Installare le dipendenze Python: È consigliabile creare un ambiente virtuale prima di installare le dipendenze.
python3 -m venv venv source venv/bin/activate # Su Windows: venv\Scripts\activate pip install -r requirements.txt
-
Avviare il bot: Una volta configurato l'ambiente, puoi avviare il bot.
python3 telegram_bot.py
Questo agente è stato inizialmente addestrato su un'architettura a microservizi basata su NestJS. Tuttavia, la sua conoscenza è pluggabile.
La cartella knowledge_templates/nestjs_microservices/ contiene gli esempi specifici per NestJS. Puoi adattare l'agente al tuo stack tecnologico seguendo questi passi:
- Svuota il contenuto di
knowledge_templates/nestjs_microservices/. - Inserisci in quella cartella i file di esempio del tuo framework (es. Spring Boot, Django, Express, ecc.).
- Fornisci esempi di codice che rappresentino la tua architettura, i tuoi design pattern e le tue convenzioni di stile.
L'agente userà questi file come "source of truth" per imparare il tuo stack e generare codice coerente.
L'interazione con l'agente avviene tramite comandi inviati a un bot Telegram.
-
/run implementa <descrizione_task>- Esempio:
/run implementa un endpoint GET /users/{id} - Azione: Avvia la pipeline completa (Dev -> QA -> Fixer -> Git).
- Esempio:
-
/run testa <nome_test>- Esempio:
/run testa il login utente - Azione: Esegue solo l'agente QA per validare una funzionalità specifica.
- Esempio:
All'interno dei prompt e del codice, vengono utilizzati specifici marcatori in stile markdown (es. ### RAGIONAMENTO:, ### FILE:). Questi marcatori non sono commenti superflui, ma istruzioni strutturate che permettono al sistema di parsing (agent_core.py) di interpretare correttamente la risposta del modello di linguaggio.
### RAGIONAMENTO:: Delimita la sezione in cui l'agente analizza il problema e pianifica la soluzione.### FILE:: Indica che il blocco di codice successivo deve essere scritto in un file specifico.### SHELL:: Contiene i comandi da eseguire nella shell.
La rimozione o la modifica di questi marcatori comprometterebbe la capacità dell'agente di eseguire le sue funzioni.
Siamo aperti a contributi! Se vuoi migliorare il progetto, apri una issue o una pull request.
Questo progetto è rilasciato sotto licenza MIT.