世界を動かす技術を、日本語で。

ナノボット:オープンクローの超軽量代替品

概要

nanobot は、約4,000行という 超軽量AIアシスタントClawdbot より99%小型で、 高速・低リソース で動作。 Telegram・WhatsApp・Feishu など多彩なチャネルに対応。 Docker・ローカルLLM・複数プロバイダ の柔軟運用が可能。 研究・技術検証・個人利用 に最適な設計。

nanobotの特徴

  • 超軽量設計 :約4,000行のコード、Clawdbotの1%以下
  • 研究向け :シンプルで読みやすい構造、容易な拡張性
  • 高速起動・省リソース :ミニマル設計による軽快な動作
  • 簡易導入 :ワンクリック展開、即利用開始
  • 主要機能
    • 24時間リアルタイム市場分析
    • フルスタックソフトウェアエンジニア機能
    • スマート日常管理
    • 個人知識アシスタント

インストール方法

  • ソースからインストール(開発推奨)
    • git clone https://github.com/HKUDS/nanobot.git
    • cd nanobot
    • pip install -e .
  • uvでインストール(安定・高速)
    • uv tool install nanobot-ai
  • PyPIからインストール(安定版)
    • pip install nanobot-ai

クイックスタート

  • APIキー設定~/.nanobot/config.jsonにAPIキーを記載
    • OpenRouter(LLM)、Brave Search(任意)
  • 初期化nanobot onboard
  • 設定ファイル例
    {
      "providers": {
        "openrouter": { "apiKey": "sk-or-v1-xxx" }
      },
      "agents": {
        "defaults": { "model": "anthropic/claude-opus-4-5" }
      },
      "tools": {
        "web": { "search": { "apiKey": "BSA-xxx" } }
      }
    }
    
  • チャット開始nanobot agent -m "2+2は?"

ローカルモデル(vLLM)対応

  • vLLMサーバ起動
    • vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000
  • 設定例
    {
      "providers": {
        "vllm": {
          "apiKey": "dummy",
          "apiBase": "http://localhost:8000/v1"
        }
      },
      "agents": {
        "defaults": { "model": "meta-llama/Llama-3.1-8B-Instruct" }
      }
    }
    
  • チャット例nanobot agent -m "ローカルLLMからこんにちは!"

対応チャネル

  • Telegram :トークンのみで簡単設定
  • WhatsApp :QRスキャンによるデバイス連携
  • Feishu :WebSocket長期接続、パブリックIP不要

Telegram設定手順

  • @BotFatherでボット作成、トークン取得
  • 設定ファイルに記載
    {
      "channels": {
        "telegram": {
          "enabled": true,
          "token": "YOUR_BOT_TOKEN",
          "allowFrom": ["YOUR_USER_ID"]
        }
      }
    }
    
  • nanobot gatewayでゲートウェイ起動

WhatsApp設定手順

  • Node.js ≥18必須
  • nanobot channels loginでQRスキャン
  • 設定ファイルに電話番号記載
  • 2つのターミナルでゲートウェイ起動

Feishu設定手順

  • Feishu Open Platformでアプリ作成、Bot機能有効化
  • 必要な権限・イベント追加
  • App ID/Secret取得、設定ファイルに記載
  • nanobot gatewayでゲートウェイ起動

設定ファイル構成

  • ~/.nanobot/config.json に全設定集約
  • プロバイダ例
    • openrouter:全モデル対応(推奨)
    • anthropic:Claude直アクセス
    • openai:GPT直アクセス
    • deepseek:DeepSeek直アクセス
    • groq:Whisperによる音声文字起こし
    • gemini:Gemini直アクセス
  • チャネル例
    • Telegram, WhatsApp, Feishuの有効化・認証情報

CLIコマンド一覧

  • nanobot onboard:初期設定
  • nanobot agent -m "...":エージェントと対話
  • nanobot agent:インタラクティブモード
  • nanobot gateway:ゲートウェイ起動
  • nanobot status:状態確認
  • nanobot channels login:WhatsApp連携
  • nanobot channels status:チャネル状態確認

スケジュール管理(Cron機能)

  • ジョブ追加
    • nanobot cron add --name "daily" --message "おはよう!" --cron "0 9 * * *"
    • nanobot cron add --name "hourly" --message "状況確認" --every 3600
  • ジョブ一覧nanobot cron list
  • ジョブ削除nanobot cron remove <job_id>

