refactor: 전체 프롬프트 점검 및 수정
- reviewer.md: 에이전트 모드에 맞게 전면 개편 - 실제 파일 기반 리뷰로 변경 - 명확한 통과/반려 기준 (critical만 반려, 스타일은 통과) - '의심이 되면 통과시키세요' 원칙 - coder.md: 완성도 요구사항 추가 - 빈 폴더(새 프로젝트) 대응 안내 - TODO/뼈대 금지 — 완성된 코드 요구 - 파일 간 참조 확인 지시 - summarizer.md: 입력 설명을 에이전트 모드에 맞게 수정 - router.md: 삭제 (unified.md가 대체)
This commit is contained in:
@@ -352,12 +352,43 @@ async def _handle_task(message: discord.Message, text: str, ws):
|
||||
)
|
||||
return
|
||||
|
||||
# 2. Code + Review (재시도 루프)
|
||||
# 2. Code + Review (실패 시 재계획 루프)
|
||||
review = None
|
||||
code_outputs = []
|
||||
for attempt in range(1 + MAX_REVIEW_RETRIES):
|
||||
attempt_label = f" (재시도 {attempt})" if attempt > 0 else ""
|
||||
|
||||
# 재시도 시: 리뷰 피드백으로 재계획
|
||||
if attempt > 0:
|
||||
feedback = review.get("summary", str(review))
|
||||
await message.channel.send(
|
||||
embed=discord.Embed(
|
||||
title=f"🔄 재계획 {attempt}/{MAX_REVIEW_RETRIES}",
|
||||
description="리뷰 피드백을 바탕으로 다시 계획합니다.",
|
||||
color=0xF39C12,
|
||||
)
|
||||
)
|
||||
|
||||
replan_request = (
|
||||
f"## 원래 요청\n{text}\n\n"
|
||||
f"## 이전 리뷰 피드백 (반드시 반영)\n{feedback}\n\n"
|
||||
f"이전 시도가 실패했습니다. 피드백을 분석하고 태스크를 재설계하세요."
|
||||
)
|
||||
plan = await pipeline.plan(replan_request)
|
||||
tasks = plan.get("tasks", [])
|
||||
|
||||
if tasks:
|
||||
task_list = "\n".join(
|
||||
f"• {t.get('title', '?')}" for t in tasks[:10]
|
||||
)
|
||||
await message.channel.send(
|
||||
embed=discord.Embed(
|
||||
title=f"📝 재계획 결과",
|
||||
description=f"태스크 {len(tasks)}개",
|
||||
color=0x2ECC71,
|
||||
).add_field(name="태스크", value=task_list[:1000], inline=False)
|
||||
)
|
||||
|
||||
# 코딩 진행 표시
|
||||
code_embed = discord.Embed(
|
||||
title=f"⚙️ 코딩 중...{attempt_label} ({len(tasks)}개 에이전트)",
|
||||
@@ -395,21 +426,6 @@ async def _handle_task(message: discord.Message, text: str, ws):
|
||||
|
||||
if passed:
|
||||
break
|
||||
elif attempt < MAX_REVIEW_RETRIES:
|
||||
# 재시도 안내
|
||||
await message.channel.send(
|
||||
embed=discord.Embed(
|
||||
title=f"🔄 재시도 {attempt+1}/{MAX_REVIEW_RETRIES}",
|
||||
description="리뷰 피드백을 반영하여 다시 코딩합니다.",
|
||||
color=0xF39C12,
|
||||
)
|
||||
)
|
||||
feedback = review.get("summary", str(review))
|
||||
for task in tasks:
|
||||
task["review_feedback"] = (
|
||||
f"이전 시도에서 다음 리뷰 피드백을 받았습니다. "
|
||||
f"반드시 수정하세요:\n{feedback}"
|
||||
)
|
||||
|
||||
# 3. 총평
|
||||
summary = await pipeline.summarize(text, plan, code_outputs, review)
|
||||
|
||||
Reference in New Issue
Block a user