MotleyCrew ——拋棄dify、coze,手動搭建多agent工作流

1. MotleyCrew 核心組件

- 協調器: Crew
MotleyCrew 的核心是一個 “Crew” 對象,即多代理系統的指揮者。Crew 持有一個全局的知識圖譜(使用 Kuzu 圖數據庫),用于記錄所有任務、任務單元和其執行狀態。
Crew 不斷循環查詢“可執行任務”(所有上游依賴完成的任務),調用get_next_unit() 獲取下一步的任務單元,并將其分派給對應的執行者(Agent)。任務單元被分派后即加入知識圖,當執行完成時觸發任務的 on_unit_completion 邏輯。Crew 支持同步與異步兩種模式:在異步模式下,Crew 在后臺隊列中并行調度多個任務單元。當前框架支持多種并發后端,包括 asyncio、線程池甚至 Ray 分布式執行,從而實現跨 CPU/GPU 節點的高并發和可擴展調度。

- 任務調度系統: Task
以 任務(Task)為粒度組織工作流程。每個任務可以依賴其它任務,形成任務圖(DAG)或更復雜的拓撲。
MotleyCrew 提供多種預定義任務類型(如 SimpleTask、TreeReduceTask 等),也支持自定義任務邏輯。每個任務通過 >> 運算符將上下游串聯,Crew 基于任務依賴自動生成調度順序。任務包含的“任務單元” (TaskUnit) 封裝了執行時的輸入(通常為 LLM 的提示和上游結果),并記錄狀態、輸出等。
任務系統負責在執行過程中動態更新知識圖:例如在執行過程中生成的新子任務或新的數據可以即時寫入知識圖,供后續任務查閱。這種設計使得任務調度不僅僅是靜態的流程,而可以根據中間結果動態展開新的計算(見“研究代理”示例)。

- 管理模塊: Agent
MotleyCrew 抽象了“智能體”(Agent)這一概念,所有 Agent 均實現為符合 LangChain 可運行接口 (Runnable) 的組件。
框架提供多種 Agent 封裝,包括對 LangChain AgentExecutor 的 LangchainMotleyAgent,對 LlamaIndex agent 的 LlamaIndexMotleyAgent,以及對其他框架(如 CrewAI、AutoGen)agent 的包裝。同時,Agent 可攜帶多個 工具(Tool),這些工具同樣實現了 Runnable 接口。每個任務在執行時會將其配置的 Agent 或工具作為工作者來運行(通過 get_worker() 獲得)。MotleyCrew 特別支持“Agents-as-Tools” 模式:一個 Agent 可以被轉換為 Tool 交給其他 Agent 使用,允許任意組合不同框架的 Agent 共同協作。
理論上,所有agent又能作為tool被上游agent使用,形成多agent聯合調用網絡,理想情況下,agent之間相互合作,幫助更好的完成任務(相對于單一agent)。但是,這種多agent工作流是否有效或高效,還需要分析觀察所有agent|tool的調用和被調用路線。

- 插件和外部集成機制
MotleyCrew 設計了靈活的插件式接口,可與多種開源工具和代理框架集成。通過 MotleyTool 類,可以將 LangChain 的 BaseTool、LlamaIndex 的工具、甚至 CrewAI 的工具等封裝為 MotleyCrew 的工具。開發者可直接使用 MotleyTool.from_langchain_tool、from_llama_index_tool、from_crewai_tool 等方法將外部工具引入。文檔和示例中展示了如何無縫混合 LangChain、LlamaIndex、CrewAI、AutoGen 等生態的 Agent 和工具。所有組件(Agent、Tool、Task)均實現了 LangChain 的 Runnable 接口,使其與 LangChain Edge等生態兼容,并可用于構建復雜的 LangGraph 工作流。

-知識圖譜存儲
每個 Crew 自帶一個內置的知識圖譜(Knowledge Graph)實例,用于全局信息共享。所有任務、任務單元及其輸入輸出都會存儲在該圖中,節點間邊則表示依賴關系或序列順序。這一持久化存儲既可用作流程控制(決定哪些任務可執行),也可充當共享狀態(Multiple Agent 共享中間數據)。Agent 和 Task 通過讀寫知識圖來交換信息,例如一個 Task 在完成后可以將結果寫回圖中,供后續 Task 或其他 Agent 查詢。這一設計讓 MotleyCrew 在多 Agent 協作中實現了像「全局共享記憶」一樣的信息流轉。

  • 可觀測性與緩存
    MotleyCrew 集成了開源的觀測跟蹤框架 Lunary,以及用于 HTTP/LLM 調用的緩存工具 MotelyCache。在執行過程中,Lunary 可記錄每一次 Agent 調用、任務執行的元數據,方便性能監控和調試;MotleyCache 則對重復的 API 請求做結果緩存,提高執行效率并降低成本。這些功能為生產環境下的穩定性和可運維性提供支持, 同時可以與MCP調用及記錄做良好支撐。

