From 6f3f9c7df19c1d6d46839e23d613da330d941049 Mon Sep 17 00:00:00 2001 From: handsomeAq Date: Fri, 31 Jul 2026 17:35:07 +0800 Subject: [PATCH] =?UTF-8?q?agent1.1=E7=89=88=E6=9C=AC=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=86mcp=E9=80=BB=E8=BE=91=20=E5=A4=9Aagent=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 336 +++++++++++++++++++++++++ a2a_server.py | 4 +- agents/__init__.py | 0 {my_agent => agents/luna}/__init__.py | 0 agents/luna/agent.py | 200 +++++++++++++++ agents/luna/api_server.py | 126 ++++++++++ {my_agent => agents/luna}/app.py | 4 +- agents/luna/chat.py | 173 +++++++++++++ agents/my_agent/__init__.py | 2 + {my_agent => agents/my_agent}/agent.py | 4 +- agents/my_agent/api_server.py | 125 +++++++++ agents/my_agent/app.py | 23 ++ agents/my_agent/chat.py | 174 +++++++++++++ agents/qwen/.gitignore | 1 + agents/qwen/__init__.py | 0 agents/qwen/agent.py | 200 +++++++++++++++ agents/qwen/api_server.py | 126 ++++++++++ agents/qwen/app.py | 23 ++ agents/qwen/chat.py | 173 +++++++++++++ data/sessions.db | Bin 0 -> 831488 bytes data/sessions_luna.db | Bin 0 -> 36864 bytes data/sessions_qwen.db | Bin 0 -> 36864 bytes data/tasks/238726a8.json | 18 ++ data/tasks/3baaed45.json | 18 ++ data/tasks/57549fbd.json | 18 ++ data/tasks/72ed062f.json | 18 ++ data/tasks/ecf6aced.json | 18 ++ mcp_dev_agent/luna_server.py | 22 ++ mcp_dev_agent/my_agent_server.py | 22 ++ mcp_dev_agent/qwen_server.py | 22 ++ mcp_dev_agent/server.py | 123 +++------ mcp_server/agent_runner.py | 82 ++++-- 32 files changed, 1938 insertions(+), 117 deletions(-) create mode 100644 README.md create mode 100644 agents/__init__.py rename {my_agent => agents/luna}/__init__.py (100%) create mode 100644 agents/luna/agent.py create mode 100644 agents/luna/api_server.py rename {my_agent => agents/luna}/app.py (91%) create mode 100644 agents/luna/chat.py create mode 100644 agents/my_agent/__init__.py rename {my_agent => agents/my_agent}/agent.py (98%) create mode 100644 agents/my_agent/api_server.py create mode 100644 agents/my_agent/app.py create mode 100644 agents/my_agent/chat.py create mode 100644 agents/qwen/.gitignore create mode 100644 agents/qwen/__init__.py create mode 100644 agents/qwen/agent.py create mode 100644 agents/qwen/api_server.py create mode 100644 agents/qwen/app.py create mode 100644 agents/qwen/chat.py create mode 100644 data/sessions.db create mode 100644 data/sessions_luna.db create mode 100644 data/sessions_qwen.db create mode 100644 data/tasks/238726a8.json create mode 100644 data/tasks/3baaed45.json create mode 100644 data/tasks/57549fbd.json create mode 100644 data/tasks/72ed062f.json create mode 100644 data/tasks/ecf6aced.json create mode 100644 mcp_dev_agent/luna_server.py create mode 100644 mcp_dev_agent/my_agent_server.py create mode 100644 mcp_dev_agent/qwen_server.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..f71bb91 --- /dev/null +++ b/README.md @@ -0,0 +1,336 @@ +# Dev Agent — 全栈开发子 Agent + +基于 Google ADK (Agent Development Kit) 构建的全栈开发子 Agent,通过 A2A / MCP / REST API 多种方式调用,支持文件操作、终端命令、会话持久化、上下文压缩、长期记忆。 + +## 架构总览 + +``` +用户 / CodeBuddy(主控) + │ + ├── MCP ──► mcp_dev_agent/server.py ──┐ + │ │ + └── REST ─► api_server.py ◄─────────────┘ + │ + ▼ + App(dev_app) + │ events_compaction_config(LLM 摘要压缩) + ▼ + LlmAgent(dev_agent / 花花) + │ + ┌─────────┼─────────┐ + ▼ ▼ ▼ + 文件系统 终端命令 记忆系统 + MCP run_command preload_memory +``` + +## 核心能力 + +| 能力 | 说明 | +|------|------| +| **文件系统操作** | 读/写/列目录/搜索等 14 个工具(MCP: server-filesystem) | +| **终端命令执行** | 异步 subprocess,支持编译/构建/测试 | +| **网络搜索** | Tavily 搜索 + Fetch 抓取(默认关闭,见下文说明) | +| **SQLite 会话持久化** | 重启不丢,多入口共享 | +| **上下文自动压缩** | 每 20 轮 LLM 摘要,长对话不爆 context window | +| **长期记忆框架** | InMemory + 自动存取,可扩展为 Chroma 向量库 | +| **REST API** | `/run`、`/run_sse`、会话管理、Swagger UI | +| **MCP 接口** | 可直接接入 CodeBuddy / Cursor / Windsurf | +| **A2A 协议** | Agent-to-Agent 标准协议(备用方案) | + +## 快速开始 + +### 1. 环境准备 + +```bash +# 进入项目目录 +cd d:/nzy/workspace_python/agent + +# 安装依赖(已装可跳过) +pip install -r requirements.txt + +# 配置环境变量 +# 编辑 my_agent/.env,填入你的 vLLM API Key 等 +``` + +### 2. 启动 API Server + +这是最主要的服务入口,提供 REST API + Swagger UI。 + +```bash +python api_server.py +``` + +启动后访问: +- **Swagger UI**: http://127.0.0.1:8001/docs — 浏览器直接测试接口 +- **健康检查**: http://127.0.0.1:8001/health +- **列出 Agent**: http://127.0.0.1:8001/list-apps + +### 3. 配置 MCP(CodeBuddy 调用) + +在 CodeBuddy 的 MCP 配置中添加: + +```json +{ + "mcpServers": { + "dev-agent": { + "command": "python", + "args": ["d:/nzy/workspace_python/agent/mcp_dev_agent/server.py"], + "env": { + "DEV_AGENT_API_URL": "http://127.0.0.1:8001", + "DEV_AGENT_APP_NAME": "dev_agent", + "DEV_AGENT_USER_ID": "codebuddy" + } + } + } +} +``` + +重启 CodeBuddy 后,即可通过 `run_dev_agent` 工具调用 Dev Agent。 + +## 使用方式 + +### 方式一:Swagger UI(最直观) + +打开 http://127.0.0.1:8001/docs ,在浏览器里直接测试。 + +**常用接口**: + +- `POST /run` — 同步运行 agent,返回完整事件列表 +- `POST /run_sse` — SSE 流式运行 +- `GET /apps/{app}/users/{user}/sessions/{id}` — 获取会话 +- `POST /apps/{app}/users/{user}/sessions/{id}` — 创建会话 + +### 方式二:命令行对话 + +```bash +# 新会话 +python chat.py + +# 指定 session_id 继续对话 +python chat.py --session my_session + +# 列出所有会话 +python chat.py --list + +# 删除会话 +python chat.py --delete my_session +``` + +### 方式三:MCP 工具(CodeBuddy / Cursor) + +配置好 MCP 后,直接让 IDE 中的 AI 调用 `run_dev_agent` 工具。 + +**工具参数**: + +| 参数 | 必填 | 说明 | +|------|------|------| +| `task` | ✅ | 任务描述,越详细越好 | +| `session_id` | ❌ | 会话 ID,不传则为 `default`。用于多轮续聊 | + +### 方式四:curl 直接调用 + +```bash +curl -X POST http://127.0.0.1:8001/run \ + -H "Content-Type: application/json" \ + -d '{ + "appName": "dev_agent", + "userId": "test_user", + "sessionId": "test_001", + "newMessage": { + "role": "user", + "parts": [{"text": "你好,请介绍一下你自己"}] + } + }' +``` + +## 项目结构 + +``` +agent/ +├── api_server.py # REST API Server(主入口) +├── chat.py # CLI 对话工具 +├── a2a_server.py # A2A Server(备用,已被 API Server 取代) +├── a2a_client.py # A2A 客户端测试(调试用) +├── test_sse_client.py # SSE 测试(调试用) +│ +├── my_agent/ +│ ├── __init__.py +│ ├── agent.py # Agent 定义(人设、工具、instruction) +│ ├── app.py # App 容器(上下文压缩配置) +│ └── .env # 环境变量配置 +│ +├── mcp_dev_agent/ # Dev Agent MCP Server(CodeBuddy 入口) +│ ├── server.py +│ └── README.md +│ +├── mcp_server/ # 旧版 MCP Server(已废弃,保留参考) +│ └── ... +│ +├── mcp_tools/ # 备用 MCP 工具(已废弃,保留参考) +│ └── command_executor/ +│ +├── data/ # 数据目录(运行时生成) +│ └── sessions.db # SQLite 会话数据库 +│ +└── PLAN.md # 项目计划文档 +``` + +## 配置说明 + +### 环境变量(my_agent/.env) + +```env +# vLLM API 配置 +VLLM_API_BASE=https://9router.aqroid.cn/v1 # vLLM 端点地址 +VLLM_MODEL=aq-first-combo # 模型名 +VLLM_API_KEY=sk-... # API Key + +# Agent 工作目录(文件系统 MCP 根目录) +AGENT_WORKSPACE_DIR=D:\nzy\workspace_git + +# Tavily 搜索 API Key(启用搜索工具时需要) +TAVILY_API_KEY=tvly-dev-... + +# Windows 编码 +PYTHONUTF8=1 +``` + +### API Server 配置 + +通过环境变量或直接修改 `agents/my_agent/api_server.py`: + +| 变量 | 默认值 | 说明 | +|------|--------|------| +| `API_SERVER_HOST` | `0.0.0.0` | 监听地址 | +| `API_SERVER_PORT` | `8001` | 监听端口 | + +### MCP Server 配置 + +通过环境变量配置: + +| 变量 | 默认值 | 说明 | +|------|--------|------| +| `DEV_AGENT_API_URL` | `http://127.0.0.1:8001` | API Server 地址 | +| `DEV_AGENT_APP_NAME` | `dev_agent` | Agent 名称 | +| `DEV_AGENT_USER_ID` | `codebuddy` | 用户 ID(会话隔离用) | + +## 会话与记忆 + +### 会话持久化 + +所有会话存储在 `data/sessions.db`(SQLite),重启服务不丢失。 + +- **同入口续聊**:同一个 session_id 下次接着聊 +- **跨入口共享**:API Server、CLI、MCP 都用同一个数据库 + +### 上下文压缩 + +长对话会自动摘要压缩(默认每 20 轮),防止 context window 溢出: + +- 滑动窗口压缩 + 重叠摘要(保持连续性) +- Token 超阈值紧急压缩(默认 50k) +- 原始事件完整保留(可回溯) + +配置在 `agents/my_agent/app.py` 的 `EventsCompactionConfig`。 + +### 长期记忆 + +当前使用 `InMemoryMemoryService`(内存版),特性: + +- 每轮对话结束自动保存(`after_agent_callback`) +- 每轮对话开始自动加载相关记忆(`preload_memory`) +- 进程重启后记忆丢失 + +**后续可扩展**:替换为 `ChromaMemoryService` 等向量数据库,实现持久化语义搜索。 + +## 工具说明 + +### 文件系统工具(14 个) + +read_file、read_text_file、read_media_file、read_multiple_files、write_file、edit_file、create_directory、list_directory、list_directory_with_sizes、directory_tree、move_file、search_files、get_file_info、list_allowed_directories + +### 终端命令 + +- **run_command** — 执行终端命令,支持自定义工作目录和超时 + +### 记忆工具 + +- **preload_memory** — 每轮自动检索并注入相关历史记忆(系统自动调用,不占工具回合) + +### 网络搜索工具(默认关闭) + +Tavily 搜索 + Fetch 抓取默认注释掉了,因为 vLLM 端点有 413(请求体过大)限制。如需启用: + +1. 取消 `agents/my_agent/agent.py` 中 `fetch_mcp` 和 `tavily_mcp` 的注释 +2. 配置 `TAVILY_API_KEY` 环境变量 + +## 工作流程 + +标准工作流程: + +1. 理解任务需求和项目上下文 +2. 使用文件系统工具浏览项目结构、读取相关文件 +3. 编写或修改代码 +4. 使用 run_command 运行编译/构建/测试 +5. 验证结果后,结构化报告完成情况 + +**报告格式**: +- 状态:成功 / 部分完成 / 失败(需上报) +- 修改的文件:列出所有修改的文件路径 +- 变更摘要:简述做了什么 +- 验证结果:编译/测试是否通过 +- 需要主控关注:如有问题,详细说明 + +## 部署说明 + +### 本地开发 + +```bash +# 终端 1:启动 API Server +python api_server.py + +# 终端 2(可选):用 CLI 测试 +python chat.py + +# 或者直接用 Swagger UI:http://127.0.0.1:8001/docs +``` + +### 上云准备 + +- API Server 是标准 FastAPI 应用,可直接部署到任何支持 Python 的平台 +- SQLite 会话数据库需换成数据库服务(PostgreSQL / MySQL) +- MemoryService 需换成托管向量数据库(Chroma / Pinecone / Vertex AI) +- 文件系统 MCP 需接入云存储或挂载盘 + +## 技术栈 + +| 组件 | 技术 | 版本 | +|------|------|------| +| Agent 框架 | Google ADK | 2.5.0 | +| LLM 接入 | LiteLLM + vLLM (OpenAI 兼容) | 1.80.0 | +| MCP | Model Context Protocol SDK | 1.29.0 | +| HTTP 服务 | FastAPI + Uvicorn | - | +| 会话存储 | SQLite | - | +| A2A 协议 | a2a-sdk | 1.1.2 | + +## 常见问题 + +### Q: 启动后 MCP 工具连不上? + +A: 第一次启动 npx 需要下载 MCP 包,可能需要 30 秒到 1 分钟。如果超时,检查网络连接。 + +### Q: 调用时报 413 Request Entity Too Large? + +A: vLLM 端点的 nginx 限制了请求体大小。当前已暂时关闭 Tavily 和 Fetch 工具以减小请求体。如需要启用,需联系端点管理员调大限制。 + +### Q: 会话数据存在哪? + +A: `data/sessions.db`,SQLite 格式,可用任何 SQLite 工具打开查看。 + +### Q: 怎么重置会话? + +A: 用 CLI 的 `python chat.py --delete `,或直接调用 DELETE 会话 API,或直接删除 `data/sessions.db` 文件。 + +## 许可证 + +MIT diff --git a/a2a_server.py b/a2a_server.py index 3e55cd8..7a0fa92 100644 --- a/a2a_server.py +++ b/a2a_server.py @@ -19,7 +19,7 @@ if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) from dotenv import load_dotenv -load_dotenv(os.path.join(PROJECT_ROOT, "my_agent", ".env")) +load_dotenv(os.path.join(PROJECT_ROOT, "agents/my_agent", ".env")) # 强制 UTF-8 os.environ["PYTHONUTF8"] = "1" @@ -30,7 +30,7 @@ from google.adk.runners import Runner from google.adk.sessions.sqlite_session_service import SqliteSessionService from google.adk.memory.in_memory_memory_service import InMemoryMemoryService from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService -from my_agent.app import dev_app +from agents.my_agent.app import dev_app # 配置 diff --git a/agents/__init__.py b/agents/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/my_agent/__init__.py b/agents/luna/__init__.py similarity index 100% rename from my_agent/__init__.py rename to agents/luna/__init__.py diff --git a/agents/luna/agent.py b/agents/luna/agent.py new file mode 100644 index 0000000..46d7c9d --- /dev/null +++ b/agents/luna/agent.py @@ -0,0 +1,200 @@ +from google.adk.agents import LlmAgent +from google.adk.models.lite_llm import LiteLlm +from google.adk.tools.mcp_tool.mcp_toolset import McpToolset +from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams +from google.adk.tools.function_tool import FunctionTool +from google.adk.tools import preload_memory +from mcp.client.stdio import StdioServerParameters +import os +import asyncio +from dotenv import load_dotenv + +# Load environment variables from .env file +load_dotenv() + +# --- 使用 vLLM 端点的智能体 --- +api_base_url = os.getenv("VLLM_API_BASE", "https://9router.aqroid.cn/v1") +model_name = os.getenv("VLLM_MODEL", "") +api_key = os.getenv("VLLM_API_KEY", "") + +# Agent 可访问的工作目录 +WORKSPACE_DIR = os.getenv("AGENT_WORKSPACE_DIR", r"D:\nzy\workspace_git") + +# --- 文件系统 MCP 工具 --- +filesystem_mcp = McpToolset( + connection_params=StdioConnectionParams( + server_params=StdioServerParameters( + command="npx", + args=[ + "-y", + "@modelcontextprotocol/server-filesystem", + os.path.abspath(WORKSPACE_DIR), + ], + ), + timeout=300000, + ), +) + +# --- 网页抓取 MCP 工具(Fetch)--- +# 暂时注释:请求体过大导致 413 错误,后续需要时再启用 +# fetch_mcp = McpToolset( +# connection_params=StdioConnectionParams( +# server_params=StdioServerParameters( +# command="npx", +# args=[ +# "-y", +# "@modelcontextprotocol/server-fetch", +# ], +# ), +# timeout=300000, +# ), +# ) + +# --- Tavily 搜索 MCP 工具 --- +# 暂时注释:请求体过大导致 413 错误,后续需要时再启用 +# tavily_api_key = os.getenv("TAVILY_API_KEY", "") +# tavily_mcp = McpToolset( +# connection_params=StdioConnectionParams( +# server_params=StdioServerParameters( +# command="npx", +# args=[ +# "-y", +# "tavily-mcp@latest", +# ], +# env={ +# "TAVILY_API_KEY": tavily_api_key, +# }, +# ), +# timeout=300000, +# ), +# ) + + +# --- 终端命令执行工具(Python 原生,绕开 MCP 通信问题)--- +async def run_command(command: str, cwd: str = None, timeout: int = 300000) -> str: + """ + 在终端中执行一条命令,返回输出结果。 + + Args: + command: 要执行的命令,如 'npm run build'、'python -m pytest' 等 + cwd: 命令执行的工作目录,默认使用 AGENT_WORKSPACE_DIR + timeout: 超时时间(秒),默认 300 + + Returns: + 命令执行结果(stdout + stderr + 状态) + """ + if not command: + return "错误:命令不能为空" + + work_dir = cwd or os.path.abspath(WORKSPACE_DIR) + if not os.path.isdir(work_dir): + return f"错误:工作目录不存在 {work_dir}" + + try: + proc = await asyncio.create_subprocess_shell( + command, + cwd=work_dir, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + stdout_bytes, stderr_bytes = await asyncio.wait_for( + proc.communicate(), timeout=timeout + ) + except asyncio.TimeoutError: + proc.kill() + await proc.wait() + return f"命令执行超时({timeout}秒): {command}" + except Exception as e: + return f"命令执行出错: {e}" + + stdout = stdout_bytes.decode("utf-8", errors="replace") + stderr = stderr_bytes.decode("utf-8", errors="replace") + + parts = [] + if stdout: + parts.append(f"[stdout]\n{stdout}") + if stderr: + parts.append(f"[stderr]\n{stderr}") + + output = "\n".join(parts) if parts else "(无输出)" + + max_len = 10000 + if len(output) > max_len: + output = output[:max_len] + f"\n\n...(输出已截断,共 {len(output)} 字符)" + + status = "成功" if proc.returncode == 0 else f"失败 (退出码 {proc.returncode})" + return f"命令执行{status}\n{output}" + + +# 注册为 ADK 工具 +run_command_tool = FunctionTool(run_command) + + +# --- 记忆自动保存回调 --- +async def auto_save_memory_callback(callback_context): + """ + 每轮对话结束后,自动将会话保存到长期记忆中。 + memory_service 未配置时静默忽略。 + """ + try: + await callback_context.add_session_to_memory() + except (ValueError, AttributeError): + # memory_service 未配置或不可用时跳过 + pass + + +root_agent = LlmAgent( + model=LiteLlm( + model=model_name, + api_base=api_base_url, + api_key=api_key if api_key else None, + custom_llm_provider="openai", + ), + name="luna_agent", + description="全栈开发子 Agent(gpt-5.6-luna),可以读写文件、浏览目录、执行开发任务。", + instruction=( + "你是luna,一个使用gpt5.6-luna的前后端开发子agent\n" + "\n" + "## 记忆能力\n" + "- 你拥有长期记忆,之前和用户的对话中提到的项目信息、技术偏好、任务历史都会被记住\n" + "- 系统会自动从记忆中检索与当前任务相关的历史上下文,注入到对话中\n" + "- 重要的项目信息(技术栈、目录结构、编码规范等)会自动沉淀到记忆里\n" + "\n" + "## 工作流程\n" + "1. 先理解任务需求和项目上下文\n" + "2. 使用文件系统工具浏览项目结构、读取相关文件\n" + "3. 编写或修改代码\n" + "4. 使用 run_command 工具运行编译/构建/测试,确保代码可正常工作\n" + "5. 验证结果后,按指定格式报告完成情况\n" + "\n" + "## 工作边界\n" + "- 所有文件操作限定在分配的工作目录范围内\n" + "- 你拥有的工具:文件系统操作(读/写/列目录)、终端命令执行\n" + "- 你可以自主完成:代码编写、bug 修复、样式调整、接口修改、简单重构\n" + "- 遇到不熟悉的技术或 API,先查阅项目内的现有代码和文档参考\n" + "- 需要上报的情况:\n" + " • 架构设计或重大技术选型决策\n" + " • 依赖包版本不兼容导致的编译/运行时错误(需要升级/降级依赖时)\n" + " • 工具调用异常、环境配置问题、命令超时等非代码问题\n" + " • 超出你能力范围或不确定的问题\n" + "\n" + "## 编译/构建守则\n" + "- 写完代码后,优先运行编译或构建命令验证\n" + "- 编译报错时,先判断错误类型:\n" + " • 代码语法/逻辑错误 → 自行修复后重试\n" + " • 依赖缺失或版本不兼容 → 上报,由主控决定处理方式\n" + " • 环境/工具问题 → 上报\n" + "- 连续修复 3 次仍无法通过编译时,上报当前状态和所有错误信息\n" + "- 只有编译通过后才算任务完成\n" + "\n" + "## 报告格式\n" + "完成任务后,结构化报告:\n" + "**状态**:成功 / 部分完成 / 失败(需上报)\n" + "**修改的文件**:列出所有修改的文件路径\n" + "**变更摘要**:简述做了什么\n" + "**验证结果**:编译/测试是否通过,如有警告需列出\n" + "**需要主控关注**:如有需要上报的问题,详细说明" + ), + tools=[filesystem_mcp, run_command_tool, preload_memory], + after_agent_callback=auto_save_memory_callback, +) diff --git a/agents/luna/api_server.py b/agents/luna/api_server.py new file mode 100644 index 0000000..94aeae5 --- /dev/null +++ b/agents/luna/api_server.py @@ -0,0 +1,126 @@ +""" +Luna Agent API Server +使用 ADK 官方 ApiServer 构建 REST API 服务,支持: +- REST API 调用 agent(/run、/run_sse) +- 会话管理(创建/获取/删除,SQLite 持久化) +- Swagger UI 交互式文档(/docs) +- 上下文自动压缩 +- 长期记忆(InMemory,后续可换向量库) + +启动方式: + python api_server.py + +主要端点: + GET /list-apps 列出所有 agent + POST /run 同步运行 agent + POST /run_sse 流式运行 agent(SSE) + GET /apps/{app}/users/{user}/sessions/{session} 获取会话 + POST /apps/{app}/users/{user}/sessions/{session} 创建会话 + GET /docs Swagger UI +""" +import os +import sys + +# 脚本所在目录(作为 .env / data 等相对路径的基准) +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +if PROJECT_ROOT not in sys.path: + sys.path.insert(0, PROJECT_ROOT) + +# 项目根目录(往上两级),确保 from agents.xxx.xxx import 可用 +_REPO_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../..")) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from dotenv import load_dotenv +load_dotenv(os.path.join(PROJECT_ROOT, "", ".env")) + +# 强制 UTF-8 +os.environ["PYTHONUTF8"] = "1" + +import uvicorn +from google.adk.cli.api_server import ApiServer +from google.adk.cli.utils.base_agent_loader import BaseAgentLoader +from google.adk.sessions.sqlite_session_service import SqliteSessionService +from google.adk.memory.in_memory_memory_service import InMemoryMemoryService +from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.adk.auth.credential_service.in_memory_credential_service import InMemoryCredentialService +from google.adk.evaluation.in_memory_eval_sets_manager import InMemoryEvalSetsManager +from google.adk.evaluation.local_eval_set_results_manager import LocalEvalSetResultsManager +from agents.luna.app import dev_app + + +# 配置 +HOST = os.getenv("API_SERVER_HOST", "0.0.0.0") +PORT = int(os.getenv("API_SERVER_PORT", "8002")) + +# 数据目录 +DATA_DIR = os.path.join(PROJECT_ROOT, "../../data") +os.makedirs(DATA_DIR, exist_ok=True) + + +class DevAgentLoader(BaseAgentLoader): + """自定义 agent 加载器,直接返回我们的 App 对象(带 compaction 配置)""" + + def load_agent(self, agent_name: str): + if agent_name == dev_app.name: + return dev_app + raise ValueError(f"Agent not found: {agent_name}") + + def list_agents(self) -> list[str]: + return [dev_app.name] + + +def create_api_server() -> ApiServer: + """构造 ApiServer 实例""" + # 会话服务:SQLite 持久化 + session_service = SqliteSessionService( + db_path=os.path.join(DATA_DIR, "sessions_luna.db") + ) + + # 记忆服务:长期记忆(先用内存版) + memory_service = InMemoryMemoryService() + + # 工件服务 + artifact_service = InMemoryArtifactService() + + # 认证服务(暂不需要,内存版占位) + credential_service = InMemoryCredentialService() + + # 评测集管理(暂不需要,占位) + eval_sets_manager = InMemoryEvalSetsManager() + eval_set_results_manager = LocalEvalSetResultsManager(agents_dir=DATA_DIR) + + return ApiServer( + agent_loader=DevAgentLoader(), + session_service=session_service, + memory_service=memory_service, + artifact_service=artifact_service, + credential_service=credential_service, + eval_sets_manager=eval_sets_manager, + eval_set_results_manager=eval_set_results_manager, + agents_dir=os.path.join(PROJECT_ROOT, ""), + auto_create_session=True, + ) + + +def main(): + api_server = create_api_server() + fastapi_app = api_server.get_fast_api_app() + + print("=" * 60) + print("Luna Agent API Server 启动中...") + print(f" 模型: {dev_app.root_agent.model.model}") + print(f" 监听地址: http://{HOST}:{PORT}") + print(f" Swagger UI: http://{HOST}:{PORT}/docs") + print(f" 同步运行: POST http://{HOST}:{PORT}/run") + print(f" 流式运行: POST http://{HOST}:{PORT}/run_sse") + print(f" 列出agent: GET http://{HOST}:{PORT}/list-apps") + print(f" 会话持久化: SQLite ({DATA_DIR}/sessions_luna.db)") + print(f" 上下文压缩: 已启用") + print("=" * 60) + + uvicorn.run(fastapi_app, host=HOST, port=PORT, log_level="info") + + +if __name__ == "__main__": + main() diff --git a/my_agent/app.py b/agents/luna/app.py similarity index 91% rename from my_agent/app.py rename to agents/luna/app.py index 61cc41d..f8501f1 100644 --- a/my_agent/app.py +++ b/agents/luna/app.py @@ -4,7 +4,7 @@ Dev Agent App 配置 """ from google.adk.apps import App from google.adk.apps._configs import EventsCompactionConfig # 实验性 API -from my_agent.agent import root_agent +from agents.luna.agent import root_agent # 上下文压缩配置(长对话自动摘要,防止爆 context window) @@ -17,7 +17,7 @@ compaction_config = EventsCompactionConfig( # App 容器:管理 agent + 压缩配置 dev_app = App( - name="dev_agent", + name="luna_agent", root_agent=root_agent, events_compaction_config=compaction_config, ) diff --git a/agents/luna/chat.py b/agents/luna/chat.py new file mode 100644 index 0000000..48d5ac6 --- /dev/null +++ b/agents/luna/chat.py @@ -0,0 +1,173 @@ +""" +Luna Agent 命令行交互工具 +使用配置好的 Runner(SQLite 会话持久化 + Memory + 上下文压缩), +退出后再次进入同一个 session_id 可以继续对话。 + +使用方式: + python chat.py # 新会话,自动生成 session_id + python chat.py --session my_session # 指定 session_id + python chat.py --list # 列出所有会话 + python chat.py --delete my_session # 删除某个会话 +""" +import os +import sys +import asyncio +import argparse + +# 脚本所在目录(作为 .env / data 等相对路径的基准) +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +if PROJECT_ROOT not in sys.path: + sys.path.insert(0, PROJECT_ROOT) + +# 项目根目录(往上两级),确保 from agents.xxx.xxx import 可用 +_REPO_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../..")) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from dotenv import load_dotenv +load_dotenv(os.path.join(PROJECT_ROOT, "", ".env")) + +# 强制 UTF-8 +os.environ["PYTHONUTF8"] = "1" + +from google.adk.runners import Runner +from google.adk.sessions.sqlite_session_service import SqliteSessionService +from google.adk.memory.in_memory_memory_service import InMemoryMemoryService +from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.genai import types +from agents.luna.app import dev_app + + +# 数据目录 +DATA_DIR = os.path.join(PROJECT_ROOT, "../../data") +os.makedirs(DATA_DIR, exist_ok=True) + +# 同一个数据库,A2A server 和 CLI 共享 +DB_PATH = os.path.join(DATA_DIR, "sessions_luna.db") + +USER_ID = "local_user" + + +def get_runner() -> Runner: + """创建带 SQLite 会话持久化的 Runner""" + session_service = SqliteSessionService(db_path=DB_PATH) + memory_service = InMemoryMemoryService() + artifact_service = InMemoryArtifactService() + + return Runner( + app=dev_app, + session_service=session_service, + memory_service=memory_service, + artifact_service=artifact_service, + auto_create_session=True, + ) + + +async def list_sessions(): + """列出所有会话""" + runner = get_runner() + response = await runner.session_service.list_sessions( + app_name=dev_app.name, + user_id=USER_ID, + ) + sessions = response.sessions + if not sessions: + print("(暂无会话)") + return + + print(f"共 {len(sessions)} 个会话:\n") + for s in sessions: + # 取第一条用户消息作为摘要 + preview = "" + for e in s.events: + if e.content and e.content.parts and e.author == "user": + text = e.content.parts[0].text[:50] + preview = f" → {text}" + break + print(f" [{s.id}] {preview}") + print(f" 更新时间: {s.last_update_time}") + + +async def delete_session(session_id: str): + """删除指定会话""" + runner = get_runner() + try: + await runner.session_service.delete_session( + app_name=dev_app.name, + user_id=USER_ID, + session_id=session_id, + ) + print(f"会话 [{session_id}] 已删除") + except Exception as e: + print(f"删除失败: {e}") + + +async def chat(session_id: str | None = None): + """交互式对话""" + runner = get_runner() + + # 如果没有指定 session_id,自动创建 + if not session_id: + session = await runner.session_service.create_session( + app_name=dev_app.name, + user_id=USER_ID, + ) + session_id = session.id + print(f"新会话已创建,session_id: {session_id}") + print(f"下次可用 `python chat.py --session {session_id}` 继续\n") + + print(f"=== Luna Agent 对话 ===") + print(f"模型: {dev_app.root_agent.model.model}") + print(f"Session: {session_id}") + print(f"输入消息开始对话,输入 quit / exit 退出\n") + + while True: + try: + user_input = input("你: ").strip() + except (EOFError, KeyboardInterrupt): + print("\n再见!") + break + + if not user_input: + continue + if user_input.lower() in ("quit", "exit", "退出"): + print("再见!") + break + + print("Luna: ", end="", flush=True) + + try: + async for event in runner.run_async( + user_id=USER_ID, + session_id=session_id, + new_message=types.Content(parts=[types.Part(text=user_input)]), + ): + if event.is_final_response(): + # 最终回复 + for part in event.content.parts: + if hasattr(part, "text") and part.text: + print(part.text, end="", flush=True) + print() + except Exception as e: + print(f"\n[出错] {e}") + + print() + + +def main(): + parser = argparse.ArgumentParser(description="Luna Agent 命令行交互工具") + parser.add_argument("--session", "-s", help="会话 ID,指定后继续该会话") + parser.add_argument("--list", "-l", action="store_true", help="列出所有会话") + parser.add_argument("--delete", "-d", help="删除指定会话") + args = parser.parse_args() + + if args.list: + asyncio.run(list_sessions()) + elif args.delete: + asyncio.run(delete_session(args.delete)) + else: + asyncio.run(chat(args.session)) + + +if __name__ == "__main__": + main() diff --git a/agents/my_agent/__init__.py b/agents/my_agent/__init__.py new file mode 100644 index 0000000..0c38a7a --- /dev/null +++ b/agents/my_agent/__init__.py @@ -0,0 +1,2 @@ +# my_agent package +from . import agent \ No newline at end of file diff --git a/my_agent/agent.py b/agents/my_agent/agent.py similarity index 98% rename from my_agent/agent.py rename to agents/my_agent/agent.py index 5e1a92b..4679d78 100644 --- a/my_agent/agent.py +++ b/agents/my_agent/agent.py @@ -150,8 +150,8 @@ root_agent = LlmAgent( api_key=api_key if api_key else None, custom_llm_provider="openai", ), - name="dev_agent", - description="全栈开发子 Agent,可以读写文件、浏览目录、执行开发任务。", + name="my_agent", + description="全栈开发子 Agent(aq-first-combo),可以读写文件、浏览目录、执行开发任务。", instruction=( "全栈开发子 Agent\n" "\n" diff --git a/agents/my_agent/api_server.py b/agents/my_agent/api_server.py new file mode 100644 index 0000000..3e36560 --- /dev/null +++ b/agents/my_agent/api_server.py @@ -0,0 +1,125 @@ +""" +Dev Agent API Server +使用 ADK 官方 ApiServer 构建 REST API 服务,支持: +- REST API 调用 agent(/run、/run_sse) +- 会话管理(创建/获取/删除,SQLite 持久化) +- Swagger UI 交互式文档(/docs) +- 上下文自动压缩 +- 长期记忆(InMemory,后续可换向量库) + +启动方式: + python api_server.py + +主要端点: + GET /list-apps 列出所有 agent + POST /run 同步运行 agent + POST /run_sse 流式运行 agent(SSE) + GET /apps/{app}/users/{user}/sessions/{session} 获取会话 + POST /apps/{app}/users/{user}/sessions/{session} 创建会话 + GET /docs Swagger UI +""" +import os +import sys + +# 脚本所在目录(作为 .env / data 等相对路径的基准) +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +if PROJECT_ROOT not in sys.path: + sys.path.insert(0, PROJECT_ROOT) + +# 项目根目录(往上两级),确保 from agents.xxx.xxx import 可用 +_REPO_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../..")) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from dotenv import load_dotenv +load_dotenv(os.path.join(PROJECT_ROOT, "", ".env")) + +# 强制 UTF-8 +os.environ["PYTHONUTF8"] = "1" + +import uvicorn +from google.adk.cli.api_server import ApiServer +from google.adk.cli.utils.base_agent_loader import BaseAgentLoader +from google.adk.sessions.sqlite_session_service import SqliteSessionService +from google.adk.memory.in_memory_memory_service import InMemoryMemoryService +from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.adk.auth.credential_service.in_memory_credential_service import InMemoryCredentialService +from google.adk.evaluation.in_memory_eval_sets_manager import InMemoryEvalSetsManager +from google.adk.evaluation.local_eval_set_results_manager import LocalEvalSetResultsManager +from agents.my_agent.app import dev_app + + +# 配置 +HOST = os.getenv("API_SERVER_HOST", "0.0.0.0") +PORT = int(os.getenv("API_SERVER_PORT", "8001")) + +# 数据目录 +DATA_DIR = os.path.join(PROJECT_ROOT, "../../data") +os.makedirs(DATA_DIR, exist_ok=True) + + +class DevAgentLoader(BaseAgentLoader): + """自定义 agent 加载器,直接返回我们的 App 对象(带 compaction 配置)""" + + def load_agent(self, agent_name: str): + if agent_name == dev_app.name: + return dev_app + raise ValueError(f"Agent not found: {agent_name}") + + def list_agents(self) -> list[str]: + return [dev_app.name] + + +def create_api_server() -> ApiServer: + """构造 ApiServer 实例""" + # 会话服务:SQLite 持久化 + session_service = SqliteSessionService( + db_path=os.path.join(DATA_DIR, "sessions.db") + ) + + # 记忆服务:长期记忆(先用内存版) + memory_service = InMemoryMemoryService() + + # 工件服务 + artifact_service = InMemoryArtifactService() + + # 认证服务(暂不需要,内存版占位) + credential_service = InMemoryCredentialService() + + # 评测集管理(暂不需要,占位) + eval_sets_manager = InMemoryEvalSetsManager() + eval_set_results_manager = LocalEvalSetResultsManager(agents_dir=DATA_DIR) + + return ApiServer( + agent_loader=DevAgentLoader(), + session_service=session_service, + memory_service=memory_service, + artifact_service=artifact_service, + credential_service=credential_service, + eval_sets_manager=eval_sets_manager, + eval_set_results_manager=eval_set_results_manager, + agents_dir=os.path.join(PROJECT_ROOT, ""), + auto_create_session=True, + ) + + +def main(): + api_server = create_api_server() + fastapi_app = api_server.get_fast_api_app() + + print("=" * 60) + print("Dev Agent API Server 启动中...") + print(f" 监听地址: http://{HOST}:{PORT}") + print(f" Swagger UI: http://{HOST}:{PORT}/docs") + print(f" 同步运行: POST http://{HOST}:{PORT}/run") + print(f" 流式运行: POST http://{HOST}:{PORT}/run_sse") + print(f" 列出agent: GET http://{HOST}:{PORT}/list-apps") + print(f" 会话持久化: SQLite ({DATA_DIR}/sessions.db)") + print(f" 上下文压缩: 已启用") + print("=" * 60) + + uvicorn.run(fastapi_app, host=HOST, port=PORT, log_level="info") + + +if __name__ == "__main__": + main() diff --git a/agents/my_agent/app.py b/agents/my_agent/app.py new file mode 100644 index 0000000..650e56e --- /dev/null +++ b/agents/my_agent/app.py @@ -0,0 +1,23 @@ +""" +Dev Agent App 配置 +使用 ADK App 包装 agent,配置上下文压缩、插件等。 +""" +from google.adk.apps import App +from google.adk.apps._configs import EventsCompactionConfig # 实验性 API +from agents.my_agent.agent import root_agent + + +# 上下文压缩配置(长对话自动摘要,防止爆 context window) +compaction_config = EventsCompactionConfig( + compaction_interval=20, # 每 20 个用户轮次压缩一次 + overlap_size=3, # 重叠 3 轮,保持连续性 + token_threshold=50000, # token 超 50k 紧急压缩 + event_retention_size=30, # 压缩时保留最近 30 条原始事件 +) + +# App 容器:管理 agent + 压缩配置 +dev_app = App( + name="my_agent", + root_agent=root_agent, + events_compaction_config=compaction_config, +) diff --git a/agents/my_agent/chat.py b/agents/my_agent/chat.py new file mode 100644 index 0000000..0d1ac32 --- /dev/null +++ b/agents/my_agent/chat.py @@ -0,0 +1,174 @@ +""" +Dev Agent 命令行交互工具 +使用配置好的 Runner(SQLite 会话持久化 + Memory + 上下文压缩), +退出后再次进入同一个 session_id 可以继续对话。 + +使用方式: + python chat.py # 新会话,自动生成 session_id + python chat.py --session my_session # 指定 session_id + python chat.py --list # 列出所有会话 + python chat.py --delete my_session # 删除某个会话 +""" +import os +import sys +import asyncio +import argparse + +# 脚本所在目录(作为 .env / data 等相对路径的基准) +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +if PROJECT_ROOT not in sys.path: + sys.path.insert(0, PROJECT_ROOT) + +# 项目根目录(往上两级),确保 from agents.xxx.xxx import 可用 +_REPO_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../..")) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from dotenv import load_dotenv +load_dotenv(os.path.join(PROJECT_ROOT, "", ".env")) + +# 强制 UTF-8 +os.environ["PYTHONUTF8"] = "1" + +from google.adk.runners import Runner +from google.adk.sessions.sqlite_session_service import SqliteSessionService +from google.adk.memory.in_memory_memory_service import InMemoryMemoryService +from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.genai import types +from agents.my_agent.app import dev_app + + +# 数据目录 +DATA_DIR = os.path.join(PROJECT_ROOT, "../../data") +os.makedirs(DATA_DIR, exist_ok=True) + +# 同一个数据库,A2A server 和 CLI 共享 +DB_PATH = os.path.join(DATA_DIR, "sessions.db") + +USER_ID = "local_user" + + +def get_runner() -> Runner: + """创建带 SQLite 会话持久化的 Runner""" + session_service = SqliteSessionService(db_path=DB_PATH) + memory_service = InMemoryMemoryService() + artifact_service = InMemoryArtifactService() + + return Runner( + app=dev_app, + session_service=session_service, + memory_service=memory_service, + artifact_service=artifact_service, + auto_create_session=True, + ) + + +async def list_sessions(): + """列出所有会话""" + runner = get_runner() + response = await runner.session_service.list_sessions( + app_name=dev_app.name, + user_id=USER_ID, + ) + sessions = response.sessions + if not sessions: + print("(暂无会话)") + return + + print(f"共 {len(sessions)} 个会话:\n") + for s in sessions: + # 取第一条用户消息作为摘要 + preview = "" + for e in s.events: + if e.content and e.content.parts and e.author == "user": + text = e.content.parts[0].text[:50] + preview = f" → {text}" + break + print(f" [{s.id}] {preview}") + print(f" 更新时间: {s.last_update_time}") + + +async def delete_session(session_id: str): + """删除指定会话""" + runner = get_runner() + try: + await runner.session_service.delete_session( + app_name=dev_app.name, + user_id=USER_ID, + session_id=session_id, + ) + print(f"会话 [{session_id}] 已删除") + except Exception as e: + print(f"删除失败: {e}") + + +async def chat(session_id: str | None = None): + """交互式对话""" + runner = get_runner() + + # 如果没有指定 session_id,自动创建 + if not session_id: + session = await runner.session_service.create_session( + app_name=dev_app.name, + user_id=USER_ID, + ) + session_id = session.id + print(f"新会话已创建,session_id: {session_id}") + print(f"下次可用 `python chat.py --session {session_id}` 继续\n") + + print(f"=== Dev Agent 对话 ===") + print(f"Session: {session_id}") + print(f"输入消息开始对话,输入 quit / exit 退出\n") + + while True: + try: + user_input = input("你: ").strip() + except (EOFError, KeyboardInterrupt): + print("\n再见!") + break + + if not user_input: + continue + if user_input.lower() in ("quit", "exit", "退出"): + print("再见!") + break + + print("花花: ", end="", flush=True) + + try: + full_response = "" + async for event in runner.run_async( + user_id=USER_ID, + session_id=session_id, + new_message=types.Content(parts=[types.Part(text=user_input)]), + ): + if event.is_final_response(): + # 最终回复 + for part in event.content.parts: + if hasattr(part, "text") and part.text: + print(part.text, end="", flush=True) + full_response += part.text + print() + except Exception as e: + print(f"\n[出错] {e}") + + print() + + +def main(): + parser = argparse.ArgumentParser(description="Dev Agent 命令行交互工具") + parser.add_argument("--session", "-s", help="会话 ID,指定后继续该会话") + parser.add_argument("--list", "-l", action="store_true", help="列出所有会话") + parser.add_argument("--delete", "-d", help="删除指定会话") + args = parser.parse_args() + + if args.list: + asyncio.run(list_sessions()) + elif args.delete: + asyncio.run(delete_session(args.delete)) + else: + asyncio.run(chat(args.session)) + + +if __name__ == "__main__": + main() diff --git a/agents/qwen/.gitignore b/agents/qwen/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/agents/qwen/.gitignore @@ -0,0 +1 @@ +.env diff --git a/agents/qwen/__init__.py b/agents/qwen/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/agents/qwen/agent.py b/agents/qwen/agent.py new file mode 100644 index 0000000..75a35fb --- /dev/null +++ b/agents/qwen/agent.py @@ -0,0 +1,200 @@ +from google.adk.agents import LlmAgent +from google.adk.models.lite_llm import LiteLlm +from google.adk.tools.mcp_tool.mcp_toolset import McpToolset +from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams +from google.adk.tools.function_tool import FunctionTool +from google.adk.tools import preload_memory +from mcp.client.stdio import StdioServerParameters +import os +import asyncio +from dotenv import load_dotenv + +# Load environment variables from .env file +load_dotenv() + +# --- 使用 vLLM 端点的智能体 --- +api_base_url = os.getenv("VLLM_API_BASE", "https://9router.aqroid.cn/v1") +model_name = os.getenv("VLLM_MODEL", "") +api_key = os.getenv("VLLM_API_KEY", "") + +# Agent 可访问的工作目录 +WORKSPACE_DIR = os.getenv("AGENT_WORKSPACE_DIR", r"D:\nzy\workspace_git") + +# --- 文件系统 MCP 工具 --- +filesystem_mcp = McpToolset( + connection_params=StdioConnectionParams( + server_params=StdioServerParameters( + command="npx", + args=[ + "-y", + "@modelcontextprotocol/server-filesystem", + os.path.abspath(WORKSPACE_DIR), + ], + ), + timeout=300000, + ), +) + +# --- 网页抓取 MCP 工具(Fetch)--- +# 暂时注释:请求体过大导致 413 错误,后续需要时再启用 +# fetch_mcp = McpToolset( +# connection_params=StdioConnectionParams( +# server_params=StdioServerParameters( +# command="npx", +# args=[ +# "-y", +# "@modelcontextprotocol/server-fetch", +# ], +# ), +# timeout=300000, +# ), +# ) + +# --- Tavily 搜索 MCP 工具 --- +# 暂时注释:请求体过大导致 413 错误,后续需要时再启用 +# tavily_api_key = os.getenv("TAVILY_API_KEY", "") +# tavily_mcp = McpToolset( +# connection_params=StdioConnectionParams( +# server_params=StdioServerParameters( +# command="npx", +# args=[ +# "-y", +# "tavily-mcp@latest", +# ], +# env={ +# "TAVILY_API_KEY": tavily_api_key, +# }, +# ), +# timeout=300000, +# ), +# ) + + +# --- 终端命令执行工具(Python 原生,绕开 MCP 通信问题)--- +async def run_command(command: str, cwd: str = None, timeout: int = 300000) -> str: + """ + 在终端中执行一条命令,返回输出结果。 + + Args: + command: 要执行的命令,如 'npm run build'、'python -m pytest' 等 + cwd: 命令执行的工作目录,默认使用 AGENT_WORKSPACE_DIR + timeout: 超时时间(秒),默认 300 + + Returns: + 命令执行结果(stdout + stderr + 状态) + """ + if not command: + return "错误:命令不能为空" + + work_dir = cwd or os.path.abspath(WORKSPACE_DIR) + if not os.path.isdir(work_dir): + return f"错误:工作目录不存在 {work_dir}" + + try: + proc = await asyncio.create_subprocess_shell( + command, + cwd=work_dir, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + stdout_bytes, stderr_bytes = await asyncio.wait_for( + proc.communicate(), timeout=timeout + ) + except asyncio.TimeoutError: + proc.kill() + await proc.wait() + return f"命令执行超时({timeout}秒): {command}" + except Exception as e: + return f"命令执行出错: {e}" + + stdout = stdout_bytes.decode("utf-8", errors="replace") + stderr = stderr_bytes.decode("utf-8", errors="replace") + + parts = [] + if stdout: + parts.append(f"[stdout]\n{stdout}") + if stderr: + parts.append(f"[stderr]\n{stderr}") + + output = "\n".join(parts) if parts else "(无输出)" + + max_len = 10000 + if len(output) > max_len: + output = output[:max_len] + f"\n\n...(输出已截断,共 {len(output)} 字符)" + + status = "成功" if proc.returncode == 0 else f"失败 (退出码 {proc.returncode})" + return f"命令执行{status}\n{output}" + + +# 注册为 ADK 工具 +run_command_tool = FunctionTool(run_command) + + +# --- 记忆自动保存回调 --- +async def auto_save_memory_callback(callback_context): + """ + 每轮对话结束后,自动将会话保存到长期记忆中。 + memory_service 未配置时静默忽略。 + """ + try: + await callback_context.add_session_to_memory() + except (ValueError, AttributeError): + # memory_service 未配置或不可用时跳过 + pass + + +root_agent = LlmAgent( + model=LiteLlm( + model=model_name, + api_base=api_base_url, + api_key=api_key if api_key else None, + custom_llm_provider="openai", + ), + name="qwen_agent", + description="全栈开发子 Agent(qwen/astron-code),可以读写文件、浏览目录、执行开发任务。", + instruction=( + "千问-全栈开发子 Agent\n" + "\n" + "## 记忆能力\n" + "- 你拥有长期记忆,之前和用户的对话中提到的项目信息、技术偏好、任务历史都会被记住\n" + "- 系统会自动从记忆中检索与当前任务相关的历史上下文,注入到对话中\n" + "- 重要的项目信息(技术栈、目录结构、编码规范等)会自动沉淀到记忆里\n" + "\n" + "## 工作流程\n" + "1. 先理解任务需求和项目上下文\n" + "2. 使用文件系统工具浏览项目结构、读取相关文件\n" + "3. 编写或修改代码\n" + "4. 使用 run_command 工具运行编译/构建/测试,确保代码可正常工作\n" + "5. 验证结果后,按指定格式报告完成情况\n" + "\n" + "## 工作边界\n" + "- 所有文件操作限定在分配的工作目录范围内\n" + "- 你拥有的工具:文件系统操作(读/写/列目录)、终端命令执行\n" + "- 你可以自主完成:代码编写、bug 修复、样式调整、接口修改、简单重构\n" + "- 遇到不熟悉的技术或 API,先查阅项目内的现有代码和文档参考\n" + "- 需要上报的情况:\n" + " • 架构设计或重大技术选型决策\n" + " • 依赖包版本不兼容导致的编译/运行时错误(需要升级/降级依赖时)\n" + " • 工具调用异常、环境配置问题、命令超时等非代码问题\n" + " • 超出你能力范围或不确定的问题\n" + "\n" + "## 编译/构建守则\n" + "- 写完代码后,优先运行编译或构建命令验证\n" + "- 编译报错时,先判断错误类型:\n" + " • 代码语法/逻辑错误 → 自行修复后重试\n" + " • 依赖缺失或版本不兼容 → 上报,由主控决定处理方式\n" + " • 环境/工具问题 → 上报\n" + "- 连续修复 3 次仍无法通过编译时,上报当前状态和所有错误信息\n" + "- 只有编译通过后才算任务完成\n" + "\n" + "## 报告格式\n" + "完成任务后,结构化报告:\n" + "**状态**:成功 / 部分完成 / 失败(需上报)\n" + "**修改的文件**:列出所有修改的文件路径\n" + "**变更摘要**:简述做了什么\n" + "**验证结果**:编译/测试是否通过,如有警告需列出\n" + "**需要主控关注**:如有需要上报的问题,详细说明" + ), + tools=[filesystem_mcp, run_command_tool, preload_memory], + after_agent_callback=auto_save_memory_callback, +) diff --git a/agents/qwen/api_server.py b/agents/qwen/api_server.py new file mode 100644 index 0000000..f2764b4 --- /dev/null +++ b/agents/qwen/api_server.py @@ -0,0 +1,126 @@ +""" +Qwen Agent API Server +使用 ADK 官方 ApiServer 构建 REST API 服务,支持: +- REST API 调用 agent(/run、/run_sse) +- 会话管理(创建/获取/删除,SQLite 持久化) +- Swagger UI 交互式文档(/docs) +- 上下文自动压缩 +- 长期记忆(InMemory,后续可换向量库) + +启动方式: + python api_server.py + +主要端点: + GET /list-apps 列出所有 agent + POST /run 同步运行 agent + POST /run_sse 流式运行 agent(SSE) + GET /apps/{app}/users/{user}/sessions/{session} 获取会话 + POST /apps/{app}/users/{user}/sessions/{session} 创建会话 + GET /docs Swagger UI +""" +import os +import sys + +# 脚本所在目录(作为 .env / data 等相对路径的基准) +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +if PROJECT_ROOT not in sys.path: + sys.path.insert(0, PROJECT_ROOT) + +# 项目根目录(往上两级),确保 from agents.xxx.xxx import 可用 +_REPO_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../..")) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from dotenv import load_dotenv +load_dotenv(os.path.join(PROJECT_ROOT, "", ".env")) + +# 强制 UTF-8 +os.environ["PYTHONUTF8"] = "1" + +import uvicorn +from google.adk.cli.api_server import ApiServer +from google.adk.cli.utils.base_agent_loader import BaseAgentLoader +from google.adk.sessions.sqlite_session_service import SqliteSessionService +from google.adk.memory.in_memory_memory_service import InMemoryMemoryService +from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.adk.auth.credential_service.in_memory_credential_service import InMemoryCredentialService +from google.adk.evaluation.in_memory_eval_sets_manager import InMemoryEvalSetsManager +from google.adk.evaluation.local_eval_set_results_manager import LocalEvalSetResultsManager +from agents.qwen.app import dev_app + + +# 配置 +HOST = os.getenv("API_SERVER_HOST", "0.0.0.0") +PORT = int(os.getenv("API_SERVER_PORT", "8003")) + +# 数据目录 +DATA_DIR = os.path.join(PROJECT_ROOT, "../../data") +os.makedirs(DATA_DIR, exist_ok=True) + + +class DevAgentLoader(BaseAgentLoader): + """自定义 agent 加载器,直接返回我们的 App 对象(带 compaction 配置)""" + + def load_agent(self, agent_name: str): + if agent_name == dev_app.name: + return dev_app + raise ValueError(f"Agent not found: {agent_name}") + + def list_agents(self) -> list[str]: + return [dev_app.name] + + +def create_api_server() -> ApiServer: + """构造 ApiServer 实例""" + # 会话服务:SQLite 持久化 + session_service = SqliteSessionService( + db_path=os.path.join(DATA_DIR, "sessions_qwen.db") + ) + + # 记忆服务:长期记忆(先用内存版) + memory_service = InMemoryMemoryService() + + # 工件服务 + artifact_service = InMemoryArtifactService() + + # 认证服务(暂不需要,内存版占位) + credential_service = InMemoryCredentialService() + + # 评测集管理(暂不需要,占位) + eval_sets_manager = InMemoryEvalSetsManager() + eval_set_results_manager = LocalEvalSetResultsManager(agents_dir=DATA_DIR) + + return ApiServer( + agent_loader=DevAgentLoader(), + session_service=session_service, + memory_service=memory_service, + artifact_service=artifact_service, + credential_service=credential_service, + eval_sets_manager=eval_sets_manager, + eval_set_results_manager=eval_set_results_manager, + agents_dir=os.path.join(PROJECT_ROOT, ""), + auto_create_session=True, + ) + + +def main(): + api_server = create_api_server() + fastapi_app = api_server.get_fast_api_app() + + print("=" * 60) + print("Qwen Agent API Server 启动中...") + print(f" 模型: {dev_app.root_agent.model.model}") + print(f" 监听地址: http://{HOST}:{PORT}") + print(f" Swagger UI: http://{HOST}:{PORT}/docs") + print(f" 同步运行: POST http://{HOST}:{PORT}/run") + print(f" 流式运行: POST http://{HOST}:{PORT}/run_sse") + print(f" 列出agent: GET http://{HOST}:{PORT}/list-apps") + print(f" 会话持久化: SQLite ({DATA_DIR}/sessions_qwen.db)") + print(f" 上下文压缩: 已启用") + print("=" * 60) + + uvicorn.run(fastapi_app, host=HOST, port=PORT, log_level="info") + + +if __name__ == "__main__": + main() diff --git a/agents/qwen/app.py b/agents/qwen/app.py new file mode 100644 index 0000000..b8149ad --- /dev/null +++ b/agents/qwen/app.py @@ -0,0 +1,23 @@ +""" +Dev Agent App 配置 +使用 ADK App 包装 agent,配置上下文压缩、插件等。 +""" +from google.adk.apps import App +from google.adk.apps._configs import EventsCompactionConfig # 实验性 API +from agents.qwen.agent import root_agent + + +# 上下文压缩配置(长对话自动摘要,防止爆 context window) +compaction_config = EventsCompactionConfig( + compaction_interval=20, # 每 20 个用户轮次压缩一次 + overlap_size=3, # 重叠 3 轮,保持连续性 + token_threshold=50000, # token 超 50k 紧急压缩 + event_retention_size=30, # 压缩时保留最近 30 条原始事件 +) + +# App 容器:管理 agent + 压缩配置 +dev_app = App( + name="qwen_agent", + root_agent=root_agent, + events_compaction_config=compaction_config, +) diff --git a/agents/qwen/chat.py b/agents/qwen/chat.py new file mode 100644 index 0000000..e775f4e --- /dev/null +++ b/agents/qwen/chat.py @@ -0,0 +1,173 @@ +""" +Qwen Agent 命令行交互工具 +使用配置好的 Runner(SQLite 会话持久化 + Memory + 上下文压缩), +退出后再次进入同一个 session_id 可以继续对话。 + +使用方式: + python chat.py # 新会话,自动生成 session_id + python chat.py --session my_session # 指定 session_id + python chat.py --list # 列出所有会话 + python chat.py --delete my_session # 删除某个会话 +""" +import os +import sys +import asyncio +import argparse + +# 脚本所在目录(作为 .env / data 等相对路径的基准) +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) +if PROJECT_ROOT not in sys.path: + sys.path.insert(0, PROJECT_ROOT) + +# 项目根目录(往上两级),确保 from agents.xxx.xxx import 可用 +_REPO_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../..")) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from dotenv import load_dotenv +load_dotenv(os.path.join(PROJECT_ROOT, "", ".env")) + +# 强制 UTF-8 +os.environ["PYTHONUTF8"] = "1" + +from google.adk.runners import Runner +from google.adk.sessions.sqlite_session_service import SqliteSessionService +from google.adk.memory.in_memory_memory_service import InMemoryMemoryService +from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.genai import types +from agents.qwen.app import dev_app + + +# 数据目录 +DATA_DIR = os.path.join(PROJECT_ROOT, "../../data") +os.makedirs(DATA_DIR, exist_ok=True) + +# 同一个数据库,A2A server 和 CLI 共享 +DB_PATH = os.path.join(DATA_DIR, "sessions_qwen.db") + +USER_ID = "local_user" + + +def get_runner() -> Runner: + """创建带 SQLite 会话持久化的 Runner""" + session_service = SqliteSessionService(db_path=DB_PATH) + memory_service = InMemoryMemoryService() + artifact_service = InMemoryArtifactService() + + return Runner( + app=dev_app, + session_service=session_service, + memory_service=memory_service, + artifact_service=artifact_service, + auto_create_session=True, + ) + + +async def list_sessions(): + """列出所有会话""" + runner = get_runner() + response = await runner.session_service.list_sessions( + app_name=dev_app.name, + user_id=USER_ID, + ) + sessions = response.sessions + if not sessions: + print("(暂无会话)") + return + + print(f"共 {len(sessions)} 个会话:\n") + for s in sessions: + # 取第一条用户消息作为摘要 + preview = "" + for e in s.events: + if e.content and e.content.parts and e.author == "user": + text = e.content.parts[0].text[:50] + preview = f" → {text}" + break + print(f" [{s.id}] {preview}") + print(f" 更新时间: {s.last_update_time}") + + +async def delete_session(session_id: str): + """删除指定会话""" + runner = get_runner() + try: + await runner.session_service.delete_session( + app_name=dev_app.name, + user_id=USER_ID, + session_id=session_id, + ) + print(f"会话 [{session_id}] 已删除") + except Exception as e: + print(f"删除失败: {e}") + + +async def chat(session_id: str | None = None): + """交互式对话""" + runner = get_runner() + + # 如果没有指定 session_id,自动创建 + if not session_id: + session = await runner.session_service.create_session( + app_name=dev_app.name, + user_id=USER_ID, + ) + session_id = session.id + print(f"新会话已创建,session_id: {session_id}") + print(f"下次可用 `python chat.py --session {session_id}` 继续\n") + + print(f"=== Qwen Agent 对话 ===") + print(f"模型: {dev_app.root_agent.model.model}") + print(f"Session: {session_id}") + print(f"输入消息开始对话,输入 quit / exit 退出\n") + + while True: + try: + user_input = input("你: ").strip() + except (EOFError, KeyboardInterrupt): + print("\n再见!") + break + + if not user_input: + continue + if user_input.lower() in ("quit", "exit", "退出"): + print("再见!") + break + + print("Qwen: ", end="", flush=True) + + try: + async for event in runner.run_async( + user_id=USER_ID, + session_id=session_id, + new_message=types.Content(parts=[types.Part(text=user_input)]), + ): + if event.is_final_response(): + # 最终回复 + for part in event.content.parts: + if hasattr(part, "text") and part.text: + print(part.text, end="", flush=True) + print() + except Exception as e: + print(f"\n[出错] {e}") + + print() + + +def main(): + parser = argparse.ArgumentParser(description="Qwen Agent 命令行交互工具") + parser.add_argument("--session", "-s", help="会话 ID,指定后继续该会话") + parser.add_argument("--list", "-l", action="store_true", help="列出所有会话") + parser.add_argument("--delete", "-d", help="删除指定会话") + args = parser.parse_args() + + if args.list: + asyncio.run(list_sessions()) + elif args.delete: + asyncio.run(delete_session(args.delete)) + else: + asyncio.run(chat(args.session)) + + +if __name__ == "__main__": + main() diff --git a/data/sessions.db b/data/sessions.db new file mode 100644 index 0000000000000000000000000000000000000000..1baef6096be4e818dc86749da523aa6be505c1be GIT binary patch literal 831488 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 z z>_XrClb;IP@Qgvf4f!e32I)3Ziq^2BhfVCpEY3p>$%qJE=5+21NehB|6{$nM6_YK5 z!Wol_fOdkaM>BtAwZZv1GskFWhRMvJ6tuCna?%A56xm2S8;-uj$n`@bGadUBadOUW z2N;z}BFwl8rdlO;u6Z!gg3W*vFRxzyER4*TS$lAa0|3;0q*R1CTq!wqW-~y=%M~^# z=TT9EvRtG=JKr)enJ@n2ix#sUoMdK2?qJeIFd3A{fzi#u>|m({_dSGx5@vW&XXbn= zB})dg(@kFI3F;7q+UPQ>_-~A+{}^$!T-M0UPF?ju0P0ug(2S~YpviQoV*1!|I~Z@Jvge!mPvQs{^}3?*Uy=DBh!_^q8&=A?L?0WHoO)Z zHhSZLibSM^IwkKGH%Paz3~~Gbywb?&Y9*aqPD*#!`i|<<*JdW@{~VB}&=&GC$fMUX zR%~K1E@d|Rm1fNV{{L=JT9M)^W5C28_gBC}}5twYB96d3& zH#q@o@0K~*{c7hL%O~#%h(otF)Jvr^-7q=j&`^kyxzX7Co#kHBs@gF)GW#)I?crG! z?RU+IIu0wIP_XL+M0)8b>XZyFAp#YM8f$ zw<)5Lld09Q>?Z3fJb%4W=1uq*jj{TvGD+wtpGtemJB1fb~>`YUNG@sTau2hDcR~H0PbW-a^ zbPt>q>HJNbWrs`=XRfGu8Zv0TfgQTFlSCgiQG=0C5P};H-iPg&+~j$UgyrQ4f;n2y z4^ZY2L9sMjbX3d~b?Sjyqa^-xRL|22L?o3ykEr7lIJGf z{J2uam zaS4f{`&ODzRy)-E!4Kp!#kV|r$wFu#~pfmT^UsC5B-X z_vwKq9it+he4QD^fncGFk%!}_nehzEEUvR5*v0qcJi`1nu#2!pzOhP59>9fZmMp1jyFp z=$}JakqOL2?+nVGtlx*Y0XD4RYp@H~_-LD-Hh553l6Lc3xnoZa@;yfpd)!@iWI-mZ zo4DOpZa^Af7gcUNRgYC-BfBR=7a}r7M&u$cw0l+HnN+a1xZ->fiudWAWLcj;MYubX z+A6>ruAytV#P!^&9ET0=s0iLCPy*XP_u{!*jz<*i-Su`;9dq=*fU#9*BI{;2C!`bP z$)hHDi@ZB6H*sfUkB^~<-CQpFopT#3ALzaLPqnUo5)7E9G)-KBLbcAvOlMJhuzoaF zUjmpk_UNX@eIrTvh<7H9JMM@8&7NJfA|3m4$>ndqebYiw$1g+)4P0j}&D{_|W!MEQ zykmh%(LeV8HU+LwUs5aN6>i?jV75QnBVTdT=HgBxYE!6^w<6@XVT#237POGLJOJ

