@lark-apaas/coding-miaoda-sandbox-skills 0.1.35 → 0.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,54 +9,24 @@ gate-tools:
9
9
  subagent_type: E2E
10
10
  ---
11
11
  {% if visualCheckEnabled %}
12
- # 检查与验证:工具选择指南
13
-
14
- 静态页面检查和功能验收使用不同工具。向用户只说「页面检查」或「用浏览器操作验证」,不要解释内部工具或 agent 名称。
15
-
16
- ## 决策规则
17
-
18
- ```
19
- 改完代码或用户想确认应用是否正常
20
- ├─ 明确要求验证后端接口 / API / 请求响应 → api_request
21
- ├─ 满足下方「派 E2E 的条件」任一条 → Task(subagent_type="E2E")
22
- └─ 其他情况(默认)→ 只对改动涉及的路由调用 visual_check,全部通过即交付
23
- ```
24
-
25
- - **静态视觉检查**:调用 `visual_check`,一条路由一次调用;互不依赖的路由可同时发起。它只检查指定路由的最终静态画面,不用来点击、填写、提交或验证接口。
26
- - **功能验收**:派 `Task(subagent_type="E2E")` 时一律按标准语义执行,调用时不要额外指定运行方式。
27
- - **接口验收**:只在用户明确要检查接口、API、请求或响应时调用 `api_request`;完成浏览器验收后不追加接口调用。
28
- - **E2E 不可用时(Legacy)**:Task 的 `subagent_type` 没有 E2E 选项时,交互、业务、数据和网络验收改用 `api_request`、读代码和读运行时日志;不要尝试派 E2E。静态视觉仍使用 `visual_check`。
12
+ # 浏览器验收(E2E)用法
29
13
 
30
- ### 派 E2E 的条件
14
+ 向用户只说「用浏览器操作验证」,不要解释内部工具或 agent 名称。
31
15
 
32
- 满足以下任一条件时派 E2E:
33
-
34
- - 用户在本轮明确要求验证某个功能或流程;
35
- - 本轮改了提交、保存、删除这类写操作,或改了权限逻辑;
36
- - visual_check 发现了视觉以外的问题,例如数据为空或出现报错弹窗。
16
+ - 派 `Task(subagent_type="E2E")` 时一律按标准语义执行,调用时不要额外指定运行方式。
17
+ - E2E 结束后不追加 `api_request` 调用。
37
18
 
38
19
  ## 调用方式
39
20
 
40
- ```js
41
- visual_check({
42
- relative_path: "<路由相对路径>",
43
- })
44
- ```
45
-
46
- `relative_path` 只填一个路由。一条路由检查完成后再根据结果决定是否修复;多个互不依赖的路由可以分别同时调用。
47
-
48
21
  ```js
49
22
  Task({
50
23
  subagent_type: "E2E",
51
- {% if e2eSemanticPlan %}
52
- agent_options: { test_plan_file_path: ".spark/e2e-test/standard/<语义名>.json"{% if e2eStructuredCases %}, retest_all: true{% endif %} },
53
- {% endif %}
24
+ agent_options: { test_plan_file_path: ".spark/e2e-test/standard/<语义名>.json", retest_all: true },
54
25
  description: "验收<功能名称>",
55
26
  prompt: "执行<具体交互或业务闭环>,断言<可观察终态>。",
56
27
  })
57
28
  ```
58
29
 
59
- {% if e2eSemanticPlan %}
60
30
  ### 验收计划文件
61
31
 
62
32
  每次派发都必须带 `agent_options.test_plan_file_path`,不传不执行。先列出 `.spark/e2e-test/standard/` 目录并**读**可能覆盖本需求的那份;同需求有变化就编辑那份,换功能或页面则新建。计划只包含交互、业务、数据和网络的可观察终态;`prompt` 只说明本轮执行范围和 Case 编号。
