Task 2 — Жизненный цикл навыков
Phase: 1
Status: done
Owner: —
Slug: skill-lifecycle
Goal
Автоматизировать создание, версионирование, тестирование, оценку, улучшение, депрекацию и откат навыков; high-risk изменения остаются human-gated.
Acceptance criteria
SkillEvaluationEngine.cs— класс вsrc/agent/Skills/:EvaluateAsync(Skill, SkillTestSuite, CancellationToken)— выполняет каждый SkillTestCase через AgentCore (прокидывает input, проверяет ExpectedContains, MinConfidence, ExpectedMode);- возвращает
SkillEvaluationResult(score 0..1, pass/fail, per-test results); - таймаут на тест = 60s, общее время оценки = 120s
SkillDeprecationManager.cs— класс вsrc/agent/Skills/:Deprecate(id, reason)— помечает навык deprecated в meta.json (DeprecatedAt,DeprecationReason);Rollback(id)— восстанавливает предыдущую версию (.v{N-1}.md) и обновляет meta.jsonGetDeprecated()— возвращает список deprecated навыковUndeprecate(id)— снимает deprecated-статусSkillMetaполучает поляDeprecatedAt,DeprecationReason,LastEvaluationScore
SkillLifecyclePolicy.cs— policy-класс вsrc/agent/Skills/:RequiresApproval(Skill, SkillAction)— возвращает PolicyCheckResult с NeedsHumanApproval для HIGH_RISK действий;- HIGH_RISK = Improve (SuccessRate ≤ 0.4), Rollback, Deprecate, Delete, any action on deprecated skill;
- MEDIUM_RISK = Improve (SuccessRate 0.4–0.6), CreateWithAi; LOW_RISK = всё остальное
Actionenum: Create, CreateWithAi, Improve, Update, Deprecate, Rollback, Delete, Evaluate
SkillManager— интеграция evaluation:EvaluateAsync(id, SkillEvaluationEngine, CancellationToken)— запускает оценку и обновляетMeta.LastEvaluationScoreDelete(id)— удаляет навык с backup
SkillLifecycleService.cs— DI-friendly сервис, объединяющий SkillManager + SkillDeprecationManager + SkillLifecyclePolicy + SkillEvaluationEngine;Deprecate,Rollback,Undeprecate,EvaluateAsync,GetDeprecated,DeleteApprovalRequiredExceptionпри HIGH_RISK без подтверждения
SkillLifecycleController.cs— WebAPI endpoints:POST /api/skills/{id}/evaluate— запустить оценку (SkillEvaluationResult)POST /api/skills/{id}/deprecate— deprecate (body: reason), 202 if approval requiredPOST /api/skills/{id}/rollback— rollback, 202 if approval requiredPOST /api/skills/{id}/undeprecate— снять deprecatedGET /api/skills/deprecated— список deprecatedPOST /api/skills/{id}/improve— improve; 202 если нужен approval
AgentCore.EvaluateSkillAsync(Skill, input, ct)— evaluate skill bypassing router (для engine)- Unit-тесты (17 новых тестов):
SkillLifecyclePolicyTests.cs— 10 тестов: базовые risk levels, Improve boundary, deprecated skill rulesSkillDeprecationManagerTests.cs— 8 тестов: deprecate, rollback, get deprecated, undeprecateSkillEvaluationEngineTests.cs— 7 тестов: evaluate с mock AgentCore, score calculation, timeout
dotnet buildпроходит без warningsdotnet testпроходит (193/193)
Scope / Likely files
src/agent/Skills/, src/agent/Agent/SkillManager.cs, src/agent/Agent/AgentCore.cs, src/agent/Storage/Models.cs
Dependencies
- блокирует / опирается на: task_001 — core-agent-loop
Risks / Rollback
Само-модификация навыков без approval; нужен явный policy gate.
Implementation notes
2026-08-12
Добавлено:
SkillLifecyclePolicy.cs— enum SkillAction/SkillActionRisk, PolicyCheckResult, RequiresApproval с динамическим risk для ImproveSkillDeprecationManager.cs— Deprecate/Rollback/Undeprecate/GetDeprecated; использует FileSkillRepositorySkillEvaluationEngine.cs— EvaluateAsync через AgentCore.EvaluateSkillAsync; per-test timeout 60s, total 120s; проверяет ExpectedContains, MinConfidence, ExpectedModeSkillLifecycleService.cs— фасад с ApprovalRequiredException для HIGH_RISKSkillLifecycleController.cs— 6 эндпоинтов; 202 Accepted с approvalRequired при HIGH/MEDIUM riskSkillManager.EvaluateAsync— обновляет Meta.LastEvaluationScore после оценкиAgentCore.EvaluateSkillAsync— bypass-метод для принудительного использования навыкаSkillMeta— + DeprecatedAt, DeprecationReason, LastEvaluationScoreSkillDto— расширен новыми полями- 17 unit-тестов (SkillLifecyclePolicyTests, SkillDeprecationManagerTests, SkillEvaluationEngineTests)
Validation:
dotnet build— 0 errors, 0 warningsdotnet test— 193/193 passed
Links
- Backlog: ../backlog.md
- Roadmap (EN): ../../ROADMAP-EN.md
- Roadmap (RU): ../../ROADMAP-RU.md