智能體聊天室
生成 N 個智能體(預設為 3 個)進入一個模擬的共享對話。每個智能體在回應前都會讀取完整的聊天歷史,以此來建立、挑戰或改進先前的貢獻。您(協調者)扮演專案經理的角色——主持回合、閱讀辯論內容,並提取最終輸出。
為何有效: 順序交接會失去上下文——第二個模型不知道第一個模型為何做出那些決定。共享對話能保留推理鏈條,並促成真正的辯論。當智能體 A 說「這需要一個佇列」,而智能體 B 說「簡單的迴圈就夠了」,這種分歧比任何一個智能體獨自給出的自信答案更有價值。智能體會挑戰假設、捕捉錯誤,並綜合多樣的推理路徑。
執行
1. 解析請求
從使用者的訊息中提取:
- 問題/待辯論事項
- 智能體數量 N — 預設為 3。使用者可覆寫(如「讓 5 個智能體辯論」)
- 回合數 R — 預設為 3 回合。使用者可覆寫(如「辯論 5 回合」)
- 智能體角色(可選)——使用者可指定角色(如「讓一個架構師、一個安全工程師和一個前端開發人員辯論這個」)。若未指定,則分配多樣化的預設角色。
如果問題模糊不清,請在生成之前要求使用者將其具體化。
2. 指派智能體角色
每個智能體都獲得一個獨特的觀點,以最大化有益的異議。如果使用者未指定角色,請根據問題領域從以下預設角色中選擇:
軟體工程:
- 架構師 — 以系統、介面、可擴展性和長期可維護性為思考核心
- 務實者 — 追求快速交付、最小化複雜性、「夠好」的解決方案
- 批評者 — 找出邊界情況、失敗模式、安全漏洞和未明說的假設
產品/設計:
- 使用者倡導者 — 以使用者體驗、簡潔性、使用者愉悅度為目標
- 商業策略師 — 以營收、成長、競爭優勢為目標
- 工程師 — 將討論落實在技術可行性和成本上
策略/決策:
- 樂觀主義者 — 看到機會、潛在收益、行動的理由
- 懷疑論者 — 看到風險、負面影響、等待的理由
- 綜合者 — 找到中間路線,整合雙方的觀點
若 N > 3,則新增更多能與現有角色產生建設性張力的角色。
3. 初始化聊天檔案
建立 active/chatroom/chat.json 並使用以下初始結構:
{
"problem": "{問題陳述}",
"context": "{任何相關背景、程式碼、限制}",
"agents": [
{"name": "智能體 A", "role": "{角色}", "framing": "{角色描述}"},
{"name": "智能體 B", "role": "{角色}", "framing": "{角色描述}"},
{"name": "智能體 C", "role": "{角色}", "framing": "{角色描述}"}
],
"rounds": [],
"final_output": null
}
4. 執行辯論回合
針對每個回合(第 1 輪到第 R 輪),並行生成所有 N 個智能體。每個智能體都會讀取完整的聊天歷史並做出貢獻。
智能體生成配置:
subagent_type: "general-purpose"model: "sonnet"(預設——使用者可覆寫為 opus 以獲得更深入的推理)mode: "bypassPermissions"
回合流程:
第 1 輪——開場立場: 每個智能體陳述其對問題的初步看法。
智能體提示詞:
你是 {角色}: {角色描述}
問題:
{問題}
背景:
{背景}
這是多智能體辯論的第 1 輪。請陳述你對這個問題的初步立場。要具體且具體——提出實際的解決方案,而非模糊的原則。表明清晰的立場。
其他智能體將在後續回合挑戰你的立場,因此請明確說明你的推理過程。
請按以下格式回應:
立場:[你的一句立場陳述]
推理:[你的詳細論點——3 到 5 個關鍵點]
提案:[你的具體建議]
顧慮:[你的方法可能出錯的地方]
請直接撰寫你的回應——不要寫入任何檔案。
第 2 輪及以上——辯論: 每個智能體讀取所有先前的回應並做出回應。
智能體提示詞:
你是 {角色}: {角色描述}
問題:
{問題}
先前的討論:
{所有先前回合的條目,格式化為「智能體 X (角色): 回應」}
這是多智能體辯論的第 {N} 輪。請仔細閱讀先前的討論。
你的任務:
1. 回應針對你立場的最強反駁
2. 指出你同意其他智能體的地方(承認好的觀點)
3. 指出你仍然不同意的地方及其原因
4. 根據目前的討論,修改你的提案
不要只是重複你之前的立場。要與其他人說過的內容互動。如果他們提出了更好的論點,就改變你的想法。
請按以下格式回應:
同意之處:[其他智能體說對的地方]
不同意之處:[你仍持異議的地方及其原因]
修改後提案:[你更新後的建議]
信心度:[1 到 10,你對修改後立場的信心程度]
請直接撰寫你的回應——不要寫入任何檔案。
每回合結束後:
- 收集所有智能體的回應
- 將它們附加到
chat.json中的rounds陣列:
{
"round": 1,
"entries": [
{"agent": "智能體 A", "role": "架構師", "response": "..."},
{"agent": "智能體 B", "role": "務實者", "response": "..."},
{"agent": "智能體 C", "role": "批評者", "response": "..."}
]
}
- 檢查是否收斂:如果所有智能體都同意(信心度 8 以上,提案一致),則提前停止——無需進行更多回合。
5. 綜合最終輸出
最後一回合結束後,由您(協調者)閱讀完整的辯論內容並產出綜合報告。不要為此生成另一個智能體——您親自完成。
分析:
- 智能體在哪裡達成了共識? ——這些是高信心的結論
- 它們在哪裡仍存在分歧? ——這些是需要使用者決定的真正取捨
- 提出了哪些顧慮但未解決? ——這些是需要監控的風險
- 是否有智能體改變了想法? ——改變想法是強烈的訊號
6. 撰寫最終報告
使用 final_output 更新 active/chatroom/chat.json,並將人類可讀的摘要寫入 active/chatroom/chatroom_report.md:
# 智能體聊天室報告
**問題**:{問題}
**智能體**:{N} | **回合數**:{R}
**日期**:{日期}
## 參與者
| 智能體 | 角色 | 最終信心度 |
|--------|------|-------------|
| 智能體 A | {角色} | {信心度}/10 |
| 智能體 B | {角色} | {信心度}/10 |
| 智能體 C | {角色} | {信心度}/10 |
## 共識
{所有智能體在最終回合達成一致的內容}
## 主要分歧
{智能體仍存在分歧的地方——公平呈現雙方觀點}
## 建議行動
{您作為協調者的綜合建議——考量所有觀點後的最佳前進方向}
## 未解決的風險
{辯論期間提出的但未充分解決的顧慮}
## 辯論亮點
{最有趣的交流——想法改變或出現強烈反駁的地方}
## 完整紀錄
{連結到 chat.json 或直接內嵌關鍵交流}
7. 傳遞結果
向使用者呈現:
- 一段綜合摘要說明辯論結果
- 建議行動(您作為協調者的判斷,以辯論為依據)
- 最尖銳的分歧(需要使用者判斷的地方)
- 報告和 chat.json 的檔案路徑
配置
| 參數 | 預設值 | 說明 |
|---|---|---|
| N | 3 | 聊天室中的智能體數量 |
| R | 3 | 辯論回合數 |
| model | sonnet | 每個智能體使用的模型 |
| roles | auto | 智能體角色(自動分配或使用者指定) |
使用者可覆寫:「讓 5 個 opus 智能體辯論 4 回合」或「讓一個架構師和一個初級開發人員辯論」。
成本考量
- 3 個 sonnet 智能體 x 3 回合 = 9 次智能體呼叫(約 $0.30-0.50)
- 3 個 opus 智能體 x 3 回合 = 9 次智能體呼叫(約 $3-5)
- 5 個智能體 x 5 回合 = 25 次呼叫——使用 opus 會變得昂貴
- 預設使用 sonnet。僅在使用者明確要求或問題需要深度技術推理時才使用 opus。
- 早期收斂可節省成本——如果智能體在所有回合完成前達成一致,則停止。
邊界情況
- N < 2:警告使用者——聊天室至少需要 2 個智能體。最少為 2。
- 所有智能體立即同意:在第 1 輪後停止。報告一致共識。這是一個有效(且便宜)的結果。
- 智能體陷入僵局:在 R 回合後未收斂,則誠實報告僵局。結論是這是一個真正的判斷取捨,沒有主導性的答案。
- 智能體偏離主題:從綜合報告中排除該回應,並記錄有效的智能體數量。
- 已有聊天室檔案:檢查
active/chatroom/中是否有現有檔案。直接覆蓋,無需詢問(這些是臨時的辯論產物,非永久資料)。 - 使用者指定自訂角色:完全使用他們指定的角色。除非被要求,否則不添加額外角色。
輸出檔案
| 檔案 | 說明 |
|---|---|
active/chatroom/chat.json | 完整的結構化辯論紀錄 |
active/chatroom/chatroom_report.md | 人類可讀的綜合報告 |
先前的報告會被覆蓋——這些是臨時的辯論工具,而非存檔。