最近 eve という Vercel 製の AI エージェントフレームワークで、社内向けの Slack BOT として動くAIエージェントをいくつか作りました
簡単なものならほとんどコードを書かずに、決められたファイルを自然言語で書くだけで AI エージェントが作れます
ローカル環境では TUI で対話しながら動作確認ができて、
Vercel Connect とSlack アプリをインストールできる権限さえあれば、
そのまますぐに Slack BOT として動かせます
・・・なんですが地味に結構ハマるところがあったので共有です
あと、やってみないと考えもしなかったセキュリティの穴もあるなと気づいたのでそれも書きます
BOTが反応する場所は Slack 側では制限できない
Slack には「このBOTは特定のチャンネルでしか動かない」という権限設定がないです 🤯
BOTに社内機密情報とかを持たせていると、これがまずく、
基本的にワークスペースのメンバーなら誰でもBOTを好きなチャンネルに招待できてしまいます
さらに注意点としてDM権限もBOTに持たせていると、BOTへのDMでもみんな情報を引き出せてしまいます
なのでエージェント側のコードで、
- 許可したチャンネル ID 以外のイベントは無視する
- DM には一切反応しない
という制限を必ず入れる必要があります
通信は極力 sandbox でやらせず、ツールで事前定義する
eve のエージェントには、AI が自由にコマンドを実行できる sandbox と、ツール(AI に持たせる道具 = 事前に定義した関数)が動くアプリ側のランタイムがあります
ここで言うsandboxの役割は、AIが逐次生み出す安全でないコードの実行環境なので
ここは厳しく通信制限をかけるべきです
基本的にはsandboxの通信はdeny-allにしといて、必要なリモート接続先はツールで定義しとくのをおすすめします
ツールはsandboxとは別の環境で動くし事前定義している安全なコードなので、通信は極力そっちに任せるべきです
ナレッジベースとかを大量ファイルで作ると、焼き込みが遅い、しかも壊れる
eveはローカルの開発環境だと、デフォルトでdockerを使ってsandbox環境を作りますが
これが結構クセありで、恐らくβならではの使いづらさで今後改善して欲しい点ではあるんですが
pnpm dev で eve のTUIを呼び出すと、裏でdocker imageを焼き始めるという挙動になっていて
しかもそれが1ファイルずつ順に書き込んでいるため、
数千ファイルのナレッジベースのようなものをAIエージェントに渡していると、
10分くらいimageを作るのにかかります
この間、TUIは普通に起動できていて、質問したりするとナレッジベースが呼び出せずにハングするという挙動になります
で、しかもここで強制終了するとimageが壊れて次以降何度立ち上げても、エラーログを吐いてハングするという現象になります
imageが壊れたまま修正されないようです
さらに当然なんですが都度関連ファイルの変更を見てdocker imageを作り直すので
数千ファイルのナレッジベースを持たせているとちょっとした修正のたびにimage焼き直し10分コースでした
これがめちゃくちゃストレスでした
ナレッジベースをsandboxに持たせるこちらの設計が悪いんですかね?
アプデでなんとかして欲しい〜
それでも Slack で AI エージェントが動き出すまでは爆速なので、気になる人はぜひ触ってみてください!
よかったらXのフォローもよろしくお願いします 🙇
https://x.com/pekatwo