CMDCSkillEngine (cmdc_skill_engine v0.2.2)

Copy Markdown View Source

CMDC Skill 自进化引擎 — 对标 OpenSpace Skill Evolution 机制,对齐 Agentic Design Patterns 第 9 章(Learning and Adaptation)。

定位

cmdc_skill_engine 在 CMDC 外部运行:

快速上手

# 1) 在 Application 启动 Store GenServer
children = [CMDCSkillEngine.Store]

# 2) 在 CMDC Agent 配置里接入 Analyzer + SkillRanker
CMDC.create_agent(
  model: "qwen3-max",
  plugins: [{CMDCSkillEngine.Analyzer, [analysis_model: "qwen3-max"]}],
  skills_dirs: ["./skills"],
  skill_selector: CMDCSkillEngine.SkillRanker
)

# 3) 会话结束后,查看 Skill 质量
{:ok, record} = CMDCSkillEngine.get_record(skill_id)
CMDCSkillEngine.Types.SkillRecord.effective_rate(record)

自进化闭环(SICA-style)

Agent run  session_end  Analyzer  ExecutionAnalysis
                                   
                                   
                             QualityTracker  Store.save_record
                                   
                                   
                EvolutionSuggestions  Evolver  新版 SkillRecord
                                                     (is_active=true)
                                   
                                   
                   下次 SkillRanker 自动选中高质量版本

实现 Agent learning & adaptation 经典模式:基于会话事件流统计 + LLM-as-judge 评估 Skill 质量,自动停用低效 Skill 并演化新版本。

Summary

Functions

按 skill_id 取回档案。

按 skill_id 列表批量取回档案,返回 %{skill_id => record}

返回所有 is_active = true 的 Skill 档案。

注册一个 CMDC 发现到的 %CMDC.Skill{} 到引擎,若 skill_id 未曾入库则 自动创建 :imported origin 的初始 SkillRecord。

查询 Skill 四项质量指标 + 趋势。

追溯某个 Skill 的完整版本链(按 generation 升序)。

Functions

get_record(skill_id)

@spec get_record(String.t()) ::
  {:ok, CMDCSkillEngine.Types.SkillRecord.t()} | {:error, :not_found}

按 skill_id 取回档案。

get_records(skill_ids)

@spec get_records([String.t()]) ::
  {:ok, %{required(String.t()) => CMDCSkillEngine.Types.SkillRecord.t()}}

按 skill_id 列表批量取回档案,返回 %{skill_id => record}

list_active()

@spec list_active() :: {:ok, [CMDCSkillEngine.Types.SkillRecord.t()]}

返回所有 is_active = true 的 Skill 档案。

register_skill(skill)

@spec register_skill(map()) :: {:ok, CMDCSkillEngine.Types.SkillRecord.t()}

注册一个 CMDC 发现到的 %CMDC.Skill{} 到引擎,若 skill_id 未曾入库则 自动创建 :imported origin 的初始 SkillRecord。

适合在应用启动后一次性装载:

CMDC.Skill.discover(["./skills"])
|> Enum.each(&CMDCSkillEngine.register_skill/1)

stats(skill_id, window \\ 10)

@spec stats(String.t(), non_neg_integer()) ::
  {:ok,
   %{
     applied_rate: float(),
     completion_rate: float(),
     effective_rate: float(),
     fallback_rate: float(),
     trend: :improving | :stable | :declining
   }}
  | {:error, :not_found}

查询 Skill 四项质量指标 + 趋势。

version_chain(skill_id)

@spec version_chain(String.t()) :: {:ok, [CMDCSkillEngine.Types.SkillRecord.t()]}

追溯某个 Skill 的完整版本链(按 generation 升序)。