Agent 技能调度规范 V2.0:从定性选技能升级为定量状态机路由
Agent技能调度从定性升级为定量——结构化路由+DAG状态机+三级降级SOP+ContextBucket记忆闭环。直接可执行的技能元数据Schema、六步调度流程、四类触发规则、系统级Prompt范本。8187个技能可套用标准化
✍️ 37Agent·
Agent 技能调度规范 V2.0:从定性选技能升级为定量状态机路由
大多数 Agent 团队做技能调度,还停留在第一步:写一段 Prompt 告诉 Agent "遇到编码需求就用代码技能,遇到文档需求就用文档技能"。
这种定性描述在 Demo 阶段够用,一到量产就全部垮掉:
- LLM 理解歧义导致选错技能
- 参数缺失硬着头皮执行 → 产物不可用
- 技能链没有状态机控制 → 前置没完成就越级调用
- 失败没有降级策略 → 直接报错卡死
- 每次选型没有记忆 → 同样的错误反复犯
今天这篇把 Agent 技能调度从定性升级为定量:结构化路由 + DAG状态机 + 三级降级 + ContextBucket 记忆闭环。
一、V1→V2:四个关键升级
| 维度 | V1(定性) | V2(定量) |
|---|---|---|
| 触发条件 | 仅 NL 描述 | NL + logic 伪代码双轨 |
| 参数约束 | 列出 required | required + auto_fill(自动从记忆库补齐) |
| 状态控制 | 线性流程 | DAG 有向无环图 + 前置依赖锁死 |
| 产物校验 | 无 | effectiveness_check 规则 |
| 降级机制 | 无 | L1→L2→L3 三级 SOP |
| 记忆闭环 | 无 | DecisionMemory Schema + 自优化 |
二、技能元数据标准化
把每个技能从"自然语言描述"升级为 "NL可读 + 结构化可执行" 的双轨模式:
skillId + sceneTags/excludeTags
+ triggerCondition(nl描述 + logic伪代码)
+ inputConstraint(required参数 + auto_fill自动补齐源)
+ priority 优先级
+ dependentSkill 前置依赖链
+ fallbackSkill 降级技能
+ timeout 超时阈值
+ effectiveness_check 产物校验规则
关键设计:
- excludeTags 一票否决:命中排除标签直接剔除,防误触
- auto_fill 减少反问:参数优先从 ContextBucket 记忆库自动补齐
- effectiveness_check 保质量:输出文件存在 + lint通过,不通过则触发降级
三、四类触发规则
| 触发类型 | 机制 | 防误触规则 |
|---|---|---|
| 意图触发 | Prompt Intent ∩ sceneTags | excludeTags 一票否决 |
| 上下文触发 | ContextBucket 检索历史 | task_similarity > 0.85 复用技能链 |
| 产物约束触发 | 输出路径/格式决定技能 | /src/→编码, .xlsx→数据分析 |
| 前置依赖触发 | DAG 链式驱动 | dependentSkill 未 Success → 后置锁死 |
四、6步状态机调度
[感知] → [召回] → [过滤] → [排序] → [校验填充] → [执行校验] → [沉淀]
排序公式: Score = w1 × priority + w2 × sceneTag_hit_rate + w3 × history_hit_weight
参数填充优先级:
- 用户 Prompt 显式指定
- ContextBucket auto_fill 自动补齐
- 仍缺失 → 挂起任务、反问用户
五、三级降级 SOP
| 级别 | 触发 | 动作 |
|---|---|---|
| L1 | 技能执行失败 + fallbackSkill 存在 | 降级执行 fallbackSkill |
| L2 | 无匹配技能 或 L1 降级失败 | global_fallback 通用问答 |
| L3 | 连续 2 次 L2 降级 | 暂停任务 → 推送工单给人工 |
六、ContextBucket 记忆闭环
{
"decision_id": "d_9827",
"task_fingerprint": "hash(重构登录接口 + Java + Spring)",
"selected_skill": "code_write",
"selection_reason": "命中sceneTag[接口重构],上下文补齐tech_stack=Java",
"execution_status": "Success",
"user_feedback": "Accepted"
}
自优化机制:
- ✅ Accepted 记录 → 下次检索时提权
- ❌ Rejected 记录 → 提取特征加入动态 excludeTags
- 🔧 人工看板 → 修正数据 → Golden Dataset → Prompt 微调
七、研发 Agent 实操推演
场景:用户输入「帮我写个用户登录接口」
| 步骤 | 动作 | 结果 |
|---|---|---|
| 感知 | Intent=coding, Entity=登录接口 | 召回 code_write, doc_write |
| 过滤 | doc_write 命中 excludeTags[代码编写] | 剔除 |
| 排序 | code_write 命中 sceneTags[接口开发] | Score 最高 |
| 校验 | tech_stack 缺 → auto_fill 检索 ContextBucket | Java/Spring 自动填入 |
| 执行 | 生成 LoginController.java | ✅ |
| 沉淀 | 写入 DecisionMemory | 下次同类任务直接命中 |
八、Agent System Prompt 六条铁律
1. 选前必查:检索 ContextBucket 技能元数据,禁止凭空捏造
2. 红线规则:命中 excludeTags 不可调用;参数不满足禁止强行调用
3. 链式依赖:dependentSkill 未完成不可越级
4. 降级优先:失败→fallbackSkill→通用问答→致歉说明
5. 记忆沉淀:任务结束必须 JSON 写入 ContextBucket
6. 冲突遵从:用户当前指令 > 历史记忆,并更新记忆
九、对 37Agent 体系的直接价值
| 37Agent 现状 | V2 规范加持后 |
|---|---|
| 8187 个技能纯文件存储 | 全部套用 V2 Schema 标准化 |
| 总控杰克荣耀手动选人派发 | 自动状态机路由 + 人工兜底 |
| 无形式化降级策略 | L1→L2→L3 三级降级 |
| 记忆靠 MEMORY.md 文件 | Gitea DecisionMemory Schema |
| 9 大主管各自维护规则 | 统一 sceneTags/excludeTags 冲突消解 |
一句话:这套 V2 方案让 Agent 从「被告诉怎么选」升级为「自己能判断、能校验、能降级、能学习」,是 37Agent 技能体系工程化的核心基础设施。
版权所有:长沙市易云星科数字科技有限公司原创,转载需说明出处,谢谢。 关注我长沙易云星科微信号 CSYYXK
想要实现类似的获客效果?
37Agent为企业提供AI获客全链路解决方案
🏢 关于我们
长沙市易云星科数字科技有限公司
📍 湖南省长沙市雨花区湘府中路80号复地星光天地5栋27060
📞 18925061881 · 📧 19293468@qq.com
🌐 www.37jt.cn
12年深耕 · 20+头部客户 · 多项发明专利