Dockerによる運用

  • 設定ディレクトリ永続化
    • -v ~/.nanobot:/root/.nanobotでホストとコンテナ間共有
  • ビルド・初期化・運用コマンド例
    • docker build -t nanobot .
    • docker run -v ~/.nanobot:/root/.nanobot --rm nanobot onboard
    • vim ~/.nanobot/config.jsonでホスト側編集
    • docker run -v ~/.nanobot:/root/.nanobot -p 18790:18790 nanobot gateway
    • docker run -v ~/.nanobot:/root/.nanobot --rm nanobot agent -m "Hello!"

プロジェクト構成

  • nanobot/
    • agent/:コアエージェントロジック
      • loop.py:LLMとツールのやりとり
      • context.py:プロンプト生成
      • memory.py:永続メモリ
      • skills.py:スキルローダー
      • subagent.py:バックグラウンドタスク
      • tools/:組込ツール
    • skills/:GitHub・天気・tmux等のスキル
    • channels/:WhatsApp統合
    • bus/:メッセージルーティング
    • cron/:スケジュール管理
    • heartbeat/:定期起動
    • providers/:各種LLMプロバイダ
    • session/:会話セッション
    • config/:設定
    • cli/:コマンド管理

貢献・ロードマップ

  • PR歓迎 :小型・可読性重視の設計
  • 今後の予定
    • Groq Whisperによる音声文字起こし
    • マルチモーダル(画像・音声・動画対応)
    • 長期記憶機能
    • 複数ステップ推論・計画
    • Discord・Slack・メール・カレンダー連携
    • フィードバック学習による自己改善

nanobot は教育・研究・技術交流目的専用。 興味があれば、GitHubでスターやコントリビュートを推奨。

Hackerたちの意見

リポジトリをざっと見たけど、これはエージェントの本質的な部分だね。小さなループ、プロバイダーの抽象化、ツールのディスパッチ、チャットゲートウェイ。LOCの削減(99%、40万行から4千行)は、RAGパイプライン、プランナー、マルチエージェントのオーケストレーション、UI、運用を省いたことが主な要因だよ。

フォルダを管理することでメモリを管理できるのに、RAGはちょっと変だよね。サブエージェントがいるのにマルチエージェントってのもなんか変な感じ。

RAGはデータが多すぎると壊れるよね。

もし私が誤解してるなら別だけど、プランナーは結構重要な気がする。

じゃあ、これは2日前にここで紹介されたナノクローに「インスパイア」されたってこと?

ハハ、これ見て「これ、数日前にHNのフロントページに載ってなかった?」って思ってたけど、NanoclawとNanobotの違いを完全に見逃してたわ。

興味がある人は https://github.com/gavrielc/nanoclaw

うーん、OpenClawからの私の感想はほぼ同じだな。なんで誰かのクレイジーなバイブコーディングの40万行のCLIラッパーを使うの?50,000行の「ドキュメント」(AIのゴミ;さらに同じAIのゴミの中国語訳がもう50,000行)なんて。自分で30分で必要なものだけを詰め込んだカスタムラッパーを作れるのに。で、このプロジェクトに対する私の反応はまたしても「なんで自分でバイブコーディングしないの?」ってこと。必要なものが全部揃ってるわけじゃないし、自分のバージョンを作るのにかかる時間は数分だしね。多くの人が「バイブコーディングされたソフトウェア」の本質を理解するようになると思うよ。自分の問題を解決するために作ったものだけが価値があるんだから。これは製品じゃないし、決して製品にはならない。

自分でバイブコーディングしないことで、すでにトークンを節約してるよね…個人的には、こういうもののインスタンスを持つメリットは全く感じないから、トークンもサーバー時間も他のリソースも使わないけど、たくさんの人が頭を使わずに済む素晴らしい代替手段を見つけたみたい。

自分で作ることではなく、どれだけコントロールできるかと、どれだけ現実世界を経験したかのトレードオフなんだよね。他人の失敗から学んだ要件を追加するのは、自分でコントロールする開発よりも、オープンなコラボレーションや企業が管理する方が遅い。これが、バイブコーディングされた(初期要件)プロジェクトが始めるのは楽しいけど、リアルな学びがないと進化が難しい理由だよ。バイブコーディングされたプロジェクトは高速度だけど低エントロピー。早く始まるけど、問題の複雑さがクリエイターの即時の焦点を超えると、すぐに停滞しちゃうことが多い。

