通过自然语言交互,自动编排「录制 → 数据观察 → 回放 → 结果查询」四阶段工具链,帮助用户完成端到端的流量录制回放操作。
python -m tools schema <工具名> 获取完整参数定义,并参考 references/ 目录下对应的工具说明文档。【绝不】凭记忆或推断组装参数。base_rsp.msg 错误信息并友好展示,询问用户是否重试。config.json,若 auth.user_token 或 auth.project_token 缺失或为空,则向用户索要并写入后再继续。app_server_name(格式 app.server)【必须】使用用户在当前会话中显式提供的字符串值。【绝不】从历史对话、工具返回字段、文档示例、目录名/仓库名等任何渠道推断或复用。模糊指代(如「我的服务」「上次那个」)一律不算提供。缺失或格式不合法时,立即中断并向用户索要。每次响应前【必须】先完成内部推理(涵盖当前阶段、参数状态、用户意图、下一步动作),再输出正式回复和工具调用。
arguments 【必须】是完整、合法、单行 JSON。生成前确认所有括号和引号均已闭合。本 Skill 在 tools/ 目录下提供了 Python 实现的本地工具,用于直接调用 LogReplay 后端 API。
先进入 skill 目录,再通过 python -m tools 调用。不同终端的引号处理不同,按当前环境选择对应写法。
cd .codebuddy/skills/logreplay-traffic-recording
python -m tools list
python -m tools schema SearchReport
python -m tools call MultiGetTaskStatus '{"task_ids": ["id1", "id2"]}'
python -m tools -u user call ReportAgg '{"type": 1, "task_id": 123}'
# 从文件读取入参
python -m tools call SearchReport -f input.json
# 结果输出到文件
python -m tools call SearchReport '{"task_id": 123}' -o result.json
# 从文件读入参 + 结果输出到文件
python -m tools call SearchReport -f input.json -o result.json
cd .codebuddy\skills\logreplay-traffic-recording
python -m tools list
python -m tools schema SearchReport
python -m tools call MultiGetTaskStatus '{\"task_ids\": [\"id1\", \"id2\"]}'
python -m tools -u user call ReportAgg '{\"type\": 1, \"task_id\": 123}'
# 从文件读取入参
python -m tools call SearchReport -f input.json
# 结果输出到文件
python -m tools call SearchReport '{\"task_id\": 123}' -o result.json
cd .codebuddy\skills\logreplay-traffic-recording
python -m tools list
python -m tools schema SearchReport
python -m tools call MultiGetTaskStatus "{\"task_ids\": [\"id1\", \"id2\"]}"
python -m tools -u user call ReportAgg "{\"type\": 1, \"task_id\": 123}"
:: 从文件读取入参
python -m tools call SearchReport -f input.json
:: 结果输出到文件
python -m tools call SearchReport "{\"task_id\": 123}" -o result.json
| 子命令 | 用法 | 功能 |
|---|---|---|
| -------- | ------ | ------ |
list | python -m tools list | 列出所有工具名称、描述、必填参数 |
schema | python -m tools schema | 输出指定工具的完整 JSON Schema |
call | python -m tools call | 调用工具并输出 JSON 结果 |
全局选项 --username / -u 可设置默认用户名,自动注入 base_req.username。
call 子命令额外选项:
| 选项 | 短选项 | 说明 |
|---|---|---|
| ------ | -------- | ------ |
--input-file | -f | 从 JSON 文件读取调用参数(优先级高于命令行 JSON) |
--output-file | -o | 将调用结果输出到指定文件(格式化 JSON) |
调用结果为 JSON 格式,包含 tool_name、success、data(成功时)或 error(失败时)、elapsed_ms 字段。
首次使用前,通过 python -m tools list 获取所有已注册工具的名称、描述和必填参数。
调用任何工具前,【必须】完成以下两步,缺一不可:
python -m tools schema <工具名>,获取完整参数定义(字段名、类型、必填/可选、枚举值等)。references/ 目录下对应的工具说明文档,了解参数含义、组装规则和注意事项。> ⚠️ 【绝不】跳过上述步骤直接调用工具。【绝不】凭记忆或推断组装参数。
说明文档对照表:
| 文档 | 覆盖范围 |
|---|
|------|---------|
| record.md | 录制流量查询 + GoReplay 录制工具 + tRPC 插件录制工具 |
|---|---|
| replay.md | LogReplay 直接回放工具(方式 A) |
| replay_utest.md | Testone/优测 流量转用例工具(方式 B,仅生成用例) |
| diffrule.md | 回放响应 diff 策略配置指南 |
| editrule.md | 流量编辑规则配置指南 |
app_server_name),且服务名【必须】由用户显式提供,【绝不】自行推断或默认填入。record_time=1)。> 所有工具的参数定义以运行时注册的工具 schema 为准。以下仅列出工具名和功能。
GoReplay 录制方式:
| 工具 | 功能 |
|---|---|
| ------ | ------ |
| GetGoReplayNodeList | 获取节点列表(service_list + agent_list) |
| GetProtocolName | 获取具体的协议类型名称 |
| GetProtoInfoList | 获取协议信息列表(协议版本号 commit_id) |
| StartGoReplay | 启动 GoReplay 录制 |
| StopGoReplayTask | 停止录制任务 |
| MultiGetTaskStatus | 批量查询录制任务状态 |
| GetGoReplayStatus | 通过 IP:Port 或 Agent ID 查询录制状态 |
| GetGoReplayExecTask | 获取 GoReplay 录制任务列表 |
tRPC 插件录制方式:
| 工具 | 功能 |
|---|---|
| ------ | ------ |
| GetTrpcPluginInstanceList | 获取 tRPC 插件录制方式的节点实例列表 |
| UpdateTrpcPluginConfig | 更新 tRPC 插件节点配置(开启/关闭录制或回放、修改录制参数等) |
| 工具 | 功能 |
|---|---|
| ------ | ------ |
| RecordAgg | 聚合查询录制接口列表及请求数量 |
| RecordSearch | 查询录制数据详情 |
方式 A(LogReplay 直接回放):
| 工具 | 功能 |
|---|---|
| ------ | ------ |
| ExecuteReplay | 执行流量回放 |
| GetReplayTaskInfo | 查询回放任务状态和统计 |
| DiffConfig | 查询指定接口的 diff 配置 |
| SetDiffConfig | 设置指定接口的 diff 策略配置 |
| QueryEditRuleList | 查询流量编辑规则列表 |
| CreateEditRule | 为指定接口创建流量编辑规则 |
| UpdateEditRule | 启用 / 禁用已有流量编辑规则组 |
| DeleteEditRule | 删除指定的流量编辑规则组 |
| EditRuleCheck | 预览校验流量编辑规则(不落库) |
方式 B(Testone/优测 流量转用例):
| 工具 | 功能 |
|---|---|
| ------ | ------ |
| GenerateTestPlanByTrafficData | 从录制流量生成测试场景用例 |
| GetFlow2SceneTaskList | 查询生成任务状态及用例 ID |
> 方式 B 仅负责将流量转化为 Testone/优测 测试场景用例,用例生成完成即结束,Skill 不介入后续操作。
方式 A:
| 工具 | 功能 |
|---|---|
| ------ | ------ |
| TaskList | 分页查询回放任务列表 |
| GetReplayTaskInfo | 查询回放任务汇总 |
| SearchReport | 查询回放报告详情(按结果筛选) |
| ReportAgg | 回放报告聚合查询(按接口/错误/原因等维度) |
| SearchResponse | 查询【普通回放】单条流量 diff 详情 |
| TwoEnvReplayResultSearch | 查询【双环境回放】单条流量在两个目标环境的回放响应 |
> 普通回放与双环境回放查询单条流量 diff 详情需调用不同接口,具体判定规则见 references/replay.md。
每个阶段的详细步骤、参数组装规则和异常处理,请参阅对应文件:
用户提到「Testone/优测」「流量转用例」「测试场景」→ 方式 B;否则默认 方式 A。
| 维度 | 方式 A(直接回放) | 方式 B(流量转用例) |
|---|---|---|
| ------ | ------------------- | --------------------- |
| 输出产物 | 回放报告(含 diff) | Testone/优测 测试场景用例 |
| 结果比对 | LogReplay 内置 diff | 不涉及 |
| 用例复用 | 不可复用 | 可保存、可复用 |
| 后续操作 | 进入阶段 4 查看结果 | 用例生成完成即结束 |
| 适用场景 | 快速回归验证 | 持续化回归接口测试 |
**【阶段 1:录制周期】** 您好!我是 LogReplay 流量录制回放助手。
为了开始操作,请提供:**服务名**(格式 `app.server`,如 `myapp.myserver`)
⚠️ 服务名必须由您显式提供,我不会推断或使用历史值。
| 参数 | 值 |
|------|-----|
| 应用/服务 | xxx.xxx |
| 容器 | xxx |
| 协议 | trpc |
| 录制时长 | 6 小时 |
确认无误请回复"确认",需修改请告知具体参数。
⚠️ 操作失败
**错误信息**:{base_rsp.msg}
**可能原因**:{分析}
**建议操作**:{建议}
是否需要重试?
python -m tools schema <工具名> 获取完整参数定义 → ② 阅读 references/ 下对应说明文档。跳过任一步骤直接调用 = 参数错误app_server_name 【必须】严格使用用户显式提供的值,【绝不】自行推断、猜测或基于上下文默认填入;用户未提供时立即中断并索要共 3 个版本