# leaf-playground 框架核心领域概念

- action_definition: `leaf_playground.core.scene_definition.ActionDefinition`，一个 pydantic 数据模型，用于存储对于一个动作的定义，其包含以下字段
    - name：动作名称
    - description：动作描述
    - signature：`leaf_playground.core.scene_definition.ActionSignatureDefinition`，动作方法签名定义，基于该定义，ActionDefinition 可以利用自己的对象方法 get_signature 来生成一个 `inspect.Signature` 实例

- role_definition: `leaf_playground.core.scene_definition.RoleDefinition`，一个 pydantic 数据模型，用于存储对于一个角色的定义，其包含以下字段
    - name：str, 角色名称
    - description：str, 角色描述
    - actions：List[leaf_playground.core.scene_definition.ActionDefinition]，对角色可执行的一系列动作的定义，每个角色对应的智能体（SceneAgent）类必须实现与全部 actions 同名且签名与 ActionDefinition.get_signature 返回结果完全一致的方法
    - num_agents_range：int，一个角色对应的智能体实例数量范围，左值（大于等于）为大于等于 1 的正整数，右值（小于等于）为 -1 或大于等于 1 的正整数，当右值为 -1 时表明数量无上限
    - is_static：bool，标志一个角色是否为“静态”角色，所谓“静态”角色是指该角色的所有动作执行结果是可预测的（即程序性的）；与之相对的是“动态”角色，即角色的动作执行结果不可预测，通常这意味着角色对应的智能体是一个人类或人工智能。所有“静态”角色的智能体（SceneAgent 对象）子类继承自 `leaf_playground.core.scene_agent.SceneStaticAgent`，否则继承自 `leaf_playground.core.scene_agent.SceneAIAgent` 或 `leaf_playground.core.scene_agent.SceneHumanAgent`

- scene_definition: `leaf_playground.core.scene_definition.SceneDefinition`， 一个 pydantic 数据模型，用于存储对于一个场景的定义，其包含以下字段
    - name：str，场景名称
    - description：str，场景描述
    - env_vars：List[leaf_playground.core.scene_definition.EnvVarDefinition]，场景中环境变量的定义
    - roles：List[leaf_playground.core.scene_definition.RoleDefinition]，场景中各角色的定义

- agent: `leaf_playground.core.scene_agent.SceneAgent`，参与场景化模拟任务的智能体对象的抽象基类，具有如下的类变量
    - role_definition: `leaf_playground.core.scene_definition.RoleDefinition`，对一个具体角色的智能体的定义，在开发时开发者需要基于该定义来实现对应角色的类对象，注意，一个角色通常有一个角色基类，在此之下可以有多种的具体子类实现，其包含以下字段

- scene: `leaf_playground.core.scene.Scene`，场景对象的抽象基类，其具有如下的类变量和抽象方法
    - scene_definition: `leaf_playground.core.scene_definition.SceneDefinition`，类变量，对一个具体的场景的定义
    - _run: 抽象方法，方法签名为 `async def _run(self): -> None`，每个 Scene 子类都必须实现该方法，在其中编排场景运行流程，主要是不同角色的智能体相互之间的交互逻辑