mini-OpenCode は、Deer-Code と OpenCode に触発された、軽量で実験的な AI コーディングエージェントです。大規模言語モデル(LLM)が、最小限のインフラでどのように計画、推論、そして反復的にコードを記述できるかを示しています。LangGraph をベースに構築されており、エージェント型コーディングシステムの理解と構築のためのハッカブルな基盤として機能します。
- 🤖 DeepAgents 駆動: LangChain エコシステムの
create_deep_agentをベースに構築され、エージェント型コーディングの強固な基盤を提供。 - 📝 統合タスク管理: 複雑な多段階タスクを効率的に管理・追跡する
write_todosツールを内蔵。 - 🛠️ 必須ツールセット:
- ファイル操作:
ls、read_file、write_file、edit_file、glob、grepツールを内蔵。 - シェル実行: シェルコマンドを安全に実行する
executeツールを内蔵。 - ウェブ機能: MCP (Model Context Protocol) 拡張をサポートする、設定可能なウェブ検索およびクローリングツール。
- ファイル操作:
- 🧩 サブエージェントメカニズム: 補助的なタスクを処理するデフォルトの
general-purposeサブエージェントを搭載。 - 🚀 スキルシステム: ユーザー定義のスキルを自動的に認識して利用し、エージェントの機能を拡張。
- 🧠 インテリジェントなコンテキスト管理:
- AGENTS.md インジェクション:
AGENTS.mdの内容を自動的に検出し、コンテキストに注入。 - SummarizationMiddleware: コンテキスト制限に達した際に会話履歴を自動的に要約。
- 大規模出力の処理: コンテキストウィンドウの飽和を防ぐため、大規模なツール出力を自動的にファイルシステムに退避。
- 堅牢性: 宙に浮いたツール呼び出しを適切に処理する
PatchToolCallsMiddlewareを搭載。
- AGENTS.md インジェクション:
- 🎨 美しい TUI: Textual ベースの洗練されたターミナルユーザーインターフェース。ダーク/ライトモードの切り替えやストリーミング出力に対応。
- ⚡️ スラッシュコマンド:
/clearや/exitなどのスラッシュコマンドをサポートし、素早い操作が可能。 - ⚙️ 高度なカスタマイズ性: YAML 設定により、モデル、ツール、動作を完全にカスタマイズ可能。
- Python 3.12 以上
- uv パッケージマネージャー(依存関係管理に強く推奨)
- LLM 用の API キー(DeepSeek, Doubao など)およびオプションのウェブツール(Tavily, Firecrawl)のキー
-
リポジトリをクローンする
git clone https://github.com/your-username/mini-opencode.git cd mini-opencode -
依存関係をインストールする
uv sync # または make を使用 make install
-
環境変数 環境変数の例ファイルをコピーし、API キーを入力します:
cp .example.env .env
.envを編集:DEEPSEEK_API_KEY=your_key_here # オプション: KIMI_API_KEY=your_kimi_key TAVILY_API_KEY=your_tavily_key FIRECRAWL_API_KEY=your_firecrawl_key
-
アプリケーション設定 設定ファイルの例をコピーします:
cp config.example.yaml config.yaml
config.yamlを編集して、有効にするツール、モデルパラメータ、MCP サーバーをカスタマイズします。 -
LangGraph 設定(オプション) LangGraph Studio を使用してエージェントをデバッグする場合は、LangGraph 設定ファイルの例をコピーします:
cp langgraph.example.json langgraph.json
プロジェクトディレクトリでエージェントを直接実行します:
uv run -m mini_opencode /absolute/path/to/target/project
# または python を使用
python -m mini_opencode /absolute/path/to/target/projectLangGraph 開発サーバーを起動して、エージェントを可視化し、対話します:
make devその後、ブラウザで https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 を開きます。
mini-opencode/
├── src/mini_opencode/
│ ├── agents/ # エージェント作成ロジック (deepagents ベース)
│ ├── cli/ # ターミナル UI (Textual) コンポーネント
│ ├── config/ # 設定のロードとバリデーション
│ ├── models/ # LLM モデルファクトリとセットアップ
│ ├── prompts/ # プロンプトテンプレート (Jinja2)
│ ├── tools/ # 追加ツールの実装
│ │ ├── date/ # 日付ツール
│ │ ├── mcp/ # MCP ツールの統合
│ │ └── web/ # ウェブ検索とクローリング
│ ├── main.py # CLI エントリポイント
│ └── project.py # プロジェクトコンテキストマネージャー
├── skills/ # エージェントスキル(指示、スクリプト、リファレンス)
├── config.example.yaml # 設定テンプレート
├── langgraph.example.json# LangGraph 設定テンプレート
├── Makefile # ビルドと実行コマンド
└── pyproject.toml # プロジェクトの依存関係とメタデータ
貢献を歓迎します!プルリクエストを自由に送信してください。
- プロジェクトをフォークする
- 機能ブランチを作成する (
git checkout -b feature/AmazingFeature) - 変更をコミットする (Semantic Commits に従ってください。例:
git commit -m 'feat: Add some AmazingFeature') - ブランチをプッシュする (
git push origin feature/AmazingFeature) - プルリクエストを作成する
詳細は CONTRIBUTING.md の開発ガイドラインを参照してください。
インスピレーションとアーキテクチャのリファレンスを提供してくれた以下のプロジェクトの開発者に感謝します。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。