/** * Prompts - 编排器提示词模板 * * 所有发给 Master Agent 的提示词集中管理,禁止字符串拼接。 */ const Prompts = { /** * 首轮提示词:将用户需求发给 Master */ initial(requirement, agentList) { return `\ ## 任务需求 ${requirement} ## 可用子 Agent ${agentList} ## 调度指令 请分析上述需求,然后调用合适的子 Agent 执行任务。 **推荐格式(JSON):** \`\`\`json { "agent": "agent_name", "task": "具体任务描述" } \`\`\` **备选格式(文本标记):** [CALL: agent_name] 具体任务描述 [/CALL] ⚠️ 你是调度者,禁止直接编写代码或使用任何工具。你的输出只能是需求分析和调度指令。`; }, /** * 本轮执行结果反馈 → 强制 Master 做 Reflection + Summary */ followup({ currentResults, passedValidators, unpassedValidators }) { const resultBlocks = currentResults .map(r => { // 优先使用完整输出(含诗歌/小说等内容),降级到 message const content = r.output || r.message || '(无)'; return `--- ${r.agent} ---\n状态: ${r.status}\n完整输出:\n${content}`; }) .join('\n\n'); // 产出文件展示 const allArtifacts = currentResults .filter(r => r.artifacts?.length > 0) .map(r => `### ${r.agent} 产出文件\n${r.artifacts.map(f => `- ${f}`).join('\n')}`) .join('\n\n'); const artifactsBlock = allArtifacts ? `\n## 已产出文件\n\n${allArtifacts}\n` : ''; return `\ ## Sub Agent 执行结果 ${resultBlocks.trim()} ${artifactsBlock} --- ## ⚠️ 你现在必须按顺序做以下两件事(不可跳过): ### 第一步:Reflection(反思评估) 对每个 Sub Agent 的返回结果逐一评估: - 产出内容是否满足用户的原始需求? - 内容质量如何?(格式正确性、内容准确度、创作水平) - 决策: - ✅ PASS → 接受结果,进入总结 - 🔄 RETRY → 不满意,重新调用该 Agent(用 [CALL: agent_name]改进指令[/CALL]) ### 第二步:Summary(总结 — 仅当所有结果 PASS 时执行) 你**必须**输出面向用户的中文总结,**核心要求:直接展示用户要的内容**: - 用户要写诗 → 把诗的**全文**贴出来 - 用户要写小说 → 列出每个章节的文件名和内容摘要 - 用户要做研究 → 列出研究的核心发现 格式: \`\`\` 📝 Reflection: [对 Sub Agent 输出的评估] ✅ 任务完成 [诗歌/小说/研究结果的完整内容] **后续建议**: - ... [RESULT: DONE] 完成 [/RESULT] \`\`\` --- ⚠️ 格式提醒: - 重新调用 Agent: [CALL: agent_name]改进指令[/CALL] - 完成: 先写 Reflection + Summary,再写 [RESULT: DONE]完成[/RESULT]`; }, /** * Master 越权后强制验证 */ forceValidation(files, validators) { return `\ ⚠️ 系统提醒:检测到工作目录中已有文件(${files.join(', ')}),现在需要验证这些文件的质量。 请调用以下 validator 进行验证:${validators.join(', ')} 记住:使用 [CALL: validator_name]...[/CALL] 格式调用。`; }, /** * 任务未完成,强制 Master 继续调度 */ forceResume(unpassedValidators) { return `\ ⚠️ 系统警告:任务尚未完成。以下 validator 尚未通过:${unpassedValidators.join(', ')}。 请使用 [CALL: agent_name]...[/CALL] 调用这些 validator 进行验证,或调用 executor 修复问题。 提醒:你是调度者,禁止直接执行任务。`; }, /** * Agent 输出格式不对时的自动纠正提示 */ formatCorrection({ agentType, retryCount, maxRetries, originalTask }) { const expectedFormats = agentType === 'validator' ? '[RESULT: PASS]...[/RESULT] 或 [RESULT: FAIL]...[/RESULT]' : '[RESULT: DONE]...[/RESULT] 或 [RESULT: ERROR]...[/RESULT]'; return `\ ⚠️ 系统格式纠正(自动重试 ${retryCount}/${maxRetries}): 你上一次的输出缺少必需的 [RESULT] 标记,系统无法解析你的判定结果。 **你的输出最后必须包含以下格式的标记:** ${expectedFormats} 请重新执行以下任务,并确保输出最后包含正确的 [RESULT] 标记: --- ${originalTask}`; }, }; module.exports = { Prompts };