標籤: SuperAgent

  • 用 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 消化結果」這條鏈路在你環境中可用