如何让神经网络帮你测试移动应用
每次在 React Native 项目中打开别人的 Pull Request,我都会忍不住想:在 iOS 和 Android 上手动检查布局真是太繁琐了。你需要拉取分支、打包 bundle、启动模拟器、一步步操作场景、截图,然后告诉作者按钮跑出屏幕了。
Callstack 团队发布了 cali 工具的第二版。这是一个命令行工具,使用 LLM 智能体处理移动端测试、性能审计和代码审查。
这个项目是做什么的
Web 智能体已经不再新鲜:Playwright 和 Puppeteer 早就与语言模型集成了。但在移动端,情况一直更复杂。模拟器很难伺候,React Native 调试器自成一派,要把模型接入而不破坏环境需要费一番功夫。
Cali 通过角色分离来解决这个问题。这个工具并不试图成为一个什么都做的通用聊天机器人,而是有严格的操作模式,每个智能体只获得必要的工具包:
cali qa通过agent-device工具在真实模拟器或模拟器上运行测试场景。cali perf-review通过直接连接agent-react-devtools来查找不必要的重新渲染和性能下降。cali review读取代码库并检查 Pull Request 中的差异。cali dev在测试和类型检查器的监督下尝试自动修改代码。
review、perf-review 和 dev 命令仍被标记为实验性,但基本的 qa 场景已可投入使用。
如何在本地机器上运行测试
入门需要 Node.js 和全局安装的 agent-device 包。如果智能体缺少必要的技能,Cali 会通过 npx skills 将它们拉取到 ~/.cali/skills 目录中。
你可用一行命令控制启动:
cali qa \
--local ios \
--artifact ./artifacts/MyApp.app \
--prompt "проверь текст на экране онбординга и нажми кнопку далее"
如果你只运行了一个 iOS 模拟器或 Android 模拟器,该工具会自动检测到它。在 Android 上启动时,Cali 甚至可以直接从 AndroidManifest.xml 解析 .apk 来提取 applicationId,无需额外参数。
重要细节:对于 debug 构建,你需要单独启动和停止 Metro 服务器。Cali 只负责与应用界面交互。
性能分析和查找不必要的重新渲染
也许最有趣的模式是 perf-review。我们都知道,在 React Native 中不小心将不稳定的回调传递给重型列表有多容易拖垮性能。
Cali 将智能体连接到 React DevTools 并运行目标屏幕:
cali perf-review \
--context ./cali-context.json \
--platform android \
--artifact ./artifacts/app.apk \
--prompt "проверь экран оформления заказа на подвисания"
智能体会分析交互、捕获指标并生成结构化报告。结果会输出到 artifacts/perf-review 文件夹,其中包含截图、清单和包含主要问题的文本摘要。
共享上下文和在 CI 中工作
Cali 使用配置文件 cali-context.json 而不是长长的终端参数链。它描述了代码库、构建、验收标准和智能体的约束:
{
"workspaceRoot": ".",
"repository": {
"provider": "github.com",
"owner": "my-team",
"name": "shop-app",
"defaultBranch": "main",
"currentBranch": "feature/checkout-redesign"
},
"mobile": {
"platform": "android",
"artifactPath": "./artifacts/app.apk"
},
"qa": {
"acceptanceCriteria": [
"На экране оплаты отображается итоговая сумма",
"Кнопка подтверждения остаётся кликабельной"
]
},
"dev": {
"allowedValidations": ["bun test", "bunx tsc --noEmit"],
"writePolicy": "workspace",
"pushPolicy": "disabled"
}
}
命令行参数始终优先于文件。这在流水线中需要替换新构建产物路径时很方便。
在 GitHub Actions 和 Expo Application Services (EAS) 中,该工具会自动检测环境。额外的辅助工具 cali export-ci 会生成包含截图的 markdown 报告,你可以通过 GitHub CLI 立即将其作为评论发布到打开的 Pull Request 上:
name: Запуск мобильного QA
env:
AI_GATEWAY_API_KEY: ${{ secrets.AI_GATEWAY_API_KEY }}
CALI_PLATFORM: android
CALI_ARTIFACT_PATH: ./builds/app.apk
run: npx cali qa --quiet
name: Подготовка отчёта
run: npx cali export-ci --report ./artifacts/qa/report.json
name: Публикация комментария в PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh pr comment "${{ github.event.pull_request.number }}" --body-file ./artifacts/qa/ci-comment.md
连接模型和安全
默认情况下,Cali 配置为通过 AI Gateway 与 openai/gpt-5.4-mini 配合工作。如果你有直接的 Anthropic 密钥,可以通过环境变量切换到 Sonnet:
ANTHROPIC_API_KEY=your-anthropic-api-key
QA_MODEL=anthropic/claude-sonnet-4.6
作者们考虑到了安全性,这很好:该工具在加载上下文时会从代码库 URL 中清除令牌和密钥,最终的 report.json 只保存安全字段。
值得一试吗
这个工具看起来很扎实,解决了使用 Expo 和 React Native 开发的团队的一个具体痛点。这里的主要优势是严格的输入契约和可预测的 JSON 输出。智能体不会在抽象的终端中漫无目的地游荡,而是被限制在明确的工具集中。
这个项目仍在积累人气(GitHub 上大约有一千颗星),但角色架构已经允许你在 CI 阶段实现关键用户路径的自动化检查。如果你厌倦了在每次发布前手动运行基本的冒烟测试,值得克隆仓库并在本地模拟器上跑几个屏幕试试。
相关项目