🇬🇧 English version
Exécuter votre premier exemple (depuis les sources)
Voir aussi : Trois façons d'exécuter Orkeon · Vue d'ensemble · Bootstrap et exécution · Retour à l'index
C'est le point d'entrée si vous avez cloné le dépôt et voulez exécuter un crew embarqué depuis les sources. En cinq minutes environ, vous exécutez un vrai exemple à 3 agents et récupérez un rapport de synthèse. Si vous préférez télécharger un binaire précompilé ou utiliser un conteneur, voir Trois façons d'exécuter Orkeon.
Chemin le plus rapide (ni build, ni clone) :
docker run -it --rm -e ORKEON_RUNNER=shell ghcr.io/orkeon/orkeon-runnerspuisorkeon-example run 1— détails dans Trois façons d'exécuter Orkeon §3.
Prérequis
| Prérequis | Notes |
|---|---|
| SDK .NET ≥ 10.0.300 | Le dépôt épingle le SDK dans global.json avec rollForward: latestFeature. Un SDK plus ancien fait échouer le build (voir Dépannage). Vérifiez avec dotnet --version. |
| Git | Pour cloner le dépôt. |
| Un endpoint LLM + une clé | N'importe lequel des 16 fournisseurs supportés, ou un endpoint local type Docker Model Runner / Ollama. Fourni via un profil appsettings (ci-dessous). |
1. Cloner et builder
git clone https://github.com/Orkeon/orkeon.git
cd orkeon
dotnet build Orkeon.sln
2. Choisir un exemple
Chaque crew sous examples/ est décrit par un config.yaml. Parcourez le
catalogue des exemples, ou commencez simplement
par l'assistant de recherche — un crew séquentiel à 3 agents qui scrape le web,
analyse des documents et écrit un rapport de synthèse cité :
examples/01-enterprise/01-research-assistant/config.yaml
3. Choisir un profil LLM
Les runners lisent leur configuration LLM (endpoint, modèle, clé API) dans un
appsettings.json. Le dépôt livre une matrice de profils sous
examples/appsettings/ pour ne pas en écrire un à la main :
| Fichier | Cible |
|---|---|
appsettings.json |
Défaut — Docker Model Runner sur localhost:12434 (sans clé API) |
appsettings.docker-model-runner.local.json.example |
Gabarit Docker Model Runner |
appsettings.deepseek.local.json.example |
DeepSeek cloud |
appsettings.openai.local.json.example |
OpenAI cloud |
appsettings.glm.local.json.example / appsettings.glm-medium.local.json.example |
Z.AI (GLM) |
appsettings.gemini.local.json.example |
Google Gemini |
appsettings.local.json.example |
Gabarit vierge Ă remplir |
Copiez le gabarit de votre fournisseur, déposez-le en vrai *.local.json
(git-ignoré) et collez votre clé :
cp examples/appsettings/appsettings.deepseek.local.json.example \
examples/appsettings/appsettings.deepseek.local.json
# puis éditez le fichier et renseignez votre clé API
Les placeholders de style
${DEEPSEEK_API_KEY}ne sont pas développés par la configuration .NET — remplacez-les par la clé littérale, ou laissez le fichier tel quel et surchargez via variable d'environnement :export ORKEON_Llm__ApiKey=sk-...(préfixeORKEON_,__comme séparateur de section).
Si Docker Model Runner (ou un autre endpoint
localhost:12434) tourne déjà , leexamples/appsettings/appsettings.jsonpar défaut n'exige ni clé ni copie — passez directement à l'étape 4 sans--settings.
Il n'y a pas de champ Provider à renseigner : le fournisseur est auto-détecté
depuis l'hĂ´te de Llm.BaseUrl du profil ; changer de fournisseur revient Ă pointer
le bon profil.
4. L'exécuter
Chaque exemple s'exécute via la CLI orkeon. Depuis un checkout
des sources, invoquez-la via son projet (aucune installation — elle embarque aussi
vos modifications locales) :
mkdir -p out
dotnet run --project src/scripting/Orkeon.Scripting.Cli -- run \
examples/01-enterprise/01-research-assistant/config.yaml \
--settings examples/appsettings/appsettings.deepseek.local.json \
--mount ./out:/output:rw \
-v 1
Cette seule commande exécute le crew de bout en bout et se termine. L'outil
file_write de l'agent rédacteur dépose son rapport sur le montage /output,
c'est-à -dire votre répertoire local ./out.
CLI installée ? Avec une archive de release ou
dotnet tool install, la même exécution devient :orkeon run examples/01-enterprise/01-research-assistant/config.yaml --settings … --mount ./out:/output:rw -v 1.
Chaque flag, expliqué
La CLI orkeon et les runners spécialisés partagent les mêmes options de base.
Celles que vous utiliserez vraiment :
| Flag | Court | Ce qu'il fait |
|---|---|---|
<config> (positionnel) |
— | Requis. La définition de crew passée à orkeon run <config> — un fichier .yaml ou un fichier .ork.ts de scripting. |
--settings <chemin> |
-s |
Chemin de l'appsettings.json portant la config LLM. Optionnel — voir la résolution des settings. |
--verbose <0-2> |
-v |
Verbosité. 0 (défaut) = silencieux, 1 = échanges LLM & outils, 2 = debug complet. |
--mount <phys>:<virt>:<droits> |
-m |
Expose un répertoire hôte au système de fichiers virtuel du crew. droits vaut ro ou rw. Plusieurs montages se passent séparés par des espaces derrière un seul flag (--mount a:/x:ro b:/y:rw) — le parseur rejette un --mount répété. Un crew qui écrit des résultats a besoin d'un montage :rw (/output est la convention qui déclenche l'écriture automatique du résumé). |
--allow-external-mounts |
Autorise des montages (et un chemin <config> ou --llm-log-path) situés hors du répertoire de travail. Sans lui, les chemins externes sont refusés par garde-fou. La variable d'env ORKEON_ALLOW_EXTERNAL_MOUNTS=1 l'active pour chaque invocation (l'image conteneur orkeon-runners l'embarque). |
|
--var CLE=VALEUR |
-V |
Injecte une variable dans l'entrée du crew. Les descriptions de tâches contenant {CLE} sont développées en VALEUR. Plusieurs variables se passent séparées par des espaces derrière un seul -V (un flag répété est rejeté). Crews YAML seulement — ignoré pour les scripts .ork.ts, qui prennent --inputs. |
--initial-context <texte> |
Une chaîne de contexte libre passée à l'entrée du crew. Crews YAML seulement — ignoré pour les scripts .ork.ts. |
|
--inputs <json> |
Entrées JSON inline transmises à un script comme variable globale inputs (voie .ork.ts). |
|
--inputs-file <chemin> |
Comme --inputs, lu depuis un fichier JSON. |
|
--llm-log |
Capture chaque échange HTTP LLM (requête + réponse, en-têtes + payload) en .jsonl sous ./llm-logs. |
|
--llm-log-path <dir> |
Comme --llm-log, mais écrit dans <dir> (et implique --llm-log). |
|
--validate |
Dry-run : résout les settings, construit l'hôte et charge la crew (résolution stricte des outils) sans sonder le LLM ni rien exécuter. Imprime VALIDATION OK/FAILED et sort 0 / non-zéro. |
|
--list-tools |
Construit l'hôte et imprime les noms d'outils enregistrés, triés, un par ligne, puis sort — aucune crew requise. | |
--events jsonl |
Émet le protocole d'événements JSONL versionné sur stdout au lieu du texte brut (c'est ainsi qu'Orkeon Studio pilote un run) — voir le bus d'événements de run. | |
--stream |
Avec --events, émet aussi les événements llm.delta token par token (verbeux par nature ; désactivé sauf demande). |
|
--client <nom> |
Avec --events, le nom du pair observateur sur le hub (client://<nom>, défaut studio). |
|
--memory-limit-mb <n> |
Plafond mémoire Jint pour un run .ork.ts (surcharge l'appsettings ; 0 le désactive). |
Les montages et le VFS
Le code du framework Orkeon ne touche jamais le disque directement — toute E/S
passe par le système de fichiers virtuel.
--mount est le pont entre un répertoire hôte et cet espace virtuel :
--mount ./out:/output:rw # hôte ./out -> virtuel /output (lecture-écriture)
--mount ./data:/data:ro # hĂ´te ./data -> virtuel /data (lecture seule)
Le runner monte automatiquement en lecture seule le répertoire du config lui-même,
sous le nom /crew, si bien que le YAML et ses fichiers voisins sont toujours
visibles — un data.csv à côté de config.yaml se lit en /crew/data.csv, jamais
par son chemin sur votre disque
(ADR-008). Les chemins
hors du répertoire de travail exigent --allow-external-mounts (ou
ORKEON_ALLOW_EXTERNAL_MOUNTS=1 dans l'environnement — le défaut de l'image
conteneur).
Comment les settings sont résolus
Quand vous omettez --settings, le runner cherche un appsettings.json dans cet
ordre (premier trouvé gagne) :
- Le
--settings <chemin>explicite, s'il est donné. - L'
appsettings.jsonvoisin du fichier<config>. - En remontant l'arborescence depuis le config, en cherchant Ă chaque niveau un
sous-répertoire
appsettings/appsettings.json— c'est ainsi qu'est trouvée la matrice de profils partagéeexamples/appsettings/appsettings.json(l'ancien_shared/appsettings.jsonreste un fallback pour une release). - Le config global per-user écrit par
orkeon init(%APPDATA%\Orkeon\appsettings.jsonsous Windows,~/.config/Orkeon/appsettings.jsonailleurs).
Si rien n'est trouvé, le runner se rabat sur les seules variables d'environnement
et imprime un avertissement. ĂŠtre explicite avec --settings reste l'option la
plus prévisible.
Dépannage
Les symptômes possibles sur une machine fraîche, avec le message exact et le correctif :
| SymptĂ´me / message | Cause | Correctif |
|---|---|---|
error CS9057: analyzer assembly ... references version 5.3.0 of the compiler |
SDK .NET plus ancien que 10.0.300 | Installez un SDK ≥ 10.0.300 (la version épinglée dans global.json). Vérifiez avec dotnet --version. |
error CS8795: Partial method ... must have an implementation part |
Le générateur de source n'a pas tourné — généralement le même SDK périmé que ci-dessus | Passez le SDK à ≥ 10.0.300 et rebuiltez. |
error NU1008: Projects that use central package version management should not define the version |
Un Version= égaré sur un PackageReference alors que la gestion centralisée est active |
Retirez la version inline ; déclarez-la dans Directory.Packages.props. |
dotnet: command not found (dans un script, alors que dotnet marche en interactif) |
dotnet est un alias/fonction shell invisible des shells non interactifs |
Mettez le SDK sur le PATH dans ~/.zprofile / ~/.profile, p. ex. export PATH="$HOME/.dotnet:$PATH". |
Connection refused (localhost:12434) |
Le profil par défaut vise Docker Model Runner, qui ne tourne pas | Démarrez Docker Model Runner, ou copiez un profil cloud (p. ex. appsettings.deepseek.local.json) et passez-le avec --settings. |
401 (Unauthorized) au restore depuis GitHub Packages |
Le token gh n'a pas le scope read:packages, ou vous avez utilisé un PAT fine-grained |
Utilisez un PAT classique avec read:packages (les tokens fine-grained ne sont pas supportés). Test : curl -u <user>:$TOKEN https://nuget.pkg.github.com/Orkeon/orkeon.hosting/index.json doit retourner 200. |
ERROR: --allow-external-mounts is required ... |
Votre chemin <config>, un --mount ou --llm-log-path pointe hors du répertoire de travail |
Ajoutez --allow-external-mounts (ou posez ORKEON_ALLOW_EXTERNAL_MOUNTS=1), ou ramenez les chemins sous le cwd. |
WARNING: No appsettings.json found. Using environment variables only. |
La résolution des settings n'a rien trouvé | Passez --settings <chemin> explicitement (voir l'ordre de résolution). |
Étapes suivantes
- Trois façons d'exécuter Orkeon — binaires et conteneurs, sans checkout des sources.
- YAML, Builders et CrewFactory — le schéma derrière chaque
config.yaml. - Catalogue des exemples — 100+ crews sur 9 domaines.
- Inventaire des outils — ce que les agents savent réellement faire.