Skip to content

Latest commit

 

History

History
172 lines (135 loc) · 8.47 KB

File metadata and controls

172 lines (135 loc) · 8.47 KB

mini-OpenCode

License: MIT Python 3.12+ Code Style: Google

English | 简体中文 | 繁體中文

mini-OpenCode は、Deer-CodeOpenCode に触発された、軽量で実験的な AI コーディングエージェントです。大規模言語モデル(LLM)が、最小限のインフラでどのように計画、推論、そして反復的にコードを記述できるかを示しています。LangGraph をベースに構築されており、エージェント型コーディングシステムの理解と構築のためのハッカブルな基盤として機能します。


ライトテーマ ダークテーマ

✨ 特徴

  • 🤖 DeepAgents 駆動: LangChain エコシステムの create_deep_agent をベースに構築され、エージェント型コーディングの強固な基盤を提供。
  • 📝 統合タスク管理: 複雑な多段階タスクを効率的に管理・追跡する write_todos ツールを内蔵。
  • 🛠️ 必須ツールセット:
    • ファイル操作: lsread_filewrite_fileedit_fileglobgrep ツールを内蔵。
    • シェル実行: シェルコマンドを安全に実行する execute ツールを内蔵。
    • ウェブ機能: MCP (Model Context Protocol) 拡張をサポートする、設定可能なウェブ検索およびクローリングツール。
  • 🧩 サブエージェントメカニズム: 補助的なタスクを処理するデフォルトの general-purpose サブエージェントを搭載。
  • 🚀 スキルシステム: ユーザー定義のスキルを自動的に認識して利用し、エージェントの機能を拡張。
  • 🧠 インテリジェントなコンテキスト管理:
    • AGENTS.md インジェクション: AGENTS.md の内容を自動的に検出し、コンテキストに注入。
    • SummarizationMiddleware: コンテキスト制限に達した際に会話履歴を自動的に要約。
    • 大規模出力の処理: コンテキストウィンドウの飽和を防ぐため、大規模なツール出力を自動的にファイルシステムに退避。
    • 堅牢性: 宙に浮いたツール呼び出しを適切に処理する PatchToolCallsMiddleware を搭載。
  • 🎨 美しい TUI: Textual ベースの洗練されたターミナルユーザーインターフェース。ダーク/ライトモードの切り替えやストリーミング出力に対応。
  • ⚡️ スラッシュコマンド: /clear/exit などのスラッシュコマンドをサポートし、素早い操作が可能。
  • ⚙️ 高度なカスタマイズ性: YAML 設定により、モデル、ツール、動作を完全にカスタマイズ可能。

📖 目次

🚀 事前準備

  • Python 3.12 以上
  • uv パッケージマネージャー(依存関係管理に強く推奨)
  • LLM 用の API キー(DeepSeek, Doubao など)およびオプションのウェブツール(Tavily, Firecrawl)のキー

📦 インストール

  1. リポジトリをクローンする

    git clone https://github.com/your-username/mini-opencode.git
    cd mini-opencode
  2. 依存関係をインストールする

    uv sync
    # または make を使用
    make install

⚙️ 設定

  1. 環境変数 環境変数の例ファイルをコピーし、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
  2. アプリケーション設定 設定ファイルの例をコピーします:

    cp config.example.yaml config.yaml

    config.yaml を編集して、有効にするツール、モデルパラメータ、MCP サーバーをカスタマイズします。

  3. LangGraph 設定(オプション) LangGraph Studio を使用してエージェントをデバッグする場合は、LangGraph 設定ファイルの例をコピーします:

    cp langgraph.example.json langgraph.json

💻 使い方

CLI モード

プロジェクトディレクトリでエージェントを直接実行します:

uv run -m mini_opencode /absolute/path/to/target/project
# または python を使用
python -m mini_opencode /absolute/path/to/target/project

開発モード (LangGraph Studio)

LangGraph 開発サーバーを起動して、エージェントを可視化し、対話します:

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        # プロジェクトの依存関係とメタデータ

🤝 貢献

貢献を歓迎します!プルリクエストを自由に送信してください。

  1. プロジェクトをフォークする
  2. 機能ブランチを作成する (git checkout -b feature/AmazingFeature)
  3. 変更をコミットする (Semantic Commits に従ってください。例: git commit -m 'feat: Add some AmazingFeature')
  4. ブランチをプッシュする (git push origin feature/AmazingFeature)
  5. プルリクエストを作成する

詳細は CONTRIBUTING.md の開発ガイドラインを参照してください。

🙏 謝辞

インスピレーションとアーキテクチャのリファレンスを提供してくれた以下のプロジェクトの開発者に感謝します。

📈 Star History

Star History Chart

📄 ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。


Built with ❤️ using LangGraph and Textual.