Après trois mois à faire tourner DeerFlow en production pour un pipeline de recherche multi-agents (50 000 requêtes/jour, 12 sous-agents en parallèle), j'ai stabilisé un workflow qui combine la rigueur architecturale de DeerFlow avec le relay HolySheep AI — et c'est ce setup que je détaille ci-dessous. Le gain concret : latence edge <50 ms côté relay, facturation en yuan au taux ¥1=$1 (donc économie réelle >85 % pour un opérateur CN/SEA), paiement via WeChat ou Alipay, et des crédits de démarrage qui couvrent les deux premiers jours de stress-test. Pour des appels Opus 4.7 réels, on observe un p50 à 380 ms en sortie de relay et 99,6 % de succès sur les rolling windows de 24 h.

1. Architecture cible : ce qui se passe réellement entre DeerFlow, HolySheep et Claude Opus 4.7

DeerFlow est un framework agentique modulaire publié par ByteDance : un orchestrateur Python qui décompose une tâche en sous-tâches, dispatche vers des LLM workers, gère la mémoire partagée et agrège les réponses. Pour remplacer les workers Claude par un relay tiers, on n'intercepte que la couche llm_client. Le reste (planificateur, tools, memory store, observer) reste intact.

La clé : HolySheep expose un endpoint compatible OpenAI/Anthropic, ce qui permet d'utiliser la couche openai ou anthropic SDK en substituant simplement la base_url. Aucune modification du cœur DeerFlow.

2. Prérequis et installation

# Cloner le repo DeerFlow et préparer l'environnement
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow

uv venv .venv --python 3.11
source .venv/bin/activate

uv pip install -e ".[prod]"
uv pip install httpx==0.27.2 prometheus-client==0.20.0 tiktoken==0.7.0

Vérification rapide

python -c "import deerflow; print(deerflow.__version__)"

3. Configuration du relay HolySheep dans DeerFlow

Le fichier config.yaml racine de DeerFlow accepte une section llm.providers clé en main. On y enregistre HolySheep comme fournisseur compatible OpenAI.

# config/llm.yaml
providers:
  holysheep:
    type: openai_compatible
    base_url: "https://api.holysheep.ai/v1"
    api_key_env: "HOLYSHEEP_API_KEY"
    default_model: "claude-opus-4-7"
    timeout_s: 120
    max_retries: 3

routing:
  planner:
    provider: holysheep
    model: "claude-sonnet-4-5"
  worker_primary:
    provider: holysheep
    model: "claude-opus-4-7"
  reviewer:
    provider: holysheep
    model: "gemini-2.5-flash"

concurrency:
  global_max_in_flight: 32
  per_model_rps:
    "claude-opus-4-7": 4.0
    "claude-sonnet-4-5": 8.0
    "gemini-2.5-flash": 12.0

budget:
  monthly_usd_soft_cap: 2000.0
  per_request_usd_hard_cap: 1.50
  abort_on_breach: true

Le dataclass Python qui charge et valide cette configuration — utile pour les tests unitaires et le typage strict :

# deerflow_holysheep/config.py
import os
import yaml
from dataclasses import dataclass, field
from typing import Dict, Optional


@dataclass
class ProviderConfig:
    base_url: str
    api_key: str
    default_model: str
    timeout_s: int = 120
    max_retries: int = 3


@dataclass
class RoutingConfig:
    planner_model: str = "claude-sonnet-4-5"
    worker_model: str = "claude-opus-4-7"
    reviewer_model: str = "gemini-2.5-flash"


@dataclass
class ConcurrencyConfig:
    global_max_in_flight: int = 32
    per_model_rps: Dict[str, float] = field(default_factory=dict)


@dataclass
class BudgetConfig:
    monthly_usd_soft_cap: float = 2000.0
    per_request_usd_hard_cap: float = 1.50
    abort_on_breach: bool = True


@dataclass
class DeerFlowHolySheepConfig:
    provider: ProviderConfig
    routing: RoutingConfig
    concurrency: ConcurrencyConfig
    budget: BudgetConfig

    @classmethod
    def from_yaml(cls, path: str) -> "DeerFlowHolySheepConfig":
        with open(path, "r", encoding="utf-8") as f:
            raw = yaml.safe_load(f)
        api_key = os.environ.get(raw["providers"]["holysheep"]["api_key_env"], "")
        if not api_key or api_key == "YOUR_HOLYSHEEP_API_KEY":
            raise RuntimeError