49 lines
5.0 KiB
JavaScript
49 lines
5.0 KiB
JavaScript
// ============================================================
|
||
// 辩论提示词模板 -- 移植自 Counsel AI, 适配 orchestrator-v2
|
||
// 8 步辩论流程的每一步 prompt
|
||
// ============================================================
|
||
|
||
// Step 1: 问题精确定义 -- Facilitator 引导用户明确问题
|
||
function definePrompt(rawInput, history) {
|
||
const hist = history ? `\n## 之前的对话\n${history}` : '';
|
||
return `## 原始问题\n${rawInput}${hist}\n---\n你是一个问题精确定义专家。你的任务是通过对话帮助用户把模糊的问题变成清晰、可辩论的议题。\n\n规则:\n- 如果问题已经清晰明确(有具体情境、决策选项、判断标准),回复"问题已清晰"并给出精确定义。\n- 如果问题模糊,提出 1-2 个问题引导用户补充关键信息。\n- 不要评价问题好坏,只需帮助聚焦。`;
|
||
}
|
||
|
||
// Step 2: 事实追问 -- 每个幕僚从自己视角问事实性问题
|
||
function factQuestionPrompt(rawInput, defined, personaSkill, previousQA) {
|
||
const prev = previousQA ? `\n## 之前的问答\n${previousQA}\n\n(注意:不要重复已经问过的问题)` : '';
|
||
return `## 原始问题\n${rawInput}\n\n## 精确定义\n${defined}${prev}\n\n## 你的视角\n${personaSkill}\n\n---\n你只能问事实性问题。规则:\n- 只问可核实的事实性问题(数据、时间、人物、行动、数量)\n- 不要给建议、评价、判断\n- 0-2 个问题,不要贪多\n- 每个问题单独一行\n- 如果信息已足够支持判断,直接回复"没有问题了"`;
|
||
}
|
||
|
||
// Step 3: 表态 -- 每个幕僚从自己视角给出独立判断
|
||
function opinionPrompt(rawInput, defined, answers, personaSkill) {
|
||
return `## 原始问题\n${rawInput}\n\n## 精确定义\n${defined}\n\n## 事实信息\n${answers}\n\n## 你的视角\n${personaSkill}\n\n---\n请从你的独特视角出发,给出对这个问题的独立判断和建议。150字以内,直接给结论,不要客套。提供 1-2 个核心论点。`;
|
||
}
|
||
|
||
// Step 4: 冲突维度提炼 -- Facilitator 从表态中提炼 3-6 个冲突维度
|
||
function dimensionsPrompt(opinionsText) {
|
||
return `以下是各位幕僚对这个问题的表态:\n\n${opinionsText}\n\n---\n请从这些表态中识别 3-6 个核心冲突维度。\n\n**什么是好的冲突维度**:幕僚们在某个具体问题上存在实质性分歧——比如优先级排序的差异、对风险承受度的不同判断、内部 vs 外部资源的取舍、短期 vs 长期的权衡等。即使结论一致,如果在"因为什么"或"权衡什么"上存在实质分歧,那也是好的冲突维度。\n\n**输出格式**,每个维度:\n## 维度 N\n冲突核心:(一句话概括这个维度上的分歧是什么)\n建议焦点:(这个维度的核心论点是什么)\n\n要求:\n- 3-6 个维度,不要更多\n- 每个维度是全部幕僚共同探讨的问题,不要分配给子小组\n- 维度之间不重叠\n- 只输出维度列表,不要额外说明`;
|
||
}
|
||
|
||
// Step 5: 辩论 -- 幕僚在某维度上发表立场
|
||
function debatePrompt(defined, answers, dimension, personaSkill) {
|
||
return `## 精确定义\n${defined}\n\n## 事实信息\n${answers}\n\n## 当前辩论维度\n${dimension}\n\n## 你的视角\n${personaSkill}\n\n---\n请针对「${dimension}」这个维度,阐述你的立场(支持/反对/中间)和核心理由。100字以内,直接说观点和理由。`;
|
||
}
|
||
|
||
// Facilitator 总结某个维度的辩论
|
||
function debateFacilitatorPrompt(dimension, allPositions) {
|
||
return `各位幕僚就「${dimension}」维度的辩论发言:\n\n${allPositions}\n\n---\n请总结这个维度的核心冲突:\n**核心矛盾**:(一句话)\n**支持方核心观点**:(一句话)\n**反对方核心观点**:(一句话)`;
|
||
}
|
||
|
||
// Step 6: Secretary 结构化总结
|
||
function summaryPrompt(rawInput, defined, answers, debateRecord) {
|
||
return `## 原始问题\n${rawInput}\n\n## 精确定义\n${defined}\n\n## 事实信息\n${answers}\n\n## 辩论记录\n${debateRecord}\n\n---\n请生成一份结构化的辩论总结报告(Markdown 格式):\n\n# 辩论总结报告\n\n## 问题定义\n(一句话重述精确定义的问题)\n\n## 关键冲突维度\n(每个维度:冲突核心 + 正反方观点 + 分析)\n\n## 共识与分歧\n- **共识点**:\n- **核心分歧**:\n\n## 总体评估\n(综合评估这个决策的复杂度、风险和建议方向)`;
|
||
}
|
||
|
||
// Step 7: 摘果子 -- 评估 + To-Do
|
||
function harvestPrompt(summary) {
|
||
return `## 辩论总结报告\n${summary}\n\n---\n请从幕僚们的辩论中提取 actionable 的建议:\n\n## 关键评估\n1. 优点 / 机会(1-2 点)\n2. 盲点 / 风险(1-2 点)\n3. 总体判断:(一句话)\n\n## To-Do 清单\n- [ ] (可执行动作1)\n- [ ] (可执行动作2)\n- [ ] (可执行动作3)\n...\n\n## 值得记住的洞察\n- (来自幕僚的洞见1)\n- (来自幕僚的洞见2)`;
|
||
}
|
||
|
||
module.exports = { definePrompt, factQuestionPrompt, opinionPrompt, dimensionsPrompt, debatePrompt, debateFacilitatorPrompt, summaryPrompt, harvestPrompt };
|