From 3ec8305eabb05591564d34b64c90794b7c53ddb7 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Wed, 1 Apr 2026 01:57:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=E9=87=8D=E6=96=B0=E7=BB=99?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=99=BA=E8=83=BD=E4=BD=93=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20TODO=20=E4=B8=AD=E9=97=B4=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/package/yuxi/agents/buildin/chatbot/graph.py | 7 ++++--- backend/package/yuxi/agents/buildin/chatbot/prompt.py | 2 ++ backend/package/yuxi/agents/context.py | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) 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": "内置的工具。",