utest-task-generate-execute-skill/
├── SKILL.md # 技能主文档
├── references/ # 参考资料目录
│ ├── apitest-cli.md # API测试命令行参考
│ ├── apitest-conversation-flow.md # API测试对话流程
│ ├── apitest-error-handling.md # API测试错误处理
│ ├── conversation-flow.md # 对话流程参考
│ ├── perftest-cli.md # 性能测试命令行参考
│ └── perftest-config.md # 性能测试配置参考
└── scripts/ # 脚本目录 (文件解压位置)
├── utest-task-generate-execute-skill-files.txt # 技能文件列表
├── utest_darwin_amd64 # macOS Intel架构二进制文件
├── utest_darwin_arm64 # macOS Apple Silicon架构二进制文件
├── utest_linux_amd64 # Linux x86_64架构二进制文件
├── utest_windows_amd64.exe # Windows x86_64架构可执行文件
├── utest_skills_install.sh # Linux/macOS安装脚本
└── utest_skills_install.ps1 # Windows PowerShell安装脚本
这是一个面向 UTest 任务编排 的 Skill。
它只做两类事情:
perftest:压测任务的创建、修改、执行apitest:接口测试任务的创建、修改、查询、删除、执行、报告处理、同步提示它不做的事情:
统一原则:优先调用 skill 自带的 utest 可执行文件,而不是走 MCP 或伪实现。
references/*.md。perftest 还是 apitest。执行时机:加载本 Skill 后立即执行,且必须发生在读取任何 references/*.md 之前。
$out = & powershell -ExecutionPolicy Bypass -File "\scripts\utest_skills_install.ps1" 2>&1; if ($LASTEXITCODE -ne 0) { $out | Out-String | Write-Host } cd "" && chmod +x "scripts/utest_skills_install.sh" && out="$(/usr/bin/env bash "scripts/utest_skills_install.sh" 2>&1)"; code=$?; if [ $code -ne 0 ]; then printf '%s\n' "$out" | tail -n 80; fi; exit 0 失败处理:
更新检查失败,将继续使用本地版本。> 脚本会读取远端版本文件,并在本地写入 .utest-task-generate-execute-skill-version。
每次接到用户请求,先按下面顺序执行:
perftest 还是 apitest不要一上来就拼 CLI。
perftest 的关键词遇到以下任意语义,优先进入 perftest:
perftest saveplan uuidrun-overviewreportUuidapitest 的关键词遇到以下任意语义,优先进入 apitest:
apitesttask uuidapitest 的表达以下表达虽然口语化,但默认优先按 apitest 处理:
前提是上下文没有明显压测信号。
如果用户只说"任务""执行一下""帮我建个任务"这类模糊表达,且上下文无法判断子域,只追问一次:
perftest),还是 接口测试任务(apitest)?"不要连续追问多个问题。
始终从当前 skill 的 scripts/ 目录选择与操作系统匹配的二进制:
scripts/utest_windows_amd64.exescripts/utest_darwin_amd64scripts/utest_darwin_arm64scripts/utest_linux_amd64scripts/ 目录下的二进制在真正拼装命令前,按子域读取对应文档。
perftest 必读references/perftest-cli.mdreferences/perftest-config.mdreferences/conversation-flow.mdapitest 必读references/apitest-cli.mdreferences/apitest-conversation-flow.mdreferences/apitest-error-handling.mdperftest 规则perftest 支持的用户动作perftest 创建 / 修改任务流程按下面顺序处理:
references/conversation-flow.md。config.json,也不得直接代用户选默认模式。references/perftest-config.md 生成完整基础 config JSON,并将 pressure-config 作为保存压力测试任务的独立入参准备,禁止放入 config JSONmodethreads / qpsNum / initQpsNum / maxQpsNumqpsIndexpressureTimetraceReportadjustPerfexecutionGroupexecutionGroupRatiovalidVarexecutorCount公共-广州三区(executionGroup=35)QQ广州1(公共)(executionGroup=39)validVar 与 executionGroupRatio 都是数组,可配置一个或多个压力源validVar 与 executionGroupRatio 本质上表示同一份压力源分配数据;应先组织一份包含 executionGroup / percent / count 的基础数组executionGroupRatio 直接写入这份基础数组;validVar 则在完全相同的数组顺序和相同的 executionGroup / percent / count 基础上,仅额外补 namecount 表示分配到该压力源的执行机台数,不再固定为 1count 的总和必须等于 executorCount;因此 validVar[].count 总和与 executionGroupRatio[].count 总和都必须等于 executorCount500 处理;userMode 按 threads 计算,qpsMode 必须先用最高 RPS × 系数换算 threadsqpsMode 且 adjustPerf = "0":threads = ceil(qpsNum * qpsIndex)qpsMode 且 adjustPerf = "1":threads = ceil(maxQpsNum * qpsIndex)peakLoad = threads(userMode)或 max(targetMaxRps, threads)(qpsMode),再计算 executorCount = max(1, ceil(peakLoad / 500))executorCount 或压力源 count 总和小于计算结果,必须按最小合法值修正并明确告知原因maxThreads 外,其余某些模式当前不关心的字段仍保留在 JSON 中executorCount 计算补充规则userMode:主要看 threads,maxThreads 如无特殊要求可与 threads 保持一致qpsMode 且 adjustPerf = "0":以 qpsNum 作为最大 RPS,并用 threads = ceil(qpsNum * qpsIndex) 换算并发数qpsMode 且 adjustPerf = "1":以 maxQpsNum 作为最高 RPS,并用 threads = ceil(maxQpsNum * qpsIndex) 换算并发数executionGroupRatio[] 和 validVar[];两者数组顺序及 executionGroup / percent / count 必须完全一致,只有 validVar[] 额外带 nameexecutorCount 时,必须自动计算;当用户给出但值偏小时,或各压力源 count 总和偏小时,必须自动修正后再落配置500,或压力源分配机器总数不足,就不得继续保留过小的 executorCountpressure-config 是独立入参,必须与基础 config JSON 分开传递,禁止写进 config JSON。"pressure-config": {},基础 config.isGradient 保持 false。config.isGradient 必须置为 true,并使用默认模板写入 pressure_mode = 1。config.isGradient 必须置为 true,并使用默认模板写入 pressure_mode = 2。config.isGradient 必须置为 true,并使用默认模板写入 pressure_mode = 3。stressTime、initPercent、rampUpPercent、troughs_percent、troughs_time、peak_percent、peak_time、cycle_count、time_climb_peak、time_climb_troughs、ramp_time 等字段。config.json 并使用 --config-fileperftest save 如需传 --pressure-config,必须通过 cmd /d /s /c 包裹 CLI 调用,并将压力配置 JSON 写成 "{\"stressTime\":60,...}" 形式;不要在 PowerShell 中使用 $pc = '{""stressTime"":...}',也不要直接使用 --pressure-config '{"stressTime":...}'taskUuid 时按修改处理,否则按创建处理envId 与 env-file,按 CLI 实际优先级使用 envIdperftest 执行任务流程--filepressureTaskUuid,使用 --uuidtaskUuidreportUuidreportUrlperftest 实时数据分析流程当用户要查看压测实时数据、实时报告、协议数据、报告概览,或要求分析正在运行中的压测结果时,使用 run-overview:
<utest-bin> perftest run-overview --report-uuid <压测报告UUID>
处理规则:
reportUuid / 压测报告 UUID;如果当前上下文已有刚执行返回的 reportUuid,可直接使用。reportUuid,只追问一次:"请提供压测报告 UUID(reportUuid),我会拉取实时数据并分析协议维度表现。"reportUuid 方便用户继续排查。perftest 硬性规则--config 和 --config-file--plan-uuid--name--file 和 --uuidrun-overview 必须使用 --report-uuid,不要误用压力任务 UUID、场景 UUID 或接口测试报告 UUIDapitest 参数混入压测命令apitest 规则apitest 支持的用户动作apitest 处理边界负责:任务创建 / 查询 / 修改 / 删除 / 执行
不负责:生成新场景 / 单独查询执行结果 / 单独查询报告
apitest 删除任务必须提供任务标识硬性规则:用户请求删除任务时,必须由用户提供以下至少一项:
--task-id)--name)禁止行为:
缺少标识时的处理:只追问一次,要求用户提供任务 ID 或任务名称,示例:
> 删除任务需要指定目标任务,请提供任务 ID 或任务名称。
apitest CLI 命令总览| 命令 | 说明 |
|---|---|
| ------ | ------ |
apitest resolve | 名称消歧 + 场景查询(stdin JSON → stdout JSON) |
apitest create-v2 | 创建任务(stdin 已消歧 JSON,必填:name + scene_groups) |
apitest list | 查询任务列表 |
apitest get | 查询任务详情 |
apitest update | 修改任务(环境/名称/自动更新/数据驱动) |
apitest delete | 删除任务 |
apitest run | 执行任务并获取报告 |
apitest 动作识别关键词| 动作 | 关键词 |
|---|---|
| ------ | -------- |
| 创建 | "创建接口测试任务""用标签创建任务""用场景UUID创建任务""把这些场景做成任务" |
| 查询 | "查询任务列表""有哪些接口测试任务""查看任务详情""看看这个任务的信息" |
| 修改 | "修改任务的环境""更新任务名称""把任务环境改成..." |
| 删除 | "删除这个任务""删掉冒烟测试任务" |
| 执行 | "执行这个任务""跑一下任务""运行任务" |
apitest 必读参考文件做任何 apitest 操作前,必须先读取以下文件:
references/apitest-cli.md — CLI 命令参数手册references/apitest-conversation-flow.md — 创建/修改任务完整流程、场景筛选路径决策、分组编排规则references/apitest-error-handling.md — 交互模板、歧义处理、错误处理apitest 版本能力边界update 不支持:添加/删除场景
run 不支持(Skill 层不透出):--path(文件路径执行)、--execution-group-id(执行机)
在真正执行前,用一句短摘要告诉用户:
perftest / apitestplanUuid / task uuid / scenario uuid / jsonPath / reportUuid执行后只总结关键结果:
reportUuid / reportUrl 是否可用run-overview,必须总结实时协议数据、异常点和建议动作perftest 与 apitest 参数共 3 个版本