Communitygithub.com

24601/surreal-skills

Système de fichiers virtuel SurrealFS pour agents IA. Noyau Rust + agent Python (Pydantic AI). Opérations de fichiers persistantes basées sur SurrealDB. Fait partie de la collection surreal-skills.

Qu'est-ce que surreal-skills ?

SurrealFS est un système de fichiers virtuel persistant et interrogeable, conçu pour les agents IA. Il offre des opérations de fichiers durables, un stockage hiérarchique et une recherche de contenu entre les sessions, le tout soutenu par SurrealDB. Le projet se compose d'un noyau Rust (crate `surrealfs`) fournissant un REPL avec des commandes de type POSIX, et d'un agent Python (`surrealfs-ai`) construit sur Pydantic AI qui expose toutes les opérations du système de fichiers en tant qu'outils d'agent. L'agent peut être hébergé via HTTP pour une intégration facile avec d'autres systèmes. La sécurité est assurée par une normalisation des chemins qui empêche les évasions du système de fichiers hôte, des connexions sécurisées à SurrealDB et un contrôle fin de la télémétrie. Les cas d'utilisation incluent les espaces de travail persistants pour les sessions d'agent, le stockage de documents hiérarchiques avec requêtes de métadonnées et l'accès partagé aux fichiers multi-agents.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealfs

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

SurrealFS — Système de fichiers virtuel pour agents IA

SurrealFS fournit un système de fichiers virtuel persistant et interrogeable, soutenu par SurrealDB. Conçu pour les agents IA qui ont besoin d'opérations de fichiers durables, de stockage hiérarchique et de recherche de contenu entre les sessions.

Composants

ComposantCrate/PaquetLangageObjectif
Bibliothèque CœursurrealfsRustOpérations du système de fichiers, REPL CLI, couche de stockage SurrealDB
Agent IAsurrealfs-aiPython (Pydantic AI)Interface agent avec intégration d'outils, hébergement HTTP

Cœur Rust — Commandes

Le crate surrealfs fournit un REPL avec des commandes de type POSIX :

CommandeDescription
lsLister le contenu du répertoire
catAfficher le contenu du fichier
tailAfficher les dernières lignes d'un fichier
nlNuméroter les lignes d'un fichier
grepRechercher dans le contenu du fichier
touchCréer un fichier vide
mkdirCréer un répertoire
write_fileÉcrire du contenu dans un fichier
editModifier le contenu du fichier
cpCopier un fichier
cdChanger de répertoire
pwdAfficher le répertoire de travail

Prend en charge le pipe depuis des commandes externes : curl https://example.com > /pages/example.html

Backends de stockage :

  • RocksDB intégré (local)
  • SurrealDB distant via WebSocket

Agent Python IA

Construit sur Pydantic AI avec des outils qui reflètent les commandes du système de fichiers.

from surrealfs_ai import build_chat_agent

# Créer l'agent (LLM par défaut : Claude Haiku)
agent = build_chat_agent()

# Exposer via HTTP
import uvicorn
app = agent.to_web()
uvicorn.run(app, host="127.0.0.1", port=7932)

Fonctionnalités :

  • LLM par défaut : Claude Haiku
  • Télémétrie via Pydantic Logfire (OpenTelemetry) — voir la section Sécurité pour la désactivation
  • Toutes les opérations du système de fichiers disponibles comme outils de l'agent
  • Hébergement HTTP (port par défaut 7932, lié à 127.0.0.1)
  • Normalisation des chemins : la racine FS / est isolée ; les chemins ne peuvent pas s'échapper vers le système de fichiers hôte

Démarrage rapide

# Installer le cœur Rust
cargo install surrealfs

# Démarrer le REPL avec stockage intégré
surrealfs

# Ou se connecter à une instance SurrealDB distante
surrealfs --endpoint ws://localhost:8000 --user root --pass root --ns agent --db workspace

# Installer l'agent Python
pip install surrealfs-ai

# Exécuter le serveur HTTP de l'agent
python -m surrealfs_ai --host 127.0.0.1 --port 7932

Cas d'utilisation

  • Espace de travail persistant pour les sessions d'agents IA
  • Stockage de documents hiérarchiques avec requêtes de métadonnées
  • Accès partagé aux fichiers multi-agents avec permissions SurrealDB
  • Gestion de stratégie de contenu et de connaissances
  • Échafaudage de projets et gestion de modèles

Considérations de sécurité

Informations d'identification : Les connexions distantes à SurrealDB nécessitent --user/--pass. Utilisez des informations d'identification dédiées avec privilèges minimaux, limitées à un espace de noms/base de données spécifique. N'utilisez jamais d'informations d'identification root dans des environnements partagés ou de production.

Télémétrie : L'agent Python utilise Pydantic Logfire (OpenTelemetry). Pour désactiver la télémétrie, définissez : export LOGFIRE_SEND_TO_LOGFIRE=false ou configurez Logfire avec send_to_logfire=False dans le code. Auditez les points de terminaison de télémétrie avant de les activer dans des environnements contenant des données sensibles.

Liaison HTTP : L'agent se lie à 127.0.0.1 par défaut. Ne l'exposez pas à 0.0.0.0 ou à des réseaux publics sans authentification et TLS. En cas d'exécution dans un conteneur, utilisez l'isolation réseau.

Commandes pipe : Le cœur Rust prend en charge la syntaxe curl URL > /chemin pour l'ingestion de contenu. Cela exécute la commande source du pipe sur l'hôte. Utilisez-le uniquement avec URL de confiance dans des environnements contrôlés. N'autorisez pas les entrées non fiables à construire des commandes pipe.

Sandboxing : La racine FS virtuelle (/) est une abstraction basée sur SurrealDB, pas le système de fichiers hôte. Les traversées de chemins (par exemple, ../../etc/passwd) sont normalisées et rejetées. Cependant, les commandes pipe s'exécutent sur l'hôte — exécutez l'agent dans un conteneur ou un bac à sable si vous acceptez des entrées non fiables.

Documentation complète

Voir le fichier de règle principal de la compétence pour des conseils complets :

  • rules/surrealfs.md — architecture, API du cœur Rust, configuration de l'agent Python, schéma SurrealDB, modèles multi-agents et déploiement
  • surrealdb/surrealfs — dépôt en amont

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Skills associés