| name | consensus-review |
| description | Review Korean/English documents for defects by running N=3 independent LLM reviewers as parallel subagents, then aggregate findings with consensus-tier labels (๐ด high / ๐ก medium / โช low). Use when the user asks to ๋ฆฌ๋ทฐํด์ค, ๋ฌธ์ ๊ฒํ , ๋์น ๊ฒ ์๋์ง ํ์ธ, ๊ธฐ๋ฅ์ ์์ ๋ฆฌ๋ทฐ, ์๊ตฌ์ฌํญ ๊ฒํ , ์ฌ์
๊ณํ์ ๊ฒํ , ๊ตฌํ๊ณํ์ ๊ฒํ , review a document, find defects, audit a spec, check for issues in a PRD / RFC / NDA / requirements / architecture / implementation plan. Trigger for filenames like requirements.md, spec.md, prd.md, design.md, architecture.md. NOT for: simple typo/grammar fixes, translation proofreading, documents under 500 words, ๊ฐ๋ฒผ์ด ํธ์ง ์์ฒญ. The skill increases recall (catches more defects than a single reviewer) and provides tier-based priority for human review. |
Consensus Review
N๋ช
์ ๋
๋ฆฝ ์๋ธ์์ด์ ํธ ๋ฆฌ๋ทฐ์ด๋ฅผ ๋ณ๋ ฌ ์คํํด ๋ฌธ์ ๊ฒฐํจ์ ํ์งํ๊ณ ๐ด/๐ก/โช Tier๋ก ๋ถ๋ฅํฉ๋๋ค.
์คํ ๋จ๊ณ
Step 1. ๋ฌธ์ ์ค๋น
- PROJECT_DIR ๊ฒฐ์ (๋ชจ๋ ์ฐ์ถ๋ฌผ์ ๊ธฐ์ค ๋๋ ํ ๋ฆฌ):
- ์
๋ ฅ์ด ํ์ผ ๊ฒฝ๋ก๋ฉด โ
PROJECT_DIR = dirname(document_path) (ํด๋น ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ)
- ์
๋ ฅ์ด ์ธ๋ผ์ธ ํ
์คํธ๋ฉด โ
PROJECT_DIR = cwd (ํ์ฌ ์์
๋๋ ํ ๋ฆฌ)
- ๋ฌธ์ ๋ก๋:
- ํ์ผ ๊ฒฝ๋ก๋ฉด ๊ทธ๋๋ก ์ฌ์ฉ.
- ์ธ๋ผ์ธ ํ
์คํธ๋ฉด 500 ๋จ์ด / 2KB ๋ฏธ๋ง์ผ ๋๋ง ๊ทธ๋๋ก, ์ด๊ณผ ์
{PROJECT_DIR}/.consensus-review-output/input-{YYYYMMDD-HHMMSS}.md๋ก ์ ์ฅ ํ ๊ฒฝ๋ก ์ฌ์ฉ.
{language}: ๋ฌธ์ ์ ๋ฐ์ด ํ๊ธ ๋ฌธ์ โฅ50%๋ฉด "ko", ์๋๋ฉด "en".
{doc_type_hint}: ํ์ผ๋ช
์ prd|spec|requirements|nda|rfc|architecture ๋งค์น ๋๋ ๋ณธ๋ฌธ ์ฒซ 200์์์ ์ง์ ๋งค์น๋๋ ํค์๋ โ ํด๋น ์ ํ. ๋งค์น ์์ผ๋ฉด "general".
์์: requirements.md โ "requirements"; ๋ณธ๋ฌธ์ "1์กฐ(๋ชฉ์ )", "๋น๋ฐ์ ์ง" โ "NDA".
๐ ์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ธ๊ฐ: /tmp๋ ์๋๋ฐ์ค/์ปจํ
์ด๋ ํ๊ฒฝ์์ ์๋ธ์์ด์ ํธ๊ฐ ์ ๊ทผ ๋ถ๊ฐํ ์ ์๊ณ , ์ธ์
์ข
๋ฃ ์ ๋ ์๊ฐ๋๋ค. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ๋ฉด (1) ๊ถํ ์ด์ ํํผ, (2) ์ค๊ฐ ์ฐ์ถ๋ฌผ ์ฌํ์ธ/๋๋ฒ๊น
๊ฐ๋ฅ, (3) ๋ฆฌ๋ทฐ ๋์ ๋ฌธ์์ ๊ฐ์ ๊ณต๊ฐ์ ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. .์ผ๋ก ์์ํ๋ ์จ๊น ํด๋๋ผ ์ผ๋ฐ ํ์ผ ํ์์ ๋ฐฉํดํ์ง ์์ต๋๋ค. .gitignore์ ์ถ๊ฐํ ์ง๋ ์ฌ์ฉ์ ํ๋จ์ ๋งก๊น๋๋ค โ ์คํฌ์ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค.
Step 2. N๋ช
๋
๋ฆฝ ๋ฆฌ๋ทฐ์ด ์คํ (์๋ธ์์ด์ ํธ ๋ณ๋ ฌ ํธ์ถ)
๐จ === CRITICAL: INDEPENDENCE MODE โ REVIEWERS MUST NOT SEE EACH OTHER ===
You are STRICTLY PROHIBITED from:
- ํ ๋ฆฌ๋ทฐ์ด์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ฆฌ๋ทฐ์ด์๊ฒ ์ ๋ฌ
- ๋ฆฌ๋ทฐ ํ๋กฌํํธ์ ๋ค๋ฅธ ๋ฆฌ๋ทฐ์ด๋ฅผ ์ธ๊ธ
- ๋ฆฌ๋ทฐ์ด ํธ์ถ์ ์ง๋ ฌํํ์ฌ ๋ค ๋ฆฌ๋ทฐ์ด๊ฐ ์ ๋ฆฌ๋ทฐ์ด ์ํ๋ฅผ ๊ด์ฐฐ
- ์๋ธ์์ด์ ํธ๊ฐ ๋ค๋ฅธ ๋ฆฌ๋ทฐ์ด์ output ํ์ผ / ์ด์ ์ธ์
๋ฆฌ๋ทฐ ํ์ผ์ ์ฝ๊ฒ ํ์ฉ
๋
๋ฆฝ์ฑ์ด ์ด ์คํฌ์ ์กด์ฌ ์ด์ ์
๋๋ค. ์๋ฐ ์ ์ด ์คํฌ์ ํต์ฌ ํจ๊ณผ(ํ๋ฅ ์ ์ปค๋ฒ๋ฆฌ์ง๋ก +6.5~30.6%p ์ฌํ์จ ํฅ์)๊ฐ ์ฌ๋ผ์ง๋๋ค.
2-1. ์ธ์
๋๋ ํ ๋ฆฌ ์์ฑ (๋ฉ์ธ์ด ๋จผ์ )
๋ฆฌ๋ทฐ์ด ์ถ๋ ฅ์ด ์๋ก ๊ฒฉ๋ฆฌ๋๋๋ก ์ธ์
๋ง๋ค ๊ณ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
SESSION_ID ์์ฑ: {YYYYMMDD-HHMMSS}-{4์ ๋์} ํํ. ์: 20260428-022810-a3f7
- ๋ฉ์ธ์ด
mkdir -p {PROJECT_DIR}/.consensus-review-output/{SESSION_ID}/ ์คํ (Step 1์์ ๊ฒฐ์ ํ PROJECT_DIR)
- ๊ฐ ์๋ธ์์ด์ ํธ์ output ๊ฒฝ๋ก:
{PROJECT_DIR}/.consensus-review-output/{SESSION_ID}/reviewer-{N}.md (N=1,2,3)
์ธ์
์ฐ์ถ๋ฌผ์ ์๋ ์ ๋ฆฌํ์ง ์์ต๋๋ค. ์ด์ ์ธ์
๋๋ ํ ๋ฆฌ๋ ๊ทธ๋๋ก ๋จ์ ๋๋ฒ๊น
/์ฌํ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ํ๋ฉด ์๋์ผ๋ก ์ญ์ .
2-2. ์ ํ์ผ ๊ธฐ๋ฐ์ธ๊ฐ (raw ์๋ฌธ ๋ณด์กด)
์๋ธ์์ด์ ํธ๊ฐ raw ๋ฆฌ๋ทฐ๋ฅผ ๋ฉ์์ง๋ก returnํ๋ฉด Main ์ธ์
์ด ๊ทธ ๋ด์ฉ์ ์๋์ผ๋ก ์์ฝ/์์ถํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ: aggregator๊ฐ ๋ฐ๋ ๊ฑด "์์ฝ๋ ๊ฒ"์ด์ง ๋ฆฌ๋ทฐ์ด ์๋ฌธ์ด ์๋๊ฒ ๋์ด Preservation Rules๊ฐ ๊นจ์ง๋๋ค.
ํด๋ฒ:
- ์๋ธ์์ด์ ํธ๋ ๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ์ ์ฅ (
write_file ๋๋ Write)
- Main์ ํ์ผ์ ์ง์
read_file โ ๋ฌธ์ ๊ทธ๋๋ก ์ฝ์, ์์ฝ ๊ฐ์
์์
- ์๋ธ์์ด์ ํธ return ๋ฉ์์ง๋ ํ ๋จ์ด:
"done" (raw ๋ณต์ฌ ๊ธ์ง)
2-3. ๊ฐ ์๋ธ์์ด์ ํธ ํธ์ถ ์ ์ ๋ฌํ ๋ณ์
{document_path} โ ์๋ณธ ๋ฌธ์์ ํ์ผ ๊ฒฝ๋ก (๊ธฐ๋ณธ). 500 ๋จ์ด / 2KB ๋ฏธ๋ง ์ธ๋ผ์ธ ํ
์คํธ๋ง ์์ธ.
{output_path} โ ์ด ๋ฆฌ๋ทฐ์ด๊ฐ ์ ์ฅํ ํ์ผ. ์: {PROJECT_DIR}/.consensus-review-output/20260428-022810-a3f7/reviewer-1.md
{language} โ "ko" ๋๋ "en"
{doc_type_hint} โ "์ฌ์
๊ณํ์", "๊ธฐ๋ฅ์ ์์", "๊ตฌํ๊ณํ์", "architecture", "general" ์ค ํ๋
์๋ธ์์ด์ ํธ 3๋ช
์ ๋์์ ํธ์ถ (๋ณ๋ ฌ). ๊ฐ์ ๋ค๋ฅธ {output_path}๋ฅผ ๋ฐ์.
2-4. ์๋ธ์์ด์ ํธ๊ฐ ๋ฐ๋์ ๋ฐ๋ผ์ผ ํ ๊ฒ (review.md์๋ ๋ช
์)
{document_path}๋ฅผ ์ฝ๋๋ค (ํ์ผ ๊ฒฝ๋ก๋ฉด read_file, ์์ ์ธ๋ผ์ธ ํ
์คํธ๋ฉด ์ง์ ).
- ๋ฆฌ๋ทฐ ์ํ (ISS-N ํฌ๋งท).
- ๊ฒฐ๊ณผ ์ ์ฒด๋ฅผ
{output_path}์ write_file๋ก ์ ์ฅ.
- Main์ return:
"done" ํ ๋จ์ด๋ง. Raw ๋ฆฌ๋ทฐ ๋ด์ฉ ์ ๋ return ๋ฉ์์ง์ ํฌํจ ๊ธ์ง.
2-5. ์๋ธ์์ด์ ํธ๊ฐ ์ ๋ ํ์ง ๋ง ๊ฒ (๋
๋ฆฝ์ฑ ์ ์ง)
- โ
.consensus-review-output/ ํ์์ ๋ค๋ฅธ ๋ฆฌ๋ทฐ์ด ํ์ผ ์ฝ๊ธฐ (๊ฐ์ ์ธ์
์ reviewer-2.md๋ฅผ reviewer-1์ด ์ฝ๋ ๊ฒ ๋ฑ)
- โ ์ด์ ์ธ์
(
.consensus-review-output/๋ค๋ฅธ-SESSION_ID/) ํ์ผ ์ฐธ์กฐ
- โ Main ๋ํ ํ์คํ ๋ฆฌ์์ "์ด์ ๋ฆฌ๋ทฐ" ์ธ๊ธ ์ฐธ์กฐ
- โ
consensus-review-*.md ํจํด์ ๊ธฐ์กด ๊ฒฐ๊ณผ ํ์ผ ์ฐธ์กฐ (๊ณผ๊ฑฐ ์คํ ๊ฒฐ๊ณผ)
๋
๋ฆฝ ๋ฆฌ๋ทฐ์ด๋ ์๋ณธ ๋ฌธ์์ ์๊ธฐ ํ๋จ๋ง์ผ๋ก ์์
ํฉ๋๋ค.
2-6. ๋ฌธ์ ์ ๋ฌ ๋ฐฉ์ โ ํ์ผ ๊ฒฝ๋ก ์ฐ์ (๊ธฐ๋ณธ๊ฐ)
๊ธฐ๋ณธ ๊ท์น: ํญ์ ํ์ผ ๊ฒฝ๋ก๋ง ์ ๋ฌํ์ธ์. ์๋ธ์์ด์ ํธ๊ฐ read_file (๋๋ Read) ๋๊ตฌ๋ก ์ง์ ํ์ผ์ ์ฝ์ต๋๋ค.
์ด์ :
- ๋ฉ์ธ ์์ด์ ํธ๊ฐ 3๊ฐ ์๋ธ์์ด์ ํธ๋ฅผ ๋ณ๋ ฌ๋ก ํธ์ถํ ๋, tool call JSON 3๊ฐ์ ๋ฌธ์ ์ ๋ฌธ์ด 3๋ฒ ์ค๋ณต ์์ฑ๋ฉ๋๋ค. ํฐ ๋ฌธ์๋ฉด ์ถ๋ ฅ ํ ํฐ ํ๋๋ฅผ ๋๊ฒจ
InvalidJson/truncation ์๋ฌ๊ฐ ๋ฉ๋๋ค (2026-04-28 ์ค์ ์ฌ๊ณ ).
- ํ์ผ ๊ฒฝ๋ก๋ ์์ญ ๋ฐ์ดํธ, ๋ฌธ์ ์ ๋ฌธ์ KB~MB. ๊ฒฝ๋ก ์ ๋ฌ์ด ํ ํฐ์ 1,000๋ฐฐ ์ด์ ์ ์ฝํฉ๋๋ค.
์ธ๋ผ์ธ ์ ๋ฌ์ด ํ์ฉ๋๋ ์์ธ:
- ์ฌ์ฉ์๊ฐ ์ธ๋ผ์ธ ํ
์คํธ(ํ์ผ์ด ์๋ ์ฑํ
๋ถ์ฌ๋ฃ๊ธฐ)๋ก ๋ฌธ์๋ฅผ ์ ๊ณตํ๊ณ ,
- AND ๋ฌธ์๊ฐ 500 ๋จ์ด / 2KB ๋ฏธ๋ง์ผ ๋.
์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ์ง ์์ผ๋ฉด ๋ฐ๋์ ํ์ผ๋ก ๋จผ์ ์ ์ฅํ ๋ค ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํ์ธ์. {PROJECT_DIR}/.consensus-review-output/input-{YYYYMMDD-HHMMSS}.md ๊ฒฝ๋ก ์ฌ์ฉ (Step 1).
โ ๏ธ ์ค์: ์ธ๋ผ์ธ ํ
์คํธ ์ ์ฅ ์ document_path๋ ํจ๊ป ์
๋ฐ์ดํธ
์ธ๋ผ์ธ ํ
์คํธ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๋ค๋ฉด, ์๋ธ์์ด์ ํธ์ ์ ๋ฌํ๋ {document_path}๋ ์ ์ฅ๋ ํ์ผ ๊ฒฝ๋ก({PROJECT_DIR}/.consensus-review-output/input-*.md)์ฌ์ผ ํฉ๋๋ค. ์๋ณธ ํ
์คํธ๋ฅผ ๊ทธ๋๋ก document_path์ ๋ฃ์ผ๋ฉด ๋ณ๋ ฌ ํธ์ถ ์ ํ ํฐ์ด N๋ฐฐ๋ก ๋ถํ์ด InvalidJson์ด ๋ฉ๋๋ค.
2-7. ๊ธฐํ ์ฃผ์
- ๋ชจ๋ธ์ ์ฌ์ฉ์์ ํ์ฌ ์ค์ ์ ๋ฐ๋ฆ
๋๋ค (์คํฌ์์ ์ง์ ์ ํจ). ์ต์ ์๊ตฌ์น: context window โฅ 200K. ๊ทธ ๋ฏธ๋ง ๋ชจ๋ธ์ด ๊ฐ์ง๋๋ฉด ์ฌ์ฉ์์๊ฒ ์๋ฆฌ๊ณ ์ค๋จ.
- temperature๋ ์๋ธ์์ด์ ํธ ๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ. ๋ฒค์น๋งํฌ(6 LLM ร 3 benchmark) ๊ธฐ์ค temperature=0.7~1.0 ๊ตฌ๊ฐ์์ ์ฌํ์จ์ด ๋จ์กฐ ์ฆ๊ฐ. 0.3 ๋ฏธ๋ง์ผ๋ก ๋ฎ์ถ์ง ๋ง์ธ์ โ ๋
๋ฆฝ์ฑ์ด ๊นจ์ง๋๋ค.
2-8. ์ฐจ๋จ ์ํฉ ๋ถ๊ธฐ (Blocked Approach)
์คํจ/ํ๊ณ ์ํฉ์์ ์์๋ก ๋ํํ์ง ๋ง๊ณ ์๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ฅด์ธ์:
- ๋ฌธ์ > 60K ํ ํฐ: ์ฒญํฌ ๋ถํ ์ ์์ง ๋ฏธ๊ตฌํ. ์ฌ์ฉ์์๊ฒ ์๋ฆฌ๊ณ ์ค๋จ: "๋ฌธ์๊ฐ 60K ํ ํฐ์ ์ด๊ณผํฉ๋๋ค(X ํ ํฐ). ํ์ฌ ๋ฒ์ ์ ์ฒญํฌ ๋ถํ ์ ์ง์ํ์ง ์์ต๋๋ค. ์น์
์ ๋๋ ์ ์ฃผ์๊ฒ ์ต๋๊น?" ์์๋ก ์๋ฅด๊ฑฐ๋ ์์ฝํ์ง ๋ง์ธ์.
.consensus-review-output/ ์ ์ฅ ์คํจ (๋์คํฌ ํ/๊ถํ/์ฝ๊ธฐ์ ์ฉ ๋๋ ํ ๋ฆฌ): ์ฌ์ฉ์์๊ฒ ์์ธ๊ณผ ํจ๊ป ๋ณด๊ณ ํ๊ณ ์ค๋จ. ์: "PROJECT_DIR({dir})์ ์ฐ๊ธฐ ๊ถํ์ด ์์ต๋๋ค. ์ฐ๊ธฐ ๊ฐ๋ฅํ ๋ค๋ฅธ ๊ฒฝ๋ก์์ ์คํํ๊ฑฐ๋ ๊ถํ์ ์กฐ์ ํด์ฃผ์ธ์." /tmp ๊ฐ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์๋ fallbackํ์ง ๋ง์ธ์ โ ์ ๊ทผ ์ด์๋ ๋ช
์์ ์ผ๋ก ๋๋ฌ๋ด์ผ ํฉ๋๋ค. ์ธ๋ผ์ธ ์ ๋ฌ๋ก ์ฐํํ์ง๋ ๋ง์ธ์ โ ํ ํฐ ํ๋๋ฅผ ๋๊ฒจ InvalidJson์ด ๋ฉ๋๋ค.
- ์๋ธ์์ด์ ํธ 1๋ช
write_file ์คํจ ๋๋ ํ์์์: ๋จ์ 2๋ช
์ผ๋ก ์งํ. ์ต์ข
๋ฆฌํฌํธ ์๋จ์ "Reviewer X ์คํจ โ N=2๋ก ์ง๊ณ๋จ"์ ๋ช
์. ์คํจํ ๋ฆฌ๋ทฐ์ด๋ฅผ ๊ฐ์ ํ๋กฌํํธ๋ก ์ฌ์๋ํ์ง ๋ง์ธ์.
- ์๋ธ์์ด์ ํธ๊ฐ "done" ๋์ raw ๋ด์ฉ์ returnํ ๊ฒฝ์ฐ: ํด๋น ๋ด์ฉ ๋ฌด์ํ๊ณ ํ์ผ์
read_file๋ก ์ง์ ์ฝ์ผ์ธ์. ์๋ธ์์ด์ ํธ ์ถ๋ ฅ์ด ์๋๋ผ ํ์ผ์ด ์ ๋ณธ.
Step 3. ์ง๊ณ (๋ณธ์ธ ์์ด์ ํธ๊ฐ ์ง์ ์ํ)
๐จ REMEMBER: By Step 3 the reviewers have finished independently. ๋ฉ์ธ ์์ด์ ํธ(๋น์ )๋ง์ด ์ธ ๊ฐ์ ์ถ๋ ฅ์ ๋ชจ๋ ๋ณผ ์ ์์ต๋๋ค. ํตํฉํ ์ถ๋ ฅ์ ์ด๋ค ๋ฆฌ๋ทฐ์ด์๊ฒ๋ "refinement"์ฉ์ผ๋ก ๋๋๋ ค ๋ณด๋ด์ง ๋ง์ธ์.
3-1. 3๊ฐ ๋ฆฌ๋ทฐ์ด ํ์ผ read
์๋ธ์์ด์ ํธ 3๋ช
์ด done์ returnํ ํ:
read_file {PROJECT_DIR}/.consensus-review-output/{SESSION_ID}/reviewer-1.md โ raw_1
read_file {PROJECT_DIR}/.consensus-review-output/{SESSION_ID}/reviewer-2.md โ raw_2
read_file {PROJECT_DIR}/.consensus-review-output/{SESSION_ID}/reviewer-3.md โ raw_3
๊ฐ ํ์ผ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ: Step 2-8์ "์๋ธ์์ด์ ํธ 1๋ช
์คํจ" ๋ถ๊ธฐ๋ฅผ ๋ฐ๋ฆ.
3-2. {reviews} ๋ณ์ ๊ตฌ์ฑ
3๊ฐ ํ์ผ์ raw๋ฅผ ๋ค์ ํ์์ผ๋ก ์ด์ด๋ถ์:
=== Reviewer 1 ===
{raw_1}
=== Reviewer 2 ===
{raw_2}
=== Reviewer 3 ===
{raw_3}
3-3. prompts/aggregate.md ์คํ (Main LLM 1ํ ํธ์ถ)
prompts/aggregate.md ํ๋กฌํํธ์ ๋ค์ ๋ณ์ ์นํ:
{n_agents} โ 3 (๋๋ ์ค์ ์ฑ๊ณตํ ๋ฆฌ๋ทฐ์ด ์)
{document} โ ์๋ณธ ๋ฌธ์ ๊ฒฝ๋ก ๋๋ ์ ๋ฌธ
{reviews} โ ์ 3-2์ ์ด์ด๋ถ์ธ ํ
์คํธ
์ง๊ณ ๊ฒฐ๊ณผ๋ ๐ด/๐ก/โช Tier๊ฐ ๋ถ์ ISS-1, ISS-2 โฆ ํํ์ ํตํฉ ๋ชฉ๋ก์
๋๋ค.
๐จ ์ค์ โ ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ assistant_text๋ก ์ถ๋ ฅํ์ง ๋ง์ธ์.
์ง๊ณ ๊ฒฐ๊ณผ(์ ์ฒด ์ด์ ๋ชฉ๋ก)๋ ๋ด๋ถ ์ฐ์ถ๋ฌผ์
๋๋ค. ์ฑํ
์๋ต ํ
์คํธ๋ก ์ฐ์ง ๋ง๊ณ , ๊ณง๋ฐ๋ก Step 4a์ write ํด ํธ์ถ์ content ์ธ์๋ก ์ ๋ฌํ์ธ์.
์ด๋ฅผ ์ด๊ธฐ๋ฉด ๊ฐ์ ๋ฆฌํฌํธ๊ฐ ์๋ต ํ
์คํธ์ write.content์ ์ด์ค ์ถ๋ ฅ๋์ด max_output_tokens๋ฅผ ๋๊ธฐ๊ณ InvalidJson์ผ๋ก ์๋ฆฝ๋๋ค (2026-04-28 ์ค์ ์ฌ๊ณ ).
Step 4. ์ฌ์ฉ์์๊ฒ ๋ณด๊ณ + ํ์ผ ์ ์ฅ
examples/output_template.md์ ํ์์ผ๋ก ์ต์ข
Markdown ๋ฆฌํฌํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ์ผ ์ ์ฅ์ด ๊ธฐ๋ณธ์ด๊ณ , ์ฑํ
์ถ๋ ฅ์ ์์ฝ๋ง ํฉ๋๋ค.
๐ก HTML ๋ฆฌํฌํธ ๋ชจ๋ (์ต์
): ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก HTML ์ถ๋ ฅ์ ์์ฒญํ๋ฉด("HTML๋ก", "์ธํฐ๋ํฐ๋ธ๋ก", "๋จ์ผ HTML ํ์ผ") examples/output_template.html์ ๋ฒ ์ด์ค๋ก .html ํ์ผ์ ์์ฑํ์ธ์. ์์ธํ ๋ถ๊ธฐ ๊ท์น์ examples/output_template.md์ C ์น์
์ ์ฐธ๊ณ . ๋ช
์ ์์ฒญ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ .md๋ก ์งํ. ์๊ฐ: Simon Willison, "The Unreasonable Effectiveness of HTML" (2026-05-08).
๐ ๋ถ๋ณ์ (Invariant) โ ๋ฐ๋์ ์ง์ผ์ผ ํ๋ ๊ท์น
์ ์ฒด ๋ฆฌํฌํธ ๋ณธ๋ฌธ์ ํ ์๋ต์ ์ค์ง ํ ๊ณณ์๋ง ๋ฑ์ฅํฉ๋๋ค โ write ํด์ content ์ธ์์
๋๋ค.
write.content โ ์ ์ฒด ๋ฆฌํฌํธ Markdown ์ ๋ฌธ (โ
์ฌ๊ธฐ ํ ๋ฒ)
assistant_text (์ฑํ
) โ Step 4b์ ์งง์ ์์ฝ ํ
ํ๋ฆฟ๋ง (โ
์์ฝ๋ง)
์ด ๋ถ๋ณ์์ ์งํค๋ฉด ์ถ๋ ฅ ํ ํฐ์ด ์ ๋ฐ์ผ๋ก ์ค์ด ๋ํ ๋ฆฌํฌํธ์์๋ JSON์ด ์๋ฆฌ์ง ์์ต๋๋ค.
์์ฃผ ํ๋ ์ค์ โ ์ด๋ ๊ฒ ํ์ง ๋ง์ธ์:
- โ assistant_text์ "์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋จผ์ ๋ณด์ฌ์ฃผ๊ณ " ์ด์ด์ write ํธ์ถ โ ๋ณธ๋ฌธ์ด ๋ ๋ฒ ๋ฑ์ฅ
- โ Step 4b์ ์์ฝ์ ์ด์ ์ ์ฒด ์์ธ(Quote, Reasoning)๋ฅผ ํฌํจ โ TOP 3 ์ ๋ชฉ๋ง
- โ "ํ์ผ์ ์ ์ฅ ์์ ์
๋๋ค" ๊ฐ์ ์ ์ธ ํ ๋ณธ๋ฌธ์ ์ฑํ
์ ๋จผ์ ์ฐ๊ธฐ โ write๊ฐ ๋จผ์ ํธ์ถ๋ผ์ผ ํจ
์์:
- ๋จผ์
write ํด ํธ์ถ โ content์ ์ ์ฒด ๋ฆฌํฌํธ Markdown
- ๊ฐ์ ์๋ต์
assistant_text์๋ Step 4b์ ์งง์ ์์ฝ ํ
ํ๋ฆฟ๋ง
- Step 3 ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ค๊ฐ์ ์ฑํ
์ ๋คํํ๋ ํ๋ ๊ธ์ง
4a. ํ์ผ๋ก ์ ์ฒด ๋ฆฌํฌํธ ์ ์ฅ (๊ธฐ๋ณธ ๋์)
์ด ๋จ๊ณ์์ write ํด์ ํธ์ถํฉ๋๋ค. (๋ถ๋ณ์ ์ฌํ์ธ: write.content์๋ง ์ ์ฒด ๋ณธ๋ฌธ, assistant_text์๋ Step 4b ์์ฝ๋ง.)
๋ฆฌ๋ทฐ ๋์ ๋ฌธ์์ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ๋ค์ ๊ท์น์ผ๋ก ์ ์ฅ:
consensus-review-{์๋ณธํ์ผ๋ช
}-{YYYYMMDD-HHMMSS}.md
{์๋ณธํ์ผ๋ช
}: ํ์ฅ์ ์ ์ธ (์: requirements.md โ requirements)
{YYYYMMDD-HHMMSS}: ์คํ ์์ ๊ธฐ์ค ์ด ๋จ์ ํ์์คํฌํ (๊ฐ์ ์ด์ ๊ฒน์น ํ๋ฅ โ 0)
- ์์:
consensus-review-requirements-20260426-152410.md
HTML ๋ชจ๋์ผ ๊ฒฝ์ฐ ๋์ผ ๊ท์น์ผ๋ก ํ์ฅ์๋ง .html: consensus-review-requirements-20260426-152410.html. ์ฌ์ฉ์๊ฐ "๋ ๋ค"๋ผ๊ณ ํ๋ฉด ๊ฐ์ ํ์์คํฌํ๋ก .md + .html ๋ ๊ฐ ์์ฑ. ์์ธํ HTML ๋ชจ๋ ๊ท์น์ examples/output_template.md C ์น์
.
๊ฐ์ ๋ฌธ์๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฆฌ๋ทฐํด๋ ํ์์คํฌํ๊ฐ ๋ฌ๋ผ ๋ฎ์ด์ฐ์ง ์์ต๋๋ค. ๋ฆฌ๋ทฐ ์ด๋ ฅ์ ์๋ ๋ณด์กดํฉ๋๋ค.
์ ์ฅ ํ ๊ฒ์ฆ: write ํด ๋ฐํ๊ฐ์ ํ์ธํ ๋ค Step 4b ์์ฝ์ ์ถ๋ ฅํ์ธ์. ์คํจํ๋ฉด ์ฐจ๋จ ์ํฉ ๋ถ๊ธฐ์ .consensus-review-output/ ์ ์ฅ ์คํจ ํญ๋ชฉ์ ๋ฐ๋ฅด์ธ์ โ ๋ณธ๋ฌธ์ ์ฑํ
์ ๋์ ๋คํํ์ง ๋ง์ธ์.
๐ ์ต์ข
๋ฆฌํฌํธ๋ ์๋ณธ ๋ฌธ์ ์, ์ค๊ฐ ์ฐ์ถ๋ฌผ์ .consensus-review-output/ ์
- ์ต์ข
๋ฆฌํฌํธ(
consensus-review-{์๋ณธ}-{timestamp}.md): ์๋ณธ ๋ฌธ์์ ๊ฐ์ ๋๋ ํ ๋ฆฌ โ ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ๋ฐ๊ฒฌ.
- ์ค๊ฐ ์ฐ์ถ๋ฌผ(reviewer-1.md, reviewer-2.md, reviewer-3.md, input-*.md):
.consensus-review-output/{SESSION_ID}/ โ ๊ฐ์ถฐ์ ธ ์๊ณ ๋๋ฒ๊น
/์ฌํ์ฉ.
4b. ์ฑํ
์ ์์ฝ๋ง ์ถ๋ ฅ (์์ธ ๋คํ ๊ธ์ง)
ํ์ผ ์ ์ฅ ํ ์ฑํ
์๋ ์งง์ ์์ฝ๋ง ์ถ๋ ฅํ์ธ์. ๊ธด Quote๋ Reasoning ์ ์ฒด๋ฅผ ์ฌ์ถ๋ ฅํ๋ฉด ๋๋ฆฌ๊ณ ํ ํฐ์ ๋ญ๋นํฉ๋๋ค.
์ฑํ
์ ์ถ๋ ฅํ ๊ฒ:
โ
Consensus Review ์๋ฃ
๐ ์ ์ฅ ๊ฒฝ๋ก: ./consensus-review-{์๋ณธ}-{YYYYMMDD-HHMMSS}.md
๐ ์์ฝ
- ์ด ์ด์: N๊ฐ (๐ด X, ๐ก Y, โช Z)
- ๋ฆฌ๋ทฐ์ด๋ณ ๋ฐ๊ฒฌ ์: R1 a๊ฑด / R2 b๊ฑด / R3 c๊ฑด
๐ด High Confidence TOP 3 (์ ๋ชฉ๋ง):
1. ISS-1: {title}
2. ISS-2: {title}
3. ISS-3: {title}
๐ก ์ ์ฒด ์์ธ๋ ์ ์ ์ฅ ๊ฒฝ๋ก์ ํ์ผ์ ์ด์ด๋ณด์ธ์.
"ISS-N ์์ธํ" ๋ผ๊ณ ํ๋ฉด ํน์ ์ด์๋ง ํผ์ณ๋๋ฆด ์ ์์ต๋๋ค.
๊ธ์ง:
- ๐ด/๐ก/โช ์ ์ด์์ Quote์ Reasoning์ ์ฑํ
์ ๋ค ์ถ๋ ฅํ๋ ๊ฒ โ
- ํ์ผ ๋ด์ฉ์ ๊ทธ๋๋ก ๋ณต๋ถํ๋ ๊ฒ โ
ํ์ฉ:
- ์ฌ์ฉ์๊ฐ "ISS-5 ์์ธํ ๋ณด์ฌ์ค"๋ผ๊ณ ๋ช
์์ ์ผ๋ก ์์ฒญํ์ ๋ ํด๋น ์ด์๋ง ํ์ผ์์ ์ฝ์ด ๋ณด์ฌ์ฃผ๊ธฐ.
- ์ฌ์ฉ์๊ฐ "์ ์ฒด ๋ค ๋ณด์ฌ์ค"๋ผ๊ณ ํ๋ฉด ๊ทธ๋ ํ์ผ ๋ด์ฉ ์ถ๋ ฅ.
๊ธฐ๋ณธ ๋์์ **"ํ์ผ ์ ์ฅ + ์์ฝ + ๊ฒฝ๋ก ์๋ด"**์
๋๋ค. ์ฌ์ฉ์๊ฐ ํฐ๋ฏธ๋์์ ํ์ผ์ ์ด์ด ์ฝ๋ ๊ฒ์ด ํจ์ฌ ๋น ๋ฆ
๋๋ค.
์ค์ ๋ณ๊ฒฝ (์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด)
- N ๋ณ๊ฒฝ: "๋ฆฌ๋ทฐ์ด 5๋ช
์ผ๋ก ํด์ค" โ N=5. "2๋ช
๋ง" โ N=2 (๋น๊ถ์ฅ). ๊ธฐ๋ณธ์ 3.
- ์ธ์ด ๊ฐ์ : "ํ๊ตญ์ด๋ก ์ถ๋ ฅํด์ค" โ ์ต์ข
๋ฆฌํฌํธ๋ฅผ ํ๊ตญ์ด๋ก. ์๋ธ์์ด์ ํธ ํ๋กฌํํธ๋ ์๋ณธ ์ ์ง.
- ํน์ ์ธก๋ฉด๋ง: "๋ณด์ ์ด์๋ง ๋ด์ค" โ ๋ฆฌ๋ทฐ ํ๋กฌํํธ์ ์ง์ ์ถ๊ฐ.