Files
steven_li 8a12c30141 feat(beaver): 完成Task Team功能v1实现,重构后端架构支持统一内核
新增内部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实现技能解析机制。
2026-05-08 17:14:14 +08:00

43 lines
1.3 KiB
Python

"""Serialization helpers for structured skill lifecycle objects."""
from __future__ import annotations
from hashlib import sha256
import json
from typing import Any
def json_dumps(payload: Any) -> str:
return json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=True)
def canonical_hash(text: str) -> str:
return sha256(text.encode("utf-8")).hexdigest()
def normalize_frontmatter(frontmatter: dict[str, Any] | None) -> dict[str, Any]:
raw = dict(frontmatter or {})
normalized: dict[str, Any] = {}
for key, value in raw.items():
if value is None:
continue
if isinstance(value, str):
cleaned = value.strip()
if cleaned:
normalized[str(key)] = cleaned
continue
if isinstance(value, list):
items = [str(item).strip() for item in value if str(item).strip()]
normalized[str(key)] = items
continue
normalized[str(key)] = value
return normalized
def summarize_skill_content(content: str, *, max_lines: int = 3, max_chars: int = 240) -> str:
lines = [line.strip() for line in content.splitlines() if line.strip()]
if not lines:
return ""
summary = " ".join(lines[:max_lines]).strip()
return summary[:max_chars].strip()