> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Clone de sandbox hérité

export const SandboxBetaVersionWarning = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    return <Warning>The following legacy features require the legacy SDK and CLI versions listed in <Link href="/docs/fr/guides/sandbox-legacy-e2b-compatible" target="self">Legacy SDKs & CLI</Link>. Please note that legacy features may be less stable than production releases. If you encounter any issues while using these features, please <Link href="https://meetings-na2.hubspot.com/junyu" target="_blank">contact us</Link>.</Warning>;
  }
};

<Warning>
  Cette page héritée est conservée pour les utilisateurs qui utilisent encore la ligne SDK 1.x ou beta. Les nouvelles intégrations SDK 2.x doivent suivre la documentation Sandbox actuelle.
</Warning>

À l’étape actuelle, les agents IA font face à une limitation fondamentale lors de l’exécution de tâches complexes : le problème du « n de 1 » — l’IA et les développeurs sont confinés à un seul environnement de travail pour un raisonnement sériel. Ce schéma entraîne plusieurs problèmes clés :

1. **Conflits d’expérimentation et contamination de l’environnement**. Lorsqu’un agent IA essaie plusieurs solutions, les modifications de code expérimentales peuvent interférer avec le flux de travail principal du développeur ou contaminer l’environnement d’exécution actuel. Dès qu’une expérience échoue, la récupération nécessite souvent un rollback, et les pistes d’exploration précieuses ne peuvent pas être conservées.

2. **Incapacité à explorer plusieurs solutions en parallèle**. Contraint à un seul environnement, l’agent IA ne peut tester différentes approches que séquentiellement. Ce mode sériel est non seulement inefficace, mais surtout, il limite l’étendue de l’exploration par l’IA — incapable de valider simultanément plusieurs hypothèses parallèles ou approches d’implémentation.

3. **Scalabilité limitée de la puissance de calcul**. Face à des tâches nécessitant du « Wide-Research » (par exemple, comparer 100 solutions simultanément, générer en lot plusieurs versions d’implémentation), l’architecture à environnement unique restreint fondamentalement la capacité à paralléliser le traitement des tâches.

La fonctionnalité **« Clone de sandbox »** permet la transition du « Deep-Research » vers le « Wide-Research » :

1. **Architecture d’exploration multi-chronologies** : Comme un arbre de décision, l’agent IA peut partir du même état de référence et créer plusieurs copies indépendantes de sandbox, chacune explorant une piste de solution différente sans interférer avec les autres.
2. **Véritable capacité de calcul parallèle** : En divisant les grandes tâches en sous-tâches par lots, l’agent IA peut multiplier sa puissance de calcul par des dizaines, voire des centaines, en traitant simultanément des dizaines ou des centaines de branches d’exploration.
3. **Environnement d’expérimentation sans risque** : Les sandboxes clonés sont complètement isolés, ce qui permet à l’IA d’expérimenter librement et de tester diverses possibilités sans affecter l’environnement d’origine ni le flux de travail principal du développeur.
4. **Utilisation efficace des ressources** : Bien que plusieurs instances de sandbox puissent être lancées simultanément, en gérant dynamiquement et en terminant rapidement les branches (instances de sandbox) qui n’ont plus de valeur, la consommation globale de ressources de calcul peut être maintenue dans une plage raisonnable.

Cette capacité permet aux agents IA de dépasser les goulots d’étranglement de performance actuels, en passant de la fourniture de suggestions théoriques à la livraison de solutions fiables qui ont été vérifiées en parallèle et réellement testées, atteignant véritablement la capacité d’explorer, d’itérer et de résoudre des problèmes complexes de manière autonome.

<SandboxBetaVersionWarning />

## Terminologie

* **Sandbox d’origine** : L’instance de sandbox d’origine qui est clonée.
* **Nouveau sandbox** : La nouvelle instance de sandbox créée via l’opération de clonage.

## Présentation de la fonctionnalité

La fonctionnalité de clonage de sandbox prend actuellement en charge les deux scénarios suivants :

* Cloner un sandbox en état Running
* Cloner un sandbox en état Paused

### Clonage d’un sandbox Running

**Pendant le processus de clonage :**

* Le sandbox d’origine sera brièvement suspendu pendant le clonage ;
* L’instance de sandbox est indisponible pendant la suspension ;
* La durée de suspension est proche du temps requis pour une seule opération de pause.

