「レジュメAIチャット」への問題提起

ポートフォリオサイトにAIチャットボットを載せるのはもはや珍しくない。しかしそのほとんどは、レジュメの内容をそのままモデルに食わせて訪問者が「言い換え」できるようにしているだけだ——エンジニアのGeorge Larson氏はそう指摘する。

「テストカバレッジはどう扱っていますか?」という質問に「包括的なテストを重視しています」と返すのは、レジュメを読み上げているに過ぎない。Larson氏が求めたのは、実際にリポジトリをクローンし、テストを数え、CI設定を読んだうえで具体的な回答を返すシステムだった。

2エージェント・2ボックス構成

システムの中核はnullclawironclawという2つのエージェントで構成される。

nullclawは公開向けの「門番」だ。Zigで書かれた678KBのバイナリで、メモリ消費は約1MB。月額7ドルのVPS上で動作し、訪問者からの質問を受け付け、必要に応じてGitHubリポジトリをクローンして実コードを根拠に回答する。

ironclawはTailscaleで接続された別のマシン上で動くプライベートエージェントで、メール・カレンダー・機密コンテキストへのアクセス権を持つ。複雑な問い合わせはnullclawから#backofficeというプライベートIRCチャンネル経由でironclaw にルーティングされる。公開ボックスからプライベートデータへは直接アクセスできない設計が意図的なセキュリティ境界となっている。

なぜIRCなのか

DiscordやTelegramではなくIRCを選んだ理由は3つある。

  • サイトの世界観に合う — ターミナルUIのポートフォリオにIRCクライアントが埋め込まれているのは自然だ。Discordでは世界観が壊れる。
  • スタック全体を自分で所有できる — Ergo IRCサーバー、gamja Webクライアント、エージェントすべてが自前インフラ上に存在し、サードパーティのAPI変更やプラットフォームの方針変更に左右されない。
  • 30年の実績があるシンプルなプロトコル — ベンダーロックインゼロ。Webクライアント経由で訪問者と対話する同じエージェントを、ターミナルからirssiで自分自身が操作することもできる。

モデル選定もシステム設計の一部

Larson氏が強調するのは、「最大のモデルを使えばいい」という発想が間違っているという点だ。

  • 会話層: Claude Haiku 4.5を使用。挨拶・振り分け・簡単な質問は1秒未満で返答でき、コストも1会話あたり数セント。
  • ツール使用層: リポジトリのクローンやコード横断的な分析が必要な場合のみClaude Sonnet 4.6にフォールバック。推論コストは推論が本当に必要なときだけ払う。
  • 1日2ドルの支出上限: 上限なしの公開エージェントはリスクだ。悪意ある利用者が推論予算を使い果たそうとしても壁にぶつかる。

「Opus(最上位モデル)を受付係に使うことは、モデルへの理解のなさを露呈する」とLarson氏は述べており、適切なモデル選定自体がエンジニアリングセンスのシグナルになるという考え方は、日本のエンジニアコミュニティにとっても参考になる視点だろう。

まとめ

本プロジェクトはHacker Newsでポイント100超を獲得し注目を集めた。月額7ドルのインフラ、IRC、モデルの階層的使い分けという3つの要素が組み合わさった実装は、「ポートフォリオにAIを組み込む」という課題に対する一つの洗練された回答といえる。ソースコードや詳細なアーキテクチャはLarson氏のブログで公開されている。


元記事: Show HN: I put an AI agent on a $7/month VPS with IRC as its transport layer