@@ -66,15 +36,12 @@ Task({
66
36
  ```json
67
37
  {"cases":[{"id":1,"priority":"p0","description":"打开首页,预期工单列表渲染出至少 1 行"}]}
68
38
  ```
69
- {% if e2eStructuredCases %}
70
39
 
71
40
  本轮跑哪些用例只认结构化字段,写在 `prompt` 里的自然语言范围不生效:刚写好或刚改过的计划首次验收带 `agent_options.retest_all: true`,跑全部用例;修复后复验带 `agent_options.retest_case_ids: [1, 2]`,只列失败或受这次修复影响的用例(编号取计划文件里的 `id`,必须是正整数,不是 `"case-1"` 这类字符串)。
72
- {% endif %}
73
- {% endif %}
74
41
 
75
42
  ## 验收要求
76
43
 
77
- - 视觉检查写清可观察结果,例如「首页标题完整可见、卡片两列排列、主图不是裂图」,不要只写「看起来正常」。
44
+ - 检查视觉的用例写清可观察结果,例如「首页标题完整可见、卡片两列排列、主图不是裂图」,不要只写「看起来正常」。
78
45
  - 功能验收必须走到终态:提交后记录出现、跳转后内容正确、删除后记录消失或 AI 输出出现;不要停在弹窗、按钮或表单字段出现。
79
46
  - 写操作和资源加载要核对网络结果;非 2xx、空结果、错误兜底或白屏都应报失败。
80
47
  - 不测试登录、认证、CAPTCHA,或会造成真实外部副作用的行为。
@@ -142,45 +109,29 @@ Task({
142
109
 
143
110
  > **核心原则:agent 只「机械执行 + 报判断」,不做推理。** 判定标准全写死在断言里——别让它自己推断"该测什么"或定义"什么算正常 / 好看"。它的活只有:执行动作 → 看现象 → 报通过 / 不通过。
144
111
 
145
- {% if e2eSemanticPlan %}
146
112
  ### 验收计划文件:先写文件,再派发(首次与后续同一套)
147
113
 
148
114
  每次派发都必须带 `agent_options.test_plan_file_path`,不传不执行。**两种 mode 各一份卷**,目录必须与派发 mode 一致(串卷不执行):standard 卷写 `.spark/e2e-test/standard/<语义名>.json`(含点击 / 输入 / 提交),lite 卷写 `.spark/e2e-test/lite/<语义名>.json`(只放看得见的检查点)。
149
115
 
150
116
  1. **先看已有的**:`glob .spark/e2e-test/<mode>/*.json` → **读**可能覆盖本需求的那份(没读过不要传)
151
117
  2. **改还是新建**:同需求用例有变化 → 编辑那份;换了功能 / 页面 → 新建一份
152
- {%- if e2eStructuredCases %}
153
118
  3. **派发**:standard 卷跑哪些用例只认结构化字段,写在 `prompt` 里的自然语言范围不生效:刚写好或刚改过的卷首次验收带 `agent_options.retest_all: true`,跑全部用例;修复后复验带 `agent_options.retest_case_ids: [1, 2]`,只列失败或受这次修复影响的用例(编号取计划文件里的 `id`,必须是正整数,不是 `"case-1"` 这类字符串)。lite 卷不带这两个字段,`prompt` 只说跑哪些(`跑 Case 1、2` / `测试全部用例`),不点名默认只跑 p0
154
119
 
155
120
  格式(一条用例一行,优先级小写,每卷 ≤10 条):
156
- {%- else %}
157
- 3. **派发**:`prompt` 只说跑哪些(`跑 Case 1、2` / `复测 p0 和 p1` / `测试全部用例`),**不点名默认只跑 p0**;一轮点名 ≤5 条
158
-
159
- 格式(一条用例一行,优先级小写,每卷 ≤10 条;一轮只跑其中 ≤5 条):
160
- {%- endif %}
161
121
 
162
122
  ```json
163
123
  {"cases":[{"id":1,"priority":"p0","description":"打开首页,预期工单列表渲染出至少 1 行"}]}
164
124
  ```
165
125
 
166
126
  - **用例正文只写在计划文件里**:本模式下 `prompt` 不写 `## 测试用例`(下面示例里的用例正文改为写进卷),只留应用结构与本次范围——两处都写会让计划外用例一条不跑、报告却全绿
167
- {%- if e2eStructuredCases %}
168
127
  - **复测只选编号、不删用例**:「只传 failed + 未完成的 Case」指 standard 用 `retest_case_ids` 列出这些编号(lite 在 `prompt` 里点名),不是从卷里删掉已通过的用例
169
- {%- else %}
170
- - **复测只点名、不删用例**:「只传 failed + 未完成的 Case」指在 `prompt` 里点名,不是从卷里删掉已通过的用例
171
- {%- endif %}
172
- {% endif %}
173
128
 
174
129
  ### 调用结构
175
130
 
176
131
  ```js
177
132
  task({
178
133
  subagent_type: "E2E",
179
- {%- if e2eSemanticPlan and e2eStructuredCases %}
180
134
  agent_options: { mode: "standard", test_plan_file_path: ".spark/e2e-test/standard/<语义名>.json", retest_all: true }, // 首次验收;lite 卷改 mode: "lite" + lite 目录,不带 retest_*
181
- {%- else %}
182
- agent_options: { mode: "standard" }, // standard=可点击/输入,lite=只截图
183
- {%- endif %}
184
135
  description: "验收创作工具", // 一句话任务名
185
136
  prompt: `
186
137
  对<被测应用一句话描述>进行端到端验收测试。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/coding-miaoda-sandbox-skills",
3
- "version": "0.1.35",
3
+ "version": "0.1.36",
4
4
  "description": "Miaoda 合并沙箱 skills 包(包含原 miaoda-skills 的 miaoda / miaoda-modern / miaoda-design / shared 四条业务线);发布公网 npm,随沙箱运行时经 update-skills 同步到 .agent/skills/",
5
5
  "type": "module",
6
6
  "files": [