feat: tune deep agent tool and context limits

This commit is contained in:
肖泽涛 2026-02-25 16:30:44 +08:00
parent b7edef1042
commit fcc835f93a

View File

@ -6,6 +6,7 @@ from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import (
TodoListMiddleware,
ToolCallLimitMiddleware,
)
from src.agents.common import BaseAgent, load_chat_model
@ -103,12 +104,22 @@ class DeepAgent(BaseAgent):
# Build subagents with search tools
research_sub_agent = _get_research_sub_agent(search_tools)
# 主 Agent 上下文优化90k tokens 触发压缩128k context window 的 70%
summary_middleware = SummaryOffloadMiddleware(
model=model,
trigger=("tokens", 160000),
trim_tokens_to_summarize=None,
summary_offload_threshold=1000,
max_retention_ratio=0.6,
trigger=("tokens", 90000),
trim_tokens_to_summarize=4000,
summary_offload_threshold=500,
max_retention_ratio=0.5,
)
# 子 Agent 独立的上下文优化:更激进的压缩策略
sub_summary_middleware = SummaryOffloadMiddleware(
model=sub_model,
trigger=("tokens", 50000),
trim_tokens_to_summarize=2000,
summary_offload_threshold=300,
max_retention_ratio=0.4,
)
subagents_middleware = SubAgentMiddleware(
@ -123,7 +134,13 @@ class DeepAgent(BaseAgent):
enable_tools_override=False,
),
PatchToolCallsMiddleware(),
summary_middleware,
sub_summary_middleware,
# 子 Agent 搜索工具限制tavily_search 最多 8 次
ToolCallLimitMiddleware(
tool_name="tavily_search",
run_limit=8,
exit_behavior="continue",
),
],
general_purpose_agent=True,
)
@ -140,6 +157,17 @@ class DeepAgent(BaseAgent):
PatchToolCallsMiddleware(),
subagents_middleware,
summary_middleware,
# 工具调用限制tavily_search 总调用最多 20 次
ToolCallLimitMiddleware(
tool_name="tavily_search",
thread_limit=20,
exit_behavior="continue",
),
# 总工具调用轮次限制:防止单次运行无限循环
ToolCallLimitMiddleware(
run_limit=50,
exit_behavior="end",
),
],
checkpointer=await self._get_checkpointer(),
)