Files
deer-flow/README_ja.md
2026-03-26 21:24:52 +08:00

31 KiB
Raw Blame History

🦌 DeerFlow - 2.0

English | 中文 | 日本語 | Français

Python Node.js License: MIT

bytedance%2Fdeer-flow | Trendshift

2026年2月28日、バージョン2のリリースに伴い、DeerFlowはGitHub Trendingで🏆 第1位を獲得しました。素晴らしいコミュニティの皆さん、ありがとうございます💪🔥

DeerFlowDeep Exploration and Efficient Research Flow)は、サブエージェントメモリサンドボックスを統合し、拡張可能なスキルによってあらゆるタスクを実行できるオープンソースのスーパーエージェントハーネスです。

https://github.com/user-attachments/assets/a8bcadc4-e040-4cf2-8fda-dd768b999c18

Note

DeerFlow 2.0はゼロからの完全な書き直しです。 v1とコードを共有していません。オリジナルのDeep Researchフレームワークをお探しの場合は、1.xブランチで引き続きメンテナンスされています。現在の開発は2.0に移行しています。

公式ウェブサイト

image

実際のデモ公式ウェブサイトでご覧いただけます。

ByteDance Volcengine のコーディングプラン

英文方舟

InfoQuest

DeerFlowは、BytePlusが独自に開発したインテリジェント検索・クローリングツールセット「InfoQuest無料オンライン体験対応」を新たに統合しました。

InfoQuest_banner

目次

クイックスタート

設定

  1. DeerFlowリポジトリをクローン

    git clone https://github.com/bytedance/deer-flow.git
    cd deer-flow
    
  2. ローカル設定ファイルの生成

    プロジェクトルートディレクトリ(deer-flow/)から以下を実行します:

    make config
    

    このコマンドは、提供されたテンプレートに基づいてローカル設定ファイルを作成します。

  3. 使用するモデルの設定

    config.yamlを編集し、少なくとも1つのモデルを定義します

    models:
      - name: gpt-4                       # 内部識別子
        display_name: GPT-4               # 表示名
        use: langchain_openai:ChatOpenAI  # LangChainクラスパス
        model: gpt-4                      # API用モデル識別子
        api_key: $OPENAI_API_KEY          # APIキー推奨環境変数を使用
        max_tokens: 4096                  # リクエストあたりの最大トークン数
        temperature: 0.7                  # サンプリング温度
    
      - name: openrouter-gemini-2.5-flash
        display_name: Gemini 2.5 Flash (OpenRouter)
        use: langchain_openai:ChatOpenAI
        model: google/gemini-2.5-flash-preview
        api_key: $OPENAI_API_KEY          # OpenRouterもここではOpenAI互換のフィールド名を使用
        base_url: https://openrouter.ai/api/v1
    

    OpenRouterやOpenAI互換のゲートウェイは、langchain_openai:ChatOpenAIbase_urlで設定します。プロバイダー固有の環境変数名を使用したい場合は、api_keyでその変数を明示的に指定してください(例:api_key: $OPENROUTER_API_KEY)。

  4. 設定したモデルのAPIキーを設定

    以下のいずれかの方法を選択してください:

  • オプションAプロジェクトルートの.envファイルを編集(推奨)

    TAVILY_API_KEY=your-tavily-api-key
    OPENAI_API_KEY=your-openai-api-key
    # OpenRouterもlangchain_openai:ChatOpenAI + base_url使用時はOPENAI_API_KEYを使用します。
    # 必要に応じて他のプロバイダーキーを追加
    INFOQUEST_API_KEY=your-infoquest-api-key
    
  • オプションBシェルで環境変数をエクスポート

    export OPENAI_API_KEY=your-openai-api-key
    
  • オプションCconfig.yamlを直接編集(本番環境には非推奨)

    models:
      - name: gpt-4
        api_key: your-actual-api-key-here  # プレースホルダーを置換
    

アプリケーションの実行

オプション1: Docker推奨

開発環境(ホットリロード、ソースマウント):

make docker-init    # サンドボックスイメージをプル(初回またはイメージ更新時のみ)
make docker-start   # サービスを開始config.yamlからサンドボックスモードを自動検出

make docker-startは、config.yamlがプロビジョナーモード(sandbox.use: deerflow.community.aio_sandbox:AioSandboxProviderprovisioner_url)を使用している場合にのみprovisionerを起動します。

本番環境(ローカルでイメージをビルドし、ランタイム設定とデータをマウント):

make up     # イメージをビルドして全本番サービスを開始
make down   # コンテナを停止して削除

Note

LangGraphエージェントサーバーは現在langgraph devオープンソースCLIサーバー経由で実行されます。

アクセス: http://localhost:2026

詳細なDocker開発ガイドはCONTRIBUTING.mdをご覧ください。

オプション2: ローカル開発

サービスをローカルで実行する場合:

前提条件:上記の「設定」手順を先に完了してください(make configとモデルAPIキーmake devには有効な設定ファイルが必要です(デフォルトはプロジェクトルートのconfig.yamlDEER_FLOW_CONFIG_PATHで上書き可能)。

  1. 前提条件の確認

    make check  # Node.js 22+、pnpm、uv、nginxを検証
    
  2. 依存関係のインストール

    make install  # バックエンド+フロントエンドの依存関係をインストール
    
  3. (オプション)サンドボックスイメージの事前プル

    # Docker/コンテナベースのサンドボックス使用時に推奨
    make setup-sandbox
    
  4. サービスの開始

    make dev
    
  5. アクセス: http://localhost:2026

詳細設定

サンドボックスモード

DeerFlowは複数のサンドボックス実行モードをサポートしています

  • ローカル実行(ホストマシン上で直接サンドボックスコードを実行)
  • Docker実行分離されたDockerコンテナ内でサンドボックスコードを実行
  • KubernetesによるDocker実行プロビジョナーサービス経由でKubernetesポッドでサンドボックスコードを実行

Docker開発では、サービスの起動はconfig.yamlのサンドボックスモードに従います。ローカル/Dockerモードではprovisionerは起動されません。

お好みのモードの設定についてはサンドボックス設定ガイドをご覧ください。

MCPサーバー

DeerFlowは、機能を拡張するための設定可能なMCPサーバーとスキルをサポートしています。 HTTP/SSE MCPサーバーでは、OAuthトークンフローclient_credentialsrefresh_token)がサポートされています。 詳細な手順はMCPサーバーガイドをご覧ください。

IMチャネル

DeerFlowはメッセージングアプリからのタスク受信をサポートしています。チャネルは設定時に自動的に開始されます。いずれもパブリックIPは不要です。

チャネル トランスポート 難易度
Telegram Bot APIロングポーリング 簡単
Slack Socket Mode 中程度
Feishu / Lark WebSocket 中程度

config.yamlでの設定:

channels:
  # LangGraphサーバーURLデフォルト: http://localhost:2024
  langgraph_url: http://localhost:2024
  # Gateway API URLデフォルト: http://localhost:8001
  gateway_url: http://localhost:8001

  # オプション: 全モバイルチャネルのグローバルセッションデフォルト
  session:
    assistant_id: lead_agent
    config:
      recursion_limit: 100
    context:
      thinking_enabled: true
      is_plan_mode: false
      subagent_enabled: false

  feishu:
    enabled: true
    app_id: $FEISHU_APP_ID
    app_secret: $FEISHU_APP_SECRET

  slack:
    enabled: true
    bot_token: $SLACK_BOT_TOKEN     # xoxb-...
    app_token: $SLACK_APP_TOKEN     # xapp-...Socket Mode
    allowed_users: []               # 空 = 全員許可

  telegram:
    enabled: true
    bot_token: $TELEGRAM_BOT_TOKEN
    allowed_users: []               # 空 = 全員許可

    # オプション: チャネル/ユーザーごとのセッション設定
    session:
      assistant_id: mobile_agent
      context:
        thinking_enabled: false
      users:
        "123456789":
          assistant_id: vip_agent
          config:
            recursion_limit: 150
          context:
            thinking_enabled: true
            subagent_enabled: true

対応するAPIキーを.envファイルに設定します:

# Telegram
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ

# Slack
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...

# Feishu / Lark
FEISHU_APP_ID=cli_xxxx
FEISHU_APP_SECRET=your_app_secret

Telegramのセットアップ

  1. @BotFatherとチャットし、/newbotを送信してHTTP APIトークンをコピーします。
  2. .envTELEGRAM_BOT_TOKENを設定し、config.yamlでチャネルを有効にします。

Slackのセットアップ

  1. api.slack.com/appsでSlackアプリを作成 → 新規アプリ作成 → 最初から作成。
  2. OAuth & Permissionsで、Botトークンスコープを追加app_mentions:readchat:writeim:historyim:readim:writefiles:write
  3. Socket Modeを有効化 → connections:writeスコープのApp-Levelトークンxapp-…)を生成。
  4. Event Subscriptionsで、ボットイベントを購読:app_mentionmessage.im
  5. .envSLACK_BOT_TOKENSLACK_APP_TOKENを設定し、config.yamlでチャネルを有効にします。

