前面幾天,我們已經對 Agent 所需要的東西有個概念(當然還不是全部),包括 config、datasource,以及 tools,接下來想介紹這個 project 會使用的 framework:Deep Agents,以及它背後一個很重要的概念:Harness Engineering。
Deep Agents 是 LangChain 提供的 open-source Agent harness framework,建立在 LangGraph 之上。
可以先把它簡單理解成:
Deep Agents
↓
LangChain
↓
LangGraph
LangGraph 提供比較底層的 Agent runtime,而 Deep Agents 則把很多常見的 Agent capabilities 先準備好。
例如:

如果直接使用 LangGraph,我們可以自己控制很多細節,但相對地也代表很多細節都要自己處理。
Deep Agents 比較像是在 LangGraph 上先準備好一套可以直接工作的環境,我們再針對 project 真正需要的地方進行調整。
可以先把 Agent 簡單想成:
Agent = Model + Harness
Model 提供 reasoning 與 intelligence,Harness 則是 model 周圍的 environment。
例如:
這些都屬於 harness engineering 的範圍。
所以即使兩個 Agent 使用同一個 model,最後表現也可能差很多。
差別可能來自:
也就是說,model 很重要,但 我們怎麼讓 model 工作 同樣重要。
我們當然可以直接使用 LangGraph,自己建立整個 Agent flow。
但在這個 project 裡,我不想把太多時間花在重新實作一些常見的 Agent infrastructure。
Deep Agents 已經提供不少可以直接使用的能力,例如:
Context
↓
Model
↓
Tool Calling
↓
Execution
↓
Result
以及:
Agent
↓
Subagent
這些能力可以讓我們更快把注意力放在真正和這個 project 有關的問題:
Deep Agents 也讓我們可以在 model call 前後加入自己的處理邏輯。
例如,在呼叫 model 之前,可能會做:
在 model response 之後,也可能會做:
這也是 harness engineering 很重要的一部分。
我們不是只把 prompt 丟給 model,然後等待答案。
而是在 model 周圍建立一個可以持續控制 execution 的 environment。
結合昨天內容的 Deep Agent 實作如下,:
from deepagents import create_deep_agent
agent = create_deep_agent(
model=model,
tools=[
read_file,
query_database,
],
system_prompt="""
You are a data analysis agent.
Use the available tools to inspect the datasource
before making conclusions about the data.
""",
)
這只是一個簡單的範例,之後把需要的 component 都介紹完就會開始組合起來,到時候就會看到怎麼建立。
自己從 LangGraph 開始做當然可以,而且可以得到更多控制權。
但對這個系列來說,目標不是重新建立一套 Agent framework。
我們比較想把時間放在:
User Intent
↓
Agent
↓
Tools
↓
Analysis Code
↓
Execution
↓
Result
所以使用 Deep Agents,可以讓我們跳過一些已經有成熟解法的 infrastructure,把重點放在這個 project 真正想解決的問題。
今天先把 Deep Agents 和 harness engineering 的角色講清楚。
下一篇會往更底層一點,看 Agent 裡面的 ChatModel 到底提供哪些能力,包括:
理解這些能力之後,再回來看 Deep Agents 怎麼把它們組合成一個完整的 Agent。