Aller au contenu

Régler l'autocomplétion

L'activer, la couper, lui affecter un modèle, et savoir ce qu'attendre de Next Edit selon le modèle.

Cette page s’adresse au cas où les suggestions en cours de frappe n’arrivent pas, arrivent trop souvent, ou viennent d’un modèle trop lent.

Le modèle d’autocomplétion est servi par le moteur d’inférence de votre périmètre et joint par la passerelle, comme tout autre modèle : le poste ne connaît que l’adresse de la passerelle (livre blanc sécurité V3, section 3.3).

Vérifiez ce point en premier : son échec ne produit aucun message.

Le rôle autocomplete ne fait pas partie des rôles attribués par défaut. Un modèle déclaré sans roles sert au chat, au résumé, à l’édition et à l’application, pas à l’autocomplétion. Sans modèle portant ce rôle, la fonction reste inactive : ni suggestion, ni message, ni entrée dans les journaux.

name: Local Config
version: 1.0.0
models:
- name: Autocomplétion
provider: openai
model: any
apiBase: https://passerelle.interne:6001/completion-rapide/v1
apiKey: sk-lemniscate-<clé>
roles:
- autocomplete

Le modèle réel est celui que l’endpoint désigne sur la passerelle ; la valeur de model est ignorée. Un modèle à poids ouverts petit et rapide convient mieux qu’un gros : la suggestion doit arriver avant la fin de la frappe. Si plusieurs modèles portent le rôle, le premier déclaré est retenu.

L’élément de barre d’état de l’extension ouvre un menu qui liste les modèles du rôle autocomplete et permet d’en changer sans rééditer le fichier. Une liste vide confirme le diagnostic ci-dessus.

Le réglage lemniscate.enableTabAutocomplete vaut true par défaut. La commande Toggle Autocomplete Enabled, sur Ctrl+K Ctrl+A (Cmd+K Cmd+A sur macOS), l’inverse et met le réglage à jour.

Pour la couper depuis la configuration, modèle par modèle :

name: Local Config
version: 1.0.0
models:
- name: Autocomplétion
provider: openai
model: any
apiBase: https://passerelle.interne:6001/completion-rapide/v1
apiKey: sk-lemniscate-<clé>
roles:
- autocomplete
autocompleteOptions:
disable: true

L’autocomplétion se coupe d’elle-même dans certains fichiers, sans réglage : ~/.lemniscate/config.json, les fichiers .prompt, et tout ce qu’un .lemniscateignore exclut, qu’il soit global ou propre au dépôt.

Avec lemniscate.pauseTabAutocompleteOnBattery à true (false par défaut), débrancher le secteur met les suggestions en pause et le rebranchement les rétablit. Cet état de pause n’est pas mémorisé d’un démarrage à l’autre.

Les options se posent sur le modèle, dans autocompleteOptions. Il n’existe pas de bloc tabAutocompleteOptions à la racine de workstation.yaml.

name: Local Config
version: 1.0.0
models:
- name: Autocomplétion
provider: openai
model: any
apiBase: https://passerelle.interne:6001/completion-rapide/v1
apiKey: sk-lemniscate-<clé>
roles:
- autocomplete
autocompleteOptions:
debounceDelay: 500
maxPromptTokens: 2048
modelTimeout: 300
onlyMyCode: false
OptionDéfautEffet
debounceDelay350millisecondes d’inactivité avant d’interroger le modèle
modelTimeout150millisecondes accordées au modèle avant abandon
maxPromptTokens1024taille du contexte envoyé
useCachetrueréutilise une suggestion déjà calculée au même endroit
onlyMyCodetruelimite les extraits de contexte au code du dépôt

Un modèle lent, ou un moteur d’inférence chargé, demande d’augmenter modelTimeout : à 150 millisecondes, la suggestion est abandonnée avant d’arriver, ce qui ressemble à une autocomplétion inactive.

Le réglage lemniscate.enableNextEdit vaut true par défaut, et la fonction tourne avec n’importe quel modèle d’autocomplétion. Il n’y a pas de liste de modèles autorisés.

La qualité des suggestions change d’un modèle à l’autre. Un modèle entraîné à prédire l’édition suivante, comme la famille à poids ouverts instinct, reçoit une requête taillée pour lui. Tout autre modèle reçoit une requête générique, qui décrit la tâche en langage courant : la fonction marche, et les suggestions peuvent être hors sujet.

Sur un modèle qui n’a pas été entraîné pour cette tâche, une notification prévient une fois par modèle et par session que la qualité des suggestions vient du modèle et non de la fonction. Elle propose deux actions : Disable Next Edit et Select different model.

Un modèle peut déclarer la capacité dans sa configuration :

name: Local Config
version: 1.0.0
models:
- name: Autocomplétion
provider: openai
model: any
apiBase: https://passerelle.interne:6001/completion-rapide/v1
apiKey: sk-lemniscate-<clé>
roles:
- autocomplete
capabilities:
- next_edit

Attention à l’effet de bord. Dès qu’une liste capabilities est présente, elle remplace le comportement par défaut. Écrire capabilities: [tool_use] sur un modèle désactive Next Edit pour ce modèle ; c’est le seul moyen de le désactiver par la configuration. Si vous déclarez des capacités, énumérez-les toutes. Dans ce cas, la notification signale que la liste omet next_edit.

Quand une suggestion est affichée, Tab l’accepte et Échap la masque. Ces raccourcis ne s’appliquent que dans ce cas.

La liste complète des réglages de l’extension est en Extension VS Code.