feat: update tester

This commit is contained in:
2026-09-16 14:40:33 +08:00
parent 2783946cec
commit bdfd2ff342
8 changed files with 259 additions and 22 deletions
+2 -1
View File
@@ -35,4 +35,5 @@ python3 <skill-dir>/scripts/catalog.py next-id --root <root> --category <CAT>
- 为了能在默认风险下跑而把 `risk` 改低
- 一次塞进无关的一批用例
- 手改 `runs/` 冒充执行记录
- 手改 `cases.csv`(必须从 `cases/*.yaml` 生成)
- 手改 `cases.csv`(必须从 `cases/*.yaml` 生成;`last_*` 列来自最近一次 `runs/*.yaml`)
- 手改 `runs/*.csv`(必须从对应 yaml 用 `generate_run_csv.py` 生成)
+10 -3
View File
@@ -35,7 +35,7 @@ python3 <skill-dir>/scripts/catalog.py select --root <root> \
## 4. 执行
按 select 返回的顺序,一条一条来。默认失败即停(产品 `fail` 或探测到的不安全状态)。用户说继续 / keep-going 才往后跑。
按 select 返回的顺序,一条一条来。select 按 `catalog.yaml` 的 `categories` 顺序,同一分类内按该 yaml 列表顺序(不是文件名字母序)。默认失败即停(产品 `fail` 或探测到的不安全状态)。用户说继续 / keep-going 才往后跑。
**script**
@@ -57,7 +57,13 @@ python3 <skill-dir>/scripts/catalog.py run-script --root <root> --id <id>
每条:`id, result, evidence, notes`。`result` 只能是 `pass` / `fail` / `environment-fail` / `skipped`。
写入 `.pouch/tester/runs/<UTC时间>-<范围>.yaml`,包含筛选条件、HOST 是否已设(可以写 HOST 值)、session 是否复用、逐条结果。
写入 `.pouch/tester/runs/<UTC时间>-<范围>.yaml`,包含筛选条件、HOST 是否已设(可以写 HOST 值)、session 是否复用、逐条结果。立刻用同一快照生成 CSV,不要手改:
```bash
python3 <skill-dir>/scripts/generate_run_csv.py --root <root> --run <yaml>
```
这会写出 `.pouch/tester/runs/<UTC时间>-<范围>.csv`(`executed=yes|no`),并刷新 `cases.csv` 的 `last_result` / `last_executed` 列。对话里两个路径都报。
对话报告:
@@ -70,6 +76,7 @@ session: browser=复用|新开|未用;mobile=…
计数: pass=N fail=N environment-fail=N skipped=N
失败: id + 一句证据
跳过: id + 原因
快照: .pouch/tester/runs/<file>
快照: .pouch/tester/runs/<file>.yaml
成绩单: .pouch/tester/runs/<file>.csv
下一步: 一句话
```
+5 -4
View File
@@ -7,15 +7,16 @@ catalog.yaml 分类、风险阶梯、session、变量
local.yaml.example HOST 与授权开关模板
local.yaml 本机覆盖,不提交
cases/<category>.yaml 一个分类一个文件(执行源)
cases.csv 给人看的扁平清单;skill 的 generate_cases_csv.py 读 cases/*.yaml 生成
runs/ 每次运行快照
cases.csv 给人看的扁平清单;generate_cases_csv.py 读 cases/*.yaml,并拼最近一次运行的 last_* 列
runs/*.yaml 每次运行快照(执行源)
runs/*.csv 同一次运行的成绩单;generate_run_csv.py 从对应 yaml 生成
```
## catalog.yaml
| 字段 | 含义 |
|------|------|
| `categories` | `{id, title}` 列表,id 与 `cases/<id小写>.yaml` 对应 |
| `categories` | `{id, title}` 列表,id 与 `cases/<id小写>.yaml` 对应;列表顺序即 `select` / 执行顺序 |
| `risks` | 从低到高,只能是 `safe` → `act` → `harm` 的一段,且以 `safe` 开头。含义见 [levels.md](levels.md) |
| `default_max_risk` | 未指定时的运行上限,必须是 `risks` 里的值 |
| `vars` | 可替换变量,如 `API_BASE: http://${HOST}:8095` |
@@ -36,7 +37,7 @@ runs/ 每次运行快照
| `category` | 是 | 必须等于文件声明的 category |
| `title` | 是 | 短名 |
| `what` | 是 | 一句可观察的「测什么」 |
| `status` | 是 | `active` / `retired` |
| `status` | 是 | `active` / `pending` / `retired`。`pending` = 暂缓,仍保留在目录里但不执行,原因写在 `notes` |
| `suite` | 是 | `smoke` / `full` / `slow`,判定见 [levels.md](levels.md) |
| `risk` | 是 | `safe` / `act` / `harm` |
| `gate` | 否 | 项目细分闸,必须在 catalog `gates` 里 |