feat: Planner direct 모드 + Reviewer 검증
- direct 모드: Planner 직접 처리 → Reviewer 검증 → 완료 (2단계) - tasks 모드: 기존대로 full pipeline (5단계) - 대화 히스토리 embed 내용 포함 (clarify 맥락 유지)
This commit is contained in:
@@ -382,12 +382,51 @@ async def _handle_task(message: discord.Message, text: str, ws):
|
||||
)
|
||||
pipeline.setup()
|
||||
|
||||
# 1. Plan
|
||||
embed.title = "🔍 작업 분해 중..."
|
||||
# 1. Plan (direct 모드면 Planner가 직접 처리)
|
||||
embed.title = "🔍 분석 중..."
|
||||
embed.color = 0xF39C12
|
||||
await status_msg.edit(embed=embed)
|
||||
|
||||
plan = await pipeline.plan(text)
|
||||
|
||||
# ── Direct 모드: Planner가 직접 처리 완료 ──
|
||||
is_direct = plan.get("direct", False)
|
||||
if isinstance(is_direct, str):
|
||||
is_direct = is_direct.lower() in ("true", "yes")
|
||||
|
||||
if is_direct:
|
||||
result_text = plan.get("result", plan.get("summary", "완료"))
|
||||
direct_embed = discord.Embed(
|
||||
title="✅ " + plan.get("summary", "처리 완료"),
|
||||
description=result_text[:2000],
|
||||
color=0x2ECC71,
|
||||
)
|
||||
await safe_send_embed(message.channel, direct_embed)
|
||||
|
||||
# Reviewer 검증
|
||||
review_embed = discord.Embed(
|
||||
title="🔍 리뷰어 검토 중...",
|
||||
color=0xF39C12,
|
||||
)
|
||||
review_msg = await message.channel.send(embed=review_embed)
|
||||
|
||||
direct_tasks = [{"title": plan.get("summary", "직접 처리"), "description": result_text}]
|
||||
review = await pipeline.batch_review(direct_tasks, [result_text])
|
||||
|
||||
passed = review.get("passed", True)
|
||||
if isinstance(passed, str):
|
||||
passed = passed.lower() in ("true", "yes", "pass")
|
||||
|
||||
review_embed.title = f"{'✅' if passed else '⚠️'} 리뷰 결과"
|
||||
review_embed.description = review.get("summary", str(review))[:500]
|
||||
review_embed.color = 0x2ECC71 if passed else 0xE74C3C
|
||||
review_embed.set_footer(text=f"ID: {task_id} | {ws.name} | direct")
|
||||
await review_msg.edit(embed=review_embed)
|
||||
|
||||
pipeline.docs.record_session(text, {"summary": result_text}, plan)
|
||||
return
|
||||
|
||||
# ── Tasks 모드: Coder에게 분배 ──
|
||||
tasks = plan.get("tasks", [])
|
||||
|
||||
if tasks:
|
||||
|
||||
Reference in New Issue
Block a user