dragon-cli-pro
v4.0.0
Published
Une IA de codage et d'automatisation dans votre terminal, connectée à un serveur privé.
Readme
🐉 Dragon CLI - Votre Assistant IA Personnel dans le Terminal
Dragon CLI est un outil en ligne de commande qui transforme votre terminal en un dialogue intelligent avec une IA. Au lieu de vous souvenir de commandes complexes, décrivez simplement ce que vous voulez faire. Dragon se connecte à votre propre serveur IA pour une expérience rapide, sécurisée et entièrement sous votre contrôle.
Architecture : Comment ça fonctionne ?
La puissance de Dragon réside dans son architecture découplée. Le CLI est intentionnellement léger et ne contient aucune logique IA. Il agit comme une interface sécurisée vers votre propre cerveau distant.
- Vous donnez un ordre en langage naturel à Dragon CLI.
- Dragon CLI envoie cet ordre de manière sécurisée à votre serveur personnel.
- Votre Serveur IA (que vous contrôlez) reçoit l'ordre, le met en forme dans un prompt système, et l'envoie à l'API de Gemini.
- La réponse de l'IA est renvoyée à votre serveur, qui la formate en JSON et la transmet à Dragon CLI.
- Dragon CLI vous présente le plan d'action et attend votre confirmation avant d'exécuter quoi que ce soit.
Cette approche garantit que vos clés API secrètes ne sont jamais exposées sur la machine cliente.
🚀 Guide de Démarrage Complet en 3 Étapes
Pour utiliser Dragon, vous avez besoin de ses deux composantes : le cerveau (le serveur) et le corps (le CLI).
Étape 1 : Déployer Votre Propre Serveur IA (Le Cerveau)
Le CLI a besoin d'une URL à qui parler. Nous fournissons un serveur template prêt à être déployé sur des plateformes comme Render.
Cliquez sur ce lien pour créer votre propre copie du serveur :
Déployez ce nouveau dépôt sur un service d'hébergement comme Render, Vercel, ou Heroku. Le déploiement est généralement automatique.
Configurez les variables d'environnement sur la plateforme d'hébergement : Votre serveur aura besoin de connaître votre clé API secrète de Google. Dans les paramètres de votre service sur Render, ajoutez une variable d'environnement :
GEMINI_API_KEY: Votre clé API que vous obtenez depuis Google AI Studio.SECRET_KEY: Une longue chaîne de caractères aléatoires que vous inventez, pour sécuriser les tokens de votre serveur.
Une fois le déploiement terminé, Render vous donnera une URL publique. Notez cette URL, vous en aurez besoin.
Étape 2 : Installer Dragon CLI (Le Corps)
Maintenant que le cerveau est en ligne, installez le client sur votre machine.
npm install -g dragon-cli```
<!-- Remplacez "dragon-cli" par le nom final de votre paquet sur npm -->Étape 3 : Configurer la Connexion
Créez un pont entre le corps et le cerveau.
Créez un fichier
.envdans votre répertoire personnel. C'est le moyen le plus sûr de stocker vos informations de connexion.nano ~/.envAjoutez-y les informations de votre serveur. Le
BEARER_TOKENest la clé API (sk-...) que votre propre serveur a générée pour vous (via l'endpoint/user/api-tokenpar exemple).# L'URL de votre serveur déployé à l'étape 1 SERVER_URL="https://votre-serveur-sur-render.onrender.com/chat-direct"La clé API générée par VOTRE serveur pour vous authentifier
.oso
BEARER_TOKEN="sk-sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Sauvegardez le fichier.
🎮 Utilisation
Tout est prêt ! Réveillez le Dragon :
drnEx de Server utiliser
// ==========================
// IMPORTS DES MODULES
// ==========================
import express from 'express';
import { GoogleGenerativeAI } from '@google/generative-ai';
import dotenv from 'dotenv';
import cors from 'cors';
// ==========================
// CONFIGURATION INITIALE
// ==========================
dotenv.config();
const app = express();
// Middlewares
app.use(express.json()); // Pour comprendre le JSON envoyé par le Dragon
app.use(cors()); // Pour autoriser les requêtes (bonne pratique)
const PORT = process.env.PORT || 10000;
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;
const INTERNAL_SECRET_TOKEN = process.env.INTERNAL_SECRET_TOKEN;
// Validation : le serveur ne démarrera pas si les secrets ne sont pas définis
if (!GEMINI_API_KEY || !INTERNAL_SECRET_TOKEN) {
console.error("ERREUR: GEMINI_API_KEY et INTERNAL_SECRET_TOKEN doivent être définis dans le fichier .env");
process.exit(1); // Arrête le processus
}
// ==========================
// CLIENT IA GEMINI
// ==========================
const genAI = new GoogleGenerativeAI(GEMINI_API_KEY);
// Nous utilisons "gemini-pro", le modèle le plus stable et universellement disponible.
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
// ==========================
// SÉCURITÉ (MIDDLEWARE D'AUTHENTIFICATION)
// ==========================
function apiAuth(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Extrait le token "Bearer <token>"
if (!token) {
return res.status(401).json({ error: "Accès non autorisé : token manquant." });
}
if (token !== INTERNAL_SECRET_TOKEN) {
return res.status(403).json({ error: "Accès interdit : token invalide." });
}
next(); // Si le token est bon, on continue vers la route principale
}
// ==========================
// LA ROUTE PRINCIPALE DE L'IA
// ==========================
// C'est ici que le Dragon CLI envoie ses requêtes.
app.post('/chat-direct', apiAuth, async (req, res) => {
try {
const { message } = req.body; // Le "message" est le prompt complet envoyé par le Dragon
if (!message) {
return res.status(400).json({ error: "Le champ 'message' est requis." });
}
// On envoie le prompt directement à Gemini
const result = await model.generateContent(message);
const response = await result.response;
const aiTextResponse = response.text();
// On renvoie la réponse de l'IA au Dragon, dans un champ "reply"
res.json({ reply: aiTextResponse });
} catch (error) {
console.error("Erreur lors de la communication avec l'API Gemini :", error);
res.status(500).json({ error: `Erreur interne du serveur : ${error.message}` });
}
});
// ==========================
// DÉMARRAGE DU SERVEUR
// ==========================
app.listen(PORT, () => {
console.log(`🚀 Le cerveau du Dragon est en ligne et écoute sur le port ${PORT}`);
});L'interface apparaîtra, et vous pourrez commencer à dialoguer avec votre nouvel assistant. Pour quitter, tapez exit.
🛡️ Un Mot sur la Sécurité La sécurité est primordiale. Dragon ne prendra jamais l'initiative d'exécuter une commande ou de modifier un fichier. Chaque plan d'action généré par l'IA vous est d'abord soumis pour approbation. Vous avez toujours le contrôle final.
Approuvez-vous cette action ? (Exécuter: git log -n 5) (y/n) >
📜 Licence Distribué sous la licence MIT. Voir LICENSE pour plus d'informations.
