diff --git a/README.md b/README.md
index dd1489e..783d7a2 100644
--- a/README.md
+++ b/README.md
@@ -128,6 +128,13 @@
```
启动时可选择“快速模式”或“思考模式”,并指定项目路径(默认为 `./project`)。
+4. **子智能体测试服务(可选)**
+ ```bash
+ python sub_agent/server.py
+ # 默认监听 8092 端口,供 create_sub_agent/wait_sub_agent 工具调用
+ ```
+ 当前实现为占位服务,会在 `sub_agent/tasks/` 下生成交付文件,并立即返回测试结果,便于主智能体打通基础流程。
+
---
## 主要工具与能力
diff --git a/config/__init__.py b/config/__init__.py
index 27bfe61..3b886f5 100644
--- a/config/__init__.py
+++ b/config/__init__.py
@@ -10,6 +10,7 @@ from . import ui as _ui
from . import memory as _memory
from . import todo as _todo
from . import auth as _auth
+from . import sub_agent as _sub_agent
from .api import *
from .paths import *
@@ -21,9 +22,10 @@ from .ui import *
from .memory import *
from .todo import *
from .auth import *
+from .sub_agent import *
__all__ = []
-for module in (_api, _paths, _limits, _terminal, _conversation, _security, _ui, _memory, _todo, _auth):
+for module in (_api, _paths, _limits, _terminal, _conversation, _security, _ui, _memory, _todo, _auth, _sub_agent):
__all__ += getattr(module, "__all__", [])
-del _api, _paths, _limits, _terminal, _conversation, _security, _ui, _memory, _todo, _auth
+del _api, _paths, _limits, _terminal, _conversation, _security, _ui, _memory, _todo, _auth, _sub_agent
diff --git a/config/sub_agent.py b/config/sub_agent.py
new file mode 100644
index 0000000..493304f
--- /dev/null
+++ b/config/sub_agent.py
@@ -0,0 +1,24 @@
+"""子智能体相关配置。"""
+
+import os
+
+# 子智能体服务
+SUB_AGENT_SERVICE_BASE_URL = os.environ.get("SUB_AGENT_SERVICE_URL", "http://127.0.0.1:8092")
+SUB_AGENT_DEFAULT_TIMEOUT = int(os.environ.get("SUB_AGENT_DEFAULT_TIMEOUT", "180")) # 秒
+SUB_AGENT_STATUS_POLL_INTERVAL = float(os.environ.get("SUB_AGENT_STATUS_POLL_INTERVAL", "2.0"))
+
+# 存储与并发限制
+SUB_AGENT_TASKS_BASE_DIR = os.environ.get("SUB_AGENT_TASKS_BASE_DIR", "./sub_agent/tasks")
+SUB_AGENT_PROJECT_RESULTS_DIR = os.environ.get("SUB_AGENT_PROJECT_RESULTS_DIR", "./project/sub_agent_results")
+SUB_AGENT_STATE_FILE = os.environ.get("SUB_AGENT_STATE_FILE", "./data/sub_agents.json")
+SUB_AGENT_MAX_ACTIVE = int(os.environ.get("SUB_AGENT_MAX_ACTIVE", "5"))
+
+__all__ = [
+ "SUB_AGENT_SERVICE_BASE_URL",
+ "SUB_AGENT_DEFAULT_TIMEOUT",
+ "SUB_AGENT_STATUS_POLL_INTERVAL",
+ "SUB_AGENT_TASKS_BASE_DIR",
+ "SUB_AGENT_PROJECT_RESULTS_DIR",
+ "SUB_AGENT_STATE_FILE",
+ "SUB_AGENT_MAX_ACTIVE",
+]
diff --git a/core/main_terminal.py b/core/main_terminal.py
index deeec24..6c9f7a2 100644
--- a/core/main_terminal.py
+++ b/core/main_terminal.py
@@ -38,6 +38,7 @@ from modules.terminal_ops import TerminalOperator
from modules.memory_manager import MemoryManager
from modules.terminal_manager import TerminalManager
from modules.todo_manager import TodoManager
+from modules.sub_agent_manager import SubAgentManager
from modules.webpage_extractor import extract_webpage_content, tavily_extract
from core.tool_config import TOOL_CATEGORIES
from utils.api_client import DeepSeekClient
@@ -77,6 +78,11 @@ class MainTerminal:
)
self.todo_manager = TodoManager(self.context_manager)
+ self.sub_agent_manager = SubAgentManager(
+ project_path=self.project_path,
+ data_dir=str(self.data_dir)
+ )
+ self._announced_sub_agent_tasks = set()
# 聚焦文件管理
self.focused_files = {} # {path: content} 存储聚焦的文件内容
@@ -207,6 +213,27 @@ class MainTerminal:
return limited_chunks, truncated, consumed
+ def _record_sub_agent_message(self, message: Optional[str], task_id: Optional[str] = None, inline: bool = False):
+ """以 system 消息记录子智能体状态。"""
+ if not message:
+ return
+ if task_id and task_id in self._announced_sub_agent_tasks:
+ return
+ if task_id:
+ self._announced_sub_agent_tasks.add(task_id)
+ logger.info(
+ "[SubAgent] record message | task=%s | inline=%s | content=%s",
+ task_id,
+ inline,
+ message.replace("\n", "\\n")[:200],
+ )
+ metadata = {"sub_agent_notice": True, "inline": inline}
+ if task_id:
+ metadata["task_id"] = task_id
+ self.context_manager.add_conversation("system", message, metadata=metadata)
+ print(f"{OUTPUT_FORMATS['info']} {message}")
+
+
def _handle_read_tool(self, arguments: Dict) -> Dict:
"""集中处理 read_file 工具的三种模式。"""
file_path = arguments.get("path")
@@ -1341,6 +1368,46 @@ class MainTerminal:
"required": ["confirm"]
}
}
+ },
+ {
+ "type": "function",
+ "function": {
+ "name": "create_sub_agent",
+ "description": "创建新的子智能体任务。需要提供任务摘要、详细要求、交付目录以及可供参考的文件列表。注意:同一时间最多运行5个子智能体。",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "agent_id": {"type": "integer", "description": "子智能体代号(1~5)"},
+ "summary": {"type": "string", "description": "任务摘要,简要说明目标"},
+ "task": {"type": "string", "description": "任务详细要求"},
+ "target_dir": {"type": "string", "description": "项目下用于接收交付的相对目录"},
+ "reference_files": {
+ "type": "array",
+ "description": "提供给子智能体的参考文件列表(相对路径)",
+ "items": {"type": "string"},
+ "maxItems": 10
+ },
+ "timeout_seconds": {"type": "integer", "description": "子智能体最大运行秒数(默认180秒)"}
+ },
+ "required": ["agent_id", "summary", "task", "target_dir"]
+ }
+ }
+ },
+ {
+ "type": "function",
+ "function": {
+ "name": "wait_sub_agent",
+ "description": "等待指定子智能体任务结束(或超时)。任务完成后会返回交付目录,并将结果复制到指定的项目文件夹。",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "task_id": {"type": "string", "description": "子智能体任务ID"},
+ "agent_id": {"type": "integer", "description": "子智能体代号(可选,用于缺省 task_id 的情况)"},
+ "timeout_seconds": {"type": "integer", "description": "本次等待的超时时长(秒)"}
+ },
+ "required": []
+ }
+ }
}
]
if self.disabled_tools:
@@ -1725,7 +1792,7 @@ class MainTerminal:
if char_count > MAX_EXTRACT_WEBPAGE_CHARS:
result = {
"success": False,
- "error": f"网页提取返回了过长的{char_count}字符,请不要提取这个网页,可以使用网页保存功能,然后使用终端命令查找或查看网页",
+ "error": f"网页提取返回了过长的{char_count}字符,请不要提取这个网页,可以使用网页保存功能,然后使用read工具查找或查看网页",
"char_count": char_count,
"limit": MAX_EXTRACT_WEBPAGE_CHARS,
"url": url
@@ -1897,6 +1964,24 @@ class MainTerminal:
reason=arguments.get("reason")
)
+ elif tool_name == "create_sub_agent":
+ result = self.sub_agent_manager.create_sub_agent(
+ agent_id=arguments.get("agent_id"),
+ summary=arguments.get("summary", ""),
+ task=arguments.get("task", ""),
+ target_dir=arguments.get("target_dir", ""),
+ reference_files=arguments.get("reference_files", []),
+ timeout_seconds=arguments.get("timeout_seconds")
+ )
+
+ elif tool_name == "wait_sub_agent":
+ result = self.sub_agent_manager.wait_for_completion(
+ task_id=arguments.get("task_id"),
+ agent_id=arguments.get("agent_id"),
+ timeout_seconds=arguments.get("timeout_seconds")
+ )
+ self._record_sub_agent_message(result.get("system_message"), result.get("task_id"), inline=False)
+
else:
result = {"success": False, "error": f"未知工具: {tool_name}"}
@@ -1947,6 +2032,7 @@ class MainTerminal:
# 添加对话历史(保留完整结构,包括tool_calls和tool消息)
for conv in context["conversation"]:
+ metadata = conv.get("metadata") or {}
if conv["role"] == "assistant":
# Assistant消息可能包含工具调用
message = {
@@ -1968,8 +2054,14 @@ class MainTerminal:
}
messages.append(message)
+ elif conv["role"] == "system" and metadata.get("sub_agent_notice"):
+ # 转换为用户消息,让模型能及时响应
+ messages.append({
+ "role": "user",
+ "content": conv["content"]
+ })
else:
- # User消息
+ # User 或普通 System 消息
messages.append({
"role": conv["role"],
"content": conv["content"]
diff --git a/core/tool_config.py b/core/tool_config.py
index af4c746..48a9d7b 100644
--- a/core/tool_config.py
+++ b/core/tool_config.py
@@ -56,4 +56,8 @@ TOOL_CATEGORIES: Dict[str, ToolCategory] = {
label="待办事项",
tools=["todo_create", "todo_update_task", "todo_finish", "todo_finish_confirm"],
),
+ "sub_agent": ToolCategory(
+ label="子智能体",
+ tools=["create_sub_agent", "wait_sub_agent"],
+ ),
}
diff --git a/core/web_terminal.py b/core/web_terminal.py
index e17d6b3..c5a22f9 100644
--- a/core/web_terminal.py
+++ b/core/web_terminal.py
@@ -3,6 +3,7 @@
import json
from typing import Dict, List, Optional, Callable
from core.main_terminal import MainTerminal
+from utils.logger import setup_logger
try:
from config import MAX_TERMINALS, TERMINAL_BUFFER_SIZE, TERMINAL_DISPLAY_SIZE
except ImportError:
@@ -14,6 +15,8 @@ except ImportError:
from config import MAX_TERMINALS, TERMINAL_BUFFER_SIZE, TERMINAL_DISPLAY_SIZE
from modules.terminal_manager import TerminalManager
+logger = setup_logger(__name__)
+
class WebTerminal(MainTerminal):
"""Web版本的终端,继承自MainTerminal,包含对话持久化功能"""
@@ -436,6 +439,11 @@ class WebTerminal(MainTerminal):
# 调用父类的工具处理(包含我们的新逻辑)
result = await super().handle_tool_call(tool_name, arguments)
+ logger.debug(
+ "[SubAgent][WebTerminal] tool=%s 执行完成,result前200=%s",
+ tool_name,
+ result[:200] if isinstance(result, str) else result,
+ )
# 解析结果并广播工具结束事件
try:
diff --git a/modules/sub_agent_manager.py b/modules/sub_agent_manager.py
new file mode 100644
index 0000000..4edefad
--- /dev/null
+++ b/modules/sub_agent_manager.py
@@ -0,0 +1,443 @@
+"""子智能体任务管理。"""
+
+import json
+import shutil
+import time
+import uuid
+from pathlib import Path
+from typing import Dict, List, Optional, Tuple
+
+import httpx
+
+from config import (
+ OUTPUT_FORMATS,
+ SUB_AGENT_DEFAULT_TIMEOUT,
+ SUB_AGENT_MAX_ACTIVE,
+ SUB_AGENT_PROJECT_RESULTS_DIR,
+ SUB_AGENT_SERVICE_BASE_URL,
+ SUB_AGENT_STATE_FILE,
+ SUB_AGENT_STATUS_POLL_INTERVAL,
+ SUB_AGENT_TASKS_BASE_DIR,
+)
+from utils.logger import setup_logger
+
+logger = setup_logger(__name__)
+TERMINAL_STATUSES = {"completed", "failed", "timeout"}
+
+
+class SubAgentManager:
+ """负责主智能体与子智能体服务之间的任务调度。"""
+
+ def __init__(self, project_path: str, data_dir: str):
+ self.project_path = Path(project_path).resolve()
+ self.data_dir = Path(data_dir).resolve()
+ self.base_dir = Path(SUB_AGENT_TASKS_BASE_DIR).resolve()
+ self.results_dir = Path(SUB_AGENT_PROJECT_RESULTS_DIR).resolve()
+ self.state_file = Path(SUB_AGENT_STATE_FILE).resolve()
+
+ self.base_dir.mkdir(parents=True, exist_ok=True)
+ self.results_dir.mkdir(parents=True, exist_ok=True)
+ self.state_file.parent.mkdir(parents=True, exist_ok=True)
+
+ self.tasks: Dict[str, Dict] = {}
+ self._load_state()
+
+ # ------------------------------------------------------------------
+ # 公共方法
+ # ------------------------------------------------------------------
+ def create_sub_agent(
+ self,
+ *,
+ agent_id: int,
+ summary: str,
+ task: str,
+ target_dir: str,
+ reference_files: Optional[List[str]] = None,
+ timeout_seconds: Optional[int] = None,
+ ) -> Dict:
+ """创建子智能体任务并启动远端服务。"""
+ reference_files = reference_files or []
+ validation_error = self._validate_create_params(agent_id, summary, task, target_dir)
+ if validation_error:
+ return {"success": False, "error": validation_error}
+
+ if self._active_task_count() >= SUB_AGENT_MAX_ACTIVE:
+ return {
+ "success": False,
+ "error": f"已有 {SUB_AGENT_MAX_ACTIVE} 个子智能体在运行,请稍后再试。",
+ }
+
+ task_id = self._generate_task_id(agent_id)
+ task_root = self.base_dir / task_id
+ references_dir = task_root / "references"
+ deliverables_dir = task_root / "deliverables"
+ workspace_dir = task_root / "workspace"
+
+ for path in (task_root, references_dir, deliverables_dir, workspace_dir):
+ path.mkdir(parents=True, exist_ok=True)
+
+ copied_refs, copy_errors = self._copy_reference_files(reference_files, references_dir)
+ if copy_errors:
+ return {"success": False, "error": "; ".join(copy_errors)}
+
+ try:
+ target_project_dir = self._ensure_project_subdir(target_dir)
+ except ValueError as exc:
+ return {"success": False, "error": str(exc)}
+
+ timeout_seconds = timeout_seconds or SUB_AGENT_DEFAULT_TIMEOUT
+ payload = {
+ "task_id": task_id,
+ "agent_id": agent_id,
+ "summary": summary,
+ "task": task,
+ "target_project_dir": str(target_project_dir),
+ "workspace_dir": str(workspace_dir),
+ "references_dir": str(references_dir),
+ "deliverables_dir": str(deliverables_dir),
+ "timeout_seconds": timeout_seconds,
+ }
+
+ service_response = self._call_service("POST", "/tasks", payload, timeout_seconds + 5)
+ if not service_response.get("success"):
+ self._cleanup_task_folder(task_root)
+ return {
+ "success": False,
+ "error": service_response.get("error", "子智能体服务调用失败"),
+ "details": service_response,
+ }
+
+ status = service_response.get("status", "pending")
+ task_record = {
+ "task_id": task_id,
+ "agent_id": agent_id,
+ "summary": summary,
+ "task": task,
+ "status": status,
+ "target_project_dir": str(target_project_dir),
+ "references_dir": str(references_dir),
+ "deliverables_dir": str(deliverables_dir),
+ "workspace_dir": str(workspace_dir),
+ "copied_references": copied_refs,
+ "timeout_seconds": timeout_seconds,
+ "service_payload": payload,
+ "created_at": time.time(),
+ }
+ self.tasks[task_id] = task_record
+ self._save_state()
+
+ message = f"子智能体{agent_id} 已创建,任务ID: {task_id},当前状态:{status}"
+ print(f"{OUTPUT_FORMATS['info']} {message}")
+
+ return {
+ "success": True,
+ "task_id": task_id,
+ "agent_id": agent_id,
+ "status": status,
+ "message": message,
+ "deliverables_dir": str(deliverables_dir),
+ "copied_references": copied_refs,
+ }
+
+ def wait_for_completion(
+ self,
+ *,
+ task_id: Optional[str] = None,
+ agent_id: Optional[int] = None,
+ timeout_seconds: Optional[int] = None,
+ ) -> Dict:
+ """阻塞等待子智能体完成或超时。"""
+ task = self._select_task(task_id, agent_id)
+ if not task:
+ return {"success": False, "error": "未找到对应的子智能体任务"}
+
+ if task.get("status") in TERMINAL_STATUSES and task.get("final_result"):
+ return task["final_result"]
+
+ timeout_seconds = timeout_seconds or task.get("timeout_seconds") or SUB_AGENT_DEFAULT_TIMEOUT
+ deadline = time.time() + timeout_seconds
+ last_payload: Optional[Dict] = None
+
+ while time.time() < deadline:
+ last_payload = self._call_service("GET", f"/tasks/{task['task_id']}", timeout=15)
+ status = last_payload.get("status")
+ if not last_payload.get("success") and status not in TERMINAL_STATUSES:
+ time.sleep(SUB_AGENT_STATUS_POLL_INTERVAL)
+ continue
+
+ if status in {"completed", "failed", "timeout"}:
+ break
+
+ time.sleep(SUB_AGENT_STATUS_POLL_INTERVAL)
+ else:
+ status = "timeout"
+ last_payload = {"success": False, "status": status, "message": "等待超时"}
+
+ if not last_payload:
+ last_payload = {"success": False, "status": "unknown", "message": "无法获取子智能体状态"}
+ status = "unknown"
+ else:
+ status = last_payload.get("status", status)
+
+ finalize_result = self._finalize_task(task, last_payload or {}, status)
+ self._save_state()
+ return finalize_result
+
+ # ------------------------------------------------------------------
+ # 内部工具方法
+ # ------------------------------------------------------------------
+ def _load_state(self):
+ if self.state_file.exists():
+ try:
+ data = json.loads(self.state_file.read_text(encoding="utf-8"))
+ self.tasks = data.get("tasks", {})
+ except json.JSONDecodeError:
+ logger.warning("子智能体状态文件损坏,已忽略。")
+ self.tasks = {}
+ else:
+ self.tasks = {}
+
+ def _save_state(self):
+ payload = {"tasks": self.tasks}
+ self.state_file.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
+
+ def _generate_task_id(self, agent_id: int) -> str:
+ suffix = uuid.uuid4().hex[:6]
+ return f"sub_{agent_id}_{int(time.time())}_{suffix}"
+
+ def _active_task_count(self) -> int:
+ return len([t for t in self.tasks.values() if t.get("status") in {"pending", "running"}])
+
+ def _copy_reference_files(self, references: List[str], dest_dir: Path) -> Tuple[List[str], List[str]]:
+ copied = []
+ errors = []
+ for rel_path in references:
+ rel_path = rel_path.strip()
+ if not rel_path:
+ continue
+ try:
+ source = self._resolve_project_file(rel_path)
+ except ValueError as exc:
+ errors.append(str(exc))
+ continue
+
+ if not source.exists():
+ errors.append(f"参考文件不存在: {rel_path}")
+ continue
+
+ target_path = dest_dir / rel_path
+ target_path.parent.mkdir(parents=True, exist_ok=True)
+ try:
+ shutil.copy2(source, target_path)
+ copied.append(rel_path)
+ except Exception as exc:
+ errors.append(f"复制 {rel_path} 失败: {exc}")
+ return copied, errors
+
+ def _ensure_project_subdir(self, relative_dir: str) -> Path:
+ relative_dir = relative_dir.strip() if relative_dir else ""
+ if not relative_dir:
+ relative_dir = "sub_agent_results"
+ target = (self.project_path / relative_dir).resolve()
+ if not str(target).startswith(str(self.project_path)):
+ raise ValueError("指定文件夹必须位于项目目录内")
+ target.mkdir(parents=True, exist_ok=True)
+ return target
+
+ def _resolve_project_file(self, relative_path: str) -> Path:
+ relative_path = relative_path.strip()
+ candidate = (self.project_path / relative_path).resolve()
+ if not str(candidate).startswith(str(self.project_path)):
+ raise ValueError(f"非法的参考文件路径: {relative_path}")
+ return candidate
+
+ def _select_task(self, task_id: Optional[str], agent_id: Optional[int]) -> Optional[Dict]:
+ if task_id:
+ return self.tasks.get(task_id)
+
+ if agent_id is None:
+ return None
+
+ # 返回最新的匹配任务
+ candidates = [
+ task for task in self.tasks.values()
+ if task.get("agent_id") == agent_id and task.get("status") in {"pending", "running"}
+ ]
+ if candidates:
+ candidates.sort(key=lambda item: item.get("created_at", 0), reverse=True)
+ return candidates[0]
+ return None
+
+ def poll_updates(self) -> List[Dict]:
+ """检查运行中的子智能体任务,返回新完成的结果。"""
+ updates: List[Dict] = []
+ pending_tasks = [
+ task for task in self.tasks.values()
+ if task.get("status") not in TERMINAL_STATUSES
+ ]
+ logger.debug(f"[SubAgentManager] 待检查任务: {len(pending_tasks)}")
+ if not pending_tasks:
+ return updates
+
+ state_changed = False
+ for task in pending_tasks:
+ payload = self._call_service("GET", f"/tasks/{task['task_id']}", timeout=10)
+ status = payload.get("status")
+ logger.debug(f"[SubAgentManager] 任务 {task['task_id']} 服务状态: {status}")
+ if status not in TERMINAL_STATUSES:
+ continue
+ result = self._finalize_task(task, payload, status)
+ updates.append(result)
+ state_changed = True
+
+ if state_changed:
+ self._save_state()
+ return updates
+
+ def _call_service(self, method: str, path: str, payload: Optional[Dict] = None, timeout: Optional[int] = None) -> Dict:
+ url = f"{SUB_AGENT_SERVICE_BASE_URL.rstrip('/')}{path}"
+ try:
+ with httpx.Client(timeout=timeout or 10) as client:
+ if method.upper() == "POST":
+ response = client.post(url, json=payload or {})
+ else:
+ response = client.get(url)
+ response.raise_for_status()
+ return response.json()
+ except httpx.RequestError as exc:
+ logger.error(f"子智能体服务请求失败: {exc}")
+ return {"success": False, "error": f"无法连接子智能体服务: {exc}"}
+ except httpx.HTTPStatusError as exc:
+ logger.error(f"子智能体服务返回错误: {exc}")
+ try:
+ return exc.response.json()
+ except Exception:
+ return {"success": False, "error": f"服务端错误: {exc.response.text}"}
+ except json.JSONDecodeError:
+ return {"success": False, "error": "子智能体服务返回格式错误"}
+
+ def _finalize_task(self, task: Dict, service_payload: Dict, status: str) -> Dict:
+ existing_result = task.get("final_result")
+ if existing_result and task.get("status") in TERMINAL_STATUSES:
+ return existing_result
+
+ task["status"] = status
+ task["updated_at"] = time.time()
+ message = service_payload.get("message") or service_payload.get("error") or ""
+ deliverables_dir = Path(service_payload.get("deliverables_dir") or task.get("deliverables_dir", ""))
+ logger.debug(f"[SubAgentManager] finalize task={task['task_id']} status={status}")
+
+ if status != "completed":
+ result = {
+ "success": False,
+ "task_id": task["task_id"],
+ "agent_id": task["agent_id"],
+ "status": status,
+ "message": message or f"子智能体状态:{status}",
+ "details": service_payload,
+ "system_message": self._build_system_message(task, status, None, message),
+ }
+ task["final_result"] = result
+ return result
+
+ if not deliverables_dir.exists():
+ result = {
+ "success": False,
+ "task_id": task["task_id"],
+ "agent_id": task["agent_id"],
+ "status": "failed",
+ "error": f"未找到交付目录: {deliverables_dir}",
+ "system_message": self._build_system_message(task, "failed", None, f"未找到交付目录: {deliverables_dir}"),
+ }
+ task["status"] = "failed"
+ task["final_result"] = result
+ return result
+
+ result_md = deliverables_dir / "result.md"
+ if not result_md.exists():
+ result = {
+ "success": False,
+ "task_id": task["task_id"],
+ "agent_id": task["agent_id"],
+ "status": "failed",
+ "error": "交付目录缺少 result.md,无法完成任务。",
+ "system_message": self._build_system_message(task, "failed", None, "交付目录缺少 result.md"),
+ }
+ task["status"] = "failed"
+ task["final_result"] = result
+ return result
+
+ copied_path = self._copy_deliverables_to_project(task, deliverables_dir)
+ task["copied_path"] = str(copied_path)
+
+ system_message = self._build_system_message(task, status, copied_path, message)
+ result = {
+ "success": True,
+ "task_id": task["task_id"],
+ "agent_id": task["agent_id"],
+ "status": status,
+ "message": message or "子智能体已完成任务。",
+ "deliverables_path": str(deliverables_dir),
+ "copied_path": str(copied_path),
+ "system_message": system_message,
+ "details": service_payload,
+ }
+ task["final_result"] = result
+ return result
+
+ def _copy_deliverables_to_project(self, task: Dict, source_dir: Path) -> Path:
+ """将交付文件复制到项目目录下的指定文件夹。"""
+ target_dir = Path(task["target_project_dir"])
+ target_dir.mkdir(parents=True, exist_ok=True)
+ dest_dir = target_dir / f"{task['task_id']}_deliverables"
+
+ if dest_dir.exists():
+ shutil.rmtree(dest_dir)
+ shutil.copytree(source_dir, dest_dir)
+
+ return dest_dir
+
+ def _cleanup_task_folder(self, task_root: Path):
+ if task_root.exists():
+ shutil.rmtree(task_root, ignore_errors=True)
+
+ def _validate_create_params(self, agent_id: Optional[int], summary: str, task: str, target_dir: str) -> Optional[str]:
+ if agent_id is None:
+ return "子智能体代号不能为空"
+ try:
+ agent_id = int(agent_id)
+ except ValueError:
+ return "子智能体代号必须是整数"
+ if not (1 <= agent_id <= SUB_AGENT_MAX_ACTIVE):
+ return f"子智能体代号必须在 1~{SUB_AGENT_MAX_ACTIVE} 范围内"
+ if not summary or not summary.strip():
+ return "任务摘要不能为空"
+ if not task or not task.strip():
+ return "任务详情不能为空"
+ if target_dir is None:
+ return "指定文件夹不能为空"
+ return None
+
+ def _build_system_message(
+ self,
+ task: Dict,
+ status: str,
+ copied_path: Optional[Path],
+ extra_message: Optional[str] = None,
+ ) -> str:
+ prefix = f"子智能体{task['agent_id']} 任务摘要:{task['summary']}"
+ extra = (extra_message or "").strip()
+
+ if status == "completed" and copied_path:
+ msg = f"{prefix} 已完成,成果已复制到 {copied_path}。"
+ if extra:
+ msg += f" ({extra})"
+ return msg
+
+ if status == "timeout":
+ return f"{prefix} 超时未完成。" + (f" {extra}" if extra else "")
+
+ if status == "failed":
+ return f"{prefix} 执行失败:" + (extra if extra else "请检查交付目录或任务状态。")
+
+ return f"{prefix} 状态:{status}。" + (extra if extra else "")
diff --git a/static/app.js b/static/app.js
index 48059d1..7989074 100644
--- a/static/app.js
+++ b/static/app.js
@@ -302,6 +302,21 @@ async function bootstrapApp() {
window.open('/file-manager', '_blank');
},
+ findMessageByAction(action) {
+ if (!action) {
+ return null;
+ }
+ for (const message of this.messages) {
+ if (!message.actions) {
+ continue;
+ }
+ if (message.actions.includes(action)) {
+ return message;
+ }
+ }
+ return null;
+ },
+
async bootstrapRoute() {
const path = window.location.pathname.replace(/^\/+/, '');
if (!path || path === 'new') {
@@ -1045,20 +1060,10 @@ async function bootstrapApp() {
// 系统消息
this.socket.on('system_message', (data) => {
- if (this.currentMessageIndex >= 0) {
- const msg = this.messages[this.currentMessageIndex];
- const action = {
- id: `system-${Date.now()}-${Math.random()}`,
- type: 'system',
- content: data.content,
- timestamp: Date.now()
- };
- msg.actions.push(action);
- this.$forceUpdate();
- this.conditionalScrollToBottom();
- } else {
- this.addSystemMessage(data.content);
+ if (!data || !data.content) {
+ return;
}
+ this.appendSystemAction(data.content);
});
// 错误处理
@@ -2382,10 +2387,18 @@ async function bootstrapApp() {
},
addSystemMessage(content) {
- this.messages.push({
- role: 'system',
- content: content
+ this.appendSystemAction(content);
+ },
+
+ appendSystemAction(content) {
+ const msg = this.ensureAssistantMessage();
+ msg.actions.push({
+ id: `system-${Date.now()}-${Math.random()}`,
+ type: 'system',
+ content: content,
+ timestamp: Date.now()
});
+ this.$forceUpdate();
this.conditionalScrollToBottom();
},
diff --git a/static/index.html b/static/index.html
index 8d65e2a..39a8e0a 100644
--- a/static/index.html
+++ b/static/index.html
@@ -271,6 +271,13 @@
+
+
+
+
+ {{ action.content }}
+
+
str:
+ deliverables_dir.mkdir(parents=True, exist_ok=True)
+ result_md = deliverables_dir / "result.md"
+ if not result_md.exists():
+ result_md.write_text(
+ f"# 子智能体测试结果\n\n"
+ f"- 摘要:{summary}\n"
+ f"- 任务:{task_description}\n"
+ f"- 说明:当前为测试服务,已自动生成占位结果。\n",
+ encoding="utf-8"
+ )
+
+ payload = {
+ "summary": summary,
+ "task": task_description,
+ "note": "stub result generated by sub_agent server",
+ "timestamp": time.time(),
+ }
+ result_json = deliverables_dir / "result.json"
+ result_json.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
+ return str(result_json)
+
+
+def _finalize_if_ready(task_id: str) -> dict:
+ record = TASK_CACHE.get(task_id)
+ if not record:
+ return {}
+
+ if record.get("status") == "completed":
+ return record
+
+ if time.time() >= record.get("ready_at", 0):
+ deliverables_dir = Path(record["deliverables_dir"])
+ result_file = _touch_result_files(deliverables_dir, record["summary"], record["task_description"])
+ record.update(
+ {
+ "success": True,
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "result_file": result_file,
+ "updated_at": time.time(),
+ }
+ )
+ TASK_CACHE[task_id] = record
+ save_state()
+
+ return record
+
+
+@app.post("/tasks")
+def create_task():
+ data = request.get_json(silent=True) or {}
+ task_id = data.get("task_id") or f"sub_stub_{int(time.time())}"
+ summary = data.get("summary", "未提供摘要")
+ description = data.get("task", "未提供任务说明")
+ deliverables_dir = Path(data.get("deliverables_dir") or (TASKS_ROOT / task_id / "deliverables"))
+ deliverables_dir.mkdir(parents=True, exist_ok=True)
+
+ record = {
+ "success": True,
+ "task_id": task_id,
+ "status": "running",
+ "message": f"子智能体任务已提交,预计 {STUB_DELAY_SECONDS} 秒后完成。",
+ "deliverables_dir": str(deliverables_dir),
+ "result_file": None,
+ "updated_at": time.time(),
+ "ready_at": time.time() + STUB_DELAY_SECONDS,
+ "summary": summary,
+ "task_description": description,
+ }
+ TASK_CACHE[task_id] = record
+ save_state()
+ return jsonify(record)
+
+
+@app.get("/tasks/")
+def get_task(task_id: str):
+ record = _finalize_if_ready(task_id)
+ if not record:
+ return jsonify({"success": False, "status": "unknown", "message": "task not found"}), 404
+ return jsonify(record)
+
+
+def main():
+ load_state()
+ app.run(host="0.0.0.0", port=8092)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/sub_agent/tasks/.gitkeep b/sub_agent/tasks/.gitkeep
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/sub_agent/tasks/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.json b/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.json
new file mode 100644
index 0000000..625e8fc
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "搜索特斯拉最新股价信息",
+ "task": "请搜索特斯拉(Tesla)的最新股价信息,包括当前股价、今日涨跌幅度、成交量等关键数据。搜索最新的财经新闻和股价数据,整理成简洁的报告格式。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763136273.262679
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.md b/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.md
new file mode 100644
index 0000000..5b4c193
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:搜索特斯拉最新股价信息
+- 任务:请搜索特斯拉(Tesla)的最新股价信息,包括当前股价、今日涨跌幅度、成交量等关键数据。搜索最新的财经新闻和股价数据,整理成简洁的报告格式。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.json b/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.json
new file mode 100644
index 0000000..e5b2b42
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,包含一些基础内容,证明任务能够正常执行和交付。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763137676.5623722
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.md b/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.md
new file mode 100644
index 0000000..8412328
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,包含一些基础内容,证明任务能够正常执行和交付。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.json b/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.json
new file mode 100644
index 0000000..fa0cc92
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明任务能够正常执行。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763137994.669416
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.md b/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.md
new file mode 100644
index 0000000..bb56937
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明任务能够正常执行。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.json b/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.json
new file mode 100644
index 0000000..ae644aa
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试AI发展趋势研究",
+ "task": "请搜索2025年AI发展的最新趋势,重点关注技术突破、应用场景和商业价值。整理成结构化的报告,包含主要趋势、关键数据和未来发展预测。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763138553.300131
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.md b/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.md
new file mode 100644
index 0000000..d2af937
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试AI发展趋势研究
+- 任务:请搜索2025年AI发展的最新趋势,重点关注技术突破、应用场景和商业价值。整理成结构化的报告,包含主要趋势、关键数据和未来发展预测。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.json b/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.json
new file mode 100644
index 0000000..56314d4
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "请创建一个简单的测试文件,包含一些基础文本内容,用于验证子智能体功能是否正常工作。文件应该包含当前时间戳和测试说明。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763138869.392883
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.md b/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.md
new file mode 100644
index 0000000..5c70948
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:请创建一个简单的测试文件,包含一些基础文本内容,用于验证子智能体功能是否正常工作。文件应该包含当前时间戳和测试说明。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.json b/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.json
new file mode 100644
index 0000000..e408814
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,请创建一个简单的测试文件,证明子智能体功能正常运行。创建一个名为test_result.txt的文件,内容为\"子智能体测试成功\",然后保存到指定的交付目录中。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763139191.900894
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.md b/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.md
new file mode 100644
index 0000000..851fc16
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,请创建一个简单的测试文件,证明子智能体功能正常运行。创建一个名为test_result.txt的文件,内容为"子智能体测试成功",然后保存到指定的交付目录中。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.json b/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.json
new file mode 100644
index 0000000..b69ea2c
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的文件操作和基础任务。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763139811.727322
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.md b/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.md
new file mode 100644
index 0000000..d372062
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的文件操作和基础任务。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.json b/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.json
new file mode 100644
index 0000000..9e995b3
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体可以正常执行任务。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763139963.9868438
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.md b/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.md
new file mode 100644
index 0000000..a911bb6
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体可以正常执行任务。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.json b/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.json
new file mode 100644
index 0000000..2974084
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体功能可用。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763139984.730519
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.md b/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.md
new file mode 100644
index 0000000..258f3ca
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体功能可用。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.json b/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.json
new file mode 100644
index 0000000..001bf43
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体可以正常执行任务。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763140327.6530402
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.md b/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.md
new file mode 100644
index 0000000..a911bb6
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体可以正常执行任务。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.json b/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.json
new file mode 100644
index 0000000..5f2d128
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763140992.09611
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.md b/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.md
new file mode 100644
index 0000000..dd951b1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.json b/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.json
new file mode 100644
index 0000000..9c8b2f0
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763141417.687732
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.md b/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.md
new file mode 100644
index 0000000..dd951b1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.json b/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.json
new file mode 100644
index 0000000..bdf971c
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763141437.721546
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.md b/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.md
new file mode 100644
index 0000000..3980593
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.json b/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.json
new file mode 100644
index 0000000..ae171bb
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的文件操作,比如创建一个测试文件并写入一些内容。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763141513.724341
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.md b/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.md
new file mode 100644
index 0000000..074dc91
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的文件操作,比如创建一个测试文件并写入一些内容。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.json b/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.json
new file mode 100644
index 0000000..13c4cc5
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请返回一个简单的测试响应。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763141648.8687701
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.md b/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.md
new file mode 100644
index 0000000..1f4ecec
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请返回一个简单的测试响应。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.json b/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.json
new file mode 100644
index 0000000..2a9116a
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763141745.7180889
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.md b/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.md
new file mode 100644
index 0000000..dd951b1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.json b/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.json
new file mode 100644
index 0000000..1bb22ee
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请创建一个简单的文本文件,内容为\"子智能体测试成功\",文件名为test_result.txt",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763141987.713505
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.md b/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.md
new file mode 100644
index 0000000..97d44a6
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请创建一个简单的文本文件,内容为"子智能体测试成功",文件名为test_result.txt
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.json b/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.json
new file mode 100644
index 0000000..e5c4ef7
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请创建一个简单的文本文件,内容为\"子智能体测试成功\",保存为test_result.txt",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763142848.306821
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.md b/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.md
new file mode 100644
index 0000000..f628af5
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请创建一个简单的文本文件,内容为"子智能体测试成功",保存为test_result.txt
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.json b/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.json
new file mode 100644
index 0000000..b852f88
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763143066.173541
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.md b/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.md
new file mode 100644
index 0000000..3980593
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.json b/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.json
new file mode 100644
index 0000000..dab2eef
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763143169.6625862
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.md b/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.md
new file mode 100644
index 0000000..dd951b1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.json b/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.json
new file mode 100644
index 0000000..a837a94
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些基础操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763143471.6208158
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.md b/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.md
new file mode 100644
index 0000000..df85df7
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些基础操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.json b/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.json
new file mode 100644
index 0000000..b48ab1e
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763143780.888017
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.md b/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.md
new file mode 100644
index 0000000..dd951b1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.json b/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.json
new file mode 100644
index 0000000..3176a6b
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763143944.4543931
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.md b/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.md
new file mode 100644
index 0000000..3980593
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.json b/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.json
new file mode 100644
index 0000000..a99f0d3
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些基础操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763144242.230876
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.md b/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.md
new file mode 100644
index 0000000..df85df7
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些基础操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.json b/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.json
new file mode 100644
index 0000000..48e07a1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体功能是否正常工作",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763144337.501353
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.md b/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.md
new file mode 100644
index 0000000..cc4c190
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体功能是否正常工作
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.json b/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.json
new file mode 100644
index 0000000..7ba7a7b
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763144765.529836
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.md b/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.md
new file mode 100644
index 0000000..dd951b1
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.json b/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.json
new file mode 100644
index 0000000..d275836
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试子智能体基础功能",
+ "task": "这是一个测试任务,用于验证子智能体的基础功能是否正常工作。请执行一些简单的操作并返回结果。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763145263.387938
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.md b/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.md
new file mode 100644
index 0000000..1826051
--- /dev/null
+++ b/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试子智能体基础功能
+- 任务:这是一个测试任务,用于验证子智能体的基础功能是否正常工作。请执行一些简单的操作并返回结果。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.json b/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.json
new file mode 100644
index 0000000..bcc674b
--- /dev/null
+++ b/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试20秒延迟完成的任务",
+ "task": "这是一个测试任务,用于验证子智能体的延迟完成功能。任务将在20秒后自动完成,请耐心等待并监控任务状态变化。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763136504.791338
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.md b/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.md
new file mode 100644
index 0000000..6f4f526
--- /dev/null
+++ b/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试20秒延迟完成的任务
+- 任务:这是一个测试任务,用于验证子智能体的延迟完成功能。任务将在20秒后自动完成,请耐心等待并监控任务状态变化。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.json b/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.json
new file mode 100644
index 0000000..e75b380
--- /dev/null
+++ b/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试30秒等待流程",
+ "task": "这是一个测试任务,用于验证30秒等待流程。任务将在20秒后自动完成,请观察等待过程中的状态变化。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763136599.648795
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.md b/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.md
new file mode 100644
index 0000000..07f29ca
--- /dev/null
+++ b/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试30秒等待流程
+- 任务:这是一个测试任务,用于验证30秒等待流程。任务将在20秒后自动完成,请观察等待过程中的状态变化。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.json b/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.json
new file mode 100644
index 0000000..959dae0
--- /dev/null
+++ b/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试被动通知机制",
+ "task": "这是一个测试任务,专门用于验证系统的被动通知机制。任务将在20秒后自动完成,请观察系统是否会主动发送完成通知,而不需要主动查询。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763137514.195047
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.md b/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.md
new file mode 100644
index 0000000..03043d5
--- /dev/null
+++ b/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试被动通知机制
+- 任务:这是一个测试任务,专门用于验证系统的被动通知机制。任务将在20秒后自动完成,请观察系统是否会主动发送完成通知,而不需要主动查询。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.json b/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.json
new file mode 100644
index 0000000..488421f
--- /dev/null
+++ b/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.json
@@ -0,0 +1,6 @@
+{
+ "summary": "测试被动通知机制-重启后测试",
+ "task": "这是一个测试任务,专门用于验证系统的被动通知机制。任务将在20秒后自动完成,请观察系统是否会主动发送完成通知,而不需要主动查询。这是重启后的测试。",
+ "note": "stub result generated by sub_agent server",
+ "timestamp": 1763137553.357258
+}
\ No newline at end of file
diff --git a/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.md b/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.md
new file mode 100644
index 0000000..11c0f7a
--- /dev/null
+++ b/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.md
@@ -0,0 +1,5 @@
+# 子智能体测试结果
+
+- 摘要:测试被动通知机制-重启后测试
+- 任务:这是一个测试任务,专门用于验证系统的被动通知机制。任务将在20秒后自动完成,请观察系统是否会主动发送完成通知,而不需要主动查询。这是重启后的测试。
+- 说明:当前为测试服务,已自动生成占位结果。
diff --git a/sub_agent/tasks/tasks_state.json b/sub_agent/tasks/tasks_state.json
new file mode 100644
index 0000000..70fb5c6
--- /dev/null
+++ b/sub_agent/tasks/tasks_state.json
@@ -0,0 +1,371 @@
+{
+ "sub_1_1763136273_b5c2e6": {
+ "success": true,
+ "task_id": "sub_1_1763136273_b5c2e6",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763136273_b5c2e6/deliverables/result.json",
+ "updated_at": 1763136273.262999
+ },
+ "sub_2_1763136484_918182": {
+ "success": true,
+ "task_id": "sub_2_1763136484_918182",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_2_1763136484_918182/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_2_1763136484_918182/deliverables/result.json",
+ "updated_at": 1763136504.792568,
+ "ready_at": 1763136504.118033,
+ "summary": "测试20秒延迟完成的任务",
+ "task_description": "这是一个测试任务,用于验证子智能体的延迟完成功能。任务将在20秒后自动完成,请耐心等待并监控任务状态变化。"
+ },
+ "sub_3_1763136563_d5fd0b": {
+ "success": true,
+ "task_id": "sub_3_1763136563_d5fd0b",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_3_1763136563_d5fd0b/deliverables/result.json",
+ "updated_at": 1763136599.649166,
+ "ready_at": 1763136583.069194,
+ "summary": "测试30秒等待流程",
+ "task_description": "这是一个测试任务,用于验证30秒等待流程。任务将在20秒后自动完成,请观察等待过程中的状态变化。"
+ },
+ "sub_4_1763136763_c6507f": {
+ "success": true,
+ "task_id": "sub_4_1763136763_c6507f",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_4_1763136763_c6507f/deliverables/result.json",
+ "updated_at": 1763137514.195194,
+ "ready_at": 1763136783.612108,
+ "summary": "测试被动通知机制",
+ "task_description": "这是一个测试任务,专门用于验证系统的被动通知机制。任务将在20秒后自动完成,请观察系统是否会主动发送完成通知,而不需要主动查询。"
+ },
+ "sub_5_1763137514_d8ad3f": {
+ "success": true,
+ "task_id": "sub_5_1763137514_d8ad3f",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_5_1763137514_d8ad3f/deliverables/result.json",
+ "updated_at": 1763137553.357632,
+ "ready_at": 1763137534.186771,
+ "summary": "测试被动通知机制-重启后测试",
+ "task_description": "这是一个测试任务,专门用于验证系统的被动通知机制。任务将在20秒后自动完成,请观察系统是否会主动发送完成通知,而不需要主动查询。这是重启后的测试。"
+ },
+ "sub_1_1763137647_0cbccf": {
+ "success": true,
+ "task_id": "sub_1_1763137647_0cbccf",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763137647_0cbccf/deliverables/result.json",
+ "updated_at": 1763137676.562777,
+ "ready_at": 1763137667.353677,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,包含一些基础内容,证明任务能够正常执行和交付。"
+ },
+ "sub_1_1763137973_55bdfa": {
+ "success": true,
+ "task_id": "sub_1_1763137973_55bdfa",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763137973_55bdfa/deliverables/result.json",
+ "updated_at": 1763137994.669676,
+ "ready_at": 1763137993.252982,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明任务能够正常执行。"
+ },
+ "sub_1_1763138525_f3c26a": {
+ "success": true,
+ "task_id": "sub_1_1763138525_f3c26a",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763138525_f3c26a/deliverables/result.json",
+ "updated_at": 1763138553.3004239,
+ "ready_at": 1763138545.089707,
+ "summary": "测试AI发展趋势研究",
+ "task_description": "请搜索2025年AI发展的最新趋势,重点关注技术突破、应用场景和商业价值。整理成结构化的报告,包含主要趋势、关键数据和未来发展预测。"
+ },
+ "sub_1_1763138848_a510e7": {
+ "success": true,
+ "task_id": "sub_1_1763138848_a510e7",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763138848_a510e7/deliverables/result.json",
+ "updated_at": 1763138869.393047,
+ "ready_at": 1763138868.7424152,
+ "summary": "测试子智能体基础功能",
+ "task_description": "请创建一个简单的测试文件,包含一些基础文本内容,用于验证子智能体功能是否正常工作。文件应该包含当前时间戳和测试说明。"
+ },
+ "sub_1_1763139150_3c9d67": {
+ "success": true,
+ "task_id": "sub_1_1763139150_3c9d67",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139150_3c9d67/deliverables/result.json",
+ "updated_at": 1763139191.906615,
+ "ready_at": 1763139170.9200552,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,请创建一个简单的测试文件,证明子智能体功能正常运行。创建一个名为test_result.txt的文件,内容为\"子智能体测试成功\",然后保存到指定的交付目录中。"
+ },
+ "sub_1_1763139777_e3bb89": {
+ "success": true,
+ "task_id": "sub_1_1763139777_e3bb89",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139777_e3bb89/deliverables/result.json",
+ "updated_at": 1763139811.727471,
+ "ready_at": 1763139797.230397,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的文件操作和基础任务。"
+ },
+ "sub_1_1763139812_a31421": {
+ "success": true,
+ "task_id": "sub_1_1763139812_a31421",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139812_a31421/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139812_a31421/deliverables/result.json",
+ "updated_at": 1763139963.9870741,
+ "ready_at": 1763139832.061038,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体可以正常执行任务。"
+ },
+ "sub_1_1763139964_f7096d": {
+ "success": true,
+ "task_id": "sub_1_1763139964_f7096d",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763139964_f7096d/deliverables/result.json",
+ "updated_at": 1763139984.730966,
+ "ready_at": 1763139984.328714,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体功能可用。"
+ },
+ "sub_1_1763140306_2e963d": {
+ "success": true,
+ "task_id": "sub_1_1763140306_2e963d",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763140306_2e963d/deliverables/result.json",
+ "updated_at": 1763140327.653261,
+ "ready_at": 1763140326.7281852,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请创建一个简单的测试文件,证明子智能体可以正常执行任务。"
+ },
+ "sub_1_1763140968_fcc7e8": {
+ "success": true,
+ "task_id": "sub_1_1763140968_fcc7e8",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763140968_fcc7e8/deliverables/result.json",
+ "updated_at": 1763140992.096374,
+ "ready_at": 1763140988.710644,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763141298_73fecb": {
+ "success": true,
+ "task_id": "sub_1_1763141298_73fecb",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141298_73fecb/deliverables/result.json",
+ "updated_at": 1763141417.687985,
+ "ready_at": 1763141318.212076,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763141416_b3f4af": {
+ "success": true,
+ "task_id": "sub_1_1763141416_b3f4af",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141416_b3f4af/deliverables/result.json",
+ "updated_at": 1763141437.721798,
+ "ready_at": 1763141436.1827981,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763141493_04306c": {
+ "success": true,
+ "task_id": "sub_1_1763141493_04306c",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141493_04306c/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141493_04306c/deliverables/result.json",
+ "updated_at": 1763141513.724571,
+ "ready_at": 1763141513.175173,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的文件操作,比如创建一个测试文件并写入一些内容。"
+ },
+ "sub_1_1763141627_2a3caa": {
+ "success": true,
+ "task_id": "sub_1_1763141627_2a3caa",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141627_2a3caa/deliverables/result.json",
+ "updated_at": 1763141648.869268,
+ "ready_at": 1763141647.23754,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请返回一个简单的测试响应。"
+ },
+ "sub_1_1763141724_e8356f": {
+ "success": true,
+ "task_id": "sub_1_1763141724_e8356f",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141724_e8356f/deliverables/result.json",
+ "updated_at": 1763141745.718327,
+ "ready_at": 1763141744.739198,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763141965_68ed0f": {
+ "success": true,
+ "task_id": "sub_1_1763141965_68ed0f",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763141965_68ed0f/deliverables/result.json",
+ "updated_at": 1763141987.71402,
+ "ready_at": 1763141985.7928262,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请创建一个简单的文本文件,内容为\"子智能体测试成功\",文件名为test_result.txt"
+ },
+ "sub_1_1763142827_cf8333": {
+ "success": true,
+ "task_id": "sub_1_1763142827_cf8333",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763142827_cf8333/deliverables/result.json",
+ "updated_at": 1763142848.307034,
+ "ready_at": 1763142847.8183172,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请创建一个简单的文本文件,内容为\"子智能体测试成功\",保存为test_result.txt"
+ },
+ "sub_1_1763143045_674f80": {
+ "success": true,
+ "task_id": "sub_1_1763143045_674f80",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143045_674f80/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143045_674f80/deliverables/result.json",
+ "updated_at": 1763143066.173978,
+ "ready_at": 1763143065.1142159,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763143148_5b7d12": {
+ "success": true,
+ "task_id": "sub_1_1763143148_5b7d12",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143148_5b7d12/deliverables/result.json",
+ "updated_at": 1763143169.6628668,
+ "ready_at": 1763143168.05108,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763143449_52810c": {
+ "success": true,
+ "task_id": "sub_1_1763143449_52810c",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143449_52810c/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143449_52810c/deliverables/result.json",
+ "updated_at": 1763143471.621085,
+ "ready_at": 1763143469.180256,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些基础操作并返回结果。"
+ },
+ "sub_1_1763143759_a861ea": {
+ "success": true,
+ "task_id": "sub_1_1763143759_a861ea",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143759_a861ea/deliverables/result.json",
+ "updated_at": 1763143780.888281,
+ "ready_at": 1763143779.9134731,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763143923_588633": {
+ "success": true,
+ "task_id": "sub_1_1763143923_588633",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143923_588633/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763143923_588633/deliverables/result.json",
+ "updated_at": 1763143944.4546719,
+ "ready_at": 1763143943.580575,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763144220_abb092": {
+ "success": true,
+ "task_id": "sub_1_1763144220_abb092",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763144220_abb092/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763144220_abb092/deliverables/result.json",
+ "updated_at": 1763144242.2311318,
+ "ready_at": 1763144240.835765,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作。请执行一些基础操作并返回结果。"
+ },
+ "sub_1_1763144317_eabeba": {
+ "success": true,
+ "task_id": "sub_1_1763144317_eabeba",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763144317_eabeba/deliverables/result.json",
+ "updated_at": 1763144337.5016708,
+ "ready_at": 1763144337.132025,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体功能是否正常工作"
+ },
+ "sub_1_1763144744_81368a": {
+ "success": true,
+ "task_id": "sub_1_1763144744_81368a",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763144744_81368a/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763144744_81368a/deliverables/result.json",
+ "updated_at": 1763144765.530027,
+ "ready_at": 1763144764.7613509,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体系统的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ },
+ "sub_1_1763145242_d44a87": {
+ "success": true,
+ "task_id": "sub_1_1763145242_d44a87",
+ "status": "completed",
+ "message": "测试子智能体已生成占位结果。",
+ "deliverables_dir": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables",
+ "result_file": "/Users/jojo/Desktop/agents/正在修复中/agents/sub_agent/tasks/sub_1_1763145242_d44a87/deliverables/result.json",
+ "updated_at": 1763145263.388503,
+ "ready_at": 1763145262.3055072,
+ "summary": "测试子智能体基础功能",
+ "task_description": "这是一个测试任务,用于验证子智能体的基础功能是否正常工作。请执行一些简单的操作并返回结果。"
+ }
+}
\ No newline at end of file
diff --git a/web_server.py b/web_server.py
index 25d19d1..7de2c90 100644
--- a/web_server.py
+++ b/web_server.py
@@ -2362,6 +2362,48 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
if hasattr(web_terminal, "pending_modify_request"):
web_terminal.pending_modify_request = None
return result
+
+ async def process_sub_agent_updates(
+ messages: List[Dict],
+ inline: bool = False,
+ after_tool_call_id: Optional[str] = None
+ ):
+ """轮询子智能体任务并通知前端,并把结果插入当前对话上下文。"""
+ manager = getattr(web_terminal, "sub_agent_manager", None)
+ if not manager:
+ return
+ try:
+ updates = manager.poll_updates()
+ debug_log(f"[SubAgent] poll inline={inline} updates={len(updates)}")
+ except Exception as exc:
+ debug_log(f"子智能体状态检查失败: {exc}")
+ return
+ for update in updates:
+ message = update.get("system_message")
+ if not message:
+ continue
+ task_id = update.get("task_id")
+ debug_log(f"[SubAgent] update task={task_id} inline={inline} msg={message}")
+ web_terminal._record_sub_agent_message(message, task_id, inline=inline)
+ debug_log(f"[SubAgent] recorded task={task_id}, 计算插入位置")
+
+ insert_index = len(messages)
+ if after_tool_call_id:
+ for idx, msg in enumerate(messages):
+ if msg.get("role") == "tool" and msg.get("tool_call_id") == after_tool_call_id:
+ insert_index = idx + 1
+ break
+
+ messages.insert(insert_index, {
+ "role": "system",
+ "content": message,
+ "metadata": {"sub_agent_notice": True, "inline": inline, "task_id": task_id}
+ })
+ debug_log(f"[SubAgent] 插入系统消息位置: {insert_index}")
+ sender('system_message', {
+ 'content': message,
+ 'inline': inline
+ })
for iteration in range(max_iterations):
total_iterations += 1
@@ -2919,16 +2961,16 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
web_terminal.context_manager.add_conversation("system", follow_prompt)
debug_log("已注入追加任务提示")
- if not append_result.get("success"):
- sender('system_message', {
- 'content': f'⚠️ 追加写入失败:{append_result.get("error")}'
- })
-
- # 重置文本流状态,避免后续错误处理
- text_streaming = False
- text_started = False
- text_has_content = False
- full_response = ""
+ if append_result["handled"] and not append_result.get("success"):
+ sender('system_message', {
+ 'content': f'⚠️ 追加写入失败:{append_result.get("error")}'
+ })
+
+ # 重置文本流状态,避免后续错误处理
+ text_streaming = False
+ text_started = False
+ text_has_content = False
+ full_response = ""
if modify_result["handled"]:
modify_metadata = modify_result.get("assistant_metadata")
@@ -2995,7 +3037,7 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
web_terminal.context_manager.add_conversation("system", follow_prompt)
debug_log("已注入修改任务提示")
- if not modify_result.get("success"):
+ if modify_result["handled"] and not modify_result.get("success"):
error_message = modify_result.get("summary_message") or modify_result.get("error") or "修改操作未成功,请根据提示重新执行。"
sender('system_message', {
'content': f'⚠️ 修改操作存在未完成的内容:{error_message}'
@@ -3005,6 +3047,7 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
text_started = False
text_has_content = False
full_response = ""
+
# 保存思考内容(如果这是第一次迭代且有思考)
if web_terminal.thinking_mode and web_terminal.api_client.current_task_first_call and current_thinking:
@@ -3294,6 +3337,18 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
else:
debug_log("modify_file 返回完成状态")
+ if function_name == "wait_sub_agent":
+ system_msg = result_data.get("system_message")
+ if system_msg:
+ messages.append({
+ "role": "system",
+ "content": system_msg
+ })
+ sender('system_message', {
+ 'content': system_msg,
+ 'inline': False
+ })
+
update_payload = {
'id': tool_display_id,
'status': action_status,
@@ -3341,6 +3396,9 @@ async def handle_task_with_sender(terminal: WebTerminal, message, sender, client
"name": function_name,
"content": tool_result_content
})
+
+ if function_name not in ['append_to_file', 'modify_file']:
+ await process_sub_agent_updates(messages, inline=True, after_tool_call_id=tool_call_id)
await asyncio.sleep(0.2)