用 Deer-Flow 自建長跑 AI SuperAgent

用 Deer-Flow 自建長跑 AI SuperAgent

📌 本文重點

  • Deer-Flow 把長時間任務拆成可控模組
  • 透過記憶體與子代理協作支援長期、多階段任務
  • 搭配沙盒與工具調用,可快速做出實用自動化 Pipeline

只要先把任務切成模組、再讓 Agent 自己排程與記憶,Deer-Flow 能幫你把「要跑幾小時」的專案變成一條可控又可復用的自動化流程。

專案連結:bytedance/deer-flow


核心功能:把「長時間任務」拆成可控模組

這一節先講概念,但每個小節都會對應到你可以馬上去做的事。


1. 任務調度:讓 Agent 分段跑,而不是一口氣硬撐

Deer-Flow 的定位是「long-horizon SuperAgent harness」,核心就是任務調度(scheduler):

  • 把大任務拆成多個 stage(例如:資料收集 → 清洗 → 分析 → 報告)
  • 每個 stage 由一個或多個子代理(subagents)負責
  • 調度器會決定:
  • 什麼時候喚醒哪個子代理
  • 什麼時候暫停、重試、或改走另一條路徑

你可以把它想像成「AI 版本的 Airflow + 任務導向的聊天界面」。

💡 關鍵: 把長任務拆成多個 stage,讓 scheduler 分段調度 subagents,可以大幅降低單次失敗風險並提升整體可控性。

你可以馬上做的事:

  1. 打開專案的 examples/ 資料夾,看官方提供的 flow 定義(多半是 YAML 或 Python pipeline)。
  2. 想一個你日常會重複做的 3–4 步驟任務(例如:抓資料 → 存 DB → 寫 summary),在筆記上先畫出 3–4 個方框,對應到未來的 stage 名稱。

2. 記憶體管理:讓 Agent 記得「之前做過什麼」

長時間任務的難點,不是算力,而是「上下文會爆掉」。