y0l(v*V*wN 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

    yhojiGJf8)Z}|QojgD)wOHYN-= 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
      %Y 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 literal 0 HcmV?d00001 diff --git a/data/sessions_luna.db b/data/sessions_luna.db new file mode 100644 index 0000000000000000000000000000000000000000..3af08aacf2b2bcfa5a96bba7a32cd6207bbab4c3 GIT binary patch literal 36864 zcmeI*?`s=%90%~bY-`$XUFJ|i(ZcomWW`)fa+e=h5m&ox3}d^cEjmPw%l%l7<=1kT zIVgp8zu1Q0_Q+oq6=e8Cd?v^yf`Wg9Pi;39VfaWN`uSd(B^gQ0x(AN#edNdG`@J8Z z@9XnTNbU>y&YjFUo+a4jYEkzDnLEJoJa1nD_cAVxryt~ z4u$^V`uC1;p^4B>`^Ei#@B4G;uf1dYe%N9^R6zg&5P$##AOHafK;ZupxHudPhKGmw zD?^^1FId(&tK_-$$NuSDW@!RIgOD zl3uhr)zw_9s&(GYwOrRJm%7wCrE_IN_quQ3IYrC$^kPMzaI+7EO}7N z8&kPc!t0q+!l6d=5n(gdh|r8ILQNj8xAN$0E_3|YObkoWY|-1O9u%;5No{e9tAhk4E^nbvvtY=M5uXnM^n`>(ZnLbO=@dEi1| zPcS?(!e4yTPvmCkZsWPHEt!qd&2%=J-pOc-#C1uhr_*n)4&B43T2!O4e054ytwL$) zUj1LWBE!M)m-_m`(<9x)8m-o1jkVxvZdWioHpX8#6wS3jn?$p`BScHa>hGLK zZ}8x_9Ow%l8|~JXW&~QSxxR}&O#9gf>JWQ4z#gzb00Izz00bZa0SG_<0uX=z1R$_e z1qNBe@cVzKrWfsk00bZa0SG_<0uX=z1Rwwb2>1dR|3^oF00bZa0SG_<0uX=z1Rwwb z2<&_TjQ{Wa9HWI0fB*y_009U<00Izz00bZa0XF{6hrZ_Mh6Mr;fB*y_009U<00Izz z00bZafhR%WBp)0dU3exKEYwQ6rk|!iA}!EAe-t1lN3WuN@`k; zN_HY@nDL~Nj_2j2<*8pjIXL|D%WLd;prwvJoCQ?#fHIq_QmsMF+Wh0SJZucv=CCRc9)eSo-B@D%s6eX!k zYF@FWw30F{8oW!J`DkOnZb>YbO{<`tv#M-LKygw$UGb#EL{ehs7bBukE_pOCC{8Yk z6}{@Y;^f;)qGz3_5^-bgt9u_`x_{@ryH{`C{qP$hOS}BKa^ddUwe{O8>)&17xU;hH z{>}BPeT@%!4!Z?{%y!;LR5-Mew+{+-Xn<#!@twOp|1NPZCFa>PG}qZh;Uu`Qm%F_sC(q{3c0Duw@GMo4iomP#j-bd37ogc4QML^Qd4 zagpEb`Il2>JgQi7EG?yUH6~krp%)aNB5Qk*7ILDlar{+ zY|*vXzyF+i_r{G6T6-xQ7x!seXUN=E^8F({5ov#r>RvL_In{A>BAH62RZ2A*{||&z zE~JJ&eR@CY(Q*ht00Izz00bZa0SG_<0uX>e7XhP>E)6d5+r9MB%XOMS-ap5-$M$=< GK=3au8J!jY literal 0 HcmV?d00001 diff --git a/data/sessions_qwen.db b/data/sessions_qwen.db new file mode 100644 index 0000000000000000000000000000000000000000..439bf80143351353ab79fee0d2783db808c570de GIT binary patch literal 36864 zcmeI*-D}%c7zbdJA8ci8LY9vjQQJx_ zr7MKM(ypWJF1B5a!q&0f47!UoSNozJgYCcAb<%Y(D1$bFAWfwRO+LOn!VWFU^g=GMSfZWzxYui590Q&E?;ilcuKWIX^iW4@%9& zMWbStS-ZL=k5!HKhk4BN9JkV;)~TFxEz|G(0^cb!&o|495`{bYNJv4{M$z=mc0rw( zIsV%C%qi*B{3+>RJ^Hw`8Eaf>L>8wekJegwbb2O#{Mb|%2aQrhNAolJsfqk-{ajwV z>(IHS=_%<*elkzq6XUZJ<45v+qc8M?V=oVif>SB7^WNDKeU~xJCEpGHHfjkm)Y`W9 zLTFDUHZ&w&d_73yX6Rmh8*WKvy>v63^`^Ho+9Gis(&?M@ovTgvu&Rt|44$ucsajg3 zG%4s8KZbLM;-F^0p978LR#0 zJbr`wMzv5lc5Jv)TN)7z{}fB*y_009U<00Izz00aU7jQ^t}KmY;|fB*y_009U<00Izz z00efv0LK4!evZ*X2tWV=5P$##AOHafKmY;|fB+x=7o*<@^uPiE2tWV=5P$##AOHaf zKmY;|fWXrra8is656?dniJX0hRSfeq{Sax1e)+Rx@ZTsbvUDz^rwU3jlQxxaWwWVNZh2+=x6ckd_ubngeEa|ftU8sJ%Qfs-VxyA|DnA@!oUEnus{F;5P$##AOHafK;Zu@aH$gNou^ON zry^G-awgMM+e#|AqLolmre0J`OE;BV+NQC#Ojg(R;&wlTGbL$fk_C;W6+NNR*)2;~ z3Wc;zmq-?JnSxeGuta^xZdoq7MOHG-u_~VwP#%*_&#$@_#iC-R#Ajyn<+yCQ6`uwO z<*{XX(X9HOJoe_Y?6dP!BHy|E@y7KV_inG=UHkrzYd7y)zp{So-SrYi806ttrnSI|#%6$q@1CL2Ov_#3!6qnhvr=^UM0Z|m zRgNxMb<2x>YjIjls&Uz;8QDsYR%i(dvt@QfioZK-3Y_K^SYRd#lX5<>0e=i`mGozwhqdVQnLcimF0j?crsd4UyrNriH1 zI2GHi<a<%s-~qgs+n%cJl;5TcR2_;d^#jikJ+j(fBV7RwNIq= zpT49nP2IJ*ukvy6K&W|!%x(37;7m_N_8(@vn*_Dbct)p;>&bK~yTZr+L(!ZN{hU@< yAOHafKmY;|fB*y_009U<00Izb6|ll|V{l&F?j4YBZr6kg!8Nu$w%^SSf`0%E3!(1- literal 0 HcmV?d00001 diff --git a/data/tasks/238726a8.json b/data/tasks/238726a8.json new file mode 100644 index 0000000..25d42ac --- /dev/null +++ b/data/tasks/238726a8.json @@ -0,0 +1,18 @@ +{ + "id": "238726a8", + "description": "【重要任务】重构勤务统计页面(schedulingStatistical.vue),将现有占位页面改为大屏可视化风格,像素级复刻老项目样式。\n\n==== 项目信息 ====\n项目路径:d:/nzy/workspace_git/Baseplatform-Ui-V3\n目标文件:src/views/serviceManage/schedulingStatistical.vue\n老项目参考:D:/nzy/workspace_git/baseplatform-ui/src/views/postPage/schedulingStatistical.vue\n\n==== 必须遵守的迁移规范(非常重要) ====\n\n1. 【页面外壳】使用 BgAndInfo 组件:\n import BgAndInfo from '/@/components/Common/bgAndInfo.vue'\n 用法:\n 参考已实现的 serviceIndexDd.vue 和 workData.vue\n\n2. 【颜色规范】深色科技感大屏风格:\n 主色:#29B3FF\n 背景:#0A1A29\n 文字主色:#eaf8ff\n 文字次色:#7aabc6\n 强调色:#FFC34D (金黄)、#55E1CA (青色)、#FF6565 (红色)\n 面板背景:rgba(4, 21, 40, 0.5) ~ (0.6)\n 面板边框:rgba(41, 179, 255, 0.15) ~ (0.3)\n\n3. 【图片引用规则 — 绝对不能错】\n 禁止使用 方式(运行时 vite 无法解析)\n 必须用 CSS background-image: url('/@/assets/...') 方式\n 所有图标都这样写,包括按钮图标、列表图标等\n\n4. 【图标资源位置】\n sandImg 通用图标:src/assets/sandImg/ (133个,从老项目拷贝的)\n service 专属图标:src/assets/service/ (42个,从老项目拷贝的)\n work 专属图标:src/assets/map_image/work/ (45个)\n 背景图:src/assets/map_image/ 下的 ponding/, small/, schdulingCommand/ 等\n\n5. 【技术栈】\n Vue3 Composition API + TypeScript\n ref / reactive / computed / onMounted / onUnmounted\n 图表:import * as echarts from 'echarts'\n 图表在 onMounted 中初始化,onUnmounted 中 dispose\n 样式: