Solvers · 5 种求解策略
每次 Tapilot 执行一个任务,背后是一个 solver 决定怎么走。5 种模式,按 "AI 含量" 排:
| 模式 | 怎么决策 | 何时用 | LLM 调用 |
|---|---|---|---|
scripted | 预写 JS / TS 函数,100% 确定性 | CI 回归守护,验证工具链本身没坏 | 0 |
dsl | YAML 脚本一步步执行 | 最常用。Regression、冒烟、参数化 | 0 |
ai-dsl | LLM 生成完整 DSL,一次性执行 | AI 能一眼看懂目标的简单任务 | 1 次 |
ai-hybrid | LLM 规划 → DSL 执行 → 看截图 → 再规划 | 复杂流程,状态多变 | N 次 |
ai | 纯 AI 每一步自主决策 tool-use | 探索性测试,全新 app | N 次 |
选型决策树
你知道完整步骤吗?
是 → scripted 或 dsl(dsl 更易读)
否 → 任务描述能用一段话讲清楚吗?
能 → ai-dsl(一次生成,省 token)
不能 → 状态依赖多吗?
是 → ai-hybrid(规划+执行循环)
不是,完全探索 → ai切换 solver
环境变量 SOLVER(主仓 scripts/run-tasks.ts 消费):
bash
SOLVER=dsl pnpm -C apps/mcp-server tasks
SOLVER=ai-dsl pnpm -C apps/mcp-server tasks
SOLVER=ai-hybrid pnpm -C apps/mcp-server tasks
SOLVER=ai pnpm -C apps/mcp-server tasks或 DSL 里直接声明:
yaml
id: my-test
solver: ai-hybrid # 覆盖默认评测报告
每次跑完,solver 的步数 / 耗时 / token 消耗写入 tests/reports/metrics.json,便于对比"同一任务在不同 solver 下的表现",指导选型。
详见
- LLM 配置:
GEMINI_API_KEY/ANTHROPIC_API_KEY,见 安装 - 代码入口:
apps/mcp-server/src/runner/下ai-solver.ts/ai-dsl-solver.ts/ai-hybrid-solver.ts/dsl-solver.ts