Deer-Flow 幫你管的是:

  • 短期記憶(working memory:某個子任務當下需要的上下文
  • 長期記憶(long-term memory:歷史任務紀錄、重要結果、被標記的關鍵中間產物
  • 記憶裁剪:把不重要的對話 / log 丟掉,只保留後續階段會用到的東西

這樣一來,你可以讓同一個 Agent:

  • 早上先跑一輪資料爬取
  • 下午再接續早上的結果繼續清洗與分析

你可以馬上做的事:

  1. 在官方 demo 裡,找到記憶相關設定(通常會指定儲存路徑或使用向量資料庫)。
  2. 先用預設的本地檔案儲存方式,觀察它怎麼把多輪任務寫進 log / memory,了解自己之後可以在哪裡接入自己的資料庫。

3. 子代理協作 + 工具調用:像組一隊虛擬實習生

Deer-Flow 支援多個 subagents,每個都可以:

  • 使用不同的 LLM(例如:一個負責寫程式,一個負責資料分析)
  • 綁不同的工具(HTTP、資料庫、內部 API
  • 透過 message gateway 互相傳遞任務與結果

同時,它內建「工具調用」的框架:

  • LLM 輸出「要用哪個工具 + 參數」
  • Deer-Flow 幫你實際執行(例如發 HTTP 請求、查 DB
  • 把結果再丟回 LLM 繼續推理

你可以馬上做的事:

  1. toolsskills 相關的範例中,找到 HTTP request 或資料庫工具的例子。
  2. 把它改成呼叫你公司內部一個可公開測試的 API(例如:/health/status),確認整條「LLM 決定 → 工具執行 → LLM 使用結果」流程可用。

4. 沙盒執行程式碼:讓 Agent 先在安全盒子裡試錯

Deer-Flow 特別強調 sandboxes

  • Agent 產生或修改程式碼時,不會直接在主機上執行
  • 而是丟到隔離環境(容器 / sandbox 子進程)裡跑
  • 出現錯誤時,log 會被收集回來給 LLM 參考,做下一輪修正

這一點非常適合以下情境:

  • 讓 Agent 自動寫爬蟲、清洗腳本
  • 讓 Agent 幫你布署一個小型服務(只在 sandbox 測試通過後才進正式環境)

你可以馬上做的事:

  1. 在官方 demo 裡跑一個「code sandbox」相關示例,看它怎麼把程式碼丟到沙盒執行。
  2. sandbox 內部要執行的腳本換成你平常會用的簡單任務,例如:讀取一個 CSV,輸出 JSON

適合誰用:3 個具體場景


場景 1:長時間資料爬取與整理

典型流程:

  1. Agent A:負責定義爬取策略(網站列表、節奏控制)
  2. Agent B:實際發 HTTP 請求、解析 HTML / API
  3. Agent C:清洗資料、存進資料庫
  4. Agent D:最後產出摘要報告(例如每天一份 Markdown 摘要)

Deer-Flow 的用法:

  • 每個 Agent 是一個 subagent
  • 任務調度器負責安排「今天要爬哪些」、「昨天失敗的要重試」
  • 記憶體管理幫你記住爬過哪些 URL,避免重複

行動建議:

  • 選一個你每天都會看的公開資料來源(例如某政府開放資料 API),用 Deer-Flow 做一個「每日抓取 + insert DB + 產出報表」的 pipeline

場景 2:從需求到部署的自動化小專案

你可以把它當成一個「AI junior developer」:

  1. Agent 讀取你的需求(功能描述、預期輸入輸出)
  2. sandbox 裡生成與跑單元測試
  3. 修正錯誤
  4. 最後產出可部署的腳本或 Dockerfile

搭配本地 LLM(例如 Qwen 3.6 27B,搭配 MTP 加速,參考:這篇 Reddit 分享),你可以完全在內網完成這一串。

💡 關鍵: 搭配 Qwen 3.6 27BMTP,有實務經驗分享可達到推理速度約「2.5×」提升,使本地端長任務也具備實用性。

行動建議:

  • 挑一個小腳本需求,例如:
  • 定期掃描資料夾,壓縮過期檔案
  • 監控某個 API latency,超標就寄信
  • 讓 Deer-Flow 的 Agent 在 sandbox 中生成並測試這個腳本,再由你審核後部署。

場景 3:定期報表生成(營運、行銷、IT 系統狀態)

想像每週要手工做的:

  • 把資料庫中的數據抓出來
  • 做一些聚合 / 分析
  • 輸出 PowerPointMarkdown 報告

Deer-Flow 可以這樣組:

  1. 工具:資料庫查詢工具(連到你的 PostgreSQL / MySQL
  2. Agent:
  3. 一個負責定義查詢與聚合邏輯
  4. 一個負責把結果轉成自然語言與圖表描述
  5. 調度:排成 cron-like 任務,每週執行一次

行動建議:

  • 從一個最簡單的報表開始,例如「每週新用戶數」,用 Deer-Flow 將流程自動化,先做到:
  • Agent 查 DB → 產出一份 Markdown 報告存檔 → 你手動審閱

怎麼開始:最小可行 Pipeline

下面是一條「週末就能跑起來」的最簡路線。


步驟 1:環境與安裝

  1. 準備一台有 Python 3.10+ 的機器(本機或雲端皆可)。
  2. 進入命令列:
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
python -m venv .venv
source .venv/bin/activate  # Windows 用 .venv\Scripts\activate
pip install -r requirements.txt
  1. 確認可以跑官方 demo(通常在 examples/):
python examples/basic_flow.py

目標:先看到一個完整任務從「開始 → 調用 LLM → 調用工具 → 結束」的 log


步驟 2:接上一個開源 LLM(本機或雲端)

你有兩條路:

  • 本機模型:用 llama.cppOllamaQwen 3.6 之類的模型
  • 雲端 API:用 OpenAIAnthropic 或其他 OpenAI-compatible 服務

OpenAI 介面為例,Deer-Flow 通常會在設定檔或程式中要求:

llm_config = {
    "endpoint": "https://your-openai-compatible-endpoint/v1",
    "api_key": "YOUR_KEY",
    "model": "qwen-3.6-32b-instruct"  # 或其他你有的模型名
}

行動建議:

  • 如果你已經有在用本地模型,直接把你熟悉的 OpenAI-compatible endpoint(例如 vLLM、自建 server)填進來,確認 Deer-Flow 可以正常發出 completion / chat 請求。

步驟 3:串一個最簡單的工具(HTTP / 資料庫 / 內部 API)

HTTP 工具為例,你可以新增一個 tool

from deer_flow.tools import register_tool
import requests

@register_tool("get_status")
def get_status(url: str):
    resp = requests.get(url, timeout=10)
    return {"status_code": resp.status_code, "body": resp.text[:1000]}

然後在 Agent 的工具清單中加入 get_status,讓 LLM 可以呼叫它:

  • Prompt 裡描述:「有一個工具 get_status(url) 用來檢查服務狀態」
  • 將你的內部 /health API 當成第一個測試目標

行動建議:

  • 先讓 Agent 自己決定:
  • 什麼時候要呼叫 get_status
  • 呼叫後如何解讀結果(例如:狀態碼非 200 就記錄成 incident

週末練習腳本:從官方 demo 改成你的業務任務

把以上步驟變成一個可執行的「週末計畫」:

  1. 跑起官方 demo
  2. 目標:看到完整的 log 與結果
  3. 換成你的 LLM
  4. 本地 Qwen / 雲端 API 任一種
  5. 串一個工具
  6. HTTP 或資料庫擇一
  7. 改寫 flow
  8. 讓 Agent 幫你跑一個真實業務任務,例如:
    • 每日抓一個內部 API 的統計數據
    • 存到一個簡單的 SQLite / CSV
    • 產出一行 summary

做到這裡,你就已經擁有一個「專門幫你跑重複工作幾小時」的長跑 AI SuperAgent 雛型,接下來再慢慢加 stage、加子代理,就能讓它接手越來越多的例行任務。

💡 關鍵: 先完成最小可行 pipeline,再逐步增加 stage 和工具,可以在風險可控下循序擴張自動化範圍。


🚀 你現在可以做的事

  • 到 GitHub 下載並跑一次 bytedance/deer-flow 的官方 examples/basic_flow.py
  • 挑一個你日常 3–4 步驟的例行任務,畫出對應 stage,準備改寫成 Deer-Flow pipeline
  • 接上你的第一個實際工具(例如內部 /health API),驗證「LLM 決策 → 工具執行 → LLM 消化結果」這條鏈路在你環境中可用

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *