TheShellMaster commited on
Commit
dabd252
·
verified ·
1 Parent(s): a0025a5

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +178 -5
README.md CHANGED
@@ -7,10 +7,183 @@ sdk: docker
7
  pinned: false
8
  ---
9
 
10
- # Cypher Coder Space Backend (Docker)
11
 
12
- Ce Space sert de backend pour l'agent de programmation **Cypher Coder CLI**.
13
 
14
- Il expose :
15
- - Un redirect vers l'interface Gradio à `/gradio`
16
- - Une API de chat pour le CLI à `/api/chat`
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  pinned: false
8
  ---
9
 
10
+ # 💻 Cypher Coder - Agent IA de Programmation CLI
11
 
12
+ **Cypher Coder** est un agent conversationnel en ligne de commande (CLI) autonome, capable de concevoir, lire, modifier du code localement et d'exécuter des commandes système directement dans votre terminal sous votre supervision.
13
 
14
+ Ce projet a été conçu et développé par **DJAKOUA KWANKAM**, étudiant en informatique à l'**Institut Universitaire de Douala (IUD)**.
15
+
16
+ ---
17
+
18
+ ## 🏗️ Architecture & Fonctionnement
19
+
20
+ L'architecture de Cypher Coder repose sur un modèle hybride Client-Serveur conçu pour maximiser les performances tout en s'exécutant sur des machines aux ressources limitées.
21
+
22
+ ```
23
+ +-----------------------------------------------------------------+
24
+ | MACHINE LOCALE |
25
+ | |
26
+ | +-------------+ Prompt +------------------------+ |
27
+ | | | +--------------> | | |
28
+ | | Terminal | | Client CLI Node | |
29
+ | | Utilisateur| <--------------+ | (index.js / Inquirer) | |
30
+ | | | Réponse | | |
31
+ | +-------------+ +------------------------+ |
32
+ | ^ | |
33
+ | | Outil | API |
34
+ | | Local | Chat |
35
+ | v v |
36
+ | +-----------------------------+ |
37
+ | | SYSTÈME DE FICHIERS / | |
38
+ | | TERMINAL DE L'UTIL. | |
39
+ | +-----------------------------+ |
40
+ +--------------------------------------+--------------------------+
41
+ | ^
42
+ | curl | JSON
43
+ | HTTP POST | Response
44
+ v |
45
+ +--------------------------------------+--------------------------+
46
+ | CLOUD HUGGING FACE (BACKEND DOCKER) |
47
+ | |
48
+ | +-----------------------+ +------------------+ |
49
+ | | | Inference | | |
50
+ | | FastAPI Gateway | +----------> | Qwen-2.5-Coder | |
51
+ | | | | (32B Model) | |
52
+ | +-----------------------+ +------------------+ |
53
+ | | |
54
+ | | Outil search_web |
55
+ | v |
56
+ | +-----------------------+ |
57
+ | | DuckDuckGo Search | |
58
+ | +-----------------------+ |
59
+ +-----------------------------------------------------------------+
60
+ ```
61
+
62
+ ### 1. Le Client CLI (Local)
63
+ Développé en **Node.js**, il gère l'interface interactive utilisateur dans le terminal à l'aide de `chalk`, `ora` et `inquirer`. Il expose des outils système :
64
+ * `read_file` : Permet au modèle de lire le contenu des fichiers locaux.
65
+ * `write_file` : Permet d'écrire ou de modifier du code source local.
66
+ * `list_dir` : Permet au modèle d'inspecter la structure des répertoires locaux.
67
+ * `run_command` : Exécute des commandes système (compilation, tests unitaires, git, etc.).
68
+
69
+ ### 2. Le Serveur API (Hugging Face Space)
70
+ Un conteneur Docker exécutant une application **FastAPI** avec un redirect vers une interface **Gradio** à `/gradio` pour tester l'agent en ligne. Le serveur communique avec l'API Hugging Face Serverless pour interroger le modèle de pointe **Qwen/Qwen2.5-Coder-32B-Instruct**.
71
+
72
+ ### 3. La Boucle d'Agent Hybride (Hybrid Agent Loop)
73
+ * Lorsque le modèle demande une recherche sur internet (`search_web`), celle-ci est résolue directement par le serveur dans le cloud via DuckDuckGo.
74
+ * Lorsque le modèle demande une action système locale (lire un fichier, exécuter une commande), le serveur renvoie l'instruction au client CLI local qui l'exécute après avoir demandé le consentement explicite de l'utilisateur.
75
+
76
+ ---
77
+
78
+ ## 🛠️ Défis Techniques & Résolutions
79
+
80
+ ### 1. Le blocage DNS/TCP de Node.js vers Hugging Face
81
+ * **Problème** : L'environnement réseau local de l'utilisateur souffrait d'une configuration IPv6 défaillante. Node.js tentait de résoudre et de contacter `api-inference.huggingface.co` en IPv6, entraînant des timeouts systématiques (`ETIMEDOUT` / `ENOTFOUND`).
82
+ * **Résolution** : Le client local a été réécrit pour effectuer ses requêtes API via l'outil système `curl` (exécuté comme un processus fils dans Node.js). `curl` gère de manière transparente et instantanée le repli d'IPv6 vers IPv4, restaurant une connexion instantanée.
83
+
84
+ ### 2. Collision de Ports (Errno 98) sous le SDK Gradio
85
+ * **Problème** : Sous le SDK par défaut `gradio` de Hugging Face, le lanceur interne de la plateforme démarre automatiquement son propre serveur sur le port `7860`. En voulant y greffer nos endpoints personnalisés FastAPI via `uvicorn.run(...)`, une erreur de collision de port est survenue, faisant crasher le conteneur.
86
+ * **Résolution** : Migration de l'Espace vers le SDK **Docker** avec un `Dockerfile` sur mesure. Le serveur Uvicorn est désormais démarré de manière unique et propre via l'instruction `CMD` du conteneur Docker, garantissant une cohabitation parfaite de l'API et de Gradio sur le port `7860`.
87
+
88
+ ---
89
+
90
+ ## 🚀 Guide d'Installation (Linux / Windows / Termux)
91
+
92
+ ### 📋 Prérequis Communs
93
+ 1. Un compte Hugging Face.
94
+ 2. Un jeton d'accès Hugging Face (Access Token) avec droits d'écriture, à placer en variable d'environnement ou dans votre configuration.
95
+
96
+ ---
97
+
98
+ ### 🐧 1. Installation sur Linux (Ubuntu/Debian/Arch...)
99
+
100
+ 1. **Installer Node.js & Git** :
101
+ ```bash
102
+ sudo apt update
103
+ sudo apt install -y nodejs npm git curl
104
+ ```
105
+ 2. **Cloner le projet** :
106
+ ```bash
107
+ git clone https://github.com/TheShellMaster/cypher-coder.git
108
+ cd cypher-coder
109
+ ```
110
+ 3. **Installer les dépendances** :
111
+ ```bash
112
+ npm install
113
+ ```
114
+ 4. **Assurer les permissions d'exécution** :
115
+ ```bash
116
+ chmod +x index.js
117
+ ```
118
+ 5. **Lier la commande globalement** :
119
+ ```bash
120
+ npm link
121
+ ```
122
+ 6. **Lancer l'agent** :
123
+ ```bash
124
+ cypher
125
+ ```
126
+
127
+ ---
128
+
129
+ ### 🪟 2. Installation sur Windows (Command Prompt / PowerShell)
130
+
131
+ 1. **Installer les dépendances requises** :
132
+ * Téléchargez et installez **Node.js** depuis le site officiel : [nodejs.org](https://nodejs.org/).
133
+ * Téléchargez et installez **Git** depuis [git-scm.com](https://git-scm.com/).
134
+ * Installez **curl** (inclus par défaut dans Windows 10/11 sous PowerShell).
135
+ 2. **Cloner et configurer** :
136
+ Ouvrez PowerShell en tant qu'administrateur :
137
+ ```powershell
138
+ git clone https://github.com/TheShellMaster/cypher-coder.git
139
+ cd cypher-coder
140
+ npm install
141
+ ```
142
+ 3. **Créer le lien global** :
143
+ ```powershell
144
+ npm link
145
+ ```
146
+ 4. **Lancer l'agent** :
147
+ ```powershell
148
+ cypher
149
+ ```
150
+
151
+ ---
152
+
153
+ ### 📱 3. Installation sur Android (Termux)
154
+
155
+ 1. **Installer et mettre à jour Termux** (depuis F-Droid de préférence).
156
+ 2. **Installer les paquets nécessaires** :
157
+ ```bash
158
+ pkg update && pkg upgrade -y
159
+ pkg install -y nodejs-lts git curl
160
+ ```
161
+ 3. **Cloner le dépôt** :
162
+ ```bash
163
+ git clone https://github.com/TheShellMaster/cypher-coder.git
164
+ cd cypher-coder
165
+ ```
166
+ 4. **Installer les modules** :
167
+ ```bash
168
+ npm install
169
+ ```
170
+ 5. **Rendre index.js exécutable** :
171
+ ```bash
172
+ chmod +x index.js
173
+ ```
174
+ 6. **Créer un raccourci global** :
175
+ ```bash
176
+ npm link
177
+ ```
178
+ 7. **Lancer l'agent** :
179
+ ```bash
180
+ cypher
181
+ ```
182
+
183
+ ---
184
+
185
+ ## 🔒 Sécurité et Consentement
186
+
187
+ Par mesure de sécurité, Cypher Coder n'apporte aucune modification à votre système de fichiers et n'exécute aucune commande système en tâche de fond de manière opaque.
188
+ * Pour **toute création/modification de fichier**, vous devrez appuyer sur `Y` pour valider.
189
+ * Pour **toute exécution de commande système** (comme un `npm install` ou `git commit`), vous devrez valider explicitement avec `Y` (l'option par défaut étant `Non`).