jsongrep: ベンチマークでjqを上回るDFAベースのJSONクエリツール

jsongrepの機能
jsongrep(jgバイナリ)は、クエリとJSON入力を取り、ドキュメント内のパスがクエリに一致するすべての値を出力します。JSONドキュメントを、オブジェクトと配列が分岐し、スカラー値が葉となり、キーとインデックスがエッジをラベル付けするツリーとして扱います。クエリ言語は、キーとインデックスのアルファベット上の正規言語です。
クエリ言語の機能
ドットパスは名前でネストされたフィールドを選択します:jg 'roommates[0].name'はroommates.[0].name: "Alice"を返します。
ワイルドカードは任意の単一キー(*)または任意の配列インデックス([*])に一致します:jg 'favorite_drinks[*]'はすべての配列要素を返します。
代替(|)はどちらかの分岐に一致します:jg 'name | roommates'は両方のフィールドを返します。
再帰的下降は、任意の深さを歩くためにクリーネ閉包内で*と[*]を使用します:jg '(* | [*])*.name'は任意の深さにあるすべてのnameフィールドを見つけます。-Fフラグは短縮形を提供します:jg -F nameは同じことを行います。
オプション(?)は0回または1回の出現に一致します:jg 'roommates[0].favorite_food?'は親オブジェクトとフィールド値の両方を返します。
技術的アプローチ
jsongrepは、クエリを決定性有限オートマトン(DFA)にコンパイルします。パイプラインには以下が含まれます:クエリの解析、JSONをツリーとして扱う、Glushkovのアルゴリズムを使用したNFAの構築、部分集合構成による決定化、DFA遷移を使用したDFSによる検索。これにより、入力シンボルごとにO(1)の作業で単一パスでの処理が可能になり、バックトラッキング、再帰スタック、および病的なクエリでの指数的爆発を回避します。
著者は、これがjq、jmespath、jsonpath-rustなどのツールとは根本的に異なると指摘しています。これらのツールはパス式を解釈し、各ノードでクエリを評価し、述語をチェックし、再帰的に下降します。これにより、サブツリーの再訪問や再帰的下降クエリでのワークリストの維持が発生する可能性があります。
インストールと利用可能性
crates.ioからインストール:cargo install jsongrep。このプロジェクトにインスピレーションを与えたripgrepと同様に、jsongrepはクロスプラットフォームでバイナリが利用可能であり、Rustで書かれています。
このツールは、出力がlessやsortなどのコマンドにパイプされているかどうかを検出し、デフォルトではJSONパスを省略します(--with-pathオプションで上書き可能)。
📖 Read the full source: HN LLM Tools
👀 See Also

TeenyAppでClaudeが単一チャットリンクからフルスタックウェブサイトを構築・デプロイ可能に
TeenyAppは、ClaudeがHTTP経由で使用できるライブサブドメインとエージェントトークンを提供し、チャットから離れることなくコードのスキャフォールディング、マイグレーションの実行、認証の設定、実際のURLへのデプロイを可能にします。

Sentrial: AIエージェントのための生産監視
Sentrialは、ループ、幻覚、ツールの誤用、ユーザーの不満など、AI製品の障害パターンを自動的に検出する監視ツールです。会話パターン、モデル出力、ツールの相互作用を分析することで根本原因を診断します。

Kubeez MCPサーバーがClaudeを70以上のAIメディアモデルに接続します
Kubeezは、Claudeを画像、動画、音楽、音声生成のための70以上のAIモデルに接続するMCPサーバーをリリースしました。このサーバーはOAuth認証をサポートし、非同期生成を提供し、Claudeがステータスをポーリングして完了時にCDN URLを返します。

Cloudflare、Supabase、Vercelを使用したAIキュレートRedditフィードのオープンソースツール
開発者が、AI支援開発とバイブコーディングに関する低品質なコンテンツをフィルタリングするために特別に設計された、AIでキュレーションされたRedditフィードを作成するセルフホストツールをオープンソース化しました。このツールは、「AIで2時間で100万ドルを稼いだ」といった投稿、手抜きのスクリーンショット、繰り返される初心者向けの質問などを排除します。