Feishu / Larkのセットアップ

  1. Feishu Open Platformでアプリを作成 → ボット機能を有効化。
  2. 権限を追加:im:messageim:message.p2p_msg:readonlyim:resource
  3. イベントim.message.receive_v1を購読し、ロングコネクションモードを選択。
  4. App IDとApp Secretをコピー。.envFEISHU_APP_IDFEISHU_APP_SECRETを設定し、config.yamlでチャネルを有効にします。

コマンド

チャネル接続後、チャットから直接DeerFlowと対話できます

コマンド 説明
/new 新しい会話を開始
/status 現在のスレッド情報を表示
/models 利用可能なモデルを一覧表示
/memory メモリを表示
/help ヘルプを表示

コマンドプレフィックスのないメッセージは通常のチャットとして扱われ、DeerFlowがスレッドを作成して会話形式で応答します。

Deep Researchからスーパーエージェントハーネスへ

DeerFlowはDeep Researchフレームワークとして始まり、コミュニティがそれを大きく発展させました。リリース以来、開発者たちはリサーチを超えて活用してきましたデータパイプラインの構築、スライドデッキの生成、ダッシュボードの立ち上げ、コンテンツワークフローの自動化。私たちが予想もしなかったことです。

これは重要なことを示していましたDeerFlowは単なるリサーチツールではなかったのです。それはハーネス——エージェントが実際に仕事をこなすためのインフラを提供するランタイムでした。

そこで、ゼロから再構築しました。

DeerFlow 2.0は、もはやつなぎ合わせるフレームワークではありません。バッテリー同梱、完全に拡張可能なスーパーエージェントハーネスです。LangGraphとLangChainの上に構築され、エージェントが必要とするすべてを標準搭載していますファイルシステム、メモリ、スキル、サンドボックス実行、そして複雑なマルチステップタスクのためのプランニングとサブエージェントの生成機能。

そのまま使うもよし。分解して自分のものにするもよし。

コア機能

スキルとツール

スキルこそが、DeerFlowをほぼ何でもできるものにしています。

標準的なエージェントスキルは構造化された機能モジュールです——ワークフロー、ベストプラクティス、サポートリソースへの参照を定義するMarkdownファイルです。DeerFlowにはリサーチ、レポート生成、スライド作成、Webページ、画像・動画生成などの組み込みスキルが付属しています。しかし、真の力は拡張性にあります独自のスキルを追加し、組み込みスキルを置き換え、複合ワークフローに組み合わせることができます。

スキルはプログレッシブに読み込まれます——タスクが必要とする時にのみ、一度にすべてではありません。これによりコンテキストウィンドウを軽量に保ち、トークンに敏感なモデルでもDeerFlowがうまく動作します。

Gateway経由で.skillアーカイブをインストールする際、DeerFlowはversionauthorcompatibilityなどの標準的なオプショナルフロントマターメタデータを受け入れ、有効な外部スキルを拒否しません。

ツールも同じ哲学に従います。DeerFlowにはコアツールセット——Web検索、Webフェッチ、ファイル操作、bash実行——が付属し、MCPサーバーやPython関数によるカスタムツールをサポートしています。何でも入れ替え可能、何でも追加可能です。

Gatewayが生成するフォローアップ提案は、プレーン文字列のモデル出力とブロック/リスト形式のリッチコンテンツの両方をJSON配列レスポンスの解析前に正規化するため、プロバイダー固有のコンテンツラッパーが提案をサイレントにドロップすることはありません。

# サンドボックスコンテナ内のパス
/mnt/skills/public
├── research/SKILL.md
├── report-generation/SKILL.md
├── slide-creation/SKILL.md
├── web-page/SKILL.md
└── image-generation/SKILL.md

/mnt/skills/custom
└── your-custom-skill/SKILL.md      ← あなたのカスタムスキル

Claude Code連携

claude-to-deerflowスキルを使えば、Claude Codeから直接、実行中のDeerFlowインスタンスと対話できます。リサーチタスクの送信、ステータスの確認、スレッドの管理——すべてターミナルから離れずに実行できます。

スキルのインストール

npx skills add https://github.com/bytedance/deer-flow --skill claude-to-deerflow

