nanocode — ミニマルな Claude Code 代替

AI/ML

概要

nanocode は「Minimal Claude Code alternative」を目標とした非常に小さなエージェント実装です。単一ファイル(nanocode.py)で依存関係を持たず、約250行でツール呼び出しを伴うエージェントループを実現しています。特徴としては、ファイル読み書き・編集系やシェル実行、ファイル検索・grep などのツールを内蔵し、会話履歴を保持して連続的な対話が可能、ターミナルに色付き出力を行うことで利便性を高めています。起動は環境変数 ANTHROPIC_API_KEY の設定のみで済み、学習用やプロトタイプ用途に適した軽量設計です。

GitHub

リポジトリの統計情報

  • スター数: 38
  • フォーク数: 2
  • ウォッチャー数: 38
  • コミット数: 3
  • ファイル数: 3
  • メインの言語: Python

主な特徴

  • 単一ファイル、外部依存なし(zero dependencies)で動作する軽量設計
  • ツールベースのエージェントループ(read, write, edit, glob, grep, bash)
  • 会話履歴管理と基本的なコマンド(/c で会話クリア、/q/exit で終了)
  • 色付きターミナル出力で対話が見やすい

技術的なポイント

nanocode の技術的要点は「ミニマリズム」と「ツール駆動のエージェント循環」にあります。単一ファイル設計により、コード全体が約250行に収まっているため、実装の全容を容易に把握・監査できます。外部ライブラリを使わない設計は、配布や依存管理の負担を減らし、セキュリティ面でも簡潔さをもたらします。

内部アーキテクチャは、ユーザー入力 → モデル呼び出し → モデルのレスポンス解析(必要ならツール呼び出し)→ ツール結果を会話にフィードバック、という典型的な「エージェントループ」を採用しています。ツール群(read/write/edit/glob/grep/bash)はそれぞれシェルやファイル操作をラップする役割を果たし、モデルはツールの使用を通じて環境への実際の変更や情報取得を行えます。ツール呼び出しのフォーマットやレスポンスの注釈を README に示すことで、モデル側のプロンプト設計(スキーマ)をシンプルに保っています。

API 連携は環境変数 ANTHROPIC_API_KEY を利用する形で、Anthropic(Claude)API への問い合わせを行います。外部依存がないため、HTTP クライアントや JSON 処理は標準ライブラリで完結している想定で、エンベディングや独自の高速化は含まれていません。会話履歴はメモリ上で管理され、連続的な対話コンテキストとしてモデルに渡されますが、長期履歴の永続化やロールオフ戦略は最小実装に留まります。

色付き出力は ANSI エスケープシーケンスを用いた簡易実装で、ユーザーがツール応答やモデル出力を視認しやすくしています。起動と操作はシンプルで、環境変数設定後に python nanocode.py を実行するだけで基本機能が利用可能。プロンプト設計やツール追加はコードが単一ファイルにまとまっているため、改修や拡張がしやすく、学習目的やプロトタイプとしての利便性が高い一方で、商用利用や大規模運用にはログ管理、エラー処理、並列実行、認可制度などの追加実装が必要です。

また README に「Built using Claude Code, then used to build itself」とある通り、既存の Claude Code 実装を参考にブートストラップされた点も注目に値します。小さなコードベースは、AI エージェントの構成要素(プロンプト管理、ツールラッパー、ループ制御、出力整形)を学ぶ教材として最適です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • nanocode.py: file
  • screenshot.png: file

まとめ

単一ファイルで学べる、素早く試せるミニマルな Claude Code 風エージェント実装です。