OpenClawが嫌いな私としては、そのコアにあるエージェントハーネス(pi)は本当に良い。すごくミニマルでデザインも優れてる。カスタム機能を使って構成するように設計されていて、ハッキングも簡単。一方でClaude Codeは膨れ上がってて、完全に意見が強い。OpenClawでみんなが熱狂してるのは自律性なんだよね。これが、RalphやGastownとの共通点で、盛り上がる要因になってる。問題はたくさんあるけど、そこには価値のある部分がある(スティーブ・イェッジの作品と同じように)。

「オープンソース」はもはや「これを作ったからみんな使ってね」ってことじゃなくて、「これをやったらうまくいったから、私が学んだことをシェアするよ」って感じ。そうすれば、誰でも必要なものを取り入れて、いらないものは捨てて、自分の目的に合ったツールを作れる。誰もOpenClawやnanobotを使わせようとしてるわけじゃないけど、今やそれらが存在することで、私たちのエージェントがより良いツールを作るための知識を使える。プロジェクトがたくさんのスターをもらうと、全てのコーディングエージェントがトレーニングされるグローバルトレーニングセットの一部になるし、ツールの有用性もどんどん増していく。私は2つのOpenClawエージェントを動かしていて、どちらも自分のブランチを作って、それぞれのタスクに合わせてメモリツールを修正してる。特にセキュリティ関連の面白いものを取り入れるために、定期的にアップストリームをチェックしてる。もうすぐ、誰も他の人が作ったアプリをスマホにたくさん入れてるだけじゃなくて、自分の日常にぴったり合ったアプリを少数持つようになると思う。

読んだところによると、無制限のトークン数がポイントみたい。自動ループで動かすと、やり取りがかなり少なくて済むから、これが一番効果的なんだよね。でも、毎分そのシステムにアクセスするのはトークンの制限を終わらせちゃうから、LLMをローカルで動かすのが無限トークンを得る方法なんだ。問題は、ローカルモデルはクラウドのものほど良くないってこと。成功してる人たちは、OpenClawやこれらのチャットボットをローカルで動かすために、2〜4千ドルくらいの強力なシステムに投資した人たちだと思う。彼らが実行するコマンドは、たぶん「私のウェブサイトを作って」とか「株に投資して」みたいな詳細なプロンプトのバージョンだよね。それを数日間動かして見る感じ。Claude Codeを使うと、基本的にはパートナーシップみたいなもので、常に管理して安全性を確保しつつ、トークン数がオーバーしないようにしないといけない。完全に自律的なエージェントと無制限のトークン数があれば、あまり関係ないタスクに割り当てることができる。エージェントが失敗して悪いコードを書いちゃったら?システムプロンプトが自己修正に関与できるってことが重要なんだ。

みんなこれを何に使ってるの?私が見たユースケースはちょっと無理があるように見えるし、ClaudeやChatGPTに直接やらせることもできるよね。

うん、私もよくわからない。VMをデプロイしてLLMを動かして、Telegramで話せるようにするって…アプリかウェブインターフェースで話せばいいじゃん。別に皮肉を言いたいわけじゃないけど、これって何のためにあるの?

さっぱりわからない。思いつくのは、メモリを持てるってことくらいだけど、それならもっと少ないコードでできるよ。VPSを借りて、フォルダ作ってCCを動かして、MDファイルに保存するように指示すればいいんだ。Termuxを使えばスマホからアクセスできるし。

これ、Farcasterに投稿したやつのコピーなんだけど、実際に使われてるとは思えないな。OpenClawを2日間フルで使って、3回の夜も使ったけど、これが何か生産的なことに使われてるとは全然信じられない。本当に好きになりたいんだけど、未来の一端を感じることもあるし。基本的にポジティブでいたいんだけど、Claude Maxに200ドルも使って、ほとんどOpus 4.5で動かしてるのに、イライラするばかり…本当に色んな意味でひどすぎる。1. 10分も続く長い脱線があって、まるで窓から飛び出して世界を飛び回るような感じ。/abortコマンドは100回に1回しか効かないから、トークンを無駄にしないためにサーバーを再起動しなきゃいけない! 2. 何度も「副作用のあることはまず確認してからやって」と言ってるのに、アカウントに問題が起きると新しいアカウントを作ろうとしたり、サポートにメールしたりチャットしたりする。私に聞けば簡単に解決できることなのに。3. メモリがひどすぎて、自分で思い出させなきゃいけない。半分の時間は何をしてるのかわかってない(例えば、生成したパスワードを忘れる)。定期的に物を忘れるのは、サーバーを再起動しなきゃいけないからかも。4. コンパクションの後に重要なことを忘れちゃうのは、アルゴリズムがひどいから。タイピングしてると、まるでメン・イン・ブラックが訪れたかのように、最後の30分がなかったことになる。古い75%のトークンを捨てる方が、今やってることよりも効果的じゃない? 何をやってるのか、何をやらないでほしいかを完全に忘れちゃうから、また問題(1)に戻る。5. 思い出すときは、記憶があちこちに散らばってて、一貫性を保てない。再起動後には何が真実かわからなくなっちゃう。

