# Copyright 2026 zhaoxi826 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from sqlmodel import SQLModel, Field from typing import List, Optional from sqlalchemy import Column, JSON from enum import Enum class AgentType(str, Enum): """AgentType 核心组件类。 这是一个领域数据模型或功能封装类,承载了 AgentType 相关的内聚属性定义与状态维护。它的存在隔离了局部的业务复杂性,并对外提供了类型安全的访问接口。 """ SKILL_INDIVIDUAL = "skill_individual" ORDINARY_INDIVIDUAL = "ordinary_individual" SPECIAL_INDIVIDUAL = "special_individual" class WorkerIndividual(SQLModel, table=True): """WorkerIndividual 核心组件类。 这是一个具体的 Worker 智能体实体类,代表着具备特定人设、领域技能或长文本处理能力的数字员工。它可以被控制器动态拉起,并在安全沙箱内执行复杂的工作流指令与多步骤推理任务。 """ __tablename__ = "worker_individual" agent_id: str = Field(primary_key=True) agent_name: str = Field(index=True) agent_type: AgentType description: str = Field(nullable=False) provider_title: str model_id: str system_prompt: Optional[str] output_template: Optional[dict] = Field(sa_column=Column(JSON),description="输出模板标识") bound_skill: Optional[str] = Field(sa_column=Column(JSON)) workspace: Optional[List[str]] = Field(sa_column=Column(JSON)) tools: Optional[List[str]] = Field(sa_column=Column(JSON), default=None) owner_id: str