#!/usr/bin/env python3 """ 生成Android日志获取Agent """ import sys import os sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from app.core.database import SessionLocal from app.models.agent import Agent from app.models.workflow import Workflow import uuid from datetime import datetime def generate_android_log_agent(): """生成Android日志获取Agent""" db = SessionLocal() try: # 检查是否已存在 existing = db.query(Agent).filter(Agent.name == "Android日志获取助手").first() if existing: print(f"Agent 'Android日志获取助手' 已存在,ID: {existing.id}") return existing.id # 创建工作流 workflow_id = str(uuid.uuid4()) nodes = [ { "id": "start", "type": "start", "position": {"x": 100, "y": 200}, "data": {"label": "开始"} }, { "id": "intent-recognize", "type": "llm", "position": {"x": 400, "y": 200}, "data": { "label": "意图识别", "provider": "deepseek", "model": "deepseek-chat", "temperature": 0.3, "max_tokens": 200, "prompt": """分析用户请求,提取以下信息: 1. 命令类型:logcat(获取日志)、devices(列出设备)、shell(执行shell命令) 2. 日志标签过滤(如果有) 3. 日志级别过滤(V/D/I/W/E/F/S,如果有) 4. 最大行数(默认100) 用户请求:{{input.query}} 请以JSON格式返回: { "command": "logcat|devices|shell", "filter_tag": "标签或shell命令(可选)", "level": "V|D|I|W|E|F|S(可选)", "max_lines": 100 }""" } }, { "id": "json-parse", "type": "json", "position": {"x": 700, "y": 200}, "data": { "label": "解析参数", "operation": "parse", "json_path": "$" } }, { "id": "llm-with-tools", "type": "llm", "position": {"x": 1000, "y": 200}, "data": { "label": "执行ADB命令", "provider": "deepseek", "model": "deepseek-chat", "temperature": 0.7, "max_tokens": 2000, "enable_tools": True, "selected_tools": ["adb_log"], "prompt": """根据解析的参数,使用adb_log工具获取Android设备日志。 参数: - command: {{json-parse.output.command}} - filter_tag: {{json-parse.output.filter_tag}} - level: {{json-parse.output.level}} - max_lines: {{json-parse.output.max_lines}} 请调用adb_log工具获取日志,然后分析日志内容,提取关键信息并总结。""" } }, { "id": "end", "type": "end", "position": {"x": 1300, "y": 200}, "data": {"label": "结束"} } ] edges = [ { "id": "e1", "source": "start", "target": "intent-recognize", "sourceHandle": "right", "targetHandle": "left" }, { "id": "e2", "source": "intent-recognize", "target": "json-parse", "sourceHandle": "right", "targetHandle": "left" }, { "id": "e3", "source": "json-parse", "target": "llm-with-tools", "sourceHandle": "right", "targetHandle": "left" }, { "id": "e4", "source": "llm-with-tools", "target": "end", "sourceHandle": "right", "targetHandle": "left" } ] workflow = Workflow( id=workflow_id, name="Android日志获取工作流", description="通过ADB命令获取Android设备日志的工作流", nodes=nodes, edges=edges, created_at=datetime.now(), updated_at=datetime.now() ) db.add(workflow) db.commit() db.refresh(workflow) # 创建Agent agent_id = str(uuid.uuid4()) agent = Agent( id=agent_id, name="Android日志获取助手", description="通过ADB命令获取和分析Android设备日志的智能助手。支持获取logcat日志、列出设备、执行shell命令等功能。", workflow_config={ "workflow_id": workflow_id, "nodes": nodes, "edges": edges }, created_at=datetime.now(), updated_at=datetime.now() ) db.add(agent) db.commit() db.refresh(agent) print(f"✅ Android日志获取Agent创建成功!") print(f" Agent ID: {agent_id}") print(f" Agent名称: {agent.name}") print(f" 工作流ID: {workflow_id}") print(f"\n使用示例:") print(f" python3 test_workflow_tool.py -a \"Android日志获取助手\" -i '{{\"query\": \"获取最近的错误日志\"}}'") return agent_id except Exception as e: db.rollback() print(f"❌ 创建Agent失败: {e}") import traceback traceback.print_exc() return None finally: db.close() if __name__ == "__main__": generate_android_log_agent()