本项目遵循 Semantic Versioning 与 Keep a Changelog 规范。
[0.2.1] - 2026-05-16
Compatibility patch — 让 cmdc_skill_engine 与 cmdc 0.4 主线生态
对齐,并补 Phase 11E benchmark 工具链(v0.2.0 后 commit 但未发布)。
Changed — cmdc 依赖范围升级
{:cmdc, "~> 0.2"}→{:cmdc, "~> 0.4"}- 背景:
~> 0.2严格语义>= 0.2.0 and < 0.3.0阻塞与 cmdc 0.3/0.4 共存。用户同时引入 cmdc 0.4 + cmdc_skill_engine 0.2 会 触发 Hex 版本冲突 - 兼容性核实:本库依赖的 cmdc 抽象(
CMDC.Pluginbehaviour +CMDC.SystemPromptSkills 注入接口)都在 v0.1 起稳定,且 v0.2-v0.4 无 breaking change(除 v0.3 #B21 facade tuple,本库不调 facade) - 无运行时行为变更
- 背景:
Added — Benchmark 工具链(Phase 11E.18 补发)
- 新增
benchmark/quality_update.exs— 100 skills × 10 轮 quality_update 传播 Benchee suite(Store + QualityTracker 热路径性能基线) benchmark/README.md— benchmark 运行指引:benchee, ~> 1.3加入dev / test依赖
Migration
- 老用户仍用 cmdc 0.2 → 锁
{:cmdc_skill_engine, "0.2.0"}即可 - 想用 cmdc 0.4 → 升级到
{:cmdc_skill_engine, "~> 0.2.1"}
[0.2.0] - 2026-04-25
真实自进化闭环 —— 对齐 Agentic Design Patterns 第 9 章 (Learning and Adaptation) 与 OpenSpace SkillEvolver。
Added
CMDCSkillEngine.Store.Backendbehaviour — 存储后端抽象层,定义init/1 / get_record/2 / save_record/2 / list_all/1 / update_counters/3 / reset/1 / terminate/1契约。CMDCSkillEngine.Store.Backend.ETS— v0.1 的默认后端,单节点开发/测试首选。CMDCSkillEngine.Store.Backend.SQLite— 基于exqlite的持久化后端,自动 创建 schema + 索引,支持 JSON 字段序列化(lineage / recent_analyses / tags)。CMDCSkillEngine.Analyzer.LLM— ReqLLMgenerate_object/4驱动的结构化 分析器;强制输出task_completed / execution_note / tool_issues / skill_judgments / evolution_suggestions;自带超时控制与:generate_fn注入钩子便于离线测试。CMDCSkillEngine.SkillRanker.Semantic— 新的 Selector 实现,结合 BM25 关键词相关性、effective_rate质量反馈与可选ReqLLM.embed/3语义向量 相似度(:embedding_model未配置时自动退化为 BM25 + 质量加权)。CMDCSkillEngine.QualityTracker.should_deactivate?/2+update_from_analysis/3— 新增自动停用规则:达到min_samples后,若applied_rate < applied_min或effective_rate < effective_min且trend != :improving,自动把is_active = false。CMDCSkillEngine.Evolverfix 链长度上限(默认 5);超过时返回{:error, {:fix_chain_too_long, generation, max_depth}},防止进化链 失控膨胀。example/skill_evolution_demo.exs— 10 轮会话的完整自进化演示,无 LLM 依赖,可mix run复现。test/cmdc_skill_engine/stress_test.exs— 1000 轮收敛压力测试,验证 QualityTracker 能在合理轮次内识别并停用低质量 Skill。
Changed
CMDCSkillEngine.Store重构为委托结构:GenServer state 保存{backend_module, backend_state},所有 CRUD 操作通过 Backend 契约转发; 公共 API 完全向后兼容。CMDCSkillEngine.Analyzer集成 LLM 路径:当analysis_model是 LLM spec(非nil / "builtin" / "manual" / "rule" / "")时,:session_end走 LLM 分析;任何失败(超时 / HTTP / schema / 异常)自动降级到规则分析, 不打断 Agent 正常结束流程。CMDCSkillEngine.Analyzerstate 新增:messages字段,累积:before_prompt / :after_response消息,作为 LLM 分析上下文。CMDCSkillEngine.QualityTracker.update_from_analysis/2改为三元参数版本update_from_analysis/3(第三参数可选keyword()),保持对现有调用方 向后兼容。Application.start/2支持:start_store配置开关,测试环境默认关闭 自动启动以避免与 ExUnit 测试隔离冲突。
Fixed
- Store GenServer 初始化时默认启动逻辑与测试隔离机制冲突,导致多个测试
互相竞争同一 ETS 表 —— 现通过
start_store: false(test 环境)+test_helper.exs里的单次start_link+Process.unlink/1修复。
Deps
- 新增
{:exqlite, "~> 0.27"}、{:jason, "~> 1.4"}(SQLite backend- JSON 序列化)
测试覆盖
- 105 个测试全部通过(3 个
@moduletag :stress压力测试默认排除) - Store Backend 契约共 32 个测试(ETS × 16 + SQLite × 16)
- Analyzer.LLM 10 个单元测试(全部通过
:generate_fnstub,无真实 LLM) - Analyzer 集成 15 个测试(LLM 命中 + 失败降级 + 规则关键字保护)
- SkillRanker.Semantic 9 个测试(BM25 / 质量回退 / embedding 注入)
- QualityTracker 15 个测试(计数器 + trend + deactivation 门控)
- Evolver 10 个测试(FIX / DERIVED / CAPTURED + fix chain 上限)
[0.1.0] - 2026-04-23
Added
- 初始版本:ETS Store、规则 Analyzer、QualityTracker、Evolver (FIX/DERIVED/CAPTURED)、SkillRanker(按 effective_rate 排序)。
- 对标 OpenSpace SkillEvolver 的完整数据模型(SkillRecord / SkillLineage / ExecutionAnalysis / SkillJudgment / EvolutionSuggestion)。