# Agent使用说明

## 📋 概述

Agent部署后，状态变为"已发布"（published）或"运行中"（running），就可以被使用了。本文档介绍如何使用已发布的Agent。

## 🎯 使用方式

### 方式1：通过前端界面使用（推荐）

#### 步骤1：进入Agent设计器
1. 在Agent管理页面，找到已发布的Agent
2. 点击 **"使用"** 按钮（只有已发布或运行中的Agent才显示此按钮）
3. 系统会跳转到Agent设计器页面

#### 步骤2：在聊天界面使用
- Agent设计器页面右侧有一个聊天预览面板（AgentChatPreview）
- 在输入框中输入您的问题或需求
- 点击发送按钮或按 Enter 键发送
- Agent会执行工作流并返回结果

#### 功能特性：
- ✅ 实时对话：支持多轮对话
- ✅ 执行动画：左侧工作流会显示节点执行动画
- ✅ 自动滚动：新消息自动滚动到底部
- ✅ 清空对话：可以随时清空对话历史

### 方式2：通过API调用

#### API端点
```
POST /api/v1/executions
```

#### 请求格式
```json
{
  "agent_id": "agent-id",
  "input_data": {
    "query": "用户输入的问题",
    "USER_INPUT": "用户输入的问题"
  }
}
```

#### 响应格式
```json
{
  "id": "execution-id",
  "agent_id": "agent-id",
  "status": "pending",
  "input_data": {...},
  "created_at": "2024-01-19T12:00:00"
}
```

#### 获取执行结果
```
GET /api/v1/executions/{execution_id}
```

#### 轮询执行状态
```
GET /api/v1/executions/{execution_id}/status
```

### 方式3：使用测试工具

使用我们提供的测试工具 `test_workflow_tool.py`：

```bash
# 通过Agent名称和用户输入测试
python3 test_workflow_tool.py -a "Agent名称" -i "用户输入内容"

# 交互式输入
python3 test_workflow_tool.py
```

## 📝 使用示例

### 示例1：前端界面使用

1. **打开Agent管理页面**
   - 访问 `/agents` 路径
   - 找到状态为"已发布"的Agent

2. **点击"使用"按钮**
   - 系统跳转到Agent设计器页面
   - 右侧显示聊天界面

3. **发送消息**
   - 在输入框输入："生成一个导出androidlog的脚本"
   - 点击发送或按Enter键

4. **查看结果**
   - 左侧工作流显示执行动画
   - 右侧聊天界面显示Agent的回复

### 示例2：API调用

```bash
# 1. 登录获取token
curl -X POST http://localhost:8037/api/v1/auth/login \
  -d "username=admin&password=123456"

# 2. 执行Agent
curl -X POST http://localhost:8037/api/v1/executions \
  -H "Authorization: Bearer <your_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "agent-id",
    "input_data": {
      "query": "生成一个导出androidlog的脚本",
      "USER_INPUT": "生成一个导出androidlog的脚本"
    }
  }'

# 3. 获取执行结果（使用返回的execution_id）
curl -X GET http://localhost:8037/api/v1/executions/{execution_id} \
  -H "Authorization: Bearer <your_token>"
```

### 示例3：Python脚本调用

```python
import requests

# 登录
response = requests.post(
    "http://localhost:8037/api/v1/auth/login",
    data={"username": "admin", "password": "123456"}
)
token = response.json()["access_token"]
headers = {"Authorization": f"Bearer {token}"}

# 执行Agent
response = requests.post(
    "http://localhost:8037/api/v1/executions",
    headers=headers,
    json={
        "agent_id": "agent-id",
        "input_data": {
            "query": "用户问题",
            "USER_INPUT": "用户问题"
        }
    }
)

execution_id = response.json()["id"]

# 轮询获取结果
import time
while True:
    response = requests.get(
        f"http://localhost:8037/api/v1/executions/{execution_id}",
        headers=headers
    )
    execution = response.json()
    if execution["status"] == "completed":
        print("结果:", execution["output_data"])
        break
    elif execution["status"] == "failed":
        print("执行失败:", execution.get("error_message"))
        break
    time.sleep(2)
```

