文章目录
- [1. 概述](#1. 概述)
- [2. 第一步:开启 Agent 自主编写技能(技能创作环节)](#2. 第一步:开启 Agent 自主编写技能(技能创作环节))
-
- [2.1 配置代码](#2.1 配置代码)
- [2.2 生效能力](#2.2 生效能力)
- [2.3 两种发布模式](#2.3 两种发布模式)
- [2.4 配套数据埋点](#2.4 配套数据埋点)
- [3. 第二步:审核闸门 + 调用可见性控制(发布与灰度环节)](#3. 第二步:审核闸门 + 调用可见性控制(发布与灰度环节))
-
- [3.1 核心配置](#3.1 核心配置)
- [3.2 晋升闸门(PromotionGate)](#3.2 晋升闸门(PromotionGate))
- [3.3 可见性过滤器(控制Agent能看到哪些自主创建的技能)](#3.3 可见性过滤器(控制Agent能看到哪些自主创建的技能))
- [4. 第三步:后台定时自动治理(技能清理与整理环节)](#4. 第三步:后台定时自动治理(技能清理与整理环节))
-
- [4.1 定时任务配置](#4.1 定时任务配置)
- [4.2 自动执行规则](#4.2 自动执行规则)
- [4.3 手动触发API(绕过定时节流)](#4.3 手动触发API(绕过定时节流))
- [5. 完整闭环链路总结](#5. 完整闭环链路总结)
1. 概述
这是一套 Agent 自主迭代技能的完整自动化流水线,全程分为自主创作 → 审核灰度发布 → 自动归档治理三大部分。三个模块相互解耦,可以单独开启任意一段,不需要全量启用。
核心目标:Agent可以自行新建、修改技能,再配合人工审核、灰度放量,最后由定时任务清理长期闲置的技能,实现技能库自我迭代、自我瘦身。
2. 第一步:开启 Agent 自主编写技能(技能创作环节)
2.1 配置代码
java
.enableSkillManageTool(SkillManageConfig.defaults())
2.2 生效能力
Agent 自动解锁两个内置工具:
- propose_skill :
Agent生成新技能草稿,自动写入目录:skills/_drafts/<技能名>/- 草稿只存放在草稿区,不会被
Agent正常调用,必须晋升后才能正式启用。
- skill_manage :
- 对现有技能执行增、删、改操作:新建目录、修改
SKILL.md、新增脚本附件、删除文件。
- 对现有技能执行增、删、改操作:新建目录、修改
2.3 两种发布模式
- 默认模式(推荐)
草稿必须走审核流程,防止劣质脚本直接上线。 - 自动放行模式:
.enableSkillManageTool(true)
等价于开启autoPromote=true,草稿写完直接自动转正,跳过审核闸门。
风险提示:生产环境禁止开启,容易产生大量垃圾脚本与不安全代码。
2.4 配套数据埋点
每次 Agent 调用 load_skill_through_path / read_skill 加载技能时,框架自动统计调用频次,写入文件:skills/.usage.json 。
记录:调用次数、最后使用时间。
作用:为后续灰度筛选、闲置技能清理提供数据依据。
3. 第二步:审核闸门 + 调用可见性控制(发布与灰度环节)
3.1 核心配置
java
.enableSkillPromotionGate(
// 审批人:本地控制台人工审批
new LocalApprovalGate(LocalApprovalGate.defaultPrompter()),
// 多层可见性过滤器
new CompositeFilter(List.of(
new EnvironmentFilter("prod", skillUsageStore), // 环境隔离
new CanaryFilter(0.10, skillUsageStore) // 10%流量灰度放量
)))
.environment("prod")
3.2 晋升闸门(PromotionGate)
草稿技能无法直接被调用,必须通过闸门审批才能从 _drafts 草稿区晋升为正式技能。
内置 3 种审批策略:
- 默认策略:直接拒绝所有草稿晋升;
- 本地人工审批:控制台弹窗,操作员手动确认通过/驳回;
- 消息异步审批:推送审批消息,等待外部回执。
3.3 可见性过滤器(控制Agent能看到哪些自主创建的技能)
只有通过过滤器的技能,才会出现在<available_skills>列表中,Agent 才能调用。
支持多条件组合:
- EnvironmentFilter 环境隔离 :区分
dev/test/prod环境,生产环境只放行生产级技能。 - CanaryFilter 灰度发布 :基于调用统计数据,按比例放量(示例:只开放
10%请求试用新技能)。
底层依赖第一步生成的
.usage.json使用日志做灰度决策。
4. 第三步:后台定时自动治理(技能清理与整理环节)
4.1 定时任务配置
java
.enableSkillCurator(SkillCuratorConfig.builder()
.intervalHours(7 * 24) // 执行周期:每周执行一次
.minIdleHours(2) // 节流保护:技能至少闲置2小时才处理,避免占用运行资源
.staleAfterDays(30) // 连续30天无人调用:标记为stale(闲置待清理)
.archiveAfterDays(90) // 连续90天无调用:自动归档
.build())
4.2 自动执行规则
- 执行节流:不能频繁运行,必须满足间隔与闲置条件;
- 生命周期自动流转:
- 连续
30天零调用:打上stale闲置标记; - 连续
90天零调用:自动移动到归档目录skills/.archive/,不再被检索加载;
- 连续
- 可选增强能力:
LLM智能合并(伞合并)
默认仅试运行(dry-run),只输出分析报告,不会自动修改文件。
作用:扫描多个功能重复的零散技能,自动合并成一个通用技能,精简技能库。
4.3 手动触发API(绕过定时节流)
- 查询全量技能审计日志
java
agent.queryAudit(LocalDate.now(), e -> true);
- 立即执行一次清理整理任务
java
agent.runCuratorOnce().subscribe(report -> System.out.println(report));
- 手动将草稿晋升为正式技能
java
agent.promoteSkill("notes-taker", "alice");
5. 完整闭环链路总结
- 创作层 :
Agent自主写技能 → 存入草稿区 + 自动记录调用埋点; - 发布层:人工审批闸门 + 环境+灰度双过滤,控制新技能放量上线;
- 治理层:后台定时巡检,长期不用的技能自动标记、归档,还可以用大模型合并冗余技能;
- 灵活控制:三段能力完全解耦,可只开创作、只开审核、只开清理,并且支持API手动干预流程。