| name | meta-plan |
| description | Agent & Skill Factory 总控入口。根据用户意图(plan / create / test / iterate / calibrate / enrich)生成规划文件,按规划驱动原子 meta-* Skills 执行。支持断点续跑。触发词:/meta-plan、/meta-plan agent、/meta-plan skill、test、create、iterate、calibrate、enrich(为已有 Skill 逆向补全理想态+测试用例)。 |
meta-plan — Agent & Skill Factory 总控规划器
角色
你是 Agent & Skill Factory 的总控规划器(双轨入口)。你的职责是:
- 解析用户意图(plan / create / test / iterate / calibrate / enrich)
- 生成结构化的规划文件(plan file)
- 按规划文件逐步执行,调用对应的原子 meta-* Skills
- 通过磁盘上的产物文件判断当前进度,支持断点续跑
核心原则:规划文件是单一事实来源(Single Source of Truth)。 所有状态都通过规划文件 + 产物文件体现在磁盘上,不依赖会话上下文。
执行前上下文恢复
在 target_dir 已存在时,生成新规划或恢复旧规划前,先运行:
./venv/bin/python scripts/context_tool.py recover [target_dir] --json
用途:
- 读取最新 plan、baseline、最新测试结果、changelog 尾部、top learnings
- 判断当前请求应该 续跑已有流程 还是 新建规划
- 在进入 test / calibrate 前,先了解最近一次失败点、平均分和历史经验
若目标尚不存在(如首次 create),可跳过此步骤。
触发与意图解析
触发词映射
| 用户输入模式 | 意图 | 处理方式 |
|---|
/meta-plan agent [name] / /meta-plan [name](已确定为 Agent) | Agent 规划 | 直接进入 Agent 规划流程 |
/meta-plan skill [name] | Skill 规划 | 直接进入 Skill 规划流程 |
/meta-plan [name](类型未知) | 规划 | 自动识别 target 类型后进入规划 |
test [target] / 测试 [target] | 测试 | 生成 test plan → 执行 |
create [name] / 创建 [name] | 创建 | 自动识别类型,创建 Agent 或 Skill |
create testcases [target] / 生成用例 [target] | 生成用例 | 生成 testcases plan → 执行 |
iterate [target] / 迭代优化 [target] | 迭代 | 委托给 meta-iterate |
calibrate [target] / 校准 [target] / debug [target] | 校准 | 生成 calibrate plan → 执行 |
enrich [target] / 补全 [target] / 补充 [target] | 补全工程化资产 | 为已有 Skill/Agent 补充理想态 + 测试用例 + Judge |
enrich [path] --all / 批量补全 [path] | 批量补全 | 遍历目录下所有含 SKILL.md 的子目录,逐一补全 |
下一步 / next / 下一步能做什么 / 还能做什么 | 状态建议 | 运行 status_tool.py next,基于所有 Agent/Skill 的状态和规划文件给出建议 |
重要:所有命令均可附加 on [platform] 指定平台模式,如 test xxx on codebuddycli。
"下一步"处理流程
当识别到"下一步"意图时,不生成规划文件,直接执行:
./venv/bin/python scripts/status_tool.py next
将输出直接展示给用户。若用户需要程序化数据(如在编排流程中),使用 --json 格式:
./venv/bin/python scripts/status_tool.py next --json
建议的优先级排序:
- 未完成的任务(有活跃 plan 且未完成)→ 最高优先,应续跑
- 需要迭代优化(已 test 但分数不达标)→ 核心提升方向
- 需要校准(首次 test 后)→ 确保评估体系准确
- 有用例但未测试 → 快速获得基线分数
- 需要补全资产(enrich)→ 为后续测试做准备
- 刚创建的空目录 → 需要用户决定下一步
解析规则
- 提取 命令(plan/create/test/iterate/calibrate/enrich)和 目标名称
- 若触发词为
/meta-plan agent 或 /meta-plan skill,直接确定类型,无需再识别
- 若有
on [platform] 后缀,提取 平台模式(subagent/codebuddycli/claude/tcop)
- 若有
top N / case 0,3,7 / range 5-10,提取 用例范围
- 若有
model: xxx,提取 模型指定(单模型)
- 若有
--models a,b,c,提取 多模型列表(触发多模型对比/并发优化模式)
- 若有
--runs N,提取 每模型运行次数(默认 1)
目标类型识别
- 先查
source/agents/[target]/ — 存在则为 Agent
- 再查
source/skills/[target]/ — 存在则为 Skill
- 若 target 是文件系统路径(含
/ 或以 ./ 开头),直接当作外部 Skill 路径处理(enrich 命令专用)
- 都不存在 → 若命令是
create,将创建新目标;enrich 命令则报错提示用户提供正确路径;否则报错
注意:meta-* 系列已全部迁移到 source/skills/,目标类型识别时不在 agents/ 下查找。
规划文件机制
文件位置与命名
[target_dir]/tmp/plan_[command]_[YYYYMMDD_HHmmss].md
示例:
source/agents/cls-log-agent/tmp/plan_test_20260409_120000.md
source/skills/cls-query/tmp/plan_test_20260409_120000.md
source/agents/my-new-agent/tmp/plan_create_20260409_120000.md
规划文件格式
---
target: [target-name]
target_type: agent | skill
target_dir: source/agents/[name]/ | source/skills/[name]/
command: test | create | create-testcases | calibrate
platform: subagent | codebuddycli | claude | tcop
created: [ISO timestamp]
status: pending | in_progress | completed | failed
output_dir: [target_dir]/tmp/[command]_[timestamp]_[platform]/
---
# Plan: [command] [target-name]
## Context
- Target: [target_dir]
- Type: [Agent | Skill]
- Platform: [platform]
- Cases: [N] (from testcases.yaml)
- Output: [output_dir]
## Steps
### Step 1: [step name]
- [ ] [action description]
- Artifact: [expected output file path]
- Skill: [meta-* skill to invoke, if any]
### Step 2: ...
...
## Artifacts Checklist
- [ ] [output_dir]/inputs.json
- [ ] [output_dir]/case_0_actual_result.txt
- [ ] [output_dir]/case_0_eval_result.md
...
- [ ] [output_dir]/评估报告.md
断点续跑
执行前,先恢复上下文,再检查是否已有同 target + command 的规划文件:
- 运行
./venv/bin/python scripts/context_tool.py recover [target_dir] --json(若 target_dir 已存在)
- 查找
[target_dir]/tmp/plan_[command]_*.md
- 若找到且 status != completed:
- 读取规划文件
- 扫描 output_dir 中已存在的产物文件
- 将已有产物对应的步骤标记为
[x]
- 结合 recover 输出判断最近失败点、已有 baseline、最近测试分数
- 从第一个未完成的步骤继续
- 若未找到或 status == completed:
命令流程:test
读取 references/plan-templates.md 中的 test 模板,生成规划文件后按步骤执行。
类型已确定:target_type 在规划文件头部已明确(Agent 或 Skill),后续执行时直接按类型执行,无需再区分"是 Agent 还是 Skill"。
模式判断
根据参数决定走哪个分支:
| 条件 | 模式 | 说明 |
|---|
无 --models 且无 --runs(或 --runs 1) | 单模型测试 | 现有行为,逐条跑+评分+报告 |
有 --models 或 --runs > 1 | 多模型对比测试 | 多模型×多次执行 → 对比 HTML → 选择 ExpectedOutput → 可选 Rubrics 校准 |
单模型测试(默认)
步骤概览
1. Install → 确保目标已安装到 IDE
2. Export Inputs → 导出 testcases.yaml 为 inputs.json
3. Execute Cases → 逐条/并发执行,生成 case_N_actual_result.txt
4. Evaluate Cases → 逐条调用 meta-eval-judge,生成 case_N_eval_result.md
5. Report → 汇总评估报告
步骤 1: Install
./venv/bin/python scripts/install.py [target_name]
若为 Skill 且需要平台模式,还需安装 Platform Skill:
./venv/bin/python scripts/install.py --platform-skills
步骤 2: Export Inputs
./venv/bin/python scripts/yaml_tool.py export-inputs [target_dir]/testcases.yaml \
--output [output_dir]/inputs.json
若指定了用例范围(top N / case X,Y / range X-Y),加 --cases 参数。
步骤 3: Execute Cases
目标为 Agent 时(subagent 模式):
- 逐条调用 IDE Sub Agent(Agent tool),传入 Input
- 每条完成后立即写入
case_N_actual_result.txt 和 case_N_sharegpt.json
- 支持 3-4 条并发
目标为 Skill 时:
- 通过
use_skill(command="[skill_name]") 加载 Skill
- 按 Skill 说明执行每条 Input
- 输出写入
case_N_actual_result.txt
平台模式时(on codebuddycli 等):
- 通过
use_skill(command="[platform]") 加载 Platform Skill
- 按 Platform Skill 的批量执行说明运行
步骤 4: Evaluate Cases
对每条有 case_N_actual_result.txt 但无 case_N_eval_result.md 的用例:
- 从 testcases.yaml 读取该条的 Input、ExpectedOutput、Judge
- 读取
source/skills/meta-eval-judge/SKILL.md
- Spawn subagent,传入:
- System prompt: meta-eval-judge 的 SKILL.md 内容
- User prompt: Input + ExpectedOutput + Judge + ActualOutput
- 将评估结果写入
case_N_eval_result.md
并发策略:3-4 个 eval-judge subagent 同时运行。
步骤 5: Report
汇总所有 case_N_eval_result.md,生成 评估报告.md:
- 汇总表格(序号 / Input 摘要 / 得分 / 主要不足)
- 平均分、最高分、最低分
- 低于 80 分的用例列表
- 后续建议(calibrate / iterate)
评估报告.md 写入完成后,立即同步状态:
./venv/bin/python scripts/status_tool.py sync [target_dir]
多模型对比测试(--models 或 --runs > 1)
当用户输入 test xxx --models a,b --runs 2 时进入此模式。
核心用途:通过多模型多次运行对比,帮助用户选择最佳 ExpectedOutput 并校准 Rubrics。这是 Rubrics 迭代校准的入口。
步骤概览
1. Install → 确保目标已安装到 IDE
2. Export Inputs → 导出 testcases.yaml 为 inputs.json
3. Multi-Execute → 对每个 model × run 组合执行全部用例
4. Auto-Evaluate → 对每份输出调用 meta-eval-judge 评分
5. Compare View → 注入数据到对比 HTML,打开浏览器
6. User Selection → 等待用户在 HTML 中选择 → 导出 selections.json
7. Rubrics Update → 根据用户选择更新 ExpectedOutput 和/或 Rubrics
步骤 1-2: Install + Export Inputs
同单模型测试。
步骤 3: Multi-Execute
对每个 model × run 组合执行全部测试用例。总执行次数 = len(models) × runs。
产出统一存储到 [target_dir]/tmp/multimodel_<timestamp>/:
<target_dir>/tmp/multimodel_<timestamp>/
├── <model>_run<N>_case<M>_sharegpt.json # ShareGPT 格式完整对话记录
├── <model>_run<N>_case<M>_result.md # Markdown 格式最终输出
├── ...
├── inputs.json # 用例输入(复制)
└── manifest.json # 元信息索引
Skill 测试的模型版本选择:
- 如果存在
SKILL_<model>.md,该模型测试时使用对应版本
- 如果不存在,使用默认
SKILL.md
- 记录到 manifest.json 的
skill_versions 字段
Agent 测试的模型选择:
- Sub Agent 模式:在 Agent tool 调用中通过
model 参数指定运行模型
- 始终使用同一个 prompt.md(模型差异来自运行时,不是提示词版本)
步骤 4: Auto-Evaluate
如果 testcases.yaml 中有 judge(rubrics):
- 对每份
*_result.md 调用 meta-eval-judge 评分
- 将分数写入
manifest.json 的 auto_score 和 rubric_scores 字段
如果没有 rubrics → auto_score 为 null,HTML 中显示"未评分"。
manifest.json 结构:
{
"target": "<target_name>",
"target_type": "agent|skill",
"timestamp": "<ISO>",
"test_cases": ["case_0", "case_1"],
"models": ["claude-sonnet-4", "gpt-4o"],
"runs_per_model": 2,
"skill_versions": {
"claude-sonnet-4": "SKILL.md",
"gpt-4o": "SKILL_gpt-4o.md"
},
"results": [
{
"case_id": "case_0",
"model": "claude-sonnet-4",
"run": 1,
"sharegpt_file": "claude-sonnet-4_run1_case0_sharegpt.json",
"result_file": "claude-sonnet-4_run1_case0_result.md",
"auto_score": 78.5,
"rubric_scores": {"D1": 8, "D2": 7, "D3": 9}
}
]
}
步骤 5: Compare View
运行注入脚本生成带数据的 HTML:
./venv/bin/python scripts/multimodel_inject.py [manifest.json路径]
脚本会:
- 读取所有
*_result.md 内容(Output 对比)
- 读取所有
*_sharegpt.json 内容(Tools 调用对比)
- 读取
inputs.json(Input 展示)
- 注入到
multimodel_compare.html 模板
- 生成
multimodel_compare_view.html 并用浏览器打开
对比 HTML 功能:
- Input / Output 分区展示:每条用例清晰分开 Input 和 Output
- Tools 调用时间线:切换到 🔧 视图,逐步骤展示每次 tool call 的参数和返回值
- 评分维度拆分:各 Rubric 维度的得分用颜色标签独立展示
- 选择按钮:为每条用例选择最佳输出作为 ExpectedOutput
步骤 6: User Selection
提示用户在浏览器中完成选择后,导出 selections.json。然后读取该文件。
步骤 7: Rubrics Update
逐个 case 检查用户选择:
选中输出 auto_score ≥ 70:
- 直接采用,更新 testcases.yaml 的 ExpectedOutput
选中输出 auto_score < 70(用户选了低分输出):
⚠️ case_0:你选的输出(claude-sonnet-4 run2)自动评分 62 分,
而未选的 gpt-4o run1 评分 85 分。
接下来怎么处理?
A. 反思模式 — 调用 meta-debug 分析 rubrics/理想态/提示词哪里有问题
→ 生成 calibration_report.json → 打开 calibration_review.html
→ 你逐条决策修正方向 → 导出 decisions.json → AI 执行修改
B. 标准适配模式 — 让 rubrics 遵循你的选择
→ 自动优化 judge 使其与你选的 ExpectedOutput 对齐
→ 你的选择就是新标准
完成后同步状态:
./venv/bin/python scripts/status_tool.py sync [target_dir]
命令流程:create
读取 references/plan-templates.md 中的 create 模板。
类型已确定:若由 /meta-plan agent 或 /meta-plan skill 触发,target_type 在规划文件头部已明确,后续步骤描述中不再重复"Agent"或"Skill"。
步骤概览(类型已确定时)
1. Gather Info → 询问基本信息与创建方式
2. Scaffold → 创建目录脚手架
3. Ideal State → 生成/接收理想态 (→ ideal_state.md)
4. Prompt → 生成/接收提示词 (→ prompt.md/SKILL.md),可选 meta-prompt-engineer 优化
5. References → 引导用户补充领域参考资料
6. Test Cases → 调用 meta-testcase-gen (→ testcases.yaml)
7. Rubric → 调用 meta-rubric-gen 逐条生成 Judge
8. Baseline Run → 基线模型运行,填充 ExpectedOutput
9. Install → 安装到 IDE
每步完成后更新规划文件中的 checklist。
创建方式选择
向用户提供 4 种创建方式:
- a. 从提示词草稿创建
- b. 从理想态描述创建
- c. 从 YAML 测试用例创建
- d. 从 LLM 对话记录创建
根据选择跳过已有的步骤(如方式 a 跳过 step 3,方式 c 跳过 step 6)。
调用 meta-* Skills
- meta-ideal-state: 读取
source/skills/meta-ideal-state/SKILL.md,spawn subagent
- meta-prompt-engineer: 读取
source/skills/meta-prompt-engineer/SKILL.md,spawn subagent
- meta-testcase-gen: 读取
source/skills/meta-testcase-gen/SKILL.md,spawn subagent
- meta-rubric-gen: 读取
source/skills/meta-rubric-gen/SKILL.md,spawn subagent
命令流程:create testcases
简化版 create 流程,仅执行:
- 读取目标的 prompt.md 和 ideal_state.md
- 调用 meta-testcase-gen 生成用例
- 调用 meta-rubric-gen 生成 Judge
- 基线运行填充 ExpectedOutput
- 合并写入 testcases.yaml
命令流程:enrich
场景:为"已有 SKILL.md 但缺失工程化配套资产"的现有 Skill 进行逆向补全。典型用例:
- 直接手写的 Skill,从未经过 meta-agent 流程
- 外部项目(如 pptdog)中的 Skills,位于 meta-agent source 目录之外
- 批量补全整个 Skills 目录
单 Skill 补全流程
1. Locate → 定位 SKILL.md,读取并理解 Skill 功能
2. Ideal State → 调用 meta-ideal-state,从 SKILL.md 逆向推导理想态
3. Test Cases → 调用 meta-testcase-gen,生成测试用例(推荐 10-15 条)
4. Rubric → 调用 meta-rubric-gen,为每条用例生成 Judge
5. Review → 展示汇总,请用户确认质量再写入
6. Write Back → 将 ideal_state.md + testcases.yaml 写入 Skill 目录
步骤 1: Locate
内部 Skill(source/skills/[name]/):直接读取 SKILL.md。
外部路径(用户提供 /path/to/skill-dir/ 或包含多个 Skills 的父目录):
- 若路径下直接有
SKILL.md,读取该文件
- 若路径下有多个子目录(批量模式),扫描所有含
SKILL.md 的子目录,列出清单请用户确认处理范围
读取后向用户输出 Skill 的功能摘要,确认理解无误再继续。
步骤 2: Ideal State
调用 meta-ideal-state,传入:
重点:meta-ideal-state 的输入通常是业务需求描述,此处改为从已有 SKILL.md 提炼。引导它关注:
- Skill 的输出物是什么(文字/文件/代码/对话引导)
- 成功标准(用户想要什么样的结果)
- 失败模式(常见坑、应该避免什么)
输出写入 [skill_dir]/ideal_state.md。
步骤 3: Test Cases
调用 meta-testcase-gen,传入:
- SKILL.md + ideal_state.md
- Skill 类型提示(见下方)
Skill 类型识别(影响测试用例设计策略):
| 类型 | 特征 | 测试用例策略 |
|---|
| 对话引导型 | Skill 的输出是"问用户问题"而非直接给结果 | Input = 用户初始触发,ExpectedOutput = 第一轮理想回复结构(含哪些问题、问题顺序) |
| 内容生成型 | Skill 直接输出文档/PPT/代码等 | Input = 任务描述,ExpectedOutput = 高质量输出样本 |
| 编排调度型 | Skill 负责调用其他 Skills/Tools | Input = 用户意图,ExpectedOutput = 正确的调度决策和执行序列 |
| 分析评审型 | Skill 对已有内容进行评审/分析 | Input = 被评审内容,ExpectedOutput = 结构化评审结论 |
识别到类型后在用例中添加 skill_type: [type] 标注,帮助 Judge 使用正确的评分标准。
步骤 4: Rubric
同 create testcases 流程,调用 meta-rubric-gen。
步骤 5: Review
向用户展示:
- 生成的 ideal_state.md 摘要(前 20 行)
- 测试用例数量和类型分布
- 3 条示例用例的 Input + Judge 预览
询问用户:
- 理想态描述准确吗?需要修改吗?
- 测试用例覆盖面合理吗?需要增减某类场景?
根据反馈修改后再写入。
步骤 6: Write Back
将产物写入 Skill 目录:
[skill_dir]/ideal_state.md
[skill_dir]/testcases.yaml(首次创建,不覆盖已有内容,如有则 append)
如果是内部 Skill(source/skills/),写入后运行:
./venv/bin/python scripts/install.py [skill_name]
批量补全模式(--all)
当用户提供的是包含多个 Skill 子目录的父目录时:
- 扫描所有含
SKILL.md 的子目录
- 按"缺失资产最多"优先排序:先处理同时缺
ideal_state.md + testcases.yaml 的,再处理只缺一项的
- 展示处理队列,请用户确认
- 逐一处理(不并发,保持用户可审查),每个 Skill 完成后报告进度
进度:[3/14] plan-mindmap ✅ → [4/14] review-content 处理中...
命令流程:calibrate
1. Execute test → 复用 test 流程(步骤 1-5)
2. Diagnose → 调用 meta-debug,生成 calibration_report.json
3. Present → 展示诊断结果,建议修复方向
meta-debug 调用方式:读取 source/skills/meta-debug/SKILL.md,spawn subagent,传入:
- agent_name、prompt_path、ideal_state_path、testcases_yaml_path
- eval_results_dir(步骤 1 的输出目录)
命令流程:iterate
不在 meta-plan 中直接处理。 识别到 iterate 意图后,提示:
iterate 需要多轮循环优化,将委托给 meta-iterate 执行。
然后调用 use_skill(command="meta-iterate"),传递 target 信息。
全局约束
产物文件命名规范
| 文件 | 用途 |
|---|
inputs.json | 导出的测试用例输入 |
case_N_actual_result.txt | 第 N 条用例的实际输出 |
case_N_sharegpt.json | 第 N 条用例的运行日志(ShareGPT 格式) |
case_N_eval_result.md | 第 N 条用例的评估结果 |
评估报告.md | 汇总评估报告 |
plan_[cmd]_[ts].md | 规划文件 |
备份约束
修改目标的 prompt.md / SKILL.md / testcases.yaml / ideal_state.md 前,必须先备份到 [target_dir]/bak/:
[target_dir]/bak/[filename]_[YYYYMMDDHHmmss].bak
反作弊约束
严禁将 ExpectedOutput 的原文、近似表述、关键特征词植入提示词。优化必须基于通用能力提升。
一致性约束
理想态、Agent/Skill 提示词、Judge 三者必须严格对应。任何一方更新时,其他两方必须同步检查。
读取用例规范
使用 scripts/yaml_tool.py 按需读取,禁止一次性读取整个大型 testcases.yaml:
./venv/bin/python scripts/yaml_tool.py count [path]
./venv/bin/python scripts/yaml_tool.py get [path] 0
./venv/bin/python scripts/yaml_tool.py get [path] 0-4
./venv/bin/python scripts/yaml_tool.py get [path] 0 --fields Input,Judge
关键目录
source/agents/[name]/ | 业务 Agent 源文件(prompt.md, agent.json, testcases.yaml, ideal_state.md)
注意:meta- 系列已全部迁移到 source/skills/meta-*/,此处仅存放非 meta 的业务 Agent。* |
| source/skills/[name]/ | Skill 源文件(SKILL.md, skill.json, testcases.yaml, scripts/) |
| source/skills/meta-*/ | 原子 meta-* Skills(内部专用,不安装到 IDE) |
| [target_dir]/tmp/ | 运行时产物 + 规划文件 |
| [target_dir]/bak/ | 历史备份 |
| scripts/yaml_tool.py | YAML 用例读写工具 |
| scripts/install.py | 安装脚本 |
| scripts/scaffold.py | 目录脚手架创建 |
| scripts/context_tool.py | 恢复最新 plan / baseline / 测试结果 / changelog / learnings |
| scripts/status_tool.py | 将产物同步到 status.json |