
---
# 🎯 Tutoriel : Intégrer `codellama:13b-python` dans Cursor avec Cline — Version Optimisée et Ergonomique

Ce guide te montre **la méthode la plus simple et efficace** pour exploiter tes modèles locaux `codellama:13b-python` (pour Cursor) et `llama2:13b` (pour Obsidian) via **Cline**, tout en te donnant la capacité de gérer plusieurs LLM, de modifier dynamiquement leurs paramètres, et de créer plusieurs agents spécialisés.

---

## ✅ Objectif

- Utiliser tes modèles locaux via **Cline**, l'interface latérale intelligente de Cursor
- Passer rapidement d’un modèle à un autre (`codellama` pour Cursor, `llama2:13b` pour Obsidian)
- Gérer facilement le contexte, les rôles dynamiques et les paramètres personnalisés de chaque modèle
- Centraliser les fichiers de configuration et les réutiliser dans tous tes projets Cursor ou Obsidian

---

## 🧱 Étape 1 : Préparer les modèles avec Ollama

### Télécharger les modèles que tu veux utiliser :

```bash
ollama pull codellama:13b-python   # Pour Cursor (code)
ollama pull llama2:13b             # Pour Obsidian (généraliste structuré)
```

✅ Vérifie qu’ils sont bien installés :

```bash
ollama list
```

---

## 📁 Étape 2 : Organisation centrale des fichiers

Plutôt que de recopier à chaque fois, crée un dossier centralisé :

```
~/cursor-llm-config/
├── cursor-agent.json
├── main.py
├── config.json         # Gère les paramètres dynamiques des modèles
├── agents/
│   ├── optimizer.py
│   ├── refactor.py
│   └── docstringer.py
```

> 💡 Ce dossier peut être placé dans un emplacement accessible depuis WSL ET Windows si tu utilises Cursor sous Windows (ex: `/mnt/c/Users/tonprofil/llm-config`) pour unifier l'accès.

---

## ⚙️ Étape 3 : Fichier `cursor-agent.json`

```json
{
  "name": "LLM Local Agent",
  "entry": "main.py",
  "llm": {
    "provider": "custom",
    "completion_url": "http://localhost:11434/api/generate",
    "method": "POST",
    "headers": { "Content-Type": "application/json" },
    "input_key": "prompt",
    "output_key": "response"
  }
}
```

---

## 🧠 Étape 4 : Script `main.py` configurable

```python
import sys
import json
import requests
import os

with open("config.json", "r") as f:
    config = json.load(f)

model = config.get("model", "codellama:13b-python")
prompt = sys.stdin.read().strip()

payload = {
    "model": model,
    "prompt": prompt,
    "temperature": config.get("temperature", 0.7),
    "top_p": config.get("top_p", 0.9),
    "num_predict": config.get("num_predict", 2048),
    "stream": False
}

res = requests.post("http://localhost:11434/api/generate", json=payload)
print(json.dumps({"response": res.json().get("response", "")}))
```

---

## 🧩 Étape 5 : Fichier `config.json` pour personnaliser les paramètres

```json
{
  "model": "codellama:13b-python",
  "temperature": 0.7,
  "top_p": 0.9,
  "num_predict": 2048
}
```

> 🔄 Pour Obsidian, change simplement `"model"` en `"llama2:13b"`.

---

## 🧬 Étape 6 : Utiliser Cline efficacement

1. Ouvre Cursor et sélectionne du code
2. Tape `//` ou clic droit > "Ask..."
3. Dans la barre Cline :
    - Sélectionne le modèle : `LLM Local Agent`
    - Ajoute un prompt (ex : "Optimise cette fonction")

Tu peux combiner prompt utilisateur + système pour obtenir des réponses sur mesure.

---

## 🧠 Étape 7 : Créer plusieurs agents spécialisés (optionnel mais recommandé)

Crée un dossier `agents/` avec des fichiers comme :

- `optimizer.py` → Optimisation de fonctions
- `refactor.py` → Refactorisation
- `docstringer.py` → Génération de docstrings

Chacun peut être appelé depuis un wrapper CLI ou une extension Cursor avancée.

---

## 💡 Étape 8 : Configuration pour Obsidian

- Le modèle `llama2:13b` est recommandé pour ses capacités de résumé, classification, mise en forme, et structuration de notes.
- Tu peux utiliser le même `main.py` et `config.json`, en modifiant simplement le modèle.
- Pour automatiser avec Obsidian (via un plugin ou script externe), tu peux lancer une requête vers `http://localhost:11434/api/generate` avec un prompt construit dynamiquement depuis le contenu d’une note Markdown.

---

## 🚀 Astuce : Script CLI de sélection

Crée un script CLI qui te permet de modifier `config.json` à la volée :

```bash
python switch_model.py --model llama2:13b --temperature 0.6
```

Et dans `switch_model.py`, édite dynamiquement le fichier `config.json`.

---

## ✅ Résumé

|Étape|Action clé|
|---|---|
|1. Ollama|Télécharger `codellama:13b-python` + `llama2:13b`|
|2. Structure|Centraliser `main.py`, `config.json`, `cursor-agent.json`|
|3. Cline|Utiliser ton modèle local depuis l'interface|
|4. Paramètres|Modifier facilement température, top_p, nombre de tokens|
|5. Agents|Créer des agents spécialisés pour chaque type de tâche|
|6. Obsidian|Utiliser `llama2:13b` pour améliorer, structurer et relier les notes|

---
