# SUN_Agent
**Repository Path**: swlgitee/sun_agent
## Basic Information
- **Project Name**: SUN_Agent
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-20
- **Last Updated**: 2026-04-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🌞 SUN Agent - AI 自动化软件测试平台
**Smart Unified Testing Agent**
> 极简 AI 自动化调度底座 + 可插拔 Skill 插件架构
>
> 作者:孙文龙
>
> 新增控制场景仅需新增 Skill 文件,无需修改核心底座代码
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
---
## ✨ 特性亮点
- 🧠 **AI 智能决策** - 对接大模型(智谱 GLM / OpenAI),内置模拟 LLM 快速测试
- 🔌 **可插拔 Skill 架构** - 新增控制场景只需添加 `.md` + `actions/`,底座零修改
- 🌐 **多平台支持** - Web (Playwright) / Android (ADB) / 微信小程序
- 📋 **多格式用例** - 支持 YAML / JSON / Excel / CSV 导入
- 📊 **HTML 可视化报告** - 含截图、状态图表、执行详情
- 🤖 **TUI 交互模式** - 类似 ChatGPT 的对话式测试体验
- 🔄 **自动重试机制** - 执行失败自动重试,保障测试稳定性
- 🔒 **安全配置** - `.env` 管理敏感信息,API Key 不泄露
---
## 📦 快速开始
### 1. 安装依赖
```bash
# 克隆项目
cd xlong-agent
# 安装 Python 依赖
pip install -r requirements.txt
# 安装 Playwright 浏览器
playwright install chromium
```
### 2. 配置环境
```bash
# 复制环境配置模板
cp .env.example .env
# 编辑 .env 文件,填入你的 API Key
```
`.env` 配置示例:
```bash
# 智谱 AI 配置
LLM_API_KEY=your-api-key-here
LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4/
LLM_MODEL=glm-4.5-air
# ADB 配置(可选)
ADB_DEVICE=emulator-5554
# 浏览器配置
BROWSER_HEADLESS=false
```
### 3. 启动运行
```bash
# 交互模式(推荐)
python main.py
# 命令行模式
python main.py --mode import --file test_cases/manual/baidu_search_success.yaml
python main.py --mode generate --prompt "测试百度搜索功能"
python main.py --mode explore --target "https://www.baidu.com"
```
---
## 🏗️ 项目架构
```
xlong-agent/
├── core/ # 核心底座(永不修改)
│ ├── ai_agent.py # AI 交互模块(支持真实 API / 模拟降级)
│ ├── skill_loader.py # MD Skill 动态加载器(自动发现插件)
│ ├── executor.py # 多轮决策执行引擎(自动重试)
│ └── orchestrator.py # 全局编排器(协调 Skill/用例/报告)
│
├── skills/ # Skill 插件目录(按需新增)
│ ├── web_browser/ # 🌐 Web 浏览器控制
│ │ ├── skill.md # 能力描述文件(声明式)
│ │ └── actions/ # 操作实现
│ ├── android_app/ # 📱 Android App 控制
│ │ ├── skill.md
│ │ └── actions/
│ ├── wechat_mini/ # 💬 微信小程序控制
│ │ ├── skill.md
│ │ └── actions/
│ ├── file_reader/ # 📂 用例文件导入
│ │ ├── skill.md
│ │ └── actions/
│ └── report_generator/ # 📊 HTML 报告生成
│ ├── skill.md
│ └── actions/
│
├── modules/ # 业务功能模块
│ ├── test_case_manager.py # 用例管理(增删改查)
│ ├── test_case_generator.py # AI 智能生成用例
│ ├── test_case_optimizer.py # 用例优化/去重/覆盖率分析
│ └── report_builder.py # HTML 报告构建
│
├── test_cases/ # 测试用例目录
│ ├── manual/ # 手动编写用例
│ ├── generated/ # AI 生成用例
│ └── imported/ # 导入的外部用例
│
├── reports/ # 测试报告输出
├── screenshots/ # 截图存档
├── utils/ # 工具模块
│ ├── config.py # 配置管理(结合 .env)
│ ├── logger.py # 日志管理
│ ├── file_parser.py # 文件解析器
│ ├── validators.py # 数据校验
│ └── ocr_helper.py # OCR 辅助
│
├── config.py # 全局默认配置
├── main.py # 项目入口(含 TUI 交互)
├── .env # 环境变量(不提交到 Git)
├── .env.example # 环境变量模板
└── requirements.txt # Python 依赖清单
```
---
## 🎮 使用教程
### 交互模式(推荐)
```bash
python main.py
```
进入类似 ChatGPT 的 TUI 对话界面:
```
╔══════════════════════════════════════════════════════════╗
║ ║
║ ███████╗██╗ ██╗ ██████╗ █████╗ ████████╗ ║
║ ██╔════╝╚██╗██╔╝ ██╔══██╗██╔══██╗╚══██╔══╝ ║
║ █████╗ ╚███╔╝ ██████╔╝███████║ ██║ ║
║ ██╔══╝ ██╔██╗ ██╔══██╗██╔══██║ ██║ ║
║ ███████╗██╔╝ ██╗ ██║ ██║██║ ██║ ██║ ║
║ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║
║ ║
║ Smart Unified Testing Agent (SUN) ║
║ AI 自动化软件测试平台 ║
║ ║
╚══════════════════════════════════════════════════════════╝
📋 支持命令列表:
────────────────────────────────────────────────────────────
import <文件路径> - 导入并执行测试用例
generate <需求描述> - AI 自动生成用例并执行
explore <目标地址> - AI 自主探索测试
report - 查看测试报告统计
skills - 查看已加载的 Skill 插件
help - 显示此帮助信息
quit / exit - 退出程序
────────────────────────────────────────────────────────────
💡 提示: 输入命令开始测试,输入 'quit' 或 'exit' 退出
🔹 SUN Agent > import test_cases/manual/baidu_search_success.yaml
```
### 典型使用场景
#### 场景 1:导入现有用例执行
```
🔹 SUN Agent > import test_cases/manual/baidu_search_success.yaml
📂 导入模式: test_cases/manual/baidu_search_success.yaml
解析到 1 个测试用例
开始执行任务...
📊 执行结果:
1. 百度搜索 - 成功场景
状态: ✅ 通过
耗时: 6.90s
📄 报告已生成: reports/report_1.html
```
#### 场景 2:模糊需求 → AI 生成用例 → 执行
```
🔹 SUN Agent > generate 测试微信登录功能
🤖 AI 生成模式: 测试微信登录功能
AI 生成 1 个测试用例
开始执行...
📊 执行结果:
1. 微信登录测试
状态: ✅ 通过
耗时: 12.5s
```
#### 场景 3:自主探索测试
```
🔹 SUN Agent > explore https://example.com
🔍 探索测试: https://example.com
AI 自主规划探索步骤...
```
#### 场景 4:查看 Skill 插件
```
🔹 SUN Agent > skills
📦 已加载的 Skill 插件:
✅ web_browser v1.0.0
描述: 控制网页浏览器
操作: navigate, click, input_text, screenshot, get_text, wait_element
✅ android_app v1.0.0
描述: 控制安卓 App
操作: launch_app, tap, input_text, screenshot, swipe, get_ui_tree
✅ wechat_mini v1.0.0
描述: 控制微信小程序
操作: launch_mini, tap, input_text, screenshot
✅ file_reader v1.0.0
描述: 读取测试用例文件
操作: read
✅ report_generator v1.0.0
描述: 生成 HTML 测试报告
操作: generate_html
```
---
## 📝 用例文件格式
### YAML 格式
```yaml
# test_cases/manual/login_test.yaml
name: "登录功能测试"
platform: "web" # web / app / mini_program
steps:
- action: "navigate"
url: "https://example.com/login"
- action: "wait_element"
selector: "#username"
timeout: 10000
- action: "input_text"
selector: "#username"
value: "test_user"
- action: "click"
selector: "#login-btn"
- action: "screenshot"
save_path: "screenshots/login_result.png"
```
### JSON 格式
```json
{
"name": "登录功能测试",
"platform": "web",
"steps": [
{
"action": "navigate",
"url": "https://example.com/login"
},
{
"action": "click",
"selector": "#login-btn"
}
]
}
```
### Excel/CSV 格式
| name | platform | action | selector | value |
|------|----------|--------|----------|-------|
| 登录测试 | web | navigate | | https://example.com |
| 登录测试 | web | click | #login-btn | |
---
## 🔌 Skill 插件扩展教程
### 新增控制场景只需 3 步
假设我们要新增一个 **数据库测试 Skill**:
#### 步骤 1:创建目录
```bash
mkdir -p skills/database/actions
```
#### 步骤 2:编写 skill.md
```markdown
---
name: database
version: 1.0.0
description: 数据库操作,支持查询、插入、删除
author: your_name
dependencies:
- pymysql
---
# Database Skill
## 能力描述
自动化数据库操作测试
## 操作列表
### query
执行查询
- 参数: `sql` (必填) - SQL 语句
- 返回: 查询结果
### insert
插入数据
- 参数: `table` (必填) - 表名
- 参数: `data` (必填) - 数据字典
- 返回: 插入是否成功
```
#### 步骤 3:实现 actions
```python
# skills/database/actions/query.py
"""执行数据库查询"""
from utils.logger import logger
def execute(sql: str, **kwargs) -> dict:
"""
执行 SQL 查询
Args:
sql: SQL 语句
Returns:
查询结果
"""
try:
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='', database='test')
cursor = conn.cursor()
cursor.execute(sql)
result = cursor.fetchall()
conn.close()
logger.info(f"查询成功: {sql}")
return {"rows": result}
except Exception as e:
logger.error(f"查询失败: {e}")
raise
```
#### 完成!重启程序自动加载
```bash
python main.py
🔹 SUN Agent > skills
📦 已加载的 Skill 插件:
✅ database v1.0.0
描述: 数据库操作
操作: query, insert
```
**核心底座完全不需要修改!**
---
## 🔧 替换真实大模型 API
当前项目已对接智谱 GLM API,如需更换其他模型:
### 智谱 GLM(已配置)
```bash
# .env
LLM_API_KEY=your-zhipu-api-key
LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4/
LLM_MODEL=glm-4.5-air
```
### OpenAI GPT
```bash
# .env
LLM_API_KEY=sk-your-openai-key
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-4
```
### 本地模型(Ollama)
```bash
# .env
LLM_API_KEY=ollama
LLM_BASE_URL=http://localhost:11434/v1
LLM_MODEL=llama3
```
### 模拟模式(无需 API Key)
不配置 `LLM_API_KEY` 时自动使用模拟回复,适合快速测试流程。
---
## 📱 Android 环境准备
### 自动检测
项目已内置 ADB 环境自动检测,运行 App 测试时会自动检查:
```
正在检测 Android 环境...
检测到 1 个设备: ['emulator-5554']
使用第一个设备: emulator-5554
ADB 设备连接成功
```
### 手动配置
1. **安装 Android SDK Platform Tools**
```bash
# macOS
brew install android-platform-tools
# Windows
# 下载: https://developer.android.com/studio/releases/platform-tools
# 解压后将 adb.exe 所在目录加入系统 PATH
```
2. **连接手机并开启 USB 调试**
- 手机设置 → 关于手机 → 连续点击版本号开启开发者模式
- 开发者选项 → 开启 USB 调试
3. **验证连接**
```bash
adb devices
# 输出:
# List of devices attached
# ABC123DEF device
```
4. **配置 .env**
```bash
ADB_DEVICE=ABC123DEF # 替换为你的设备 ID
```
---
## 🌐 Web 环境准备
### 安装 Playwright
```bash
pip install playwright
playwright install chromium
```
### 浏览器配置
```bash
# .env
BROWSER_HEADLESS=false # 设为 true 则无头模式
```
---
## 💬 微信小程序环境准备
1. 安装微信开发者工具
2. 开启服务端口(设置 → 安全 → 开启服务端口)
3. 配置 .env:
```bash
WECHAT_CLI_PATH=/path/to/wechat-devtools/cli
```
---
## 📊 测试报告示例
运行测试后自动生成 HTML 报告:
```
reports/
├── report_1.html # 成功案例
├── report_2.html # 错误案例
└── report_3.html # 探索测试
```
报告包含:
- ✅/❌ 状态标识
- 📈 统计图表(总计/通过/失败/耗时)
- 🖼️ 截图展示
- 📋 步骤详情
- 🔴 错误信息
---
## 📜 许可证
MIT License
---
## 🙏 致谢
- [Playwright](https://playwright.dev/) - Web 自动化
- [adbutils](https://github.com/openatx/adbutils) - Android 自动化
- [OpenAI Python SDK](https://github.com/openai/openai-python) - AI 交互
- [Jinja2](https://jinja.palletsprojects.com/) - HTML 模板