24 lines
1.2 KiB
Python
24 lines
1.2 KiB
Python
from sqlalchemy import Column, String, Text, Boolean, JSON, ForeignKey
|
|
from sqlalchemy.orm import relationship
|
|
from app.models.base import BaseModel
|
|
|
|
|
|
class Skill(BaseModel):
|
|
__tablename__ = "skills"
|
|
|
|
name = Column(String(100), nullable=False, unique=True, index=True)
|
|
description = Column(Text, nullable=True) # 供 LLM 理解用途
|
|
instructions = Column(Text, nullable=False) # Agent 执行时的指令模板
|
|
agent_type = Column(String(50), nullable=False, index=True) # master/schedule_planner/executor/librarian/analyst
|
|
tools = Column(JSON, default=list) # 引用的工具名称列表
|
|
required_context = Column(JSON, default=list) # 需要的前置数据
|
|
output_format = Column(Text, nullable=True) # 输出格式要求
|
|
visibility = Column(String(20), default="private") # private/team/market
|
|
is_builtin = Column(Boolean, default=False, nullable=False)
|
|
team_id = Column(String(36), ForeignKey("users.id"), nullable=True)
|
|
is_active = Column(Boolean, default=True)
|
|
owner_id = Column(String(36), ForeignKey("users.id"), nullable=False)
|
|
|
|
owner = relationship("User", foreign_keys=[owner_id])
|
|
team = relationship("User", foreign_keys=[team_id])
|