DeerFlowが実行中であることを確認しデフォルトはhttp://localhost:2026、Claude Codeで/claude-to-deerflowコマンドを使用します。

できること

  • DeerFlowにメッセージを送信してストリーミングレスポンスを取得
  • 実行モードの選択flash高速、standard、proプランニング、ultraサブエージェント
  • DeerFlowのヘルスチェック、モデル/スキル/エージェントの一覧表示
  • スレッドと会話履歴の管理
  • 分析用ファイルのアップロード

環境変数(オプション、カスタムエンドポイント用):

DEERFLOW_URL=http://localhost:2026            # 統合プロキシベースURL
DEERFLOW_GATEWAY_URL=http://localhost:2026    # Gateway API
DEERFLOW_LANGGRAPH_URL=http://localhost:2026/api/langgraph  # LangGraph API

完全なAPIリファレンスはskills/public/claude-to-deerflow/SKILL.mdをご覧ください。

サブエージェント

複雑なタスクは単一のパスに収まりません。DeerFlowはそれを分解します。

リードエージェントはオンザフライでサブエージェントを生成できます——それぞれ独自のスコープ付きコンテキスト、ツール、終了条件を持ちます。サブエージェントは可能な限り並列で実行され、構造化された結果を報告し、リードエージェントがすべてを一貫した出力に統合します。

これがDeerFlowが数分から数時間かかるタスクを処理する方法ですリサーチタスクが十数のサブエージェントに展開され、それぞれが異なる角度を探索し、1つのレポート——またはWebサイト——または生成されたビジュアル付きのスライドデッキに収束します。1つのハーネス、多くの手。

サンドボックスとファイルシステム

DeerFlowは物事を語るだけではありません。自分のコンピューターを持っています。

各タスクは、完全なファイルシステムを持つ分離されたDockerコンテナ内で実行されます——スキル、ワークスペース、アップロード、出力。エージェントはファイルの読み書き・編集を行います。bashコマンドを実行し、コーディングを行います。画像を表示します。すべてサンドボックス化され、すべて監査可能で、セッション間の汚染はゼロです。

これが、ツールアクセスのあるチャットボットと、実際の実行環境を持つエージェントの違いです。

# サンドボックスコンテナ内のパス
/mnt/user-data/
├── uploads/          ← あなたのファイル
├── workspace/        ← エージェントの作業ディレクトリ
└── outputs/          ← 最終成果物

コンテキストエンジニアリング

分離されたサブエージェントコンテキスト:各サブエージェントは独自の分離されたコンテキストで実行されます。これにより、サブエージェントはメインエージェントや他のサブエージェントのコンテキストを見ることができません。これは、サブエージェントが目の前のタスクに集中し、メインエージェントや他のサブエージェントのコンテキストに気を取られないようにするために重要です。

要約化セッション内で、DeerFlowはコンテキストを積極的に管理します——完了したサブタスクの要約、中間結果のファイルシステムへのオフロード、もはや直接関係のないものの圧縮。これにより、コンテキストウィンドウを超えることなく、長いマルチステップタスク全体を通じてシャープさを維持します。

長期メモリ

ほとんどのエージェントは、会話が終わるとすべてを忘れます。DeerFlowは記憶します。

セッションをまたいで、DeerFlowはあなたのプロフィール、好み、蓄積された知識の永続的なメモリを構築します。使えば使うほど、あなたのことをよく知るようになります——あなたの文体、技術スタック、繰り返されるワークフロー。メモリはローカルに保存され、あなたの管理下にあります。

メモリ更新は適用時に重複するファクトエントリをスキップするようになり、繰り返される好みやコンテキストがセッションをまたいで際限なく蓄積されることはありません。

推奨モデル

DeerFlowはモデルに依存しません——OpenAI互換APIを実装する任意のLLMで動作します。とはいえ、以下をサポートするモデルで最高のパフォーマンスを発揮します

  • 長いコンテキストウィンドウ10万トークン以上深いリサーチとマルチステップタスク向け
  • 推論能力:適応的なプランニングと複雑な分解向け
  • マルチモーダル入力:画像理解と動画理解向け
  • 強力なツール使用:信頼性の高いファンクションコーリングと構造化された出力向け

組み込みPythonクライアント

DeerFlowは、完全なHTTPサービスを実行せずに組み込みPythonライブラリとして使用できます。DeerFlowClientは、すべてのエージェントとGateway機能へのプロセス内直接アクセスを提供し、HTTP Gateway APIと同じレスポンススキーマを返します

from deerflow.client import DeerFlowClient

