ブログに戻る

APIコールへの課金をやめて、自分のAIチャットを構築した理由

·1分で読める

2つのシステム問題

2週間前にShawnOSの構築を始めた。リポジトリだ。3つのNext.jsサイト、エージェントスキル、コンテンツパイプライン、RPGプログレッションを持つモノレポ。1人でGTMエンジンを回すためのオペレーティングシステム。

1週間前にNioをOpenClaw上に立ち上げた。OpenClawはGPTベースだ。アイデアはAIエージェント用の独立したチャットシステム。NioがCronジョブを実行し、ブログ記事を書き、コンテンツパイプラインを管理し、ダッシュボードを更新する。おもちゃではなく、本物のインフラ。

うまく動いた。しかしAPIコストが急速に膨らんだ。日常のオペレーションにSonnet。本格的な思考が必要なものにはOpus。1日50ドルから100ドル。どれだけ開発するかで変わる。そして常に開発していた。完全に狂気だった。

高頻度のCronをローカルのOllamaモデル(Qwen 2.5 14B)に回した。無料、高速、コミット追跡やステータス更新には十分。しかし、本当の知性が必要なものには...Claudeが要る。

そして本質的なインサイトが訪れた。

リポジトリこそが魔法

2つの別々のシステムを動かしていた。チャットにOpenClaw。それ以外にリポジトリ。しかし私が本当に依存しているモデル、OpusとSonnetは、すでに私のリポジトリと対話している。GPTにはできない方法で私の声とDNAを増幅する。ソウルファイル、コミット履歴、コンテンツパイプラインを読む。単に応答するのではない。複利で効いてくる。

別の世界では、OpenClawはGPTではなくAnthropicで構築されていただろう。しかしそうではなかった。そのギャップが答えを明白にした。2つの別々のシステムは要らない。リポジトリこそがシステムだ。

Claude Code Max。月額200ドルの定額。claude -p経由の無制限CLIアクセス。すでに課金していた。毎日リポジトリの構築に使っていた。コーディングワークフローを動かしているのと同じCLIが、チャットインターフェースを動かせるとは思いもしなかった。

claude -pはプロンプトの送信、レスポンスの取得、JSONストリームの出力、セッションの再開ができる。すべてターミナルから。すべてサブスクリプションに含まれている。APIキーなし。トークン単位の課金なし。使用量の上限なし。

再帰的な性質こそが機能する理由だ。Claudeが動かすシステムをClaude自身が構築する。コードを書くモデルが、その中で動くモデルだ。コスト最適化ではない。フライホイールだ。

構築

Next.jsアプリ。1つのAPIルート。claude -pを子プロセスとしてスポーンする。JSONストリームをServer-Sent Eventsとしてブラウザに返す。

それだけだ。バックエンドのすべて。

クライアントはiMessageスタイルのPWAだ。ダークテーマ、等幅フォント、タイピングインジケーター。メッセージを送信し、ストリーミングレスポンスを受け取る。セッションIDが会話をまたいで永続するので、Nioがコンテキストを覚えている。

Cloudflare TunnelをMac Miniに向ける。これで、スマートフォンからどこにいてもAIにテキストできる。APIコストゼロ。トンネル以外のインフラコストゼロ(無料ティア)。

アイデアから動作するPWAまでの所要時間...午後1回分。

ソウルファイルパターン

アーキテクチャの観点からここが面白い。Claude CLIには--append-system-prompt-fileというフラグがある。マークダウンファイルを指定すれば、そのファイルがシステムプロンプトの一部になる。

nio-soul.mdを書いた。Nioのパーソナリティ、能力、アンチスロップルール、意思決定フレームワークを定義する。NioをNioたらしめるすべて。チャットボットではない。意見を持つインフラだ。

つまり、新しいエージェントの追加は新しいマークダウンファイルを書くだけだ。

マルチエージェント拡張

1つのCLI。異なるソウルファイル。異なるパーソナリティ。独立したセッション。

それがShawnOS Chatが向かっている先だ。各エージェントが独自のパーソナリティファイル、アクセントカラー、バブルカラー、分離されたセッション状態を持つマルチエージェントプラットフォーム。UIでエージェントを切り替える。それぞれが前回の続きから始まる。

Nioがオペレーションとインフラを担当する。Architectエージェントがシステム設計を担当する。Writerエージェントが私の声でコンテンツを担当する。その下は同じClaude CLI。同じゼロ限界コスト。

エージェントごとの状態はクライアントのlocalStorageとサーバーのファイルベースメモリに保存される。各エージェントが独自のMEMORY.md、独自のハートビートファイル、独自のデイリースナップショットを持つ。軽量、ポータブル、データベース不要。

IPはコードではない

誰でもCLIプロセスをスポーンできる。重要なのはパターンだ。

パーソナルAIインフラのバックエンドとしてのCLI。エージェントごとのセッション分離。パーソナリティ注入用のソウルファイル。ファイルベースのメモリシステム。使用量ではなくサブスクリプションに応じてスケールするゼロ限界コストアーキテクチャ。

これはかつて、カスタムAPIインテグレーション、データベース、認証ミドルウェア、月次のクラウド請求書が必要だった類のものだ。今はマークダウンファイルとNext.jsルートで実現できる。

ビルダーにとっての意味

パーソナルAIツーリングにトークン単位で課金していて、Claude Code Maxサブスクリプションを持っているなら...お金をテーブルの上に残している。

CLIがAPIだ。サブスクリプションがインフラ予算だ。あとはただの配管だ。

しかしそれ以上に - コードベースと対話しないプラットフォームでAIを動かしているなら、1つで済むところを2つのシステムを構築している。インフラを構築するモデルが、それを動かすモデルであるべきだ。近道ではない。アーキテクチャだ。

これはShawnOSの一部だ。1人でGTMエンジンを回すために公開で構築しているオペレーティングシステム。2週間前にリポジトリの構築を始めた。すでに複利が効いている。

自分のを作ろう。

ShawnOS.ai|theGTMOS.ai|theContentOS.ai
built with Next.js · Tailwind · Claude · Remotion