createHarness
Rôle et comportement
Section intitulée « Rôle et comportement »Compose le harness intégré : Outpost exécute lui-même la boucle du modèle, appelle le fournisseur de modèles à chaque étape et exécute les outils via la sandbox empruntée. Les options sont validées immédiatement et les clés inconnues refusées ; rien ne s’exécute avant le dispatch d’un agent issu de createAgent({ harness, model }).
Exemple complet et règles détaillées.
Paramètres et propriétés
Section intitulée « Paramètres et propriétés »optionsRequisHarnessOptionsRéglages du harness intégré : fournisseur de modèles, instructions, outils, limites, exécution des outils, hooks, permissions, stratégie de contexte, skills, conversations, cache et serveurs MCP.options.routingOptionnelHarnessModelRouting | undefinedRoutage facultatif par étape déclaré avec defineHarnessModelRouting ; tous les candidats utilisent le provider de modèles du harness.options.modelProviderRequisModelProviderFournisseur de modèles appelé à chaque étape et pour chaque résumé, par exemple createOpenAIModelProvider() ou createAnthropicModelProvider(). Son validate() contrôle le modèle de l’agent quand createAgent() compose l’agent.options.instructionsOptionnelHarnessInstructionsOption | undefinedInstructions système en texte, résultat de defineHarnessInstructions() ou de defineMcpPrompt(), ou liste de ces valeurs. Résolues à chaque tour et jointes par des lignes vides ; les résultats vides sont ignorés.options.toolsOptionnelreadonly (HarnessTool<unknown> | HarnessToolset)[] | undefinedOutils et jeux d’outils que le modèle peut appeler. Les jeux imbriqués sont aplatis ; les noms doivent être uniques dans tout le harness, outils de skills et MCP compris.options.limitsOptionnelHarnessLimits | undefinedBornes par tour sur les étapes, les appels d’outils, la profondeur de délégation et l’usage de tokens. Un dépassement échoue avec le code limit.options.toolExecutionOptionnelHarnessToolExecution | undefinedParallélisme des outils, délai par appel et politique d’erreur.options.hooksOptionnelreadonly HarnessHook<HarnessHookPhase>[] | undefinedHooks issus de defineHarnessHook, exécutés dans l’ordre de déclaration au sein de chaque phase.options.permissionsOptionnelHarnessPermissions | undefinedRègles issues de defineHarnessPermissions(), évaluées avant les hooks before-tool. Elles s’appliquent aussi aux appels d’outils de chaque sous-agent.options.contextOptionnelHarnessContextStrategy | undefinedStratégie qui peut réécrire l’historique avant chaque requête au modèle, comme truncateToolResults() ou summarizeHistory().options.conversationsOptionnelfalse | ConversationStore | undefinedStore des transcriptions de tours, createHarnessConversations() par défaut, sous .outpost/conversations/harness dans le dépôt. Enveloppez-le avec createTransportConversations() pour un stockage distant ; false désactive la capture, la continuation et les réparations de réponse.options.skillsOptionnelreadonly HarnessSkill[] | undefinedSkills listées dans les instructions système et chargées à la demande par l’outil load_skill ; les noms de skills en double sont refusés.options.cacheOptionnelboolean | undefinedDemande au fournisseur de modèles de mettre en cache le préfixe de la conversation à chaque requête, true par défaut. Le fournisseur Anthropic marque le préfixe pour le cache ; OpenAI met en cache les préfixes stables de lui-même.options.mcpServersOptionnelMcpServers | undefinedServeurs MCP indexés par nom, démarrés dans la sandbox empruntée à chaque tour ; leurs outils apparaissent sous la forme mcp__<server>__<tool>, avec des outils de ressources et de prompts quand les serveurs en proposent. La sandbox doit prendre en charge liveInput, et les serveurs oauth: “login” sont refusés.