
1. 相關面試真題1.1. DeepAgents與 LangChain createAgent、原生 LangGraph 的核心區別是什么?請分別說明它們的適用場景。1. 定位差異:DeepAgents 是 Agent Harness(智能體執行環境),提供開箱即用的生產級運行時;createAgent 是簡單工具調用循環;LangGraph 是底層工作流編排引擎。2. 能力差異:DeepAgents 內置規劃、虛擬文件系統、子代理、技能系統;createAgent 僅支持基礎工具調用;LangGraph 需要手動實現所有能力。3. 適用場景:DeepAgents:復雜多步驟任務(代碼開發、研究分析)。createAgent:單輪工具調用、簡單問答。LangGraph:需要高度定制的特殊業務流程。1.2. DeepAgents 的子代理 Subagents 機制解決了什么核心問題?它與普通工具調用的本質區別是什么?1. 解決的問題:上下文污染與膨脹問題。傳統工具調用的所有中間結果都會進入主代理上下文,導致窗口溢出和注意力分散。2. 本質區別:子代理擁有獨立的上下文、系統提示詞和工具集,執行過程完全隔離。主代理只接收子代理的最終結果,不關心中間過程。子代理可以使用不同的模型和權限,實現專業分工。3. 額外優勢:子任務失敗不影響主流程、支持并行執行、便于權限控制。2. DeepAgents核心認知與快速上手2.1. 什么是DeepAgents?1. 官方定義DeepAgents是一個基于LangGraph構建的獨立智能體庫,專為復雜多步驟任務設計。它受到Claude Code、Deep Research和Manus等前沿智能體應用的啟發,內置了規劃能力、文件系統上下文管理和子代理生成能力。2. 解決的三大核心痛點傳統Agent開發中,你會遇到這些無法回避的問題:上下文窗口溢出:工具返回大量結果,很快填滿上下文窗口。長任務不可靠:執行多步任務時,Agent容易迷失方向、忘記目標。多角色協作復雜:需要手動實現子代理的創建、通信和結果整合。DeepAgents把這些問題都變成了可配置的能力,你不需要自己從零開始實現。3. 與其他技術的對比4. 核心設計思想:Agent HarnessHarness的字面意思是"馬具",它的作用是把馬(模型)套住,讓它按照你的方向前進。Harness架構的核心思想:模型只負責推理決策這一件事。Harness負責所有工程化問題:環境、權限、存儲、隔離、觀測。把智能體放進一個可控、安全、可觀測的工作臺中。你可以把它想象成一個智能體的"操作系統":模型是CPU,Harness提供了內存管理、文件系統、進程管理、安全機制等所有操作系統能力。2.2. 快速上手1. 環境準備# 創建項目 mkdir deepagents-demo cd deepagents-demo npm init -y # 安裝依賴 npm install deepagents @langchain/openai @langchain/langgraph zod dotenv npm install -D tsup typescript @types/node2. 配置TypeScript// tsconfig.json { "compilerOptions": { "target": "ES2022", "module": "ESNext", "moduleResolution": "bundler", "esModuleInterop": true, "skipLibCheck": true, "strict": true, "outDir": "dist" }, "include": ["src/**/*"] }3. 配置環境變量// .env ARK_API_KEY=your-volcengine-ark-api-key DEEPAGENTS_MODEL=doubao-seed-2.0-mini OPENAI_BASE_URL=https://ark.cn-beijing.volces.com/api/plan/v34. 最小可運行示例// src/core/index.ts import "dotenv/config"; import { createDeepAgent } from "deepagents"; import { ChatOpenAI } from "@langchain/openai"; import { tool } from "langchain"; import { z } from "zod"; // 1. 定義一個簡單的業務工具 const searchKnowledgeBase = tool( async ({ topic }) = { // 模擬知識庫查詢 const knowledge = { "deepagents": "DeepAgents是基于LangGraph的智能體執行環境,專為復雜多步驟任務設計。", "harness": "Harness是DeepAgents的核心架構思想,將模型與工程化能力分離。" }; return knowledge[topic] || "暫無相關信息"; }, { name: "search_knowledge_base", description: "查詢DeepAgents知識庫", schema: z.object({ topic: z.string().describe("要查詢的主題") }) } ); // 2. 初始化模型 const model = new ChatOpenAI({ model: process.env.DEEPAGENTS_MODEL!, apiKey: process.env.ARK_API_KEY!, baseURL: process.env.OPENAI_BASE_URL!, }); // 3. 創建DeepAgent(一行代碼獲得所有內置能力) const agent = createDeepAgent({ model, tools: [searchKnowledgeBase], // 只需要傳入業務工具 systemPrompt: "你是DeepAgents課程助教。先用write_todos拆解任務,再調用必要工具。", }); // 4. 調用智能體 async function main() { const result = await agent.invoke({ messages: [{ role: "user", content: "解釋什么是DeepAgents和Harness架構" }], }); console.log("最終回答:", result.messages.at(-1)?.content); } main();5. 運行驗證npx tsx src/core/index.ts3. DeepAgents 四大核心能力詳解3.1. 規劃與任務分解傳統Agent處理長任務時,就像一個沒有計劃的人,走一步看一步,很容易在執行過程中迷失方向,忘記最初的目標。1. DeepAgents的解決方案:內置規劃系統DeepAgents內置了 write_todos 工具和自適應規劃引擎,讓Agent能夠:將復雜目標自動拆解為可執行的離散步驟。實時跟蹤每個步驟的執行狀態。根據新信息動態調整計劃。2. 核心概念待辦事項(Todo):一個可執行的最小任務單元。任務樹:復雜任務可以嵌套多層待辦事項。進度跟蹤:自動更新待辦事項的狀態(未開始/進行中/已完成/已失?。討B調整:當遇到意外情況時,自動修改或重新生成計劃。3. 關鍵用法你不需要手動實現任何規劃邏輯,只需要在系統提示詞中簡單引導:const agent = createDeepAgent({ model, systemPrompt: ` 你是一個專業的項目助理。 1. 收到任務后,首先使用write_todos工具將任務拆解為3-5個步驟 2. 每完成一個步驟,更新待辦事項的狀態 3. 如果?到問題,調整計劃并說明原因 4. 所有步驟完成后,輸出最終結果 `, });4. 執行流程演示當你請求"生成一個DeepAgents課程大綱”時,Agent會自動執行以下步驟:1. 調用write_todos生成計劃: - [ ] 分析DeepAgents的核心能力 - [ ] 設計課程結構和時間分配 - [ ] 編寫每個模塊的詳細內容 - [ ] 添加實戰項目和最佳實踐 - [ ] 審核并完善課程大綱 2. 逐個執行步驟,自動更新狀態: - [x] 分析DeepAgents的核心能力 - [x] 設計課程結構和時間分配 - [ ] 編寫每個模塊的詳細內容 ... 3. 遇到新信息時自動調整計劃: - 發現需要添加生產部署內容,新增步驟: - [ ] 添加生產部署和安全最佳實踐5. 最佳實踐不要硬編碼任務步驟:讓Agent自己決定如何分解任務,它比你更擅長。控制計劃粒度:每個步驟應該能在1-3輪工具調用內完成。允許動態調整:不要要求Agent嚴格按照初始計劃執行,要給它調整的空間。復雜任務使用嵌套計劃:對于特別復雜的任務,可以讓Agent生成多層嵌套的待辦事項。3.2. 虛擬文件系統大模型的上下文窗口是有限的,當工具返回大量結果(比如讀取一個上千行的代碼文件)時,很快就會填滿上下文窗口,導致后續執行失敗。1.DeepAgents的解決方案:文件系統優先的上下文管理DeepAgents的核心設計理念之一是:所有大文本、工具輸出都應該寫入文件,上下文只保留文件路徑和摘要。當工具返回超過一定大小的結果時,DeepAgents會自動將其寫入文件,然后在上下文中只保留文件路徑。需要時,Agent再讀取文件的具體內容。這種設計徹底解決了上下文溢出問題,讓Agent能夠處理任意大小的文本和數據。2.四大內置BackendBackend是虛擬文件系統的底層實現,決定了文件實際存儲在哪里。DeepAgents提供了四種內置Backend:3. 關鍵用法:CompositeBackend路由最常用的是CompositeBackend它允許你將不同的虛擬路徑映射到不同的Backend:import { CompositeBackend, StateBackend, FilesystemBackend, StoreBackend } from "deepagents"; import { InMemoryStore } from "@langchain/langgraph"; import * as path from "path"; const store = new InMemoryStore(); const workspaceRoot = path.join(process.cwd(), "data", "workspace"); // 配置多路徑路由 const backend = new CompositeBackend( new StateBackend(), // 默認后端:所有未匹配的路徑 { // /workspace/路徑映射到本地文件系統 "/workspace/": new FilesystemBackend({ rootDir: workspaceRoot, virtualMode: true, // 啟用虛擬路徑映射 }), // /memories/路徑映射到StoreBackend "/memories/": new StoreBackend({ store }), } ); const agent = createDeepAgent({ model, backend, // 配置文件系統權限(白名單模式) permissions: [ { operations: ["read"], paths: ["/"], mode: "allow" }, { operations: ["read", "write"], paths: ["/workspace/**"], mode: "allow" }, { operations: ["read", "write"], paths: ["/memories/**"], mode: "allow" }, { operations: ["read", "write"], paths: ["/**"], mode: "deny" }, // 最后拒絕所有 ], });4. 權限系統詳解DeepAgents的權限系統采用白名單優先原則:先匹配最具體的路徑規則。沒有匹配到的路徑,使用默認規則。建議最后添加一條 deny /** 規則