免責事項:これらは使ったことない(OpenClawを試そうと思ったけど、問題が多すぎた)。私が思うに、一番の価値はエージェンシーだと思う。ClaudeやChatGPTのチャットインターフェースは反応的だけど、エージェントは能動的になれる。会話を始めるのを待つ必要がない。私がずっと求めていたのは、カレンダー(CalDAV)、Todoistのオープンアイテム、天気、関連ニュースを引っ張ってくる朝のブリーフィング。最初の3つは簡単なAPI作業。ニュースの部分が面白くて難しいところで、RSSフィードやニュースAPIは洪水のように情報が来る。でも、興味を知ってるLLMなら、効果的にフィルタリングできるかも。例えば、テクノロジーのニュースが欲しいけど、Android(iPhoneユーザー)やMacOS(Linuxユーザー)には興味がない。そういう微妙なフィルタリングは、従来のルールでは表現しにくいけど、LLMには簡単。

OpenClawは使えなかった(遅すぎてバグが多かったけど)、自動で色々やってくれるエージェントがいて、生活全体のコンテキストを持ってるとすごく助かると思う。まるでパーソナルアシスタントを持ってるみたいで、魅力がわかる。

Claude/ChatGPTに対する大きな利点の一つは、自分のエージェントがrobots.txtやIPフィルターでクラウドホストのエージェントをブロックしている多くのウェブサイトにアクセスできることだね。残念ながら、これがますます一般的になってきてる。もう一つは、メモリに対するアクセスと制御がもっと直接的にできること。完全に自分のマシンのテキストファイルに基づいているから、ベンダーロックインがずっと少ないんだ。

Debianの安定版EC2 VMを立ち上げて(もちろんエージェントとAWS CLI、AWS Vaultを使って)、openclawをホストしてる。フルルートアクセスを与えて、Discordで話しかけてるんだ。たまにちょっと遅いけど、独立したエージェントがいるって感じが初めてした。やったことは2つだけで、1つ目はMoneroアドレスを作ってお金を送れるようにして、そのアドレスにお金が送られたら通知してもらうこと。自分でmonerodデーモンを立ち上げたけど、すごく重くてスペースが足りなくなったから、Moneroウォレットを使うようにしたんだ。でも、monerodデーモンを手動でシャットダウンしてプロセスを殺してopenclawを再起動する必要があった。結局、うまくいったし、今も動いてる。2つ目は、「毎日午前8時ETに銀の価格を教えて」って頼んだら、勝手にやり方を見つけてスケジュールしてくれた。自分の理解では、JSONファイルを使って独自のcron機能があるみたい。3つ目は、外部から通知を送るためにpingできるPythonスクリプトを書いてホストしたり。他にも色々やらせたけど、クエリにはChatGPTの方がほとんどいつも優れてるし、コーディングエージェントやZedの方がコーディングにはずっといい。でも、安いVMを使ってopenrouterとglm 4.7やflashを使えば、ちょっと変わった楽しいことができる。長期的な状態(ファイルやプロセスなど)を持てるシステムをコントロールできるのが主な利点だと思う。Linuxシステムを完全にマスターしてコントロールできるから、柔軟性がすごい。raw ClaudeやChatGPTでは得られないエージェント+OSみたいな感じ。特に面白いことはしてないけど、セキュリティ的には悪夢だけど、すごく楽しい!

これは、Slackで会社のために運用するもので、従業員がメッセージを送って、LLMがそのテキストを処理して、私が作った機能を使っていろんなタスクを処理し、返信するってこと?

