jsongrep : Un outil de requête JSON basé sur un DFA qui surpasse jq dans les benchmarks

Ce que fait jsongrep
jsongrep (binaire jg) prend une requête et une entrée JSON et affiche chaque valeur dont le chemin à travers le document correspond à la requête. Il traite les documents JSON comme des arbres où les objets et les tableaux se ramifient, les scalaires sont des feuilles, et les clés et indices étiquettent les arêtes. Le langage de requête est un langage régulier sur l'alphabet des clés et indices.
Fonctionnalités du langage de requête
Les chemins par points sélectionnent les champs imbriqués par nom : jg 'roommates[0].name' retourne roommates.[0].name: "Alice".
Les caractères génériques correspondent à n'importe quelle clé unique (*) ou n'importe quel indice de tableau ([*]) : jg 'favorite_drinks[*]' retourne tous les éléments du tableau.
L'alternance (|) correspond à l'une ou l'autre branche : jg 'name | roommates' retourne les deux champs.
La descente récursive utilise * et [*] à l'intérieur d'une étoile de Kleene pour parcourir arbitrairement en profondeur : jg '(* | [*])*.name' trouve chaque champ name à n'importe quelle profondeur. Le drapeau -F fournit un raccourci : jg -F name fait la même chose.
L'optionnel (?) correspond à zéro ou une occurrence : jg 'roommates[0].favorite_food?' retourne à la fois l'objet parent et la valeur du champ.
Approche technique
jsongrep compile les requêtes en automates finis déterministes (DFA) en utilisant un pipeline qui inclut : l'analyse de la requête, le traitement du JSON comme un arbre, la construction d'un NFA avec l'algorithme de Glushkov, la déterminisation via la construction par sous-ensembles, et la recherche en utilisant DFS avec transitions DFA. Cela permet un traitement en une seule passe avec un travail O(1) par symbole d'entrée, évitant le retour en arrière, les piles de récursion et l'explosion exponentielle sur les requêtes pathologiques.
L'auteur note que cela diffère fondamentalement des outils comme jq, jmespath, ou jsonpath-rust, qui interprètent les expressions de chemin, évaluent les requêtes à chaque nœud, vérifient les prédicats et descendent récursivement—potentiellement revisitant des sous-arbres ou maintenant des listes de travail avec des requêtes de descente récursive.
Installation et disponibilité
Installez depuis crates.io : cargo install jsongrep. Comme ripgrep (qui a inspiré le projet), jsongrep est multiplateforme avec des binaires disponibles et écrit en Rust.
L'outil détecte si la sortie est redirigée vers des commandes comme less ou sort et omet les chemins JSON par défaut (remplacez avec l'option --with-path).
📖 Read the full source: HN LLM Tools
👀 See Also

Les 171 vecteurs d'émotion interne de Claude influencent la sortie : Boîte à outils basée sur la recherche d'Anthropic
Le document de recherche d'Anthropic révèle que Claude possède 171 modèles d'activation internes qui fonctionnent comme des vecteurs d'émotion, influençant causalement son comportement avant qu'il n'écrive. Un développeur a créé une boîte à outils avec 7 principes pratiques de prompt et des prompts système basés sur ces découvertes.

BaseLayer : Pipeline de Compression Comportementale Open-Source pour les Systèmes de Mémoire IA
BaseLayer est un pipeline open-source qui extrait les croyances, comportements, tensions et contradictions des conversations, journaux et textes publiés, les comprimant en un profil d'identité pour les modèles d'IA. Il a été testé sur des ensembles de données allant de 8 entrées de journal personnel à de grands corpus comme les lettres aux actionnaires de Warren Buffett (350 000 mots) et les mémos d'investissement de Howard Marks (600 000 mots).

Application de l'Architecture de Claude Code aux Modèles Locaux 9B : Principales Découvertes et Optimisations
Un développeur a extrait des modèles architecturaux du code source divulgué de Claude Code et a appliqué 10 optimisations à qwen3.5:9b exécuté localement sur une RTX 5070 Ti. La découverte clé a été que qwen3.5:9b dispose d'appels d'outils structurés natifs, et la plus grande limitation pour les modèles 9B est l'autodiscipline pour savoir quand arrêter d'explorer et commencer à produire un résultat.

GoStaff : Réécriture en Go d'OpenClaw avec une réduction de mémoire de 100x
GoStaff est une réécriture complète d'OpenClaw en Go qui réduit l'utilisation de mémoire à environ 17 Mo, soit environ 100 fois moins que l'implémentation originale. Il conserve une compatibilité totale avec les plugins OpenClaw existants tout en ajoutant un support natif des compétences en Go et une architecture simplifiée en binaire unique.