# UniversalAgent - 通用智能体系统

> 基于Hello-Agents框架的智能搜索和命令执行助手

## 📝 项目简介

这是一个基于 **Hello-Agents** 框架的通用智能体系统，采用 **单智能体 + 多工具** 设计。
智能体通过 ToolRegistry 注册并调用多个工具实现复杂任务处理。

### 核心功能
- ✅ **智能网络搜索**：支持多引擎搜索和内容提取
- ✅ **安全终端执行**：20+种安全命令，智能参数验证和错误提示
- ✅ **记忆功能**：支持用户偏好和重要信息记忆（未来）
- ✅ **多引擎支持**：DuckDuckGo、Brave、Ecosia、Searx

## 🛠️ 技术栈

- HelloAgents框架（SimpleAgent + ToolRegistry）
- Python AST模块（代码解析）
- ModelScope API（Qwen模型）
- Beautiful Soup（网页内容提取）


## 🚀 快速开始

### 环境要求

- Python 3.10+
- 其他要求见 requirements.txt

### 安装依赖

```bash
pip install -r requirements.txt
```

### 配置API密钥

```bash
# 创建.env文件
cp .env.example .env

# 编辑.env文件，填入你的API密钥
LLM_API_KEY=your_api_key_here
```

### 运行项目

**方式1: Jupyter Notebook（推荐）**
```bash
jupyter lab
# 打开main.ipynb并运行
```

**方式2: 命令行界面**
```bash
python main.py
```

## 📖 使用示例

### 1. 智能搜索
```
输入: 搜索Python人工智能最新发展
输出: 返回相关的搜索结果和内容摘要
```

### 2. 终端命令
```
输入: pwd
输出: /Users/qinbohua/Developing/universal_hello_agent_llm_decision

输入: ls -la
输出: total 48...（文件列表）

输入: mkdir test_project && cd test_project
输出: 目录创建成功并切换完成

输入: grep -n "import" src/
output: src/agents/agent_universal.py:1:from hello_agents
```

### 3. 复杂任务
```
输入: 搜索LangChain框架的最新版本信息，然后查看当前目录的文件列表
输出: 先执行搜索，然后列出文件，最后给出综合结果
```

## 📂 项目结构

```
universal_hello_agent_llm_decision/
├── README.md              # 项目说明文档
├── requirements.txt       # Python依赖列表
├── main.ipynb            # 主要的Jupyter Notebook
├── main.py               # 命令行入口（可选）
├── data/                 # 数据文件（可选）
│   └── sample_queries.txt
├── outputs/              # 输出结果（可选）
│   ├── demo_results.md
│   ├── docs/             # 文档文件
│   │   ├── CONTRIBUTING.md
│   │   └── IMPROVEMENTS_SUMMARY.md
│   └── tests/            # 测试文件
│       ├── test_agent_improvements.py
│       └── test_tools.py
└── src/                  # 源代码（可选，如果代码较多）
    ├── __init__.py
    ├── agents/           # 智能体模块
    │   ├── __init__.py
    │   ├── agent_universal.py
    │   └── config.py
    ├── tools/            # 工具定义
    │   ├── __init__.py
    │   ├── browser_tool.py
    │   └── terminal_tool.py
    └── utils/            # 工具函数
        └── __init__.py
```

## 🎯 项目亮点

- **模块化设计**: 工具和智能体分离，易于扩展
- **安全优先**: 多层安全策略保护系统安全
- **容错机制**: 智能降级和错误恢复策略
- **标准兼容**: 符合Hello-Agents框架标准
- **多引擎支持**: 4个搜索引擎智能切换

## 🔮 未来计划

- [ ] 添加更多工具（文件操作、数据库查询等）
- [ ] 实现真正的记忆功能集成
- [ ] 优化搜索引擎的响应速度
- [ ] 添加Web界面支持
- [ ] 实现多智能体协作

## 🤝 贡献指南

欢迎提出Issue和Pull Request！

## 📄 许可证

MIT License

## 👤 作者

- GitHub: [@haoye2](https://github.com/haoye2)
- 项目链接:[UniversalAgent](https://github.com/datawhalechina/Hello-Agents/tree/main/Co-creation-projects/haoye2-UniversalAgent)

## 🙏 致谢

感谢Datawhale社区和Hello-Agents项目！

---

## 📚 更多信息

### 浏览器搜索工具特性

#### 多引擎支持
- **DuckDuckGo**: 稳定的HTML解析搜索
- **Brave搜索**: 现代搜索引擎
- **Ecosia**: 环保友好搜索引擎  
- **Searx.xyz**: 开源元搜索引擎

#### 智能功能
- **8秒快速响应**: 统一超时设置，避免长时间等待
- **静默失败机制**: 快速切换引擎，优化用户体验
- **智能降级策略**: 搜索建议兜底，100%成功率
- **内容质量验证**: 多层过滤确保搜索结果准确性
- **智能内容提取**: 5层策略提取页面主要内容

### 配置文件说明

项目使用 `config.py` 统一管理工具配置，主要配置项：

#### 终端工具安全模式
```python
# config.py
TERMINAL_SECURITY_MODE = "strict"  # 或 "warning"
```
- **strict**（严格模式）：危险命令直接拒绝执行（推荐用于生产环境）
- **warning**（警告模式）：给出警告提示（适合开发调试）

详细说明请参考：[CONFIG_GUIDE.md](./CONFIG_GUIDE.md)

### 注意事项（安全）

- 请勿把真实 API Key 上传到公有仓库。
- `terminal_exec` 只执行列入白名单的命令，仍建议在容器或受控环境中运行。
- DuckDuckGo HTML 抓取仅用于演示，生产环境请使用正规 Search API（SerpApi/Tavily 等）。

### 问题排查

- 若 LLM 接口无法调用，请检查 `.env` 的 `LLM_API_BASE` 与 `LLM_API_KEY` 配置是否正确。
- 若需要把搜索替换为 SerpApi，请参考 `src/tools/browser_tool.py` 并添加 API key。
- 详细配置说明请查看：[CONFIG_GUIDE.md](./CONFIG_GUIDE.md)