client = DeerFlowClient()

# チャット
response = client.chat("Analyze this paper for me", thread_id="my-thread")

# ストリーミングLangGraph SSEプロトコルvalues、messages-tuple、end
for event in client.stream("hello"):
    if event.type == "messages-tuple" and event.data.get("type") == "ai":
        print(event.data["content"])

# 設定&管理 — Gateway準拠のdictを返す
models = client.list_models()        # {"models": [...]}
skills = client.list_skills()        # {"skills": [...]}
client.update_skill("web-search", enabled=True)
client.upload_files("thread-1", ["./report.pdf"])  # {"success": True, "files": [...]}

すべてのdict返却メソッドはCIでGateway Pydanticレスポンスモデルに対して検証されておりTestGatewayConformance、組み込みクライアントがHTTP APIスキーマと同期していることを保証します。完全なAPIドキュメントはbackend/packages/harness/deerflow/client.pyをご覧ください。

ドキュメント

⚠️ セキュリティに関する注意

不適切なデプロイはセキュリティリスクを引き起こす可能性があります

DeerFlowはシステムコマンドの実行、リソース操作、ビジネスロジックの呼び出しなどの重要な高権限機能を備えており、デフォルトではローカルの信頼できる環境127.0.0.1のループバックアクセスのみ)にデプロイされる設計になっています。信頼できないLAN、公開クラウドサーバー、または複数のエンドポイントからアクセス可能なネットワーク環境にエージェントをデプロイし、厳格なセキュリティ対策を講じない場合、以下のようなセキュリティリスクが生じる可能性があります

  • 不正な違法呼び出し:エージェントの機能が権限のない第三者や悪意のあるインターネットスキャナーに発見され、システムコマンドやファイル読み書きなどの高リスク操作を実行する不正な一括リクエストが引き起こされ、重大なセキュリティ上の問題が発生する可能性があります。
  • コンプライアンスおよび法的リスク:エージェントがサイバー攻撃やデータ窃取などの違法行為に不正使用された場合、法的責任やコンプライアンス上のリスクが生じる可能性があります。

セキュリティ推奨事項

注意DeerFlowはローカルの信頼できるネットワーク環境にデプロイすることを強く推奨します。 クロスデバイス・クロスネットワークのデプロイが必要な場合は、以下のような厳格なセキュリティ対策を実装する必要があります:

  • IPホワイトリストの設定iptablesを使用するか、ハードウェアファイアウォール / ACL機能付きスイッチをデプロイしてIPホワイトリストルールを設定し、他のすべてのIPアドレスからのアクセスを拒否します。
  • 前置認証リバースプロキシnginxなどを設定し、強力な前置認証を有効化して、認証なしのアクセスをブロックします。
  • ネットワーク分離:可能であれば、エージェントと信頼できるデバイスを同一の専用VLANに配置し、他のネットワークデバイスから隔離します。
  • アップデートを継続的に確認DeerFlowのセキュリティ機能のアップデートを継続的にフォローしてください。

コントリビュート

コントリビューションを歓迎します!開発環境のセットアップ、ワークフロー、ガイドラインについてはCONTRIBUTING.mdをご覧ください。

回帰テストのカバレッジには、backend/tests/でのDockerサンドボックスモード検出とプロビジョナーkubeconfig-pathハンドリングテストが含まれます。

ライセンス

このプロジェクトはオープンソースであり、MITライセンスの下で提供されています。

謝辞

DeerFlowはオープンソースコミュニティの素晴らしい成果の上に構築されています。DeerFlowを可能にしてくれたすべてのプロジェクトとコントリビューターに深く感謝いたします。まさに、巨人の肩の上に立っています。

以下のプロジェクトの貴重な貢献に心からの感謝を申し上げます:

  • LangChainその優れたフレームワークがLLMのインタラクションとチェーンを支え、シームレスな統合と機能を実現しています。
  • LangGraphマルチエージェントオーケストレーションへの革新的なアプローチが、DeerFlowの洗練されたワークフローの実現に大きく貢献しています。

これらのプロジェクトはオープンソースコラボレーションの変革的な力を体現しており、その基盤の上に構築できることを誇りに思います。

主要コントリビューター

DeerFlowのコア著者に心からの感謝を捧げます。そのビジョン、情熱、献身がこのプロジェクトに命を吹き込みました:

揺るぎないコミットメントと専門知識が、DeerFlowの成功の原動力です。この旅の先頭に立ってくださっていることを光栄に思います。

Star History

Star History Chart