新增内部Task系统,包括验证、反馈门控机制,实现自动质量验证 (通过率>=0.75)和用户反馈闭环(satisfied/revise/abandon)。 实现Agent Team v1协调器,支持sequence/parallel/dag执行策略, sub-agent复用主AgentLoop,每个run使用独立memory snapshot。 建立Skill学习pipeline,包含draft/审核/发布/回滚完整生命周期, 通过Task验证通过且用户满意才生成学习候选。 重构目录结构,移除third_party依赖,建立统一engine内核, 所有agent共享运行时基础组件。 更新ContextBuilder清理provider消息字段,增强SkillContext版本管理, 集成TaskExecutionPlanner和TaskSkillResolver实现技能解析机制。
61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
"""Runtime skill resolver。
|
|
|
|
这层负责回答一个运行时问题:
|
|
“这一次调用,哪些 skill 要被激活,并以什么形式注入上下文?”
|
|
|
|
第一版保持保守,只综合三类来源:
|
|
1. `always` skills
|
|
|
|
不在这里做复杂的语义匹配或自动推荐。
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
|
|
from beaver.engine.context import SkillContext
|
|
from beaver.skills.catalog.loader import SkillsLoader
|
|
from beaver.skills.catalog.utils import strip_frontmatter
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class ResolvedSkillSet:
|
|
"""一次运行最终解析出的 skills 结果。"""
|
|
|
|
activated_skills: list[SkillContext] = field(default_factory=list)
|
|
|
|
|
|
class RuntimeSkillResolver:
|
|
"""把 profile/request 转成当前轮次真正激活的 skill 集合。"""
|
|
|
|
def __init__(self, loader: SkillsLoader) -> None:
|
|
self.loader = loader
|
|
|
|
def resolve(
|
|
self,
|
|
) -> ResolvedSkillSet:
|
|
selected: list[str] = []
|
|
for name in self.loader.get_always_skills():
|
|
if name not in selected:
|
|
selected.append(name)
|
|
|
|
activated_skills: list[SkillContext] = []
|
|
for name in selected:
|
|
record = self.loader.get_skill_record(name)
|
|
raw_content = self.loader.load_published_skill(name)
|
|
content = strip_frontmatter(raw_content).strip() if raw_content else ""
|
|
if not content:
|
|
continue
|
|
activated_skills.append(
|
|
SkillContext(
|
|
name=name,
|
|
content=content,
|
|
version=record.version if record is not None else "legacy",
|
|
content_hash=(record.content_hash if record is not None and record.content_hash else ""),
|
|
activation_reason="always_skill",
|
|
tool_hints=list(record.tool_hints) if record is not None else [],
|
|
)
|
|
)
|
|
|
|
return ResolvedSkillSet(activated_skills=activated_skills)
|