Agent et portails
agent:
name: Teranga # facultatif : Convoy n'invente jamais de nom
persona: "un hôte chaleureux qui aide à composer le repas"
tone: friendly # friendly | professional | playful
rules:
- "Ne jamais inventer un plat : uniquement ce que le menu renvoie."
emoji: false
model: gemini-2.5-flash # le modèle de l'agent
portals:
web: # le site du tenant, un portail de l'agent
widget:
origins: [https://teranga.example.sn] # les seuls sites où le widget s'affiche
theme: {primary: "#C8412B", secondary: "#F6EFE4", font: manrope}
brand_label: Teranga # et les libellés, l'avatar, les invites suggérées
site: {...} # les textes du site de démonstration
pitch: {...} # la page de présentation
mcp: {...} # le nom et les consignes du serveur MCP
| clé | effet |
|---|---|
agent.persona, tone, emoji | comment l'agent se présente, sur toutes les portes. persona et tone sont obligatoires |
agent.name | le nom de l'agent, si le tenant lui en donne un ; aucune surface ne l'affiche aujourd'hui |
agent.model | le modèle sur lequel tourne l'agent ; gemini-2.5-flash par défaut |
agent.rules | des consignes recopiées telles quelles, sur toutes les portes : le widget comme Claude ou ChatGPT. Écrivez-les dans la langue de la station, et nommez les skills de la station, pas un outil qu'elle n'expose pas. |
agent.portals.web.widget.origins | les seuls sites où le widget peut s'afficher, en origines (https://hote[:port]). Une valeur qui n'est pas une origine (un hôte seul, un chemin, *) est refusée au chargement. Absent, le widget s'affiche sur n'importe quel site |
agent.portals.web.widget.theme | les couleurs (primary, secondary, accent_gradient) et la police (font : inter, jakarta, manrope, geist, dmsans ; manrope par défaut). Les couleurs vont au widget, à la PWA et aux cadres MCP ; la police au widget seul (les cadres gardent celle de l'hôte). Une couleur qui n'est pas #rgb ou #rrggbb, une police hors de la liste : refusées au chargement |
agent.portals.web.widget (le reste) | les mots du widget : brand_label, avatar_initial, avatar_url, fallback_title, empty_state_text, suggested_prompts ; labels remplace des textes de Convoy |
agent.portals.web.site, pitch | les textes du site de démonstration ; pitch n'a que meeting_url (lu par les cadres MCP) et headline, headline_accent (le titre du site quand site n'en donne pas) |
mcp | le nom du serveur MCP ; collection_name_override choisit la collection du catalogue |
Le lien d'un item vers sa page sur le site du tenant n'est pas une clé du portail : c'est le champ
role: link de la skill qui présente l'item (Skills).
Aujourd'hui, l'agent a trois portails : le widget sur le site du tenant, la PWA, et l'extension Chrome. Les autres (Teams, Slack, WhatsApp) et la preuve de qui parle viennent avec la cible (Agent et portails).
Les consignes ne sont pas des gardes
Une règle de agent.rules guide l'agent ; elle ne l'empêche de rien. Tout ce qui doit être
garanti — une adresse obligatoire, une confirmation avant de commander — s'écrit dans un
select guard ou dans le submit guard, que Core applique quoi que dise le modèle.