🤖

専属のAIエージェントTUIツールを作った話

に公開

追記:2025/08/10

今読むと、vscodeのエージェントモードが優秀すぎて自分でAIエージェントを作る必要はないと感じています。またMCPが充実している感じがしていて、個人でツールを作ろうとした時点ですでに世の中にありそうな気がしています。
この記事を書いてから1年で、AIがここまで発達するとは進化が目まぐるしいですね。
GPT-OSSやGPT-5が出てきたり、Ryzen AI MAX+ 395というローカルLLMのために作られたかのようなパソコンが発売されたりと、使う側だけではなく開発者側も選択肢が広がったというか、楽しくなってきたなって気がしてます。

記事を寝かせすぎて内容忘れた。

申し訳ないのですが、記事の内容忘れました。
半年以上前に書いた記事を下書き保存して寝かしすぎたせいで内容忘れました。
下書きからいくらかは清書したのですが、後半は雑な内容になってます。ご了承ください。

自己紹介

フリーランスエンジニアです。普段は在宅でお仕事しています。
休日は個人開発をして、ビジネスにつながる種まきをしています。(自信ないけど)

背景

私はJAWS-UG(日本AWSユーザーグループ)のイベントによく参加します。そのとき聴講したテーマがAIで、AWSの方がGenUというものを紹介してくださいました。これはAWSのBedrockというサービスを使用して生成AIを体験してみようというサバクラ構成のソフトウェアです。構築から実際に生成AIを触るところまで一連を通して体験しました。
何よりすごかったのが、HTMLの生成を依頼すると、生成結果がリアルタイムで目に見えて更新され、見た目が少しずつ完成に近づいて最後、あっという間に完成してしまう。それも、HTMLが実際に描画された状態でです。これは絶対に開発が加速する!!!と思いましたね。

私もこれが欲しくなったので作ることにしました。

ちなみに、GenUはOSSなのでgithubで公開されています。
https://github.com/aws-samples/generative-ai-use-cases-jp

目的

では、何を目的にどこを着地点とするか。

やはり、個人開発の加速につなげたいと思いました。何が個人開発の加速につながるかについてはちょっと悩みましたね。悩んだ末に出てきたのものが次の3つです。

  1. AIにネット検索させる
  2. AIにコード生成させる
  3. AIにコマンドを叩かせる

1と2についてはもうすでに世の中に出回っています。
https://www.perplexity.ai/

3の「AIにコマンドを実行させる」というものは、まだ使ったことがありませんでした。作れたら面白そうと感じましたね。しかし、考えていた時点でこれは危険なことだとも思いました。下手したらAIにパソコンを破壊される可能性があるからです。
ですが、この悩みはすぐ解決します。「Dockerや仮想マシン上で実行すればいいじゃない!?」ということです。Dockerの中でなら完全に隔離はされませんが、ホストOS上で直接動かすよりも比較的安心して実行させられます。仮想マシンならSSHで入り込んでもらえばそれで動き回れます。

開発の動機

  • AWSイベントJAWSUGでGEN UIのデモを見て真似したくなった。
  • 趣味の個人開発を加速させたかった。
  • ビジネス開拓の種まきしたかった。
  • 記事のネタにしたかった。

専属と書いた理由

  • 自分でAIアプリを育てられるから

はじめ作ったもの

何もわからかったので、まずはWEBベースチャットアプリを作りました。
それから、チャットアプリを拡張してWeb検索とシェル実行できるAIエージェントを作りました。

構成や技術など

  • バックエンド:Python
    • FastAPI、LangChain
  • フロントエンド:React

AIのモデルと料金について

  • モデルはOpenAIのGPT-4oを使用

欠点

シェルがサーバーサイドで実行されます。クラサバなのにこれは非常に不便です。

欠点を解消する

構成や技術など

  • 開発サポートが目的の一つにあるため、開発ツール(IDE等)と統合できれば一番良いですが、IDE拡張機能のフレームワークの学習に時間はかけたくありませんでした。そこで、TUIツールとして作ることにしました。ターミナルから実行できるため統合が簡単になります。
  • クラサバ構成はそのままに、シェルはそれぞれのクライアントで実行されるように作る。
  • WebSocket使ったけどなんで?
  • シーケンス図等で解説

成果物

動画か画像で(できれば動画がいいな)

  • VScodeで開くとこんな感じ

  • クライアント側


  • サーバー側

感想

なんかすごいタイムアウトが発生する

Pythonの非同期関連が全くわからなかったため学習に時間を要した

リポジトリ

サーバー側

https://github.com/SeiyaIwabuchi/gen_ai_sample_1

クライアント側(Textual TUI)

https://github.com/SeiyaIwabuchi/ai-agent-tui

Discussion