prompts.js
4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/**
* 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 };