in devel
This commit is contained in:
parent
2070475a4f
commit
7f1058b960
|
|
@ -16,6 +16,9 @@ llm:
|
||||||
stream: false
|
stream: false
|
||||||
model_path: ""
|
model_path: ""
|
||||||
ollama_host: "http://localhost:11434"
|
ollama_host: "http://localhost:11434"
|
||||||
|
database:
|
||||||
|
type: "sqlite"
|
||||||
|
url: "sqlite:///skills.db"
|
||||||
skills_directory: "C:\\Users\\sonto\\Workspace\\base_agent\\skills\\OpenCLI\\skills" # 新增:SKILL.md 文件所在目录
|
skills_directory: "C:\\Users\\sonto\\Workspace\\base_agent\\skills\\OpenCLI\\skills" # 新增:SKILL.md 文件所在目录
|
||||||
# ── 本地 MCP Server 配置 ───────────────────────────────────────
|
# ── 本地 MCP Server 配置 ───────────────────────────────────────
|
||||||
mcp:
|
mcp:
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,10 @@ class AgentConfig:
|
||||||
session_timeout: int = 3600
|
session_timeout: int = 3600
|
||||||
fallback_to_rules: bool = True
|
fallback_to_rules: bool = True
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class DatabaseConfig:
|
||||||
|
type: str = "sqlite"
|
||||||
|
url: str = None
|
||||||
|
|
||||||
# ════════════════════════════════════════════════════════════════
|
# ════════════════════════════════════════════════════════════════
|
||||||
# 顶层 AppConfig
|
# 顶层 AppConfig
|
||||||
|
|
@ -283,7 +287,8 @@ class AppConfig:
|
||||||
memory: MemoryConfig,
|
memory: MemoryConfig,
|
||||||
logging: LoggingConfig,
|
logging: LoggingConfig,
|
||||||
agent: AgentConfig,
|
agent: AgentConfig,
|
||||||
skills_directory: str = "./skills"
|
skills_directory: str = "./skills",
|
||||||
|
database: DatabaseConfig = DatabaseConfig()
|
||||||
):
|
):
|
||||||
self.llm = llm
|
self.llm = llm
|
||||||
self.mcp = mcp
|
self.mcp = mcp
|
||||||
|
|
@ -293,6 +298,7 @@ class AppConfig:
|
||||||
self.logging = logging
|
self.logging = logging
|
||||||
self.agent = agent
|
self.agent = agent
|
||||||
self.skills_directory = skills_directory
|
self.skills_directory = skills_directory
|
||||||
|
self.database = database
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def enabled_mcp_skills(self) -> list[MCPSkillConfig]:
|
def enabled_mcp_skills(self) -> list[MCPSkillConfig]:
|
||||||
|
|
@ -375,7 +381,11 @@ class ConfigLoader:
|
||||||
memory=cls._build_memory(raw.get("memory", {})),
|
memory=cls._build_memory(raw.get("memory", {})),
|
||||||
logging=cls._build_logging(raw.get("logging", {})),
|
logging=cls._build_logging(raw.get("logging", {})),
|
||||||
agent=cls._build_agent(raw.get("agent", {})),
|
agent=cls._build_agent(raw.get("agent", {})),
|
||||||
skills_directory=raw.get("skills_directory", "")
|
skills_directory=raw.get("skills_directory", ""),
|
||||||
|
database=DatabaseConfig(
|
||||||
|
type=raw.get("database", {}).get("type", "sqlite"),
|
||||||
|
url=raw.get("database", {}).get("url", "sqlite:///skills.db"),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# ── LLM ───────────────────────────────────────────────────
|
# ── LLM ───────────────────────────────────────────────────
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
# database.py
|
||||||
|
from sqlalchemy import create_engine, Column, Integer, String, DateTime, true
|
||||||
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from config.settings import settings
|
||||||
|
|
||||||
|
Base = declarative_base()
|
||||||
|
|
||||||
|
|
||||||
|
class SkillUpload(Base):
|
||||||
|
__tablename__ = 'skill_uploads'
|
||||||
|
|
||||||
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
|
name = Column(String, nullable=False, unique=True)
|
||||||
|
description = Column(String, nullable=True)
|
||||||
|
skill_id = Column(String, nullable=False, unique=True)
|
||||||
|
upload_time = Column(DateTime, default=datetime.utcnow)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"<SkillUpload(name='{self.name}', upload_time='{self.upload_time}')>"
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseManager:
|
||||||
|
"""数据库管理器,提供文件上传和查询功能"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.engine = create_engine(settings.database.url)
|
||||||
|
Base.metadata.create_all(self.engine) # 创建表
|
||||||
|
self.Session = sessionmaker(bind=self.engine)
|
||||||
|
|
||||||
|
def add_skill_upload(self, skill_name: str, skill_id: str, description: str) -> None:
|
||||||
|
"""添加技能上传记录到数据库"""
|
||||||
|
session = self.Session()
|
||||||
|
new_skill = SkillUpload(name=skill_name,
|
||||||
|
skill_id=skill_id,
|
||||||
|
description=description)
|
||||||
|
session.add(new_skill)
|
||||||
|
session.commit()
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
def get_skill_by_name(self, skill_name: str) -> SkillUpload | None:
|
||||||
|
"""根据名称查询单个技能上传记录"""
|
||||||
|
session = self.Session()
|
||||||
|
skill = session.query(SkillUpload).filter(SkillUpload.name == skill_name).first()
|
||||||
|
session.close()
|
||||||
|
return skill
|
||||||
|
|
||||||
|
def get_all_skills(self) -> list[SkillUpload]:
|
||||||
|
"""获取所有技能上传记录"""
|
||||||
|
session = self.Session()
|
||||||
|
skills = session.query(SkillUpload).all()
|
||||||
|
session.close()
|
||||||
|
return skills
|
||||||
|
|
||||||
|
def skill_exists(self, skill_name: str) -> bool:
|
||||||
|
"""检查技能是否已上传"""
|
||||||
|
session = self.Session()
|
||||||
|
exists = session.query(SkillUpload).filter(SkillUpload.name == skill_name).count() > 0
|
||||||
|
session.close()
|
||||||
|
return exists
|
||||||
|
|
||||||
|
db_manager: DatabaseManager = DatabaseManager()
|
||||||
Loading…
Reference in New Issue