Aller au contenu
English

Rédiger les consignes de l’agent

Confiez une tâche à un agent avec du texte ou un modèle Markdown.

Le brief contient les consignes envoyées à l’agent. Utilisez text pour une demande écrite dans votre script, ou file pour des consignes que vous souhaitez conserver et réutiliser en Markdown.

Brief texte { text }Brief fichier { file, values }
SourceUne chaîne construite par votre codeUn fichier Markdown rangé à côté de vos scripts
VariablesAucune : interpolez dans votre code{{NAME}} depuis values, WORK_BRANCH, BASE_BRANCH
Sortie de commandeAucune!`command` remplacé par sa sortie
Idéal pourDemandes générées ou ponctuellesTâches réutilisées par plusieurs scripts

Un brief texte est envoyé tel quel. La suite de la page traite des briefs fichier.

Écrivez les emplacements sous la forme {{NAME}}, avec des lettres, des chiffres et des tirets bas. Outpost lit le fichier et les remplit avant le démarrage de l’agent.

Add {{FEATURE}} to the signup form.

You work on {{WORK_BRANCH}}, created from {{BASE_BRANCH}}.
Run `npm test` and commit your change.
import { reportValue } from "./reporter.ts";
import { fileURLToPath } from "node:url";
import { dispatch } from "@elie-laloum/outpost";
import { coder, repository, sandboxProvider } from "./outpost.config.ts";

const result = await dispatch({
  repository,
  sandboxProvider,
  agent: coder,
  branch: { mode: "named", name: "outpost/email-validation" },
  brief: {
    file: fileURLToPath(new URL("task.md", import.meta.url)),
    values: { FEATURE: "email validation" },
  },
});
reportValue(result.text);
// Example output: Added email validation to the signup form and committed it.

Un file relatif se résout depuis le répertoire de travail du processus. Construisez le chemin à partir de import.meta.url pour lancer le script depuis n’importe où.

EmplacementRempli avec
{{FEATURE}}values.FEATURE : une chaîne, un nombre fini ou un booléen.
{{WORK_BRANCH}}La branche sur laquelle travaille l’agent (voir Dépôt et branche).
{{BASE_BRANCH}}La branche active dans votre dépôt au démarrage de la tâche.

Un emplacement sans valeur fait échouer la tâche avec le code d’erreur prompt avant le lancement de l’agent. Les valeurs que le fichier n’utilise pas sont signalées à votre fonction de rappel warn.

Écrivez !`command` pour remplacer le fragment par ce qu’affiche la commande. Servez-vous-en pour transmettre à l’agent le journal d’un test en échec ou l’historique récent.

Fix the failing test in {{TEST_FILE}}. Its current output:

!`npx vitest run {{TEST_FILE}} 2>&1 | tail -n 40`

Recent commits:

!`git log --oneline -5`

Les commandes s’exécutent dans la sandbox, dans la copie de travail de l’agent, avec sh -c. Avant chaque passe, toutes les commandes du brief tournent en parallèle.

import { fileURLToPath } from "node:url";
import { dispatch } from "@elie-laloum/outpost";
import { coder, repository, sandboxProvider } from "./outpost.config.ts";

await dispatch({
  repository,
  sandboxProvider,
  agent: coder,
  expansionMs: 60_000,
  brief: {
    file: fileURLToPath(new URL("fix-test.md", import.meta.url)),
    values: { TEST_FILE: "test/signup.test.ts" },
  },
});
  • SortieSeule la sortie standard est insérée ; ajoutez 2>&1 pour inclure les erreurs.
  • ÉchecUn code de sortie non nul fait échouer la tâche avec le code prompt et arrête les autres commandes.
  • DélaiexpansionMs borne chaque commande ; la valeur par défaut est de 30 secondes.

Les valeurs ne peuvent pas ajouter de commandes : Outpost repère les fragments !` dans le fichier avant de remplir les emplacements.

Les consignes indiquent à l’agent ce que vous attendez. Si une condition détermine l’acceptation du travail, vérifiez-la dans le code du workflow.

ConditionDemander dans le briefContrôler dans le code
Les tests passent« Run npm test. »Lancez-les vous-même dans une session de sandbox ou une boucle de vérification.
Format de la réponse« Reply with a JSON list. »Validez une réponse typée.
Fichiers intacts« Do not edit config/. »Inspectez le diff, ou interdisez l’écriture avec les permissions du harness intégré.
Validation humaine« Do not merge yet. »Arrêtez-vous à une étape d’approbation.

Une réponse typée exige aussi que le brief contienne sa balise ouvrante, par exemple <result>.

  • Les briefs texte n’acceptent pas values et n’exécutent jamais de commande.
  • WORK_BRANCH et BASE_BRANCH sont réservées : les passer dans values est une erreur de configuration.
  • BASE_BRANCH est vide lorsque votre dépôt a un HEAD détaché.
  • Une commande ne peut pas contenir d’accent grave (backtick).
  • Avec l’exécution sur l’hôte, les commandes tournent sur votre machine : sh -c, ou PowerShell sous Windows.
  • Un {{WORK_BRANCH}} généré et la sortie des commandes changent d’une exécution à l’autre ; voir Rejouer sans modèle.

API : Brief · PromptVariables · DispatchOptions · dispatch.