home / skills / cuipengfei / prompts / dialectic-partner

dialectic-partner skill

/plugins/debate/skills/dialectic-partner

npx playbooks add skill cuipengfei/prompts --skill dialectic-partner

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.9 KB
---
name: dialectic-partner
description: 主代理与子代理进行结构化辩论,发现盲点、探索多角度视角。用于重要决策、设计评估或挑战假设。
---

# 辩证伙伴技能

启动**辩证式辩论**,让你(主代理)与子代理作为**批判性思考伙伴**进行对话:
- 质疑隐含假设
- 探索边界情况和替代方案
- 发现推理中的盲点
- 帮助用户做出更明智的决策

**目标**:共同发现更好的答案,而非赢得争论。

## 执行步骤

### 第一步:确认辩论主题

使用 AskUserQuestion 确认:
- 辩论主题和范围
- 用户的初始倾向(如有)
- 具体关注点或焦点领域

### 第二步:选择子代理

根据辩论主题从可用 `subagent_type` 中选择最合适的。如不确定或选择的代理不可用,回退到 `general-purpose`。

**记录选择**:在辩论记录中注明选了哪个代理及原因。

### 第三步:提供具体上下文

**关键**:子代理无法访问你的对话历史。必须提供:
- 相关**文件路径**(子代理可自行读取)
- **关键代码片段**或摘要(如文件太大)
- 代码变更辩论需提供**变更文件列表**,并告知子代理**运行 git diff**
- 任何**约束或需求**

**告知子代理**:在 Task prompt 中说明:
- **单工具调用规则**:每次 invoke 一个 function,等待 function_results 返回后再 invoke 下一个
- 若上下文不足,请自主寻找并报告找到的额外文件或上下文
- 作为辩证伙伴应:质疑假设、提出替代方案、识别边界情况、保持建设性

Task prompt 示例:
```
## 🚨 铁律:单工具调用 🚨

每次 invoke 一个 function,等待 function_results 返回后再 invoke 下一个。
禁止中途停下来,自主完成所有步骤后再汇报。

---

作为辩证伙伴,请质疑这个设计决策。

需审查的文件:
- /path/to/design.md
- /path/to/implementation.ts

背景:[决策及理由的简要说明]

请:质疑假设、提出替代方案、识别风险。
若上下文不足,请自主寻找相关文件并报告。
```

### 第四步:进行辩论轮次

使用 **Task + resume** 进行多轮辩论:

```
# 首轮
Task(prompt: "...", subagent_type: "...", description: "辩论第 1 轮")
→ 返回 agentId

# 后续轮次(注意:resume 时仍需提供 subagent_type)
Task(prompt: "...", resume: agentId, subagent_type: "...", description: "辩论第 2 轮")
```

**每轮操作**:
1. 陈述你的立场或回应
2. 调用子代理进行质疑
3. 更新 `.debates/YYYY-MM-DD-topic.md` 记录本轮内容
4. 每 2-3 轮使用 AskUserQuestion 获取用户输入

### 第五步:用户参与

在关键时刻使用 AskUserQuestion,选项如:
- "继续辩论" / "让代理继续"
- "我想补充..."
- "深入讨论 X"
- "总结并结束"
- "让代理自行决定"

### 第六步:实时持久化

辩论开始时创建 `.debates/YYYY-MM-DD-topic-slug.md`,并**提示用户辩论将记录到该文件**:

```markdown
# Debate: [主题]

**Date**: YYYY-MM-DD
**Status**: in-progress
**Participants**: Main Agent ↔ Sub Agent ([代理类型])
**Selection Rationale**: [选择该代理的原因]

---

## Round 1

### Main Agent
[观点]

### Sub Agent
[质疑]

### User Input
[如有]

---
```

每轮结束后追加内容。

**辩论结束时**:
1. 追加 Conclusion 部分
2. 使用 AskUserQuestion 询问是否保留记录
3. 如保留:更新 Status 为 `completed`,填写 Outcome(`consensus` | `partial` | `disagreement`)
4. 如删除:删除文件

### 第七步:总结

**Soft Limit**:10 轮后建议总结。

结束时呈现:
- 发现的关键洞察
- 共识点
- 仍存在的分歧
- 用户的最终决策

## ⚠️ 主代理隔离原则(硬性规则)

**主代理不得在用户同意前根据子代理建议修改代码或文件。**

这是防止主代理被子代理"污染"或"感染"的关键规则:

- 子代理提出修改建议时,主代理只能**展示**,不能**执行**
- 任何代码/文件修改必须先通过 AskUserQuestion 获得用户**明确同意**
- 用户未同意或未响应时,不得执行任何修改
- 违反此规则视为**严重错误**

**正确流程**:
1. 子代理提出建议
2. 主代理向用户展示建议内容
3. 使用 AskUserQuestion 询问"是否采纳此建议?"
4. 用户同意后才执行修改
5. 在辩论记录中注明"用户已同意"

## 注意事项

- **单工具调用规则**(传递给子代理):为规避已知 bug,子代理每次回复只能包含一个 function call,否则 resume 会失败。务必在 Task prompt 中加入此约束。
- **resume 需要 subagent_type**:即使使用 `resume: agentId` 继续对话,仍必须提供 `subagent_type` 参数
- `agentId` 仅会话内有效;跨会话续辩需读取 `.debates/*.md` 文件恢复上下文
- 子代理角色是"辩证伙伴",不是"反对者"
- 信任 SOTA 模型能力,不必过度指定辩论技巧