Skip to content

Commit be14778

Browse files
authored
misc: add manual perf trigger skill [skip ci](#796)
Add a project-local Codex skill for triggering OpenXiangShan/GEM5 manual-perf workflow. The skill checks gh availability and auth, asks for workflow inputs, warns that only kmhv3.py has been verified in this flow, and requires post-trigger run validation. Change-Id: I78d822a03cd58a2986f6cf8656437482f4e75cc7
1 parent a36a878 commit be14778

File tree

2 files changed

+228
-0
lines changed

2 files changed

+228
-0
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
---
2+
name: gem5-manual-perf-trigger
3+
description: 用于在本地通过 `gh` 远程触发 OpenXiangShan/GEM5 的 `manual-perf.yml`,并在触发后检查 run 是否正常创建。适用于用户明确要求触发 `manual-perf`、组装 `gh workflow run` 命令、校验 workflow 输入项、或确认触发后的 Actions run 状态。
4+
---
5+
6+
# GEM5 Manual Perf Trigger
7+
8+
## 概述
9+
10+
这个 skill 用于安全、可追溯地触发远端 GitHub Actions `manual-perf.yml`。核心目标不是只把命令发出去,而是先确认本地触发条件,再确认输入参数,再在触发后检查 run 是否真的正常创建。
11+
12+
当前约束:
13+
14+
- 已确认 `manual-perf.yml` 在本仓库上可通过 `gh workflow run` 触发。
15+
- 已实际走通的配置只有 `kmhv3.py`
16+
- 其他配置虽然在 workflow 的 `inputs` 中存在,但当前没有实际跑通记录,触发前必须明确提醒用户这一点。
17+
18+
## 工作流
19+
20+
### 第 1 步:检查本地触发能力
21+
22+
优先检查 `gh` 是否可用:
23+
24+
```bash
25+
gh --version
26+
```
27+
28+
如果 `gh` 不可用:
29+
30+
- 明确提示用户先安装 `gh`
31+
- 或者提供 GitHub REST API `workflow_dispatch``curl` 方案。
32+
- 但必须同时说明:`curl` 触发流程在当前仓库协作里未实际走通过,只能作为备选方案,可靠性不如 `gh` 已验证路径。
33+
34+
不要在 `gh` 缺失时直接假设 `curl` 方案可用并继续执行。
35+
36+
### 第 2 步:检查认证状态
37+
38+
检查 `gh` 是否已登录:
39+
40+
```bash
41+
gh auth status
42+
```
43+
44+
如果未登录,或者 token 无效:
45+
46+
- 提示用户先执行 `gh auth login`
47+
- 或者提示用户配置具备 `repo``workflow` 权限的 token
48+
49+
说明要点:
50+
51+
- 使用 `gh workflow run` 时,推荐优先走 `gh auth login`
52+
- 如果未来改走 REST API,则需要用户自行准备 token
53+
54+
### 第 3 步:读取 workflow 输入项
55+
56+
在触发前,读取并核对 `.github/workflows/manual-perf.yml``workflow_dispatch.inputs`
57+
58+
当前已知关键输入项:
59+
60+
- `configuration`
61+
- `benchmark_type`
62+
- `specific_benchmarks`
63+
- `vector_type`
64+
- `branch`
65+
66+
当前已验证存在的配置选项:
67+
68+
- `kmhv2.py`
69+
- `kmhv3.py`
70+
- `idealkmhv3.py`
71+
72+
但必须提醒用户:
73+
74+
- `manual-perf` 已实际走通的是 `kmhv3.py`
75+
- 其他配置目前只是 workflow 中支持,暂未在本技能流程里实际验证
76+
77+
### 第 4 步:向用户确认触发参数
78+
79+
在真正触发前,必须向用户确认以下信息:
80+
81+
- 配置文件:如 `kmhv3.py`
82+
- benchmark 类型:如 `gcc12-spec06-1.0c`
83+
- 是否只跑指定 benchmark:如 `mcf,omnetpp`
84+
- 目标分支、tag 或 SHA:通常是当前分支
85+
- `vector_type`:默认 `base`
86+
87+
如果用户没有给全:
88+
89+
- 主动补问缺失项
90+
- 不要私自猜测 benchmark 集合
91+
92+
如果用户要触发非 `kmhv3.py` 配置:
93+
94+
- 必须先提示“当前只有 `kmhv3.py` 经过实际触发验证,其他配置暂未在此流程中验证”
95+
96+
### 第 5 步:先展示命令,再执行
97+
98+
触发前先把准备执行的命令原样展示给用户,得到确认后再执行。
99+
100+
标准命令模板:
101+
102+
```bash
103+
gh workflow run manual-perf.yml \
104+
--repo OpenXiangShan/GEM5 \
105+
--ref <branch> \
106+
-f configuration=<configuration> \
107+
-f benchmark_type=<benchmark_type> \
108+
-f specific_benchmarks=<specific_benchmarks> \
109+
-f vector_type=<vector_type> \
110+
-f branch=<branch>
111+
```
112+
113+
说明:
114+
115+
- `--ref` 使用要触发的远端分支
116+
- `branch` input 也通常填写同一个分支
117+
- `specific_benchmarks` 可为空;为空表示按 workflow 跑该集合全部 benchmark
118+
119+
### 第 6 步:触发后回查 run
120+
121+
只拿到 “Created workflow_dispatch event” 不够。触发成功后必须继续检查:
122+
123+
1. 返回的 run 链接是否存在
124+
2. `gh run view <run-id>` 是否能正常读取
125+
3. run 是否进入了正常状态,例如 `queued``in_progress`,而不是立刻 `failure` 或不存在
126+
127+
建议的检查方式:
128+
129+
```bash
130+
gh run view <run-id> --repo OpenXiangShan/GEM5
131+
```
132+
133+
必要时可继续查看:
134+
135+
```bash
136+
gh run view <run-id> --repo OpenXiangShan/GEM5 --json status,conclusion,url,name,headBranch,headSha
137+
```
138+
139+
如果 run 创建失败、找不到、或立刻异常终止:
140+
141+
- 不要简单说“已触发”
142+
- 要明确说明触发异常,并给出当前检查到的状态
143+
144+
## 输出要求
145+
146+
执行本 skill 时,回复应遵守以下格式约束:
147+
148+
- 先说明当前准备做什么
149+
- 如果缺少 `gh` 或认证,先阻断并提示用户处理
150+
- 触发前先展示完整命令
151+
- 明确提醒:`manual-perf` 当前实际走通过的是 `kmhv3.py`,其他配置暂未实际验证
152+
- 触发后提供 run 链接
153+
- 触发后追加 run 状态检查结果,而不是只给链接
154+
155+
## 失败处理
156+
157+
### `gh` 未安装
158+
159+
给出两条路径:
160+
161+
1. 安装 `gh` 后再触发
162+
2. 使用 REST API `workflow_dispatch`
163+
164+
但必须注明:
165+
166+
- REST API `curl` 路径当前未在本流程中实际走通过
167+
- 它是备选,不是首选
168+
169+
### `gh` 已安装但未登录
170+
171+
提示:
172+
173+
```bash
174+
gh auth login
175+
gh auth status
176+
```
177+
178+
### workflow 输入不完整
179+
180+
阻断执行,向用户补问:
181+
182+
- 配置文件
183+
- benchmark 类型
184+
- benchmark 子集
185+
- 分支
186+
187+
### 触发后找不到 run
188+
189+
优先检查:
190+
191+
- 仓库名是否正确
192+
- 分支是否已 push 到远端
193+
- workflow 文件名是否正确
194+
- token 是否具备 `workflow` 权限
195+
196+
## 示例
197+
198+
### 示例 1:只跑 `mcf,omnetpp`
199+
200+
用户意图:
201+
202+
- 配置:`kmhv3.py`
203+
- benchmark:`gcc12-spec06-1.0c`
204+
- 仅跑:`mcf,omnetpp`
205+
- 分支:`turbo-pfalign-dualPort-l2Bank-nopf`
206+
207+
先展示命令:
208+
209+
```bash
210+
gh workflow run manual-perf.yml \
211+
--repo OpenXiangShan/GEM5 \
212+
--ref turbo-pfalign-dualPort-l2Bank-nopf \
213+
-f configuration=kmhv3.py \
214+
-f benchmark_type=gcc12-spec06-1.0c \
215+
-f specific_benchmarks=mcf,omnetpp \
216+
-f vector_type=base \
217+
-f branch=turbo-pfalign-dualPort-l2Bank-nopf
218+
```
219+
220+
触发后再检查 run 状态,并返回链接与状态。
221+
222+
## 资源
223+
224+
当前 skill 不依赖额外 `scripts/``references/``assets/`
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
interface:
2+
display_name: "GEM5 Manual Perf Trigger"
3+
short_description: "触发 OpenXiangShan/GEM5 的 manual-perf workflow"
4+
default_prompt: "触发 GEM5 仓库的 manual-perf.yml,并根据分支、配置和 benchmark 组装 gh workflow run 命令。"

0 commit comments

Comments
 (0)