悪くはないけど、ちょっと懐疑的だな。主にIMでの働き方についての話?

OpenClaw/Molbotの熱狂を見てるのは面白いね。私は使わないけど、コードが多すぎて、変化が早すぎて、セキュリティに対する配慮が少なすぎるから。でも、インスパイアされてるよ。掃除したり料理したりしてるときにアイデアが浮かぶことが多いんだ。Claude Code(Opus 4.5付き)はかなり優秀だよ。ずっと手を使わずにClaude Codeを動かしたいと思ってたから、午後を使って自分専用のSTT-TTS音声スタックを作ったんだ。音声スタックはM4 Proでローカルに動いてて、めっちゃ速いよ。音声認識にはParakeet v3 TDT: https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3、音声合成にはPocket TTS: https://github.com/kyutai-labs/pocket-ttsを使ってる。Claude Codeにこれを接続するためのカスタムMCPも作って、AirPodsの茎をクリックしたときにキャッチできるようにちょっとハッキングした。Claudeには短い頻繁なメッセージで思考過程ややってることを話させてて、いつでも茎をクリックすれば中断できる。そうすると、私の声を聞き始めて、十分な長さのポーズが検出されたらメッセージを送るんだ。Claude CodeのセッションをAirPlayでリビングのテレビにストリーミングしてるから、ラップトップに近づかなくても、やってることの詳細を知ることができる。昨日は、歯を磨きながらカスタムWhatsApp統合([1]経由)をハンズフリーでデバッグさせたよ。OS統合のためにosascriptを使ったり、Claude Codeの内蔵ツールでウェブをブラウジングしたりもできる…私の背中は感謝してる。これは本当に楽しい。

一方で、このプロジェクトはめっちゃクールだし、自分でも使いたいし、作りたかったなって思う。反対に、みんなが常に働いている未来に向かっているのかなって考えちゃう。「わあ、娘が初めて歩いてる!すごい…ちょっと待って…違う、クロード。クラスの名前を「ポテト」って言ったのに、「ポ」から始まって8つの「O」って、バカなロボット!」

リポジトリは?

昨日自転車事故に遭って、両腕を怪我しちゃった。幸い、ダメージはそれほどひどくなかったけど、パソコンを使うのがかなり難しい状態。だから、今は暇な時間を使って音声コントロールのいろんなオプションを試してる。君と同じように、OpenClawにはちょっと警戒してるから、君のセットアップに似たものを試してみようと思ってる。今のところ、ノートパッドで音声入力を使ってコメントやコマンドを書くところまではできるようになったけど、テキストをコピー&ペーストするのが結構大変(猫がキーボードを奪いに来るし、私もそれを防ぐ余裕がない)だから、もう少し進めたいと思ってる。怪我するのは辛いけど、気を紛らわせるいい方法が見つかって、今のところ時間をつぶすのには最高だね。

これ、サンドボックス化できる?OpenClawをmacOSのVMで動かしてるんだけど、必要以上にリソースを使ってる気がする。

4k LOCの主張は面白いけど、実際の洞察は何を残すかよりも、何を取り除くかにあると思う。コードベースを見ると、彼らは100k以上のコンテキストウィンドウを持つLLMがほとんどのRAGパイプラインを無駄にするって賭けてるみたい。エージェントにgrepやrgを使わせて、反復させるだけでいいんだよね。賢いのは、メモリをベクトルストアじゃなくてファイルシステムの操作として扱ってるところ。コードベースには自然な構造(インポートや関数呼び出し)があるから、grepが理解しやすいんだよね。問題は、意味的な類似性が重要な本当に非構造的な知識にこれがスケールするかどうか。個人的なメモや研究論文みたいなもので、リトリーバル精度と適切な埋め込みパイプラインを比較するベンチマークが見たいな。

openclawは、すべてのメモリを常にロードするから、トークンをかなり少なく使うためにベクトルベースに切り替えたんじゃなかったっけ?効率的だと思うけど。

こんな風に脱線するのは嫌なんだけど、アーキテクチャの図が理解しづらい。LLMにはツールへの矢印が2本あるけど、これは何を意味してるの?同様に、ツールには両方向の矢印とコンテキストへの出力矢印がある。チャットアプリがメッセージとLLMの両方に出力矢印を持ってるのも、ちょっと混乱したけど、アプリがLLMのためにメッセージとコンテキストを提供してるからって言えるのかな。