Workflows

验证代码变更

如何使用 Munk AI 在本地或 CI 中自动验证代码变更对实际产品行为的影响。

Munk AI 的能力远超静态代码分析。verify change 工作流能将你的代码改动转化为结构化、可执行的验证任务。它会自动启动你的应用,执行必要的操作来覆盖你的改动,并验证预期行为是否生效,同时确保没有破坏周边功能。

适用场景

  • 合并代码前: 在提交 PR 前,获得代码在真实浏览器或设备上运行正常的信心。
  • 作为 AI Agent 的手脚: 为 AI 编程助手提供机器友好的接口,让它们能自主验证刚刚写好的代码。
  • 获取可执行的反馈: 相比于泛泛的“LGTM”评论,你能拿到结构化的结论、执行轨迹和报错截图。

前置准备

在运行验证之前,请确保:

  1. 已安装并配置好 Munk CLI。
  2. 你的目标测试环境已就绪(例如:本地 Web 开发服务器已在 localhost:3000 运行,或 Android 模拟器已启动)。

典型示例

推荐通过传递 JSON 请求文件(Request File)来进行变更验证。这样可以保持配置的可复用性,并避免在终端中处理复杂的转义字符。

munk verify change \
  --request-file ./verify-request.json \
  --config ./munk.yaml

请求文件配置 (verify-request.json)

请求文件定义了改动了什么以及需要验证哪些用例。以下是一个 Web 项目的最小、可直接复制的示例:

{
  "app_id": "munk-web-site",
  "change_summary": "修复 Header 重构后的文档页面导航跳转",
  "app_target": {
    "app_id": "munk-web-site",
    "platform": "web",
    "web": {
      "base_url": "http://127.0.0.1:3000/",
      "origin": "http://127.0.0.1:3000"
    },
    "launch_context": {
      "browser": "chromium",
      "headless": "true"
    }
  },
  "provided_cases": [
    {
      "case_id": "docs-header-navigation-works",
      "title": "文档顶部导航正常工作",
      "intent": "验证 Header 改动后,用户能否从首页通过顶部导航正常跳转到文档页面。",
      "expected": [
        "首页成功加载。",
        "点击顶部导航的 Docs 入口,页面跳转至文档页。",
        "跳转后的页面展示文档内容,而不是首页的 Hero 区域。"
      ],
      "runner_goal": "打开官网首页,点击顶部导航的 Docs 入口,验证是否成功展示文档页面。"
    }
  ],
  "enable_plan_agent": false
}

核心字段解析

  • app_target: 告诉 Munk AI 如何连接到你的应用。如果是 Android 项目,你需要使用 "platform": "android" 并指定 "package_name"
  • change_summary / changed_files: 提供关于你刚刚修改了哪些内容的上下文。
  • provided_cases: 明确的测试指令。一个优秀的验证用例应该包含修复路径(改动生效了吗?)和回归路径(周边功能被破坏了吗?)。
  • enable_plan_agent: 如果希望 Munk AI 自动为你规划额外的回归测试覆盖率,请设置为 true。如果只想严格执行你提供的用例,请设置为 false

运行过程与结果

按下回车后,Munk AI 会执行以下步骤:

  1. 分析上下文: 读取你的 change_summaryprovided_cases
  2. 拉起目标应用: 打开 app_target 中定义的 Chromium 浏览器(或 Android 应用)。
  3. 执行与观测: 执行 runner_goal 中描述的动作,并持续捕获屏幕状态。
  4. 断言验证: 检查 expected 中的条件是否被满足。

执行完成后,Munk AI 会在你的工作区输出结构化的产物:

  • report.json: 最终的验证结论(passed通过、failed失败 或 inconclusive证据不足)。
  • diagnostics.json: 系统日志和执行细节,方便排查问题。
  • artifact_manifest.json: 包含运行期间收集的截图和轨迹链接。