2. 解決的問題

MotleyCrew 的設計旨在解決現代多 Agent 系統中的若干挑戰:

  1. 多 Agent 協作
    多個智能體要共同完成復雜任務時,需要合理分工與信息交換。MotleyCrew 通過靈活的任務調度和共享知識圖,實現了多 Agent 之間的協同工作。用戶可以將不同領域的 Agent(包括跨框架的 Agent)組合在同一 Crew 中,利用 Agents-as-Tools 模式讓一個 Agent 調用另一個 Agent 的能力。同時,全局知識圖充當中樞,使 Agents 能夠讀寫共享狀態,例如發布任務結果、生成新問題、共享檢索到的信息等,從而天然支持復雜的協作場景。這一機制有效避免了傳統設計中各 Agent 相互隔離、溝通困難的問題。

  2. 異構資源調度
    現實場景中,不同任務可能需要不同資源類型(如 CPU 計算、GPU 大模型、專用工具或外部服務)。MotleyCrew 通過抽象的并行執行后端,實現了跨異構資源的彈性調度。內置的 AsyncBackend 支持多種并發模式:在默認的 asyncio 或線程模式下,可以利用本地機器的多核并行;更進一步,支持將 Crew 作為 Ray 任務運行在分布式集群上。這一點允許用戶在多臺機器、異構硬件(如有無 GPU)間分配和運行任務單元。同時,由于任務和工具都是可序列化的 Runnable,可以輕松在集群節點上傳輸執行,滿足大規模擴展需求。

  3. 任務分配與執行優化
    MotleyCrew 提供智能的調度邏輯來高效分配任務。Crew 循環時,會查詢所有“可用任務”(即所有上游依賴已完成的任務),并一次取出每個任務的下一個任務單元進行調度。任務的 get_next_unit() 方法根據是否滿足前置條件自動確定是否有新的單元可執行。分派單元時,Crew 隨即將該單元標記為掛起并放入執行隊列,再調用任務的 on_unit_dispatch 回調。執行結束后,再觸發 on_unit_completion 處理結果。這樣,調度過程自動遵守任務依賴關系,無需用戶手動同步。由于后端支持并行模式(比如允許某些任務在隊列中并行執行),能夠將獨立的任務單元同時派發給多個代理執行,提高吞吐量。加上內置的 MotelyCache 緩存重復調用(如重復的 LLM 查詢或 API 請求),執行效率進一步提升。

  4. 可擴展性與穩定性
    架構模塊化、內置分布式支持使系統易于擴展。新增 Agent、工具或任務類型不影響現有組件,新的任務只需加入 Crew 即可納入調度。Ray 后端和并發執行讓系統可擴展至大規模集群;Lunary 和緩存在生產環境提供了監控與故障恢復機制。關鍵執行狀態持久化在知識圖中,即使運行崩潰后也能從上次任務節點恢復。此外,重試機制(在 RetryConfig 中設置)可對短暫錯誤自動重試,進一步提高魯棒性。總之,MotleyCrew 的分布式、異步設計搭配完整的觀測和緩存,使其在多agent場景下具備良好的擴展性和穩定性。

3. 系統邏輯原理