**Une fois le clonage terminé :**

**Sandbox d’origine :**

* Le statut est restauré à running ;
* L’enregistrement de pause existant sera actualisé en un nouvel enregistrement de pause, basé sur l’état actuel du sandbox ;
* Un nouvel enregistrement de modèle de snapshot est généré (pour supprimer ce modèle de snapshot, vous devez d’abord terminer à la fois le sandbox d’origine et les sandboxes clonés) ;

**Nouveau sandbox :**

* Le statut est running ;
* Prêt à être utilisé immédiatement.

### Clonage d’un sandbox Paused

**Pendant le processus de clonage :**

Lorsque le sandbox d’origine est en état paused :

* Le processus de clonage ne déclenchera pas le démarrage du sandbox d’origine ;
* Le sandbox d’origine reste en état paused.

**Une fois le clonage terminé :**

**Sandbox d’origine :**

* L’enregistrement de pause existant n’est pas effacé ;
* Un nouvel enregistrement de modèle de snapshot est généré (pour supprimer ce modèle de snapshot, vous devez d’abord terminer à la fois le sandbox d’origine et les sandboxes clonés) ;

**Nouveau sandbox :**

* Le statut est running ;
* Prêt à être utilisé immédiatement.

### Règles d’héritage des attributs du nouveau sandbox

| Attribut    | Hérité |
| ----------- | ------ |
| auto resume | Oui    |
| auto pause  | Non    |

## Description des paramètres

* `count` : Le nombre d’instances de sandbox à cloner. La valeur minimale est 1, et la valeur maximale ne doit pas dépasser la limite d’instances de sandbox exécutées simultanément de la plateforme (voir : [Limite de quota des sandboxes](/docs/fr/guides/sandbox-quota-limit)) ;
* `strict` : Indique s’il faut cloner strictement selon le nombre spécifié dans le paramètre `count`, la valeur par défaut est false.
  * `true` : Si le nombre d’instances clonées avec succès est inférieur à `count`, un échec de clonage est renvoyé ; les sandboxes créés avec succès seront automatiquement libérés.
  * `false` : Renvoie le nombre réel d’instances de sandbox clonées avec succès.
* `timeout`(`timeoutMs`) : Le délai d’expiration pour le clonage des instances de sandbox.
  * Si non spécifié :
    * Lorsque le sandbox d’origine est en état running, il hérite de sa configuration de délai d’expiration ;
    * Lorsque le sandbox d’origine est en état paused, la valeur par défaut de 5 minutes est utilisée.

## Valeur de retour

Après une opération de clonage réussie, un objet est renvoyé contenant les propriétés suivantes :

| Propriété              | Description                                                     |
| ---------------------- | --------------------------------------------------------------- |
| `sandboxes`            | Liste des instances de sandbox clonées avec succès              |
| `count`                | Nombre de sandboxes clonés avec succès                          |
| `snapshot_template_id` | ID du modèle de snapshot généré pendant le processus de clonage |

## Exemples de code

<CodeGroup>
  ```python Python icon="python" theme={"system"}
  from novita_sandbox.core import Sandbox

  # Create a sandbox
  sandbox = Sandbox.create(template="base")
  # clone
  clones = Sandbox.clone(sandbox.sandbox_id, 2)

  print("snapshot:", clones.snapshot_template_id)
  for sbx in clones:
      print("clone sandbox:", sbx.sandbox_id)
  ```

  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from '@novita-sandbox/core'

  // Create a sandbox
  const sandbox = await Sandbox.create('base')

  // clone
  const sbxClones = await Sandbox.clone(sandbox.sandboxId, { count: 2 })

  console.log("snapshot:", sbxClones.snapshotTemplateId)
  for (const idx in sbxClones.sandboxes) {
      console.log("clone sandboxID[" + idx + "]:", sbxClones.sandboxes[idx].sandboxId)
  }
  ```
</CodeGroup>

De plus, vous pouvez également utiliser Novita Sandbox CLI pour cloner une instance de sandbox spécifiée :

```bash Bash icon="terminal" theme={"system"}
# novita-sandbox-cli sandbox clone [sandboxID] -c [count] -s [strict] -t [timeout]
novita-sandbox-cli sandbox clone 0r0efkbfwzfp9p7qpc1c -c 2
```
