Files
aiagent/ADB工具验证方法.md
2026-03-06 22:31:41 +08:00

214 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADB工具验证方法
本文档介绍如何验证 `adb_log` 工具是否可以正常调用 ADB 命令。
## 方法一:使用测试脚本(推荐)
### 1. 运行测试脚本
```bash
cd /home/renjianbo/aiagent
python test_adb_tool.py
```
### 2. 测试内容
脚本会自动测试以下功能:
-**列出设备** (`adb devices`)
-**获取最近日志** (`adb logcat -d -t 10`)
-**获取错误级别日志** (`adb logcat -d *:E -t 5`)
-**执行shell命令** (`adb shell getprop ro.build.version.release`)
-**错误处理** (验证无效命令的处理)
### 3. 预期结果
如果所有测试通过,说明 ADB 工具工作正常。
## 方法二:通过前端单节点测试
### 1. 准备工作
1. 打开工作流编辑器
2. 找到或创建一个包含 `adb_log` 工具的 LLM 节点
3. 确保节点已启用工具调用并选择了 `adb_log` 工具
### 2. 测试步骤
1. **选中节点**:点击 "执行ADB命令" 节点
2. **输入测试数据**:在测试输入框中输入:
```json
{
"query": "列出设备"
}
```
```json
{
"query": "获取最近日志"
}
```
3. **运行测试**:点击 "运行测试" 按钮
4. **查看结果**:检查执行结果中是否包含实际的 ADB 命令输出
### 3. 验证要点
- ✅ LLM 正确识别用户意图
- ✅ LLM 调用了 `adb_log` 工具(不是生成文本)
- ✅ 工具返回了真实的 ADB 命令结果
- ✅ 结果中包含设备信息或日志内容
## 方法三:通过 Agent 测试
### 1. 使用 "Android日志获取助手" Agent
1. 打开 Agent 列表
2. 找到 "Android日志获取助手"
3. 点击运行
### 2. 测试命令
尝试以下输入:
- `列出设备`
- `获取最近日志`
- `获取错误日志`
- `获取最近10条日志`
### 3. 查看执行详情
1. 在 Agent 执行结果页面,点击 "查看详情"
2. 检查执行日志,确认:
- ✅ 工具调用记录存在
- ✅ 工具参数正确command, max_lines 等)
- ✅ 工具返回了真实结果
## 方法四:直接调用工具函数(开发调试)
### 1. Python 交互式测试
```python
import asyncio
import json
import sys
sys.path.insert(0, 'backend')
from app.services.builtin_tools import adb_log_tool
# 测试列出设备
result = asyncio.run(adb_log_tool(command="devices"))
print(json.loads(result))
# 测试获取日志
result = asyncio.run(adb_log_tool(command="logcat", max_lines=5))
print(json.loads(result))
```
### 2. 验证工具注册
```python
from app.services.tool_registry import tool_registry
# 检查工具是否已注册
schema = tool_registry.get_tool_schema("adb_log")
print(schema)
# 检查工具函数是否存在
func = tool_registry.get_tool_function("adb_log")
print(func)
```
## 常见问题排查
### 问题1测试脚本报错 "未找到adb命令"
**原因**ADB 未安装或不在 PATH 中
**解决方案**
```bash
# 检查 adb 是否安装
which adb
# 如果未安装,安装 Android SDK Platform Tools
# Ubuntu/Debian:
sudo apt-get install android-tools-adb
# 或下载 Platform Tools:
# https://developer.android.com/studio/releases/platform-tools
```
### 问题2测试返回 "未找到设备"
**原因**:没有连接 Android 设备或模拟器
**解决方案**
```bash
# 检查设备连接
adb devices
# 如果显示 "no devices",请:
# 1. 连接 Android 设备并启用 USB 调试
# 2. 或启动 Android 模拟器
```
### 问题3LLM 不调用工具,返回文本响应
**原因**LLM 可能误解了用户意图或提示词配置不当
**解决方案**
1. 检查节点配置中的提示词是否明确要求调用工具
2. 确保工具已正确选择并启用
3. 在单节点测试时,确保输入数据格式正确
4. 查看后端日志,检查工具调用请求
### 问题4工具调用超时
**原因**ADB 命令执行时间过长
**解决方案**
- 减少 `max_lines` 参数默认100行
- 增加 `timeout` 参数默认10秒最大60秒
- 使用更具体的过滤条件filter_tag, level
## 验证清单
在验证 ADB 工具时,请确认:
- [ ] ADB 已正确安装并在 PATH 中
- [ ] 至少有一个 Android 设备已连接(或模拟器运行中)
- [ ] `adb devices` 命令可以列出设备
- [ ] 测试脚本可以成功执行
- [ ] 单节点测试可以调用工具并返回结果
- [ ] Agent 可以正确使用工具
- [ ] 工具调用可视化功能正常显示工具调用过程
## 快速验证命令
```bash
# 1. 检查 ADB 安装
adb version
# 2. 检查设备连接
adb devices -l
# 3. 测试获取日志(命令行)
adb logcat -d -t 5
# 4. 运行测试脚本
python test_adb_tool.py
```
## 成功标志
✅ **工具工作正常**的标志:
1. 测试脚本所有测试通过
2. 单节点测试返回真实的 ADB 命令结果(不是 LLM 生成的文本)
3. 执行日志中可以看到工具调用记录
4. 工具调用可视化显示工具被正确调用
5. Agent 可以成功获取设备日志
---
**提示**:如果遇到问题,请查看后端日志 (`docker-compose logs backend`) 获取详细错误信息。