MotleyCrew 的核心在于架構設計和調度邏輯如何保障多 Agent 協作和高效執行:

  1. 核心架構
    一個 MotleyCrew 實例維護著一個任務圖和對應的全局知識圖。用戶首先創建一個 Crew,然后定義若干 Task(任務)并指定 Agent 和描述,使用 >> 運算符將任務以有向依賴串聯起來。每個 Task 在運行時會生成一個或多個 TaskUnit(任務單元),這些單元攜帶了對 Agent 的調用所需的信息(如提示模板、上游結果拼接等)。Crew 根據任務依賴關系決定調度順序,形成有向無環的執行流。

  2. 調度邏輯
    如文檔所示,“Crew 不斷循環查詢任務并分派單元”。具體流程:Crew 檢查哪些任務的所有上游任務都已完成(這些稱為可用任務),并依次調用其 get_next_unit()。如果返回了新的 TaskUnit,Crew 就將其標記為“運行中”,加入到知識圖,然后調用任務的 on_unit_dispatch() 鉤子(可用于如日志記錄)。Agent 收到任務單元后執行 LLM 推理或工具調用,完成后執行結果會觸發任務的 on_unit_completion()(例如 SimpleTask 會將輸出存儲并標記任務完成)。在異步模式下,Crew 會在后臺不斷搜索和隊列化可執行單元;在同步模式下,Crew 會等待每個單元完成后再繼續下一個。總之,調度邏輯保證了:只有當依賴任務結束后,下游任務才被激活;多個任務單元滿足條件時可并行調度;新生成的任務單元只要被寫入知識圖,也能被Crew及時發現并處理。

  3. 通信機制
    Agent 之間的交互主要通過兩種方式:一是工具調用(Agents-as-Tools 模式),二是通過共享知識圖傳遞信息。在工具調用模式下,某代理可以把其他代理包裝成工具,當它需要某領域幫助時直接調用這一工具(即讓另一個 Agent 扮演相應角色)。這種方式與 LangChain 的工具調用模式兼容,可讓不同 Agent 在對話中相互利用。另外,由于所有任務單元的輸入輸出都存儲在知識圖上,一個 Agent 完成任務后留下的結果數據可以被任何下游 Agent 讀取。例如,在“研究代理”示例中,一個 Task 會在知識圖中生成新的問題子任務,另一組 Task 則基于這些問題的檢索結果順序解答回推。這類似于一個全局共享的黑板(shared memory),使得通信更為松耦合和靈活。

  4. 狀態管理
    知識圖譜起著關鍵作用:它記錄了每個 TaskUnit 的狀態(pending、running、done),以及上下游關系、輸出內容等。框架使用 Kuzu 存儲層(MotleyGraphStore)來持久化這些狀態。這樣,無論是程序崩潰還是中斷,系統都可以從知識圖恢復執行。Agent 和 Task 均可通過圖 API 讀寫節點,實現復雜的狀態管理:除了任務數據外,用戶還可以將任意中間結果或全局變量存入知識圖,用作后續決策依據。總之,知識圖是 MotleyCrew 管理全局狀態、協調 Agent 互動的“事實數據庫”。

  5. 代理編排模型
    MotleyCrew 使用基于任務依賴的調度模型,但對于內部任務的執行和交互并不強加固定流程。用戶可以采用高度結構化的流程(顯式列出任務節點),也可以依賴輸出處理器(OutputHandler)等高級工具強制執行特定行為。每個任務在創建時都可指定特定的 Agent、工具、以及提示模板。框架支持任務層級(TaskGroup)、動態任務生成等高級機制。最典型的并行場景是多線索任務(TreeReduceTask)或細粒度子任務并行(allow_async_units=True)等。由于所有 Agent 和 TaskUnit 都是基于 LangChain Runnable 的組件,理論上它們可以嵌套或遞歸組合,并與 LangGraph 等其他框架配合使用。

4. 與類似系統的區別

與其它多 Agent 框架相比,MotleyCrew 在架構設計上具有獨特之處:

AutoGen:微軟的 AutoGen 強調通過對話驅動多代理協作,內置 ConversableAgent(可交流的代理)、AssistantAgent、UserProxyAgent 等,支持人機交互和代碼執行。其設計核心是“多代理聊天”,每個代理作為獨立角色在對話中傳遞信息。相比之下,MotleyCrew 并不局限于對話模式,而是以任務圖為核心,實現更加結構化的工作流。MotleyCrew 可以集成 AutoGen 的代理(通過 Agents-as-Tools 模式),但更強調任務依賴和共享記憶的協調,而非純粹基于聊天的協商。

CrewAI:CrewAI 框架以“Crew(團隊)+Flows(流程)”著稱,將多個 Agent 組織為明確角色,各司其職。CrewAI 強調使用事件驅動的流程(Flows)來定義任務序列和狀態轉換,并提供 GUI 工具等企業級功能。與之相比,MotleyCrew 則更輕量、框架無關:它通過代碼定義任務和依賴,內置知識圖而不依賴外部流程引擎。雖然兩者都提出“角色”和“流程”概念,但CrewAI 在架構上高度專有,而 MotleyCrew 采用通用的任務-代理模型,支持混合不同 Agent 框架并運行在任何環境中。此外,MotleyCrew 強調與 LangChain 生態的兼容性,以及使用開源數據庫保存狀態,而非使用專有的流程引擎。

