diff --git a/backend/package/yuxi/agents/buildin/chatbot/graph.py b/backend/package/yuxi/agents/buildin/chatbot/graph.py index eed516be..6716dbe0 100644 --- a/backend/package/yuxi/agents/buildin/chatbot/graph.py +++ b/backend/package/yuxi/agents/buildin/chatbot/graph.py @@ -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 diff --git a/backend/package/yuxi/agents/buildin/chatbot/prompt.py b/backend/package/yuxi/agents/buildin/chatbot/prompt.py index 890795b6..367fd924 100644 --- a/backend/package/yuxi/agents/buildin/chatbot/prompt.py +++ b/backend/package/yuxi/agents/buildin/chatbot/prompt.py @@ -14,4 +14,6 @@ PROMPT = """ 当需要精准获取信息的时候,或者 query_kb 中没有找到相关的内容,还可以直接访问知识库文件系统 (路径为 /home/gem/kbs/)来获取信息。 源文件可能无法解析,可以在 /home/gem/kbs//parsed/ 中找到解析后的 markdown 文件。 + +你需要根据任务的复杂程度来使用 write_todos 来记录规划和待办事项,确保任务的每个步骤都被记录和跟踪。 """ diff --git a/backend/package/yuxi/agents/context.py b/backend/package/yuxi/agents/context.py index 62901df6..cc9c20e5 100644 --- a/backend/package/yuxi/agents/context.py +++ b/backend/package/yuxi/agents/context.py @@ -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": "内置的工具。",