Files

29 lines
1.0 KiB
Python
Raw Permalink Normal View History

"""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"