技能链 - 多技能调用链编排
将多个 Skill 在用户意图下整合为可复用的执行链。提取关键步骤、统一规划、持久存储、一键执行。
核心概念
什么是调用链(Chain)
调用链是一组有序的 Skill 执行步骤,抽象了用户完成某类任务时需要的多技能协作流程。它:
不改变原始 Skill:只记录调用方式和关键步骤,实际执行仍通过原始 Skill 完成
提取关键步骤:从 SKILL.md 中提炼精炼的执行要点,减少上下文占用
可复用:保存后可反复使用,无需每次重新规划
可调整:支持增删改步骤、调整顺序、修改参数
数据结构
Chain(调用链)
├── name: string # 唯一名称,用于查询和执行
├── description: string # 调用链描述
├── purpose: string # 核心目的
├── user_intent: string # 用户原始意图
├── tags: string[] # 标签(便于搜索)
├── created_at: datetime
├── updated_at: datetime
├── exec_count: number # 执行次数
└── steps: Step[] # 有序步骤数组
Step(步骤)
├── index: number # 步骤序号(从1开始)
├── skill_name: string # 调用的技能名称
├── step_name: string # 步骤名称
├── action: string # 精炼的关键动作描述
├── detail: string # 详细执行说明(可选)
├── depends_on: number[] # 依赖的步骤索引(可选,默认依赖前一步)
├── condition: string # 条件表达式(可选,默认无条件执行)
├── variables: object # 步骤级变量(输入/输出映射)
└── notes: string # 备注(可选)
触发场景
当用户执行以下操作时触发本技能:
场景 触发指令示例
创建调用链 「帮我规划一个调用链」「创建技能调用链」「编排多技能流程」
预生成调用链 「帮我看看哪些技能可以用」「我需要做XX,有哪些技能可以组合」
查询调用链 「查看调用链」「列出所有调用链」「有哪些已保存的调用链」
执行调用链 「运行调用链XX」「用调用链XX完成任务」「执行XX调用链」
调整调用链 「修改调用链XX」「给XX调用链添加步骤」「调整XX的步骤顺序」
描述意图直接执行 「帮我做XX(涉及多技能)」→ 自动匹配或创建调用链
核心指令
触发:用户描述需要组合多个技能完成任务。
AI 执行流程:
步骤 A:分析用户意图 → 理解用户想完成什么 → 识别需要哪些技能参与 → 如果用户未指定技能,扫描 ~/.workbuddy/skills/ 下列出可用技能
步骤 B:读取技能信息 → 对每个涉及的技能,读取其 SKILL.md → 提取关键执行步骤(触发条件、核心指令、输入输出) → 使用 scripts/skill_extractor.py 辅助提取
步骤 C:规划执行步骤 → 根据用户意图,将多个技能的关键步骤整合为有序步骤列表 → 确定步骤间的依赖关系 → 识别可并行的步骤 → 标注步骤间的数据传递关系
步骤 D:展示规划并确认 → 以表格形式展示调用链规划 → 列出每个步骤:技能名、步骤名、动作描述、依赖关系 → 询问用户确认或调整
步骤 E:命名与保存 → 自动根据目的生成建议名称 → 询问用户确认名称或自定义 → 询问用户是否保存(记录)调用链 → 如果保存,调用 chain_manager.py create
输出格式:
【调用链规划】{名称} 📌
目的:{一句话说明}
🏷️ 标签:{tag1, tag2}
📝 用户意图:{用户原始意图}
执行步骤:
┌──────┬─────────────────┬──────────────┬──────────────────────────────┐
│ 步骤 │ 技能 │ 步骤名称 │ 关键动作 │
├──────┼─────────────────┼──────────────┼──────────────────────────────┤
│ 1 │ {skill_1} │ {step_name} │ {精炼动作描述} │
│ 2 │ {skill_2} │ {step_name} │ {精炼动作描述} │
│ ... │ │ │ │
└──────┴─────────────────┴──────────────┴──────────────────────────────┘
依赖关系:步骤2 → 依赖步骤1(说明数据传递)
并行机会:步骤3 和 步骤4 可并行执行
是否保存此调用链?(y/n)
调用链名称:{建议名称},可自定义
触发:用户告知意图但未指定具体技能,希望 AI 推荐技能组合。
AI 执行流程:
步骤 A:理解用户意图 → 分析用户描述的任务目标
步骤 B:扫描可用技能 → 列出 ~/.workbuddy/skills/ 下所有已安装技能 → 对每个技能读取 SKILL.md 的 description 和触发条件 → 筛选与用户意图相关的技能
步骤 C:匹配技能组合 → 根据意图匹配最相关的 2-5 个技能 → 按执行逻辑排序(数据准备 → 核心处理 → 结果输出) → 如果有多个可行组合,列出推荐方案
步骤 D:展示建议 → 推荐方案:技能组合 + 预估步骤 → 备选方案(如有) → 询问用户选择哪个方案或自定义
输出格式:
【技能组合建议】 🎯
用户意图:{意图描述}
📌 推荐方案:
涉及技能:{skill_1} → {skill_2} → {skill_3}
预估步骤:{N} 步
组合理由:{为什么选这些技能}
📌 备选方案(如有):
方案B:{技能组合} - {简述}
选择方案或自定义?(输入方案编号 / 自定义技能组合)
触发:用户查看已保存的调用链。
AI 执行流程:
步骤 A:读取调用链列表 → 调用 chain_manager.py list 列出所有调用链 → 或 chain_manager.py show --name {name} 查看详情
步骤 B:展示结果 → 列表模式:名称、描述、步骤数、执行次数、创建时间 → 详情模式:完整步骤列表
CLI 调用:
# 列出所有调用链
python {SKILL_DIR}/scripts/chain_manager.py list
# 查看指定调用链详情
python {SKILL_DIR}/scripts/chain_manager.py show --name "调用链名称"
# 按标签搜索
python {SKILL_DIR}/scripts/chain_manager.py list --tag "标签名"
触发:用户指定调用链名称并要求执行。
AI 执行流程:
步骤 A:加载调用链 → 调用 chain_manager.py show --name {name} 获取完整定义 → 检查所有涉及的技能是否已安装
步骤 B:解析执行计划 → 构建步骤依赖图 → 确定执行顺序(考虑并行机会) → 准备步骤间变量传递
步骤 C:逐步执行 → 按顺序加载每个技能 → 按照 action 描述执行关键步骤 → 处理步骤间数据传递 → 支持 condition 条件判断(跳过/执行) → 每步执行后简要汇报结果
步骤 D:执行总结 → 汇总所有步骤执行结果 → 更新调用链执行次数
CLI 调用:
# 执行调用链
python {SKILL_DIR}/scripts/chain_manager.py run --name "调用链名称"
# 执行并输出详细步骤
python {SKILL_DIR}/scripts/chain_manager.py run --name "调用链名称" --verbose
⚠️ 重要执行规则:
原始技能优先:执行时必须加载原始 SKILL.md