36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""agent 核心模块导出入口。
|
|
|
|
这里刻意改成懒加载导出:
|
|
1. 避免 `nanobot.agent` 被导入时立即拉起一整串重量级依赖;
|
|
2. 降低循环导入概率,特别是 `loop/context/skills` 之间的交叉引用;
|
|
3. 保持对外 API 不变,调用方仍然可以 `from nanobot.agent import AgentLoop`。
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
__all__ = ["AgentLoop", "ContextBuilder", "MemoryStore", "SkillsLoader"]
|
|
|
|
|
|
def __getattr__(name: str) -> Any:
|
|
# 只有访问某个导出符号时才真正 import 对应模块,避免 import-time 副作用。
|
|
if name == "AgentLoop":
|
|
from nanobot.agent.loop import AgentLoop
|
|
|
|
return AgentLoop
|
|
if name == "ContextBuilder":
|
|
from nanobot.agent.context import ContextBuilder
|
|
|
|
return ContextBuilder
|
|
if name == "MemoryStore":
|
|
from nanobot.agent.memory import MemoryStore
|
|
|
|
return MemoryStore
|
|
if name == "SkillsLoader":
|
|
from nanobot.agent.skills import SkillsLoader
|
|
|
|
return SkillsLoader
|
|
# 交给 Python 默认语义处理不存在的导出名。
|
|
raise AttributeError(name)
|