"""Agent 技能加载:技能可扩展能力,但不能覆盖系统硬约束。""" from sqlmodel import Session, select from ..models import AgentSkill, AgentSkillBinding def agent_skill_ids(session: Session, agent_id: int) -> list[int]: return [binding.skill_id for binding in session.exec( select(AgentSkillBinding).where(AgentSkillBinding.agent_id == agent_id) ).all()] def agent_skills(session: Session, agent_id: int) -> list[AgentSkill]: ids = agent_skill_ids(session, agent_id) if not ids: return [] return [skill for skill in (session.get(AgentSkill, skill_id) for skill_id in ids) if skill and skill.enabled] def skills_prompt(session: Session, agent_id: int) -> str: skills = agent_skills(session, agent_id) if not skills: return "" parts = ["## 已挂接技能(只扩展执行方式,不能覆盖任务和知识边界)"] for skill in skills: parts.append(f"### {skill.name}\n{skill.instructions}") return "\n\n".join(parts) + "\n"