feat(agent): 重新给默认智能体添加 TODO 中间件

This commit is contained in:
Wenjie Zhang 2026-04-01 01:57:40 +08:00
parent 8f613b0caf
commit 3ec8305eab
3 changed files with 8 additions and 5 deletions

View File

@ -2,7 +2,7 @@ from deepagents.middleware.filesystem import FilesystemMiddleware
from deepagents.middleware.patch_tool_calls import PatchToolCallsMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware
from langchain.agents.middleware import ModelRetryMiddleware, TodoListMiddleware
from yuxi.agents import BaseAgent, BaseState, load_chat_model
from yuxi.agents.backends import create_agent_composite_backend
@ -47,15 +47,16 @@ async def _build_middlewares(context):
)
# all middlewares
middlewares = [
save_attachments_to_fs, # 附件注入提示词
FilesystemMiddleware(backend=create_agent_composite_backend), # 文件系统后端
save_attachments_to_fs, # 附件注入提示词
KnowledgeBaseMiddleware(), # 知识库工具
RuntimeConfigMiddleware(extra_tools=all_mcp_tools), # 运行时配置应用(模型/工具/MCP/提示词)
SkillsMiddleware(), # Skills 中间件(提示词注入、依赖展开、动态激活)
subagents_middleware,
summary_middleware,
ModelRetryMiddleware(), # 模型重试中间件
TodoListMiddleware(system_prompt="任务结束前,应该检查维护的待办事项列表是否结束。"),
PatchToolCallsMiddleware(),
ModelRetryMiddleware(), # 模型重试中间件
]
return middlewares

View File

@ -14,4 +14,6 @@ PROMPT = """
当需要精准获取信息的时候或者 query_kb 中没有找到相关的内容还可以直接访问知识库文件系统
路径为 /home/gem/kbs/来获取信息
源文件可能无法解析可以在 /home/gem/kbs/<db_name>/parsed/ 中找到解析后的 markdown 文件
你需要根据任务的复杂程度来使用 write_todos 来记录规划和待办事项确保任务的每个步骤都被记录和跟踪
"""

View File

@ -48,8 +48,8 @@ class BaseContext:
},
)
tools: Annotated[list[dict], {"__template_metadata__": {"kind": "tools"}}] = field(
default_factory=list,
tools: Annotated[list[str], {"__template_metadata__": {"kind": "tools"}}] = field(
default_factory=lambda: ["ask_user_question", "tavily_search"],
metadata={
"name": "工具",
"description": "内置的工具。",