SuperAPI AI 工具集

verify-openwork

测试与质量

查看项目

更新于 10-19 03:13

技能介绍

用途

verify-openwork 用于解决“改动何时算完成”的问题:一项变更只有在真实产品上被亲眼看到生效后才算完成,编译通过不算。提交的 e2e 套件仅包含 evals/journeys.ts 中的九条核心旅程,其他一切验证都按 PR 单独执行并丢弃。

主要能力与验证方式选择

根据改动类型选择检查方式:

  • 服务端规则(权限、隔离、校验、密钥):在代码旁写 API 测试,例如 ee/apps/den-api/test/api/*.api.test.ts,运行 pnpm --filter @openwork-ee/den-api test:api。
  • 纯函数或组件逻辑:同目录单元测试。
  • 人或客户端端到端执行的操作:编写 proof,即 evals/proofs/<name>.proof.test.ts(write-a-spec)。
  • 九条核心旅程之一损坏或变更:修改该旅程中的步骤,即 evals/core/<journey>.e2e.test.ts。

使用方式

  1. 启动产品:pnpm world up dev-app-web --detach -- --browser 会在 headless Chrome 中运行当前 checkout,并打印 webUrl 和 cdp;结束时运行 pnpm world down dev-app-web。仅桌面壳层改动才使用桌面窗口(见 drive-desktop-cdp)。Den 需要 localhost 上的 MySQL 和 Redis(pnpm dev:den:mysql,或通过 OPENWORK_EVAL_MYSQL_URL=mysql://root@127.0.0.1:3306 使用本地 MySQL)。
  2. 驱动并保留证据:开发过程中可手动使用 drive-desktop-cdp(新建会话、发送、等待、截图)。作为 proof 运行时使用 pnpm evals:e2e <name> --local,截图与报告落在 evals/results/test-runs/<latest>/。必须驱动真实用户路径,不得使用内部 setter、测试专用端点或读取应用状态;pnpm --dir evals lint:specs 会拒绝 proofs 中的此类做法。
  3. 证明没有改动时会失败:在 dev 上通过的 proof 不能证明你的改动有效。需在两个版本上运行:先用 git worktree add /tmp/ow-base origin/dev 创建基线,复制 proof 文件过去,在基线中执行 pnpm install --frozen-lockfile && pnpm evals:e2e <name> --local(必须失败);再在当前分支运行 pnpm evals:e2e <name> --local(必须通过);最后 git worktree remove /tmp/ow-base。若在 dev 上也通过,说明断言比改动更宽松,需要收紧。
  4. 交付:使用 open-a-pr 提交 PR。CI 会在 PR head 上运行你的 proof 与九条核心旅程并发布证据。在 PR 的 Evidence 部分写明 proof 名称及其 before → after。

九条核心旅程

  • org-invite-join:所有者邀请某人,对方以正确角色加入。运行 pnpm evals:e2e org-invite-join --local。
  • core-chat:已登录用户发送消息并读取回复。运行 pnpm evals:e2e core-chat --local。
  • thread-continues-after-restart:对话、排队的后续消息与草稿在重启后保留(桌面端)。运行 pnpm evals:e2e thread-continues-after-restart --local。
  • agent-connection-journey:聊天中的连接器调用显示调用了什么、返回了什么。运行 pnpm evals:e2e agent-connection-journey --local。
  • agent-permissions:被阻止的命令保持阻止,被允许的命令可运行。运行 pnpm evals:e2e agent-permissions --local。
  • app-smoke:打包后的桌面应用能打开到可用界面。通过打包 smoke(apps/desktop/scripts/packaged-smoke.mjs)验证。
  • packaged-update-install:已安装应用可下载并安装更新版本(macOS 打包 smoke)。
  • agent-signup-via-mcp:MCP 客户端连接、搜索能力并运行其中一个。运行 pnpm evals:e2e agent-signup-via-mcp --local。
  • secure-keys-in-chat:密钥不进入对话记录、模型、日志及其他成员的调用。运行 pnpm evals:e2e secure-keys-in-chat --local。

适用场景与限制

适用于 OpenWork 仓库的日常开发与 PR 验证流程,强调端到端真实路径验证和失败基线对照。限制方面:需要本地 MySQL 与 Redis 环境;部分旅程(如重启后对话延续、打包更新安装)依赖桌面端或 macOS 环境;提交 e2e 套件只覆盖九条核心旅程,其他验证不长期保留。