执行分析器: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_completed;evolution_suggestions基于 工具失败或 Skill 未命中的启发式规则产出。 - LLM 分析:
analysis_model配置成 LLM model spec(如"openai:gpt-4o-mini") 时,在:session_end调CMDCSkillEngine.Analyzer.LLM.analyze/2产出 结构化ExecutionAnalysis。任何失败自动降级到规则分析。
设计决策
- Skill 选中信号:CMDC 会在
Config.skills里保存本次会话 Selector 选中的 Skills;这是:session_end时唯一稳定的selected_skills数据源, 不需要改动 CMDC Core。 - 降级兜底:LLM 不可用时(超时 / HTTP 失败 / schema 反序列化出错)永远 不会打断 agent 正常结束流程,只是回退到启发式规则。
Summary
Functions
手动触发一次分析,常用于离线回放或测试。
Functions
@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
})