Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Pi Agent Harness

De Le Wiki de Lug

Prérequis

Installation

Debian

# apt update && apt upgrade
# apt install npm

On créé un utilisateur Pi :

# adduser pi
# su - pi

On installe Pi avec l'installateur officiel :

# curl -fsSL https://pi.dev/install.sh | sh
# export PATH="/home/pi/.pi/agent/bin:$PATH"

On vérifie l'installation :

# pi --version

Configuration

Modèle local

# vi ~/.pi/agent/models.json

Par exemple, on créé un fournisseur local

{
  "providers": {
    "local": {
      "baseUrl": "https://192.168.1.123:8080/v1",
      "api": "openai-completions",
      "apiKey": "local",
      "models": [
        {
          "id": "Qwen3.8-27B",
          "input": ["text", "image"]
        },
        {
          "id": "Muse-Glimmer",
          "input": ["text", "image"]
        }
      ]
    }
  }
}

On lance ensuite Pi :

# pi

Le modèle peut ensuite être sélectionné avec :

/login local

Projets

# mkdir -p ~/projets/mon-projet
# cd ~/projets/mon-projet
# pi

Mise à jour

# sudo pi update

Extension

Package Catalog : Installation avec pi install npm:<package>

Extension fournissant à Pi des outils natifs pour la recherche web et la consultation de pages, avec prise en charge locale de SearXNG et Firecrawl. # pi install npm:pi-web-access Pour utiliser SearXNG et Firecrawl, éditer :

# vi ~/.pi/agent/web-search.json

Ajouter :

{
  "searxngBaseUrl": "https://192.168.1.123:8080",
  "firecrawlBaseUrl": "https://192.168.1.123:3002",
  "searchRouting": {
    "providers": ["searxng", "firecrawl"],
    "useCurrentModel": false,
    "fallbackOn": ["transient", "quota", "network", "invalid-response"]
  },
  "fetchRouting": {
    "providers": ["firecrawl"],
    "allowRemoteHostedProviders": false
  },
  "fetch": {
    "timeout": 30,
    "defaultMode": "readable",
    "allowedModes": ["readable", "raw", "answer"],
    "answerProvider": "local",
    "answerModel": "Qwen3.8-27B"
  },
  "webSearch": {
    "enabled": true,
    "allowedProviders": ["searxng", "firecrawl"]
  },
  "tools": {
    "webSearch": { "enabled": true },
    "sourceCheck": { "enabled": true },
    "fetchContent": { "enabled": true },
    "getSearchContent": { "enabled": true }
  },
  "commands": {
    "websearch": { "enabled": true },
    "curator": { "enabled": true },
    "search": { "enabled": true },
    "google-account": { "enabled": true }
  },
  "ssrf": {
  "allowRanges": ["192.168.1.0/24"]
  }
}

Navigateur Camofox anti-détection intégré sous forme d’outils natifs pour l’agent, avec gestion à la demande de son cycle de vie.

# sudo apt-get update && sudo apt-get install -y libgtk-3-0t64 libdbus-glib-1-2 libasound2t64
# pi install npm:@munstar0s/pifox

Mémoire persistante locale pour Pi, avec stockage SQLite et outils natifs pour mémoriser, retrouver et supprimer des souvenirs.

# sudo apt update && apt upgrade
# sudo apt install python3-pip python3-full python3-venv
# python3 -m venv ~/.mnemosyne-venv

On installe Mnemosyne :

  • mnemosyne-memory → mémoire + recherche lexicale, très léger.
  • mnemosyne-memory[embeddings] → ajoute la recherche sémantique avec des embeddings locaux.
  • mnemosyne-memory[all] → installe toutes les fonctionnalités optionnelles, notamment les modèles locaux nécessaires aux fonctions avancées.
# ~/.mnemosyne-venv/bin/pip install mnemosyne-memory[embeddings]
# pi install npm:@mnemosyne-oss/pi-mnemosyne
# echo 'export PATH="$HOME/.mnemosyne-venv/bin:$PATH"' >> ~/.bashrc
# source ~/.bashrc

Configuration

# vi ~/.hermes/mnemosyne/config.yaml
  • Pour remplacer le LLM embedding par défaut qui est anglais uniquement par un modèle fournis :
...
embedding_dim: 384
embedding_model: BAAI/bge-small-en-v1.5
...
Modèle Dimensions Langue / Type
BAAI/bge-small-en-v1.5 384 English
BAAI/bge-base-en-v1.5 768 English
BAAI/bge-small-zh-v1.5 512 Chinese
BAAI/bge-base-zh-v1.5 768 Chinese
BAAI/bge-large-zh-v1.5 1,024 Chinese
BAAI/bge-m3 1,024 Multilingual
intfloat/multilingual-e5-large 1,024 Multilingual
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 384 Multilingual
sentence-transformers/all-MiniLM-L6-v2 384 Multilingual
sentence-transformers/paraphrase-multilingual-mpnet-base-v2 768 Multilingual
openai/text-embedding-3-small 1,536 API
openai/text-embedding-3-large 3,072 API
  • Pour utiliser un embedding auto-hébergé :
...
embedding_api_key: 'MA_CLE'
embedding_api_url: 'http://MON_SERVEUR:8080/v1'
embedding_dim: 1024
embedding_model: 'TON_MODELE'
embeddings_off: false
embeddings_via_api: true
enhanced_recall: false
...
  • Pour utiliser un LLM auto-hébergé, exemple avec LFM2.5-2.6B :
...
llm_api_key: 'MA_CLE'
llm_base_url: 'http://MON_SERVEUR:8085/v1'
llm_conflict_detection: false
llm_enabled: true
llm_fallback_api_key: 
llm_fallback_base_url: 
llm_fallback_models: 
llm_file: 
llm_max_tokens: 2048
llm_model: 'LiquidAI_LFM2.5-2.6B'
llm_n_ctx: 131072
llm_n_threads: 4
llm_repo: 
llm_timeout: 60
...
# pi install npm:pi-mcp-adapter

Puis pour configurer les instances MCP :

# mkdir -p  ~/.config/mcp
# vi ~/.config/mcp/mcp.json
# vi ~/.config/mcp/mcp.json
{
  "mcpServers": {
    "ragflow": {
      "url": "http://192.168.1.123:9382/mcp",
      "headers": {
        "Authorization": "Bearer TON_API_KEY"
      }
    }
  }
}