LangGraph:LangGraph 將多代理系統視為有向圖:每個代理是圖節點,使用命令對象(Command)在節點間傳遞控制和狀態。它適合構建嚴格的決策圖和狀態機。MotleyCrew 與其思路有相似之處(共享圖結構),但更加靈活:不僅支持靜態流程圖,代理還可以在運行時通過寫入知識圖來創建新節點,實現動態擴展。更重要的是,MotleyCrew 的所有組件都兼容 LangChain Runnable,意味著用戶可以在 MotleyCrew 內部直接使用 LangGraph 的編程模型。換言之,MotleyCrew 既能在簡單場景下充當 LangGraph 的“框架”,也能在復雜場景下提供額外的多代理協作能力。

綜上,MotleyCrew 的優勢在于多框架兼容、任務圖+知識圖驅動的協調以及高度可擴展的調度后端,這些使其既適合快速搭建常見的多 Agent 工作流,也能滿足復雜應用場景的需求。相較于其他系統,它在架構上更為通用和開放,同時提供了強大的工作流表達能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909501.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

掌握這些 Python 函數,讓你的代碼更簡潔優雅

在 Python 編程世界里,代碼的簡潔性與可讀性至關重要。簡潔優雅的代碼不僅便于自己后期維護,也能讓其他開發者快速理解邏輯。而 Python 豐富的內置函數和一些實用的第三方庫函數,就是實現這一目標的有力武器。接下來,就為大家介紹…

簡說ping、telnet、netcat

簡說 ping 和 telnet 命令的作用、用法和區別,方便理解它們在網絡診斷中的用途。 🌐 ping 命令 ? 作用: ping 用于檢測網絡連通性。它通過向目標主機發送 ICMP Echo 請求 并等待回應,從而判斷目標主機是否可達,并測…

基于STM32的超聲波模擬雷達設計

一、雷達概述 雷達(Radio Detection and Ranging,無線電探測與測距)是一種利用電磁波探測目標位置、速度等信息的主動式傳感器系統。其基本原理是發射電磁波并接收目標反射的回波,通過分析回波的時間差、頻率變化等參數&#xff0…

飛書多維表格利用 Amazon Bedrock AI 能力賦能業務

背景 飛書多維表格是一款功能強大的在線數據管理與協作工具。它打破傳統表格局限,將電子表格與數據庫特性融合,支持看板、甘特圖、表單等多種視圖自由切換,可根據項目進度、任務管理等不同場景靈活展示數據。其豐富的字段類型能精準適配各類…

表格對比工具推薦,快速比對Excel文件

軟件介紹 今天為大家推薦一款專為Excel用戶設計的表格比較工具,簡單易用,零基礎也能快速掌握。 輕量高效的辦公助手 Excel比較工具體積僅為11MB,占用空間小,運行流暢,適合各類電腦配置使用。 簡潔明了的操作界面 軟…

深入探究其內存開銷與JVM布局——Java Record

Java 14引入的Record類型如同一股清流,旨在簡化不可變數據載體的定義。它的核心承諾是:??透明的數據建模??和??簡潔的語法??。自動生成的equals(), hashCode(), toString()以及構造器極大地提升了開發效率。 當我們看到這樣的代碼: …

Vue 3 九宮格抽獎系統,采用優雅的 UI 設計和流暢的動畫效果

九宮格抽獎 預覽地址 項目簡介 這是一個基于 Vue 3 開發的現代化九宮格抽獎系統,采用優雅的 UI 設計和流暢的動畫效果,為用戶提供極致的抽獎體驗。系統支持多種獎品配置,實時抽獎記錄展示,以及完整的活動說明功能。 核心功能 …

無縫對接大疆算力平臺:基于Coovally的無人機AI模型端到端優化方案

【導讀】 隨著無人機應用場景的快速拓展,企業對于定制化AI解決方案的需求日益迫切。大疆算力開放平臺為開發者提供了專業的模型量化與部署環境,幫助開發者將訓練好的AI模型高效部署至大疆無人機平臺。 然而,要實現完整的AI開發閉環&#xf…

ubuntu下載CUDA cuDNN

