Environnements d’agent
Une session utilise un environnement d’agent, harness standard ou harness expérimental. Cette page explique comment un projet choisit son environnement et les fonctionnalités prises en charge par chacun.
Un harnais est l’environnement d’exécution de l’agent dans le bac à sable d’une session. Il exécute la boucle du modèle, appelle les outils et produit la transcription. Beeuni en propose deux : harness standard (celui par défaut) et harness expérimental. Une session en exécute exactement un.
Les deux harnais lisent le même projet : beeuni.yaml, les fichiers d’agent dans agents/, les compétences dans skills/, le AGENTS.md racine et memory/. Les clients (Web, CLI, TUI, mobile, SDK) y accèdent tous deux via la même API de session. Les différences concernent les fonctionnalités de session indiquées dans la matrice ci-dessous et les fichiers que chaque harnais lit pour sa propre configuration.
Comment une session sélectionne son harnais
Beeuni décide au démarrage, au redémarrage ou à la reprise d’une session. Une session en cours conserve son harnais jusque-là.
| Règle, dans l’ordre | Harnais |
|---|---|
Le drapeau llm_gateway du projet est désactivé |
harness standard |
Le drapeau pi_harness du projet est activé |
harness expérimental |
beeuni.yaml définit runtime: pi |
harness expérimental |
| Tout autre cas | harness standard |
- harness expérimental appelle les modèles uniquement via la passerelle LLM de Beeuni. Un projet dont
llm_gatewayest désactivé démarre harness standard, quels que soient le drapeau ou le manifeste. Voir Modèles. runtimeest une clé de manifestebeeuni_version: 2. Un projetbeeuni.tomlhérité ne peut pas la définir. Voir la référence du manifeste.pi_harnessest un indicateur de fonctionnalité par projet, désactivé par défaut. Voir Indicateurs de fonctionnalité.
Pour savoir quel harnais une session exécute, lisez harness.id dans la réponse GET /beeuni/health du démon du bac à sable : opencode ou pi.
Fonctionnalités prises en charge par chaque harnais
Un harnais répertorie les fonctionnalités de session facultatives qu’il fournit dans le tableau capabilities de GET /beeuni/health. Un client masque un contrôle lorsque l’capabilities de la session ne contient pas l’identifiant correspondant. La vérification du SDK est runtimeSupports.
Les deux harnais
| Fonctionnalité | harness standard | harness expérimental |
|---|---|---|
| Tours de conversation, diffusion en continu, arrêt | Oui | Oui |
.md de l’agent : prompt, model, variant, mode, permission, temperature, top_p, steps |
Oui | Oui. harness expérimental n’applique pas options (options du fournisseur). |
Accès aux outils par agent (agents.<name>.tools dans beeuni.yaml : all, none, une liste, exclude) |
Oui | Oui |
Règles permission par agent et demandes d’autorisation |
Oui | Oui |
Questions (outil question) |
Oui | Oui |
Le fichier de règles AGENTS.md à la racine du projet, ou CLAUDE.md si la racine ne contient pas de AGENTS.md |
Oui. harness standard lit aussi le fichier dans les répertoires parents de /workspace et lit /workspace lorsqu’il exécute une publication de configuration. |
Oui, le fichier racine uniquement. Il fait partie du prompt système de la session et de chaque sous-agent. Avec les publications de configuration activées, harness expérimental lit la copie de la publication. |
Sous-agents (outil task), session.subagents |
Oui | Oui : general, explore (en lecture seule) et chaque agent du projet avec mode: subagent ou all. Un sous-agent ne peut pas démarrer un autre sous-agent. |
Compétences (skills/ et compétences beeuni-* gérées), avec l’autorisation skills de l’agent |
Oui. L’agent charge une compétence avec l’outil skill. |
Oui. Le prompt système répertorie chaque compétence autorisée ; l’agent lit le fichier. |
Outils Beeuni : web_search, image_search, scrape_webpage, memory, show. Les cinq outils en l’absence de clé tools: dans beeuni.yaml ; avec une clé, ceux qu’elle répertorie comme beeuni:<name> |
Oui | Oui |
Outils du projet (tools: dans beeuni.yaml) |
Oui | Oui |
Publications de configuration, config.release.v1 |
Oui | Oui |
Compacter (résumer) la conversation, à la demande et automatiquement lorsque le modèle approche de la limite de sa fenêtre de contexte, session.compact |
Oui | Oui. Si une requête au modèle dépasse la limite, la conversation est compactée et la requête réessayée une fois. |
Commandes slash du projet, session.commands |
Oui, depuis commands/ dans le répertoire de configuration d’harness standard. |
Oui, à partir des modèles de prompt dans prompts/ du répertoire de configuration de harness expérimental et dans les packages harness expérimental. harness expérimental ne lit pas commands/ d’harness standard. |
| Terminal dans le bac à sable (PTY) | Oui | Oui |
Outils bash, read, write, edit, glob, grep ; secrets dans le shell ; CLI beeuni |
Oui | Oui |
Les outils Beeuni et les outils du projet sont indépendants du harnais : le démon du bac à sable exécute un module par outil pour les deux harnais, avec les mêmes noms, arguments et sorties. harness expérimental les appelle dans le processus du démon ; harness standard les appelle via un plug-in écrit par le démon. Les deux harnais obtiennent la même liste : un outil Beeuni qui ne figure pas dans la clé tools: du projet n’est activé dans aucun des deux. Un projet qui possède encore des copies des outils Beeuni dans harnesses/opencode/tools/ conserve ces copies dans harness standard jusqu’à ce qu’il les supprime.
Les outils Web suivent les clés d’autorisation websearch (web_search, image_search) et webfetch (scrape_webpage) dans les deux harnais. Dans harness standard, ces outils ne peuvent pas demander d’autorisation : une règle ask les refuse. Dans harness expérimental, une règle ask déclenche une demande d’autorisation. Dans harness expérimental, une commande memory qui modifie un fichier suit edit, et view suit read ; dans harness standard, seule une règle memory régit l’outil.
AGENTS.md dans harness expérimental
harness expérimental place le AGENTS.md racine du projet dans le prompt système en tant que section unique, <project_instructions path="AGENTS.md">, après le prompt de l’agent. Si la racine ne contient pas de AGENTS.md, harness expérimental utilise CLAUDE.md, comme dans harness standard. harness expérimental ne lit aucun AGENTS.md dans un sous-répertoire ou un répertoire parent.
- Source. Lorsque les publications de configuration sont désactivées, harness expérimental lit
/workspace/AGENTS.md. Lorsqu’elles sont activées, harness expérimental lit la copie de la publication, jamais celle de/workspace: une modification dans/workspacen’est transmise à la session qu’après sa fusion dans la branche de base. Si elles sont activées et qu’aucune publication n’est disponible (config.source: image-default), harness expérimental ne lit aucunAGENTS.md, tout comme il ne lit aucune compétence du projet. - Moment de lecture. harness expérimental lit le fichier au démarrage de l’environnement d’exécution, au rechargement de sa configuration (nouvelle publication, push
/beeuni/env) et après l’actualisation d’un dépôt. Il ne le relit pas avant chaque tour. Une nouvelle publication est prise en compte au tour suivant sans redémarrage ; un tour en cours conserve l’ancien fichier. - Fichiers ignorés. Un fichier vide, un fichier qui n’est pas un fichier ordinaire et un lien symbolique dont la cible se trouve hors du dépôt n’ajoutent rien. Les deux derniers cas produisent chacun un avertissement dans le journal du démon.
- Vérification.
harness.details.agentsMddansGET /beeuni/healthdu démon indique le fichier chargé par harness expérimental :source(releaseouworkspace),path,bytesetsha(les 12 premiers caractères hexadécimaux de son sha256). La valeur estnulllorsque harness expérimental n’a chargé aucun fichier.
Fonctionnalités actuellement réservées à harness standard
| Fonctionnalité | Capacité | harness standard | harness expérimental |
|---|---|---|---|
| Revenir à un message et le restaurer. Modifier puis renvoyer un message utilise cette fonction. | session.rewind |
Oui | Non |
Serveurs MCP (mcp dans opencode.jsonc) |
session.mcp |
Oui | Pas de client MCP. Les connecteurs fonctionnent avec les deux harnais via le CLI beeuni connectors. |
Liste de tâches (outil todowrite) et carte de plan |
session.todo |
Oui | Non. La carte de plan reste vide. |
Connecter le client de terminal propre au harnais (beeuni connect, TUI Alt+o) |
session.attach |
Oui | Non. Voir TUI. |
Document de configuration d’exécution (/global/config) |
session.config |
Oui | Non. Les agents et les modèles proviennent du projet dans les deux cas. |
| Créer une bifurcation de session à un message | session.fork |
Oui | Non |
| Exécuter une commande shell comme un tour | session.shell |
Oui | Non |
| Fournisseurs de modèles sans passerelle LLM | — | Oui | Non. harness expérimental nécessite que llm_gateway soit activé. |
Une session harness expérimental répond à une demande de fonctionnalité qu’elle ne fournit pas avec 501 feature_not_supported, ou avec 404 pour un document qu’elle ne possède pas (/global/config). Elle n’ignore pas la demande.
Fichiers de configuration des harnais
Chaque harnais possède un répertoire dédié aux fichiers qu’il est le seul à lire.
| harness standard | harness expérimental | |
|---|---|---|
| Répertoire | harnesses/opencode/ ou opencode.config_dir |
harnesses/pi/ ou pi.config_dir |
| Répertoire hérité | .beeuni/opencode/ |
.beeuni/pi/ |
| Contenu | opencode.jsonc, plugins/, tools/, commands/ |
settings.json, extensions/, skills/, prompts/ |
| Extensions | Plug-ins et outils propres à harness standard dans ce répertoire | Packages harness expérimental dans harnesses.pi.packages et fichiers d’extension dans extensions/ |
Une session harness expérimental ne lit pas opencode.jsonc, plugins/, tools/ ni commands/. Une session harness standard ne lit pas le répertoire harness expérimental. Un outil nécessaire aux deux harnais est un outil du projet, déclaré dans beeuni.yaml, et non un fichier de l’un ou l’autre répertoire.
Les packages harness expérimental proviennent de packages. Un package peut ajouter des outils absents de harness expérimental, par exemple un adaptateur MCP ou un outil de liste de tâches. Beeuni charge le package, mais ne teste pas les packages tiers.