Compare commits

...

2 Commits

Author SHA1 Message Date
朱潮
6cb7392488 Merge branch 'upgrade/deepagents-0.4.4' into bot_manager 2026-03-02 12:17:41 +08:00
朱潮
03078a2077 移除虚拟文件夹 2026-03-02 12:17:19 +08:00
2 changed files with 6 additions and 63 deletions

View File

@ -241,15 +241,15 @@ async def init_agent(config: AgentConfig):
token_counter=create_token_counter(config.model_name) token_counter=create_token_counter(config.model_name)
) )
middleware.append(summarization_middleware) middleware.append(summarization_middleware)
workspace_root = f"projects/robot/{config.bot_id}" workspace_root = str(Path.cwd() / "projects" /"robot"/ config.bot_id)
# workspace_root = str(Path.home() / ".deepagents" / config.bot_id) # workspace_root = str(Path.home() / ".deepagents" / config.bot_id)
agent, composite_backend = create_custom_cli_agent( agent, composite_backend = create_custom_cli_agent(
model=llm_instance, model=llm_instance,
assistant_id=config.bot_id, assistant_id=config.bot_id,
system_prompt=system_prompt, system_prompt=system_prompt,
tools=mcp_tools, tools=mcp_tools,
auto_approve=True, auto_approve=True,
enable_memory=False,
workspace_root=workspace_root, workspace_root=workspace_root,
middleware=middleware, middleware=middleware,
checkpointer=checkpointer, checkpointer=checkpointer,
@ -263,28 +263,6 @@ async def init_agent(config: AgentConfig):
logger.info(f"create agent elapsed: {time.time() - create_start:.3f}s") logger.info(f"create agent elapsed: {time.time() - create_start:.3f}s")
return agent, checkpointer return agent, checkpointer
class CustomAgentMemoryMiddleware(MemoryMiddleware):
"""自定义的 AgentMemoryMiddleware修改路径显示为当前目录"""
def __init__(
self,
*,
backend: FilesystemBackend,
sources: list[str],
) -> None:
super().__init__(
backend=backend,
sources=sources,
)
self.agent_dir_display = f"."
def _format_memory_content(self, memories: list[dict]) -> str:
"""Format memory content for display in system prompt.
Override to use relative path display.
"""
# 使用父类的默认实现,但路径显示已经是相对路径
return super()._format_memory_content(memories) if hasattr(super(), '_format_memory_content') else ""
class CustomSkillsMiddleware(SkillsMiddleware): class CustomSkillsMiddleware(SkillsMiddleware):
"""自定义的 SkillsMiddleware使用新的签名格式""" """自定义的 SkillsMiddleware使用新的签名格式"""
@ -332,7 +310,6 @@ def create_custom_cli_agent(
sandbox_type: str | None = None, sandbox_type: str | None = None,
system_prompt: str | None = None, system_prompt: str | None = None,
auto_approve: bool = False, auto_approve: bool = False,
enable_memory: bool = True,
enable_skills: bool = True, enable_skills: bool = True,
enable_shell: bool = True, enable_shell: bool = True,
middleware: list[AgentMiddleware] = [], middleware: list[AgentMiddleware] = [],
@ -375,14 +352,6 @@ def create_custom_cli_agent(
if tools is None: if tools is None:
tools = [] tools = []
# Setup agent directory for persistent memory (if enabled)
if enable_memory or enable_skills:
agent_dir = settings.ensure_agent_dir(assistant_id)
agent_md = agent_dir / "AGENTS.md" # 新版本使用 AGENTS.md
if not agent_md.exists():
# Create empty file for user customizations
agent_md.touch()
# Build middleware stack based on enabled features # Build middleware stack based on enabled features
agent_middleware = middleware agent_middleware = middleware
@ -402,22 +371,19 @@ def create_custom_cli_agent(
# Use LocalShellBackend for filesystem + shell execution # Use LocalShellBackend for filesystem + shell execution
backend = LocalShellBackend( backend = LocalShellBackend(
root_dir=workspace_root, root_dir=workspace_root,
virtual_mode=True,
inherit_env=True, inherit_env=True,
env=final_shell_env, env=final_shell_env,
) )
else: else:
# No shell access - use plain FilesystemBackend # No shell access - use plain FilesystemBackend
backend = FilesystemBackend(root_dir=workspace_root, virtual_mode=True) backend = FilesystemBackend(root_dir=workspace_root)
# Set up composite backend with routing (参考新版本实现) # Set up composite backend with routing (参考新版本实现)
large_results_backend = FilesystemBackend( large_results_backend = FilesystemBackend(
root_dir=tempfile.mkdtemp(prefix="deepagents_large_results_"), root_dir=tempfile.mkdtemp(prefix="deepagents_large_results_"),
virtual_mode=True,
) )
conversation_history_backend = FilesystemBackend( conversation_history_backend = FilesystemBackend(
root_dir=tempfile.mkdtemp(prefix="deepagents_conversation_history_"), root_dir=tempfile.mkdtemp(prefix="deepagents_conversation_history_"),
virtual_mode=True,
) )
composite_backend = CompositeBackend( composite_backend = CompositeBackend(
default=backend, default=backend,
@ -427,25 +393,13 @@ def create_custom_cli_agent(
}, },
) )
# Add memory middleware (using new signature)
if enable_memory:
memory_sources = [str(settings.get_user_agent_md_path(assistant_id))]
memory_sources.extend(str(p) for p in settings.get_project_agent_md_path())
agent_middleware.append(
CustomAgentMemoryMiddleware(
backend=FilesystemBackend(root_dir=workspace_root, virtual_mode=True),
sources=memory_sources,
)
)
# Add skills middleware (using new signature) # Add skills middleware (using new signature)
if enable_skills: if enable_skills:
skills_sources = ["./skills"] skills_sources = ["./skills"]
agent_middleware.append( agent_middleware.append(
CustomSkillsMiddleware( CustomSkillsMiddleware(
backend=FilesystemBackend(root_dir=workspace_root, virtual_mode=True), backend=FilesystemBackend(root_dir=workspace_root),
sources=skills_sources, sources=skills_sources,
) )
) )
@ -464,18 +418,6 @@ def create_custom_cli_agent(
routes={}, # No virtualization routes={}, # No virtualization
) )
# Add memory middleware
if enable_memory:
memory_sources = [str(settings.get_user_agent_md_path(assistant_id))]
memory_sources.extend(str(p) for p in settings.get_project_agent_md_path())
agent_middleware.append(
CustomAgentMemoryMiddleware(
backend=sandbox,
sources=memory_sources,
)
)
# Add skills middleware # Add skills middleware
if enable_skills: if enable_skills:
skills_sources = ["/skills"] skills_sources = ["/skills"]

View File

@ -11,6 +11,7 @@ import logging
from utils.settings import BACKEND_HOST, MASTERKEY from utils.settings import BACKEND_HOST, MASTERKEY
logger = logging.getLogger('app') logger = logging.getLogger('app')
from .plugin_hook_loader import execute_hooks, merge_skill_mcp_configs from .plugin_hook_loader import execute_hooks, merge_skill_mcp_configs
from pathlib import Path
def format_datetime_by_language(language: str) -> str: def format_datetime_by_language(language: str) -> str:
""" """
@ -124,7 +125,7 @@ async def load_system_prompt_async(config) -> str:
language=language_display, language=language_display,
user_identifier=user_identifier, user_identifier=user_identifier,
datetime=datetime_str, datetime=datetime_str,
agent_dir_path=".", agent_dir_path=f"{Path.cwd()}/projects/robot/{config.bot_id}",
trace_id=trace_id or "" trace_id=trace_id or ""
) )