Merge pull request #1692 from pikasTech/feat/web-probe-semantic-origins
Pipelines as Code CI / hwlab-web-probe-sentinel-nc01- Success
Pipelines as Code CI / unidesk-host- Success

feat(web-probe): 增加 YAML-first 语义内外网 origin
This commit is contained in:
Lyon
2026-07-10 18:38:02 +08:00
committed by GitHub
18 changed files with 545 additions and 48 deletions
+5 -3
View File
@@ -13,7 +13,8 @@ description: UniDesk Web 开发与浏览器验证技能。用户处理 UniDesk/H
- Web-probe 正式 CLI 入口是 `bun scripts/cli.ts web-probe ...`;旧 `hwlab nodes web-probe` 已移除,只能按 CLI 提示迁移,不要在 issue 或长期文档中继续记录旧入口。
- 涉及 Web 哨兵、`web-probe sentinel``monitor.pikapython.com`、定期/周期巡检或新建巡检时,必须同时加载 `$unidesk-monitor`
- 真实用户入口验证优先;源码检查、构建通过或截图局部正常不能替代原入口验收。
- HWLAB Cloud Web/Workbench 的 closeout web-probe 必须打已经通过 CI/CD 部署的 node/lane 公网 origin,例如 NC01/v03 的 `https://hwlab.pikapython.com`;本地 fake-server、localhost、dist 静态服务和临时 `--url` 只能作为开发 preflight 证据,不能替代 PR 合并、部署后的公网 web-probe 验收
- 调试 HWLAB Cloud Web/Workbench 业务或功能 bug 时,使用 YAML 声明的 `--origin internal`;验收 public exposure、DNS、FRP、Caddy 或公网用户入口时,显式使用 `--origin public`
- `--url` 只是 custom/local 一次性逃生口,与 `--origin` 互斥;禁止通过手写 URL 或 IP 选择内网/公网运行面。本地 fake-server、localhost、dist 静态服务和 custom URL 只能作为开发 preflight 证据。
- 禁止在本地或 master server 直接跑 `vue-tsc` / 前端全量 typecheck 作为默认验证;本地只做语法级检查和真实入口复测,完整类型检查交给 CI、PipelineRun 或明确指定的受控构建运行面。
- 桌面版 Web 截图、视觉复测和 web-probe 采样默认使用 `1920x1080` 视口;只有用户、issue 或 SPEC 明确指定其他尺寸时才覆盖,并在证据中写明覆盖原因。
- Web probe 命令和历史判定口径见 [references/web-probe.md](references/web-probe.md)Playwright/fake-server 复现见 [references/playwright.md](references/playwright.md)。
@@ -23,7 +24,7 @@ description: UniDesk Web 开发与浏览器验证技能。用户处理 UniDesk/H
- 用户要求“离线调查”时,web-probe 只读取已有 observer/sentinel artifact、`observe collect``observe analyze` 报告;不得新开 `run/script/observe` 或触发新的 dashboard 验证。若 collect/analyze 难以定位 run、trace、sample、root-cause signal 或输出不可界定,先改进 analyzer/CLI 证据面,再继续业务结论。
- 用户要求“用 web-probe 做 smoke”时,`web-probe` 是取证工具,smoke 目标以用户/issue 指定的业务入口为准;例如目标是 Workbench 时,必须用 `web-probe run``web-probe observe start` + `observe command --type sendPrompt` 验证 Workbench 页面、会话、消息终态和 `observe analyze` 结果,不能改成只验证 web-probe 工具自身。只有用户明确说“验证 web-probe 自身/基础设施”时,才把 screenshot/script/observe 作为工具自检 smoke。
- HWLAB Web 改动的最终验收顺序是:先完成 PR/CI/CD/GitOps/Argo/runtime `/health` closeout,再对 YAML 选中的公网 origin 跑 web-probe;若公网 web-probe 发现缺路由、认证、代理、资源或 DOM 问题,应继续修复业务或运行面,不得回退到本地 fake-server 通过作为结论
- HWLAB Web 业务/功能改动可先在已部署的 node/lane 上用 `--origin internal` 完成快速复测;涉及 public exposure 或公网用户入口的 closeout 再用 `--origin public` 独立验收。两者均必须由 owning YAML 解析,不得用临时 URL/IP 切换运行面
- web-probe 发现 Workbench 请求风暴、浏览器卡死、内存上涨、submit/command 失败或投影缺失时,修复目标默认是 Workbench runtime/projection/read model 或业务代码;不得为了通过 smoke 去降低 Playwright/Chromium 能力、减少采样、自动刷新页面、关闭 freeze/memory 检测或把 blocker 降级。探针侧只能补证据、root cause 可见性和 YAML policy 接入。
- 交互式线上验收优先使用 `web-probe observe start``observe command``observe collect``observe analyze``web-probe script` 只作为一次性探测逃生口。重复出现的高频动作(折叠侧栏、关闭报告、切换全屏、导出低码率截图、采集布局指标)必须沉淀为 observe command 或 analyzer 能力。
- 截图取证必须优先配合页面的 RESTful 深链:截图命令应直接打开能恢复目标 source/file/task/report/session/run 和聚焦区域的 URL,再等待稳定 DOM 合约后截图。若目标页面缺少必要深链能力,不要先用脆弱点击/滚动流程硬截;应先增强前端深链与刷新恢复能力,再把截图能力接回 web-probe/observe/sentinel 命令。
@@ -33,6 +34,7 @@ description: UniDesk Web 开发与浏览器验证技能。用户处理 UniDesk/H
- `observe collect <id> --view turn-summary --command-id <cmd_...>` 必须按 commandId 精确返回单轮;不存在时保持结构化 `not-found`,禁止回退全量轮次。输出中 observer control 完成、turn submission 与异步 turn terminal 是三个独立证据字段,control completed 不等于业务 turn terminal。
- `workbench-triad` 的本地 `network.jsonl` 没有匹配响应时,结论必须写作 `artifact evidence missing`,并明确这不能证明业务 API 未发生;将 control artifact 中的 OTel trace reference 作为独立证据引用,再走 `$unidesk-otel` 受控诊断核验完整业务链路。
- `web-probe script` 结果首行固定返回 `UNIDESK_WEB_PROBE_COMMAND_PROMOTION_HINT <json>`,同时在结构化结果首字段返回 `commandPromotionHint`;一次性脚本在重复前必须沉淀为 repo-owned typed command。内置 generated command(例如 `web-probe opencode-smoke`)会明确返回可直接复用且不附加临时脚本 warning,禁止复制其生成脚本另起一次性入口。
- 沉淀后的 typed command 必须复用 observer start 时选中的 semantic origin;不得在 command 内嵌 URL/IP,也不得为 internal/public 各复制一份 command。
- Workbench 性能卡顿调查优先用 `observe command --type performanceCapture` + `observe analyze` + `observe collect --view performance-summary``performance-summary` 必须保持首屏 bounded,只输出 LongTask/LoAF/event-loop gap 摘要、CPU profile hotspots/stacks 和 sourceFiles,下钻完整 profile/report 时再显式读取 artifact。
- Project Management/MDTODO closeout 必须区分 `control` 页和被动 `observer` 页:显式 `observe command` 的 command result、control URL 和对应截图是用户动作证据;observer 周期刷新或 stop 后根路由空态只能作为对照信号,不能覆盖 command result。涉及报告的验收要同时记录 `reportPreviewVisible``reportFullscreenVisible`、报告 deep link 和截图 SHA。
- MDTODO → Workbench launch 验收必须引用 `launchWorkbenchFromMdtodo` 的 command result,确认文件/任务选择、Workbench session、launch/chat 状态和 OTel trace header;不要只凭页面最终停在 Workbench URL 判断通过。
@@ -42,7 +44,7 @@ description: UniDesk Web 开发与浏览器验证技能。用户处理 UniDesk/H
## 高频工作流
1. 先确认目标:repo、分支/lane、node、用户入口 URL、预期页面或 workflow。
1. 先确认目标:repo、分支/lane、node、semantic origininternal/public、预期页面或 workflow。
2. 读取对应 SPEC 或 issue,明确验收口径;Workbench 和 Performance 页不要只凭局部 DOM 判断。
3. 用受控 CLI 或 Playwright wrapper 复现:优先 `bun scripts/cli.ts web-probe ...`,必要时用 `bun scripts/playwright-cli.ts ...`
4. 修改前端代码后执行最小相关验证,再用同一原入口复测。