CMDCSkillEngine.Analyzer (cmdc_skill_engine v0.2.1)

Copy Markdown View Source

执行分析器:session_end 时分析任务执行质量。

作为 CMDC Plugin 运行,订阅事件:

  • :session_start — 从 ctx.config.skills 记录本次会话装载的 Skill 列表 (对应 OpenSpace「已选中 Skills」)。
  • {:before_prompt, text} — 累积用户消息,供 LLM 分析。
  • {:after_response, msg} — 累积助手回复,供 LLM 分析。
  • {:after_tool, ...} — 累积工具调用成败,用于生成 tool_issues
  • :session_end — 产出 ExecutionAnalysis,驱动 QualityTracker 更新、 写回 Store,并发出 :skill_analysis_completed(可选触发 Evolver)。

配置

{CMDCSkillEngine.Analyzer,
  analysis_model: "openai:gpt-4o-mini",  # nil/"builtin"/"manual"/"rule" 走规则
  enabled: true,                         # 主开关
  auto_evolve: false,                    # true 时把 suggestions 交给 Evolver
  llm_opts: [
    analysis_timeout: 15_000,
    generate_fn: nil                     # 测试可注入 stub
  ]
}

分析策略

  • 规则分析(默认):统计 tool_results 的成败 + selected_skill_ids 是否 至少一次成功调用 → 推断 task_completedevolution_suggestions 基于 工具失败或 Skill 未命中的启发式规则产出。
  • LLM 分析analysis_model 配置成 LLM model spec(如 "openai:gpt-4o-mini") 时,在 :session_endCMDCSkillEngine.Analyzer.LLM.analyze/2 产出 结构化 ExecutionAnalysis。任何失败自动降级到规则分析。

设计决策

  • Skill 选中信号:CMDC 会在 Config.skills 里保存本次会话 Selector 选中的 Skills;这是 :session_end 时唯一稳定的 selected_skills 数据源, 不需要改动 CMDC Core。
  • 降级兜底:LLM 不可用时(超时 / HTTP 失败 / schema 反序列化出错)永远 不会打断 agent 正常结束流程,只是回退到启发式规则。

Summary

Functions

手动触发一次分析,常用于离线回放或测试。

Functions

analyze(context)

@spec analyze(map()) :: {:ok, CMDCSkillEngine.Types.ExecutionAnalysis.t()}

手动触发一次分析,常用于离线回放或测试。

示例

CMDCSkillEngine.Analyzer.analyze(%{
  session_id: "sess-1",
  skills: [%CMDC.Skill{skill_id: "sk_a", ...}],
  tool_results: [%{tool: :read_file, success: true}],
  completed: true
})