auto-sync: 2026-05-24 10:56:59

This commit is contained in:
cfdaily
2026-05-24 10:56:59 +08:00
parent 9330f1999b
commit 2a43f18382
+40 -1
View File
@@ -21,6 +21,39 @@ logger = logging.getLogger("moziplus-v2.spawner")
# ── Prompt 模板 ──
# Mail 专用模板:inform 类型(纯通知,读完确认即可)
MAIL_INFORM_TEMPLATE = """你收到一封飞鸽传书(纯通知,不需要回复)。
发件者: {from_agent}
主题: {title}
内容: {text}
读完确认即可,不需要回复。
操作:
curl -X POST http://{api_host}:{api_port}/api/projects/_mail/tasks/{task_id}/status \\\n -H 'Content-Type: application/json' \\\n -d '{{"status": "done", "agent": "{agent_id}"}}'
"""
# Mail 专用模板:request 类型(需要处理并回复)
MAIL_REQUEST_TEMPLATE = """你收到一封飞鸽传书,需要你处理并回复。
发件者: {from_agent}
主题: {title}
内容: {text}
请阅读内容,根据需要处理后回复发件者。
操作:
1. 开始处理:
curl -X POST http://{api_host}:{api_port}/api/projects/_mail/tasks/{task_id}/status \\\n -H 'Content-Type: application/json' \\\n -d '{{"status": "working", "agent": "{agent_id}"}}'
2. 回复发件者(⚠️ 回复邮件 type 用 inform,避免循环):
curl -X POST http://localhost:8083/api/mail \\\n -H 'Content-Type: application/json' \\\n -d '{{"from": "{agent_id}", "to": "{from_agent}", "title": "回复: {title}", "text": "你的回复内容", "type": "inform", "in_reply_to": "{task_id}"}}'
3. 标记完成:
curl -X POST http://{api_host}:{api_port}/api/projects/_mail/tasks/{task_id}/status \\\n -H 'Content-Type: application/json' \\\n -d '{{"status": "done", "agent": "{agent_id}"}}'
"""
SPAWN_PROMPT_TEMPLATE = """你收到一个 v2.6 黑板任务。请严格按照下面的步骤执行。
## 任务信息
@@ -189,13 +222,19 @@ class AgentSpawner:
role="executor",
project_config=project_config,
)
# 在 bootstrap 后追加操作指令(状态机 + API 回写)
# mail 任务用精简模板,不走 BootstrapBuilder
if project_id == "_mail":
return self._build_mail_prompt(task_id, title, description, must_haves, agent_id)
api_section = self._build_api_section(
project_id, task_id, agent_id)
return bootstrap_prompt + "\n\n---\n\n" + api_section
except Exception:
logger.exception("BootstrapBuilder failed, falling back to template")
# mail 任务用精简模板
if project_id == "_mail":
return self._build_mail_prompt(task_id, title, description, must_haves, agent_id)
# Fallback: 使用硬编码模板
# mail 任务直接 done,不走 review
completion_status = "done" if project_id == "_mail" else "review"