nivida-smi查看顯卡驅動版本 (一)安裝CUDA cuda官網 cuda官網 下載對應版本的cuda 這個官網真不錯啊,下面附上了指令 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin sudo mv c…

FreeRTOS定時器

目錄 1.特性2.運行環境2.1 守護任務2.2 回調函數2.3 內部源碼 3.和Linux對比4.ID5.數據傳輸6.操作函數6.1 創建6.2 刪除6.3 啟動6.4 停止6.5 復位(重置)6.6 修改周期6.7 注意事項 7.示例:一般使用8.示例:定時器防抖 1.特性 定時器…

JavaScript中的迭代器模式:優雅遍歷數據的“設計之道”

JavaScript中的迭代器模式:優雅遍歷數據的“設計之道” 一、什么是迭代器模式? 在編程世界中,迭代器模式(Iterator Pattern)是一種經典的設計模式,它的核心思想是:為集合對象提供一種統一的訪…

Debian/Ubuntu systemd coredump調試程序Crash

程序是通過systemd監管,當程序出現crash的時候,需要保存crash的日志,也就是coredump日志,按照一般做法設置coredump。而在安裝有systemd服務的系統中一般都有systemd-coredump服務。 systemd-coredump 是 systemd 子系統中的一個工…

【圖片轉 3D 模型】北大·字節跳動·CMU攜手——單圖15 秒生成結構化3D模型!

??引言:單圖生成結構化 3 D 模型的技術突破? ? PartCrafter 由北京大學、字節跳動與卡耐基梅隆大學聯合研發,是全球首個??端到端生成結構化 3 D 網格??的模型。它僅需單張 RGB 圖像,即可在 34 秒內生成帶語義分解的 3 D 部件&#xf…

零基礎RT-thread第二節:按鍵控制

我這里依然使用的是野火開發板,F767芯片。 這一節寫一下按鍵控制LED亮滅。 這是按鍵以及LED的原理圖。 按鍵對應的引腳不按下時是低電平,按下后是高電平。 LED是在低電平點亮。 接下來是key.c: /** Copyright (c) 2006-2021, RT-Thread Development T…

《Gulp與SCSS:解構前端樣式開發的底層邏輯與實戰智慧》

探尋Gulp與SCSS協作的底層邏輯 Gulp,作為任務自動化的佼佼者,其核心價值在于將一系列復雜的任務,如文件的編譯、合并、壓縮等,以一種流暢且高效的方式串聯起來,形成一個自動化的工作流。它基于流(stream&a…

OpenCV CUDA模塊圖像變形------對圖像進行GPU加速的透視變換函數warpPerspective()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 該函數用于對圖像進行 GPU 加速的透視變換(Perspective Transformation),是 cv::warpPerspective 的 CUDA 版…

吳恩達機器學習筆記(2)—單變量線性回歸

目錄 一、模型表示 二、代價函數 三、代價函數的直觀理解(1) 四、代價函數的直觀理解(2) 五、梯度下降 六、梯度下降的直觀理解 七、線性回歸的梯度下降 在本篇內容中,我們將介紹第一個機器學習算法——線性回歸…

最新華為 HCIP-Datacom(H12-821)

最新 HCIP-Datacom(H12-821),完整題庫請上方訪問,更新完畢。 在OSPF網絡中,NSSA區域與STUB區域都是為了減少LSA數量,兩者最主要的區別在于,NSSA區域可以引入外部路由,并同時接收OSPF…

vba學習系列(11)--批退率通過率等數據分析

系列文章目錄 文章目錄 系列文章目錄前言一、外觀報表1.產能2.固定傷排查3.鏡片不良TOP4.鏡片公式計算5.鏡片良率計算6.鏡片批退率7.鏡筒不良TOP8.鏡筒公式計算9.鏡筒良率計算10.鏡筒批退率 二、反射率報表1.機臺通過率2.鏡片通過率圈數分析3.鏡片通過率罩次分析4.鏡筒通過率圈…

成功在 Conda Python 2.7 環境中安裝 Clipper(eCLIP peak caller)

🔬 成功在 Conda Python 2.7 環境中安裝 Clipper(eCLIP peak caller) 本文記錄了如何在無 root 權限下使用 Conda 環境,解決依賴、構建擴展模塊并成功安裝運行 clipper 的詳細流程。適用于再現 eCLIP 分析流程時遇到 clipper 安裝…