## 🔑 权限说明

### 已发布Agent的使用权限

1. **所有者**：可以随时使用自己的Agent
2. **其他用户**：只有已发布（published）或运行中（running）状态的Agent才能被其他用户使用
3. **草稿状态**：只有所有者可以测试，其他用户无法使用

### API权限检查

从代码中可以看到：
```python
# 只有已发布的Agent可以执行，或者所有者可以测试
if agent.status not in ["published", "running"] and agent.user_id != current_user.id:
    raise HTTPException(status_code=403, detail="Agent未发布或无权执行")
```

## 🎨 前端界面说明

### Agent设计器页面布局

```
┌─────────────────────────────────────────────────┐
│  Agent编排设计器                    [测试运行] [发布] [返回] │
├──────────────────────┬──────────────────────────┤
│                      │                          │
│   工作流编辑器        │    Agent聊天预览          │
│   (左侧)             │    (右侧)                │
│                      │                          │
│  - 节点可视化        │  - 对话界面              │
│  - 执行动画          │  - 消息历史              │
│  - 节点配置          │  - 输入框                │
│                      │  - 实时响应              │
│                      │                          │
└──────────────────────┴──────────────────────────┘
```

### 聊天界面功能

1. **消息显示**
   - 用户消息：右侧显示，蓝色背景
   - Agent回复：左侧显示，白色背景
   - 时间戳：每条消息显示发送时间

2. **输入功能**
   - 文本输入：支持多行文本
   - Enter发送：按Enter键发送消息
   - Shift+Enter：换行
   - 发送按钮：点击发送

3. **其他功能**
   - 清空对话：清除所有消息历史
   - 加载状态：显示"正在思考..."
   - 执行动画：左侧工作流实时显示节点执行状态

## 🔧 常见问题

### Q1: 为什么看不到"使用"按钮？

**A:** "使用"按钮只对状态为"已发布"（published）或"运行中"（running）的Agent显示。如果Agent是"草稿"（draft）状态，需要先点击"部署"按钮发布。

### Q2: 如何知道Agent是否可用？

**A:** 查看Agent列表中的"状态"列：
- ✅ **已发布**（published）：可以使用
- ✅ **运行中**（running）：可以使用
- ⚠️ **草稿**（draft）：只有所有者可以测试
- ⚠️ **已停止**（stopped）：需要重新部署

### Q3: Agent执行失败怎么办？

**A:** 
1. 检查Agent的工作流配置是否正确
2. 查看执行记录中的错误信息
3. 检查LLM节点的API密钥是否配置
4. 查看后端日志获取详细错误信息

### Q4: 如何查看Agent的执行历史？

**A:** 
1. 访问"执行管理"页面（`/executions`）
2. 筛选Agent相关的执行记录
3. 点击执行记录查看详细信息

### Q5: 可以同时使用多个Agent吗？

**A:** 可以。每个Agent都是独立的，可以同时打开多个Agent设计器页面使用不同的Agent。

## 📚 相关文档

- [Agent管理功能使用说明](./Agent管理功能使用说明.md)
- [工作流调用测试总结](./工作流调用测试总结.txt)
- [API文档](./backend/API_DOCUMENTATION.md)

## 🎯 快速开始

1. **确保Agent已发布**
   - 在Agent列表中，找到要使用的Agent
   - 确认状态为"已发布"或"运行中"

2. **点击"使用"按钮**
   - 跳转到Agent设计器页面

3. **开始对话**
   - 在右侧聊天界面输入问题
   - 点击发送或按Enter键
   - 等待Agent执行并返回结果

4. **查看结果**
   - 在聊天界面查看Agent的回复
   - 在左侧工作流查看执行过程

---

**最后更新**：2026-01-19  
**适用版本**：v1.0+
