refactor: 优化文件系统后端结构
This commit is contained in:
parent
1a1f86209f
commit
69281f6fe1
@ -4,7 +4,6 @@ from fastapi import FastAPI
|
||||
|
||||
from src.services.task_service import tasker
|
||||
from src.services.mcp_service import init_mcp_servers
|
||||
from src.services.skill_service import init_skills_cache
|
||||
from src.services.run_queue_service import close_queue_clients, get_redis_client
|
||||
from src.storage.postgres.manager import pg_manager
|
||||
from src.knowledge import knowledge_base
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
from .skills_backend import SelectedSkillsReadonlyBackend, create_agent_composite_backend
|
||||
from deepagents.backends import CompositeBackend, StateBackend
|
||||
|
||||
from .composite import create_agent_composite_backend
|
||||
from .skills_backend import SelectedSkillsReadonlyBackend
|
||||
|
||||
__all__ = [
|
||||
"CompositeBackend",
|
||||
"StateBackend",
|
||||
"SelectedSkillsReadonlyBackend",
|
||||
"create_agent_composite_backend",
|
||||
]
|
||||
|
||||
29
src/agents/common/backends/composite.py
Normal file
29
src/agents/common/backends/composite.py
Normal file
@ -0,0 +1,29 @@
|
||||
from deepagents.backends import CompositeBackend, StateBackend
|
||||
|
||||
from src.services.skill_resolver import normalize_selected_skills
|
||||
from src.services.skill_service import is_valid_skill_slug
|
||||
|
||||
from .skills_backend import SelectedSkillsReadonlyBackend
|
||||
|
||||
|
||||
def _get_visible_skills_from_runtime(runtime) -> list[str]:
|
||||
context = getattr(runtime, "context", None)
|
||||
snapshot = getattr(context, "skill_session_snapshot", None)
|
||||
if isinstance(snapshot, dict):
|
||||
visible = snapshot.get("visible_skills")
|
||||
if isinstance(visible, list):
|
||||
return [slug for slug in visible if isinstance(slug, str) and is_valid_skill_slug(slug)]
|
||||
|
||||
selected = getattr(context, "skills", None) or []
|
||||
return normalize_selected_skills(selected)
|
||||
|
||||
|
||||
def create_agent_composite_backend(runtime) -> CompositeBackend:
|
||||
"""为 agent 构建 backend:默认 StateBackend + /skills 路由只读 backend。"""
|
||||
visible_skills = _get_visible_skills_from_runtime(runtime)
|
||||
return CompositeBackend(
|
||||
default=StateBackend(runtime),
|
||||
routes={
|
||||
"/skills/": SelectedSkillsReadonlyBackend(selected_slugs=visible_skills),
|
||||
},
|
||||
)
|
||||
@ -3,10 +3,9 @@ from __future__ import annotations
|
||||
from pathlib import PurePosixPath
|
||||
from typing import Any
|
||||
|
||||
from deepagents.backends import CompositeBackend, FilesystemBackend, StateBackend
|
||||
from deepagents.backends import FilesystemBackend
|
||||
from deepagents.backends.protocol import EditResult, FileDownloadResponse, FileUploadResponse, WriteResult
|
||||
|
||||
from src.services.skill_resolver import normalize_selected_skills
|
||||
from src.services.skill_service import get_skills_root_dir, is_valid_skill_slug
|
||||
|
||||
|
||||
@ -118,26 +117,3 @@ class SelectedSkillsReadonlyBackend(FilesystemBackend):
|
||||
continue
|
||||
responses.append(FileDownloadResponse(path=path, content=target.read_bytes(), error=None))
|
||||
return responses
|
||||
|
||||
|
||||
def create_agent_composite_backend(runtime) -> CompositeBackend:
|
||||
"""为 agent 构建 backend:默认 StateBackend + /skills 路由只读 backend。"""
|
||||
visible_skills = _get_visible_skills_from_runtime(runtime)
|
||||
return CompositeBackend(
|
||||
default=StateBackend(runtime),
|
||||
routes={
|
||||
"/skills/": SelectedSkillsReadonlyBackend(selected_slugs=visible_skills),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def _get_visible_skills_from_runtime(runtime) -> list[str]:
|
||||
context = getattr(runtime, "context", None)
|
||||
snapshot = getattr(context, "skill_session_snapshot", None)
|
||||
if isinstance(snapshot, dict):
|
||||
visible = snapshot.get("visible_skills")
|
||||
if isinstance(visible, list):
|
||||
return [slug for slug in visible if isinstance(slug, str) and is_valid_skill_slug(slug)]
|
||||
|
||||
selected = getattr(context, "skills", None) or []
|
||||
return normalize_selected_skills(selected)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user