소셜 미디어에서 화제가 된 AI 에이전트 설계론을 하나하나 실기 A/B 검증하여 알아낸 '토큰 90% 절감, 품질 100%'의 황금 패턴 총집합
요약
본 기사는 AI 에이전트의 성능 최적화 방안을 실기 A/B 테스트를 통해 제시합니다. 21개 패턴 중 TOP 7은 입력 토큰 절감률과 원샷 합격률에서 압도적인 효과를 보였습니다. 특히, 전체 코드 대신 주변 파일 골격이나 실패 교훈만 주입하는 구조적 개선이 핵심입니다.
핵심 포인트
- 함정 메모(Gotchas Memory) 주입으로 콜드 스타트 시 성능을 극대화할 수 있다.
- 전체 구현 전문보다 함수 시그니처와 타입 계약 전달이 효율적이다.
- 테스트 출력은 PASS 라인과 장식을 제거하고 실패 Diff만 구조화해야 한다.
- 실패 이력은 가지치기하고 교훈(Lesson)만 남겨야 자기 모방 편향을 막는다.
- 장기 태스크는 마일스톤별 JSON 요약 및 이력 리셋이 필수적이다.
1. 임팩트 순! 토큰 절감률 & 품질 향상 랭킹 TOP 7
실기 검증을 마친 전반(全) 21개 패턴 중에서도, 특히 **'입력 토큰 절감률', '원샷 합격률(수정 반복 제로)', '버그 탐지율(뮤턴트 격파율)'**에서 압도적인 차이를 보인 TOP 7이 여기 있습니다.
| 순위 | 패턴명 (실험 ID) | 입력 토큰 절감률 | 비용 절감률 | 속도 개선 | 가장 큰 발견/효과 |
|---|---|---|---|---|---|
| 🥇 1위 | Episodic Gotchas Memory (MEMORY.md) (기사 순차 공개)( E20 : 15줄의 리포지토리 함정 메모 계승) | -95.5% (46,560 ➔ 2,078) | -83.7% | 2.21배 고속 | 매번 콜드 스타트(Cold Start) 시 2번의 함정을 거쳐 17/20에 머물렀던 과제가, 15줄의 함정 메모 주입으로 1턴 만에 20/20 합격 |
| 🥈 2위 | Tree-sitter Skeleton Context (기사 순차 공개)( E21 : 주변 파일 골격만 주입) | -94.9% (45,299 ➔ 2,290) | -82.2% | 2.30배 고속 | 의존 파일의 구현 전문(全文) (7.8만 자)을 보여주면 내부 노이즈로 인해 16/20으로 저하되지만, 함수 시그니처와 타입 계약만 전달하면 원샷 20/20 합격 |
| 🥉 3위 | CLI Test Output Token Killer (기사 순차 공개)( E16 : 테스트 출력의 구조화 JSON 압축) | -94.1% (92,385 ➔ 5,445) | -87.0% | 1.54배 고속 | pytest의 생(生) 출력 (11.7만 자)에서 PASS 라인과 ANSI 장식을 모두 제거하고 실패 Diff (1,604자)만 반환함으로써 원샷 수정 성공 |
| 4위 | Error-Trace Pruning (실패 턴 가지치기) (기사 순차 공개)( E19 : 실패 패치와 생 로그의 이력 삭제) | -93.0% (59,944 ➔ 4,210) | -80.3% | 1.57배 고속 | 실패한 코드 시도를 이력에 남기면 자기 모방 편향(Self-mimicry bias)으로 빠지게 됩니다. 1줄의 실패 교훈만 남기고 가지치기를 하면 효율성이 14.2배 향상 |
| 5위 | Progressive Tool Schema Search (기사 순차 공개)( E14 : ENABLE_TOOL_SEARCH=auto ) | -92.7% (79,773 ➔ 5,844) | -84.8% | 1.94배 고속 | 32개의 MCP 도구 정의를 매 턴 전량 투입하는 '스키마 세금(Schema Tax)'을 제거하고, 유사한 데코이 도구의 오호출도 2회 ➔ 0회로 근절 |
| 6위 | Milestone Context Compaction (기사 순차 공개)( E12 : 세이브 게임형 JSON 스테이트 압축) | -91.9% (35,869 ➔ 2,922) | -72.2% | 1.10배 고속 | 장기 태스크에서 모든 이력을 쌓으면 후반부에 사양 누락(18/20)이 발생하지만, 마일스톤마다 JSON 요약 + 이력 리셋으로 20/20 완주 |
| 7위 | Advisor-Executor Model Routing (기사 순차 공개)( E18 : 최초에만 Advisor 설계 지침 주입) | -84.9% (27,699 ➔ 4,172) | -71.5% | 1.78배 고속 | 착수 시점에 3 모듈을 가로지르는 설계 지침 메모를 전달함으로써, 수정 반복(Rework)이 원샷 완주(2회 ➔ 0회)로 소멸 |
2. 왜 '프롬프트'가 아닌 '하네스(제어 구조)'에서 이렇게 차이가 날까?
전반적인 실험을 통해 드러난, AI 에이전트 개발에서의 5가지 구조적 안티 패턴과 해결책을 정리하면 다음과 같습니다.
E04
vs E05
)
지식 ①: '모듈 분할(Graph)'은 효과적이지만, '역할 분할(Role Subagents)'은 역효과가 날 수 있다.
**E04 (Loops vs. Graphs)**에서는 독립된 스테이지마다 컨텍스트를 리셋하는 유향 그래프(Directed Graph)가 입력 토큰을 -74.4% 절감했습니다. - 반면,
**E05 (Subagent Folding)**에서 같은 파이프라인을 '설계 담당 ➔ 구현 담당 ➔ QA 담당'이라는 (기사 순차 공개) 역할(Role)별 서브 에이전트로 나누어 요약 바톤 릴레이를 시켰더니, 요약 과정에서 「。-0
표기"와 같은 세부 사양이 누락되거나(전화 게임 효과), 재작업이 발생하여 2.66배 지연되었습니다.
결론: 순차적으로 밀접하게 결합된 태스크는 역할별 서브 에이전트로 분리하기보다는, **'단일 루프 + 필요한 스킬만 온디맨드로 읽는 Progressive Skill Disclosure'**로 통합(Fold)하는 것이 정답입니다.
E06, E08, E10, E22
지견 ②: AI에게 '자신이 작성한 코드의 테스트나 리뷰'를 시키면 뮤턴트 제거율이 0%가 됩니다. (–
**E06(Blind TDD)**와 (기사 순차 공개) **E10(Adversarial Critic)**에서 밝혀진 가장 충격적인 사실은, (기사 순차 공개) '하나의 컨텍스트에서 구현과 테스트(또는 셀프 리뷰)를 모두 수행하게 하면, AI는 무의식적으로 '자신의 구현이 통하기 쉬운 달콤한 테스트'만 작성하여, 경계값 뮤턴트 제거율이 **0/6 (0%)**가 되었다'는 것입니다. – 구현 코드를 전혀 보지 않고 명세서만으로 테스트를 작성하게 하는 **Blind Tester(E06)**나, 명세를 먼저 Read-Only로 고정하는 Spec-First SDD(E08), 버그 발견에 보상을 주는 Adversarial Critic(E10), 최소 버그 재현 테스트가 Red가 될 때까지 본 코드 편집을 잠그는 **Reproduction-First Gate(E22)**를 도입하자, 뮤턴트 제거율과 원샷 해결률 모두 100%로 급상승했습니다.
E09, E14, E16, E19, E21
지견 ③: 컨텍스트의 90%는 '탐색・툴 정의・생 로그・실패 이력'에 낭비되고 있습니다. (– AI가 실제로 작성하는 수정 코드(출력 토큰)는 어떤 실험에서도 약 1,200~1,800 토큰밖에 되지 않습니다. 그럼에도 불구하고 입력 토큰이 수만~9만 토큰으로 부풀어 오르는 원인은, **'무관한 파일의 Grep 탐색(E09)', '사용하지 않는 30개의 MCP 스키마(E14)', '76건의 PASS 라인을 포함하는 생 터미널 출력(E16)', '직전에 실패한 패치 전체(E19)', '주변 파일의 내부 구현 코드(E21)'**입니다. 이를 하네스 측의 결정론적 필터(AST 콜 그래프 주입, Tree-sitter 골격화, RTK형 JSON 테스트 필터, 실패 턴의 롤백 가지치기)로 제거하는 것만으로도, 추론 비용이 80~95% 감소하며, 게다가 Lost-in-the-Middle 현상이 사라져 원샷 합격률이 극적으로 높아집니다.
E04
~
E24
・전체 21건) 목록 & 실측 요약표
- 전체 검증 패턴 (각 실험의 개별 상세 리포트는 순차적으로 공개 중입니다(공개된 실험은 오른쪽 끝 '📖 기사 읽기' 에서 전문과 실측 트레이스를 확인하실 수 있습니다).
| 실험 ID | 검증 패턴명 | 기존 방식 (Mode A) | 제안 방식 (Mode B) | 실기 검증 결과 요약 | 상세 리포트 기사 |
|---|---|---|---|---|---|
| 🕸️ E04 | Loops vs. Graphs (단일 자유 루프 vs. 단계별 유향 그래프) | 모든 도구와 전체 이력을 단일 자유 루프(Single Loop)에 전달하고, 조사/수정/테스트/제출 순서까지 AI가 판단하게 한다. | 단계별 유향 그래프(Directed Graph) + 단계별 자동 검증기(Verifier)를 사용하여 문맥을 분리/리셋하고, 최종 승인 게이트로 자동 전이시킨다. | 둘 다 20/20 합격 / LLM 호출: 7회→3회 (-57.1%) / 입력 토큰: 23,322→5,966 (-74.4%) / 실행 시간: 36.7초→19.1초 (-48.0%) / 비용: -59.3% | 📖 기사 읽기 |
| --- | --- | ||||
| 🪆 E05 | Subagent Folding (역할별 서브 에이전트 분할 vs. 단일 루프 + 단계적 스킬 공개) | 역할별(설계/구현/테스트/리뷰)로 다수의 서브 에이전트로 세분화하고, 요약(Handoff Summary)을 바통 터치하듯 전달시킨다. | 서브 에이전트 분할을 폐지하고 단일 메인 루프에 통합(Fold)하며, 필요한 절차서(Skill)나 도구 정의만 온디맨드로 동적 로드(Progressive Disclosure)한다. | 둘 다 20/20 합격, Folded가 압승 / LLM 호출: 5회→2회 (-60.0%) / 입력 토큰: 14,815→4,889 (-67.0%) / 실행 시간: 36.4초→13.7초 (-62.4%, 2.66배 고속) / 비용: $0.0201→$0.0091 (-54.9%) | ⏳ 검증 완료・순차 공개 |
| --- | --- | ||||
| 🧪 E06 | Blind TDD Worktrees (1 에이전트 자작자연 TDD vs. 2 에이전트 블라인드 TDD) | 하나의 에이전트(동일 컨텍스트)에게 사양서와 초기 코드를 전달하여, 테스트 작성과 기능 구현을 모두 같은 루프 내에서 수행하게 한다. | Agent 1(블라인드 테스터)에게는 구현 코드를 전혀 보여주지 않고 사양서만으로 테스트를 작성하게 하고, 별도의 워크트리에서 Agent 2(구현자)가 그 테스트를 통과하도록 구현한다. | 독립 채점: Single TDD 19/20 (타입 체크 누락 우회) vs Blind TDD 20/20 완전 합격 / 테스트의 뮤턴트 격파율: Single 0/6 (0%) ➔ Blind 6/6 (100%) / 호출: 1회 vs 2회 / 실행 시간: 14.7초 vs 25.6초 / 비용: $0.0080 vs $0.0178 | ⏳ 검증 완료・순차 공개 |
| --- | --- | ||||
| ⚙️ E07 | Code-Mode Dynamic Workflows (채팅 내 반복 vs. 동적 스크립트 생성 오케스트레이션) | 여러 모듈이나 다수 파일의 감사 및 수정을 하나의 메인 대화 이력 안에서 순차적으로 루프 처리시킨다. | AI 스스로 오케스트레이션용 제어 스크립트(Python/JS)를 동적으로 작성하게 하고, 워커들을 신선한 문맥에서 반복 및 병렬 호출하여 구조화된 결과만 회수한다. | 독립 채점: Chat Loop 18/20 (목표 이탈로 2건 누락) vs Code-Mode 20/20 완전 합격 / 뮤턴트 격파율: Chat 0/6 (0%) ➔ Code-Mode 6/6 (100%) / 호출: 4회 ➔ 2회 (-50.0%) / 입력 토큰: 12,509 ➔ 6,445 (-48.5%) / 실행 시간: 26.4초 ➔ 23.9초 (-9.5%) / 비용: $0.0164 ➔ $0.0161 (-2.1%) | ⏳ 검증 완료・순차 공개 |
| --- | --- | ||||
| 📐 E08 | Token-Driven / Spec-First SDD (갑작스러운 바이브 코딩 vs. |
엄격한 명세서 및 계획 선행 고정(Spec-First & Plan Pre-Fixation) |
고수준의 모호한 요구사항 프롬프트에서 바로 코드를 작성하기 시작하고, 테스트 실패나 사양 불일치가 나올 때마다 채팅으로 되돌아와 수정하는 방식 (Vibe Coding) |
코드에 접근하기 전에 엄격한 입출력 계약(I/O Contract), 경계 조건(Boundary Condition), 비스코프(Non-Scope)를 정의한 SPEC.md와 변경 계획(Plan)을 출력 및 확정시킨 후에 구현 루프에 진입한다 | Spec-First SDD는 20/20 만점 합격률(100%, 되돌림 횟수 0회)을 기록한 반면, Vibe Coding은 19/20(2회의 되돌림 수정 후에도 빈 리스트 거부 누락으로 Fail). 뮤턴트 격파율 0/6 → 6/6, 입력 토큰 -32.9%(9,375→6,284), LLM 호출 횟수 3→2회, 비용 -6.9%를 실증|
⏳ 검증 완료 및 순차 공개
|
🗺️ E09 |
Dependency Map vs. Raw Grep (자유로운 Grep 탐색 vs. AST 심볼/콜 그래프 사전 주입) |
AI에게 grep이나 파일 열람 도구만 제공하고, 여러 파일을 포함하는 코드베이스 내부를 스스로 탐색하고 이해하게 만드는 방식 |
실행 전에 결정론적인 AST 분석(0 토큰)으로 추출한 '함수 시그니처 및 모듈 간 콜 그래프'(수십 줄의 미니맵)를 초기 프롬프트에 자동 주입한다 | 두 방식 모두 20/20 합격, 특히 AST Dependency Map이 모든 지표에서 압승을 거두었다. 무관한 더미(Decoy) 열람 5건→0건(-100%), LLM 호출 횟수 3→1회(-66.7%), 입력 토큰 9,508→3,893(-59.1%), 실행 시간 42.3초→13.4초(-68.2%・3.15배 고속), 비용 -63.0%를 실증|
⏳ 검증 완료 및 순차 공개
|
⚔️ E10 |
Adversarial Critic / Maker-Checker (자체 검토 vs. 적대적 리뷰어에 의한 반증 테스트 생성) |
구현을 수행한 에이전트 스스로에게 '내 코드를 재검토하여 문제가 없으면 SUBMIT하라'고 자체 검토(Self-Review)하게 하는 방식 |
구현 완료 후, '사양의 허점이나 충돌하는 입력을 찾으면 보상을 얻는다'는 적대적(Adversarial) 프롬프트를 가진 별도의 컨텍스트를 가진 Critic Agent에게 반증 테스트를 작성하게 한다 | 두 방식 모두 구현은 20/20 합격이었으나, Self-Review는 미도입 pytest 의존의 깨진 테스트를 제출하여 뮤턴트 격파율이 0/6 (0%)였던 것에 비해, Adversarial Critic은 모든 경계를 포괄하여 뮤턴트 격파율 6/6 (100%)을 달성했다 (+약 0.5센트로 100% 반증 보장)|
⏳ 검증 완료 및 순차 공개
|
🛡️ E11 |
Architecture Guardrail Hooks (긴 프롬프트 규약 vs. 결정론적 Pre-Commit Hook 강제) |
시스템 프롬프트(CLAUDE.md 등)에 금지 사항, 코딩 규약, 아키텍처 제약을 긴 글로 대량으로 기술하여 지키게 하려는 방식 |
프롬프트의 지시는 최소화하고, 파일 저장/편집 훅(Hook) 측에서 AST 규약 위반(금지 import, 타입 주석 누락, 뮤테이션 등)을 기계적으로 감지하여 즉시 거부하는 방식 | 기능 테스트 모두 20/20 합격. 그러나 Prompt 규약만으로는 tariff.py가 74행으로 상한선 65행의 규약(RULE_5)을 위반하여 4/5 불합격이었던 것에 비해, Pre-Commit AST Hook 강제는 5/5(위반 0건)를 한 번에 준수했다 (출력 -10.8%・시간 -5.6%・비용 -6.6%)|
⏳ 검증 완료 및 순차 공개
|
🗜️ E12 |
Context Compaction at Threshold (전체 히스토리 누적 vs. 마일스톤 구조화 상태 압축) |
멀티 스텝 장기 과제에서, 과거의 모든 파일 열람 결과나 실패한 시행착오 로그를 그대로 대화 기록에 계속 쌓아 올리는 방식 |
서브 태스크 완료 시(또는 일정 토큰 도달 시) '완료된 변경 사항・현재 테스트 상태・남은 과제'만을 구조화된 JSON으로 요약하여 대화 기록을 신선하게 리셋한다 | Milestone Compaction이 20/20 만점 합격(100%)이었던 반면, Accumulated History는 18/20(Turn 2에서 입력 토큰이 11,769토큰으로 부풀어 오르며 contract_tier 정규화 누락으로 Fail). 누적 입력 토큰 35,869→2,922(-91.9%), 비용 -72.2% 절감|
⏳ 검증 완료 및 순차 공개
|
🏆 E13 |
Parallel Best-of-N Tournament (단일 세션에서의 집착 재시도 vs.
병렬 3개 브랜치 + Judge 선별)
|
하나의 세션에서 어려운 알고리즘 개선이나 버그 수정에 막혔을 때, 같은 세션 내에서 에러 출력을 누적시키며 여러 턴 동안 재시도하는 방식 | 처음부터 독립적인 경량 컨텍스트를 23개 병렬(다른 접근 지침)로 단 12턴만 실행하고, 결정론적 Verifier/벤치마크가 가장 높은 점수를 기록한 패치만을 채택하는 방식 | 둘 다 20/20 합격이었으나, Parallel Tournament가 압승 (Judge가 이중 루프(double loop)의 Branch 1(202.95ms)을 기각하고 O(n)인 Branch 2(0.96ms)를 선별 / LLM 호출 4회 → 2회 -50.0% / 입력 토큰 13,822 → 4,537 -67.2% / 비용 -29.2% 절감)
⏳ 검증 완료 및 순차 공개
|
🔍 E14 |
Progressive Tool Schema Disclosure (사용 가능한 모든 도구 정의 일괄 투입 vs. 온디맨드 도구 검색) |
사용 가능한 2030개의 도구나 API 스키마의 거대한 JSON 정의를, 사용 여부와 관계없이 첫 번째 턴부터 모두 프롬프트에 채워 넣는 방식 | 초기 프롬프트에는 경량화된 도구 검색 메타 도구(search_tools)만 배치하고, AI가 실제로 필요로 하는 도구의 상세 스키마만을 온디맨드(on-demand)로 전개하는 방식 | 둘 다 20/20 합격이었으나, Progressive Tool Search가 압승 (32개 MCP 스키마 일괄 투입으로 인한 스키마 비용과 데코이 오호출 2회를 완벽하게 제거 / 누적 입력 토큰 79,773 → 5,844 -92.7% 절감 / 실행 시간 37.0초 → 19.1초 -48.5% / 비용 -84.8% 절감)11줄 어긋나 실패하여 Turn 2 전체 문서 재작성으로 폴백(fallback)함. Search-Replace는 6개 블록을 한 번에 무사히 적용)
⏳ 검증 완료 및 순차 공개
|
✂️ E15 |
Search-Replace Blocks vs. Unified Diff / Whole-File Rewrite (패치 적용 형식의 우열 비교) |
코드 편집 시 표준 Unified Diff(@@ -l,s +l,s @@ 줄 번호 지정) 또는 파일 전체 재작성(Whole-File Rewrite)으로 패치를 출력하게 하는 방식 | 줄 번호를 전혀 사용하지 않고, 변경 전후 코드 조각을 그대로 지정하는 SEARCH/REPLACE 블록 형식(고유 앵커 매칭)으로 차이점만을 출력하게 하는 방식 | 둘 다 20/20 합격이었으나, Search-Replace Blocks가 모든 지표에서 압승 (Unified Diff는 Turn 1에서 3개 파일 모두에서 줄 번호가 3
/ 패치 실패: 1회 → 0회 (-100%) / 출력 토큰: 3,775 → 1,398 (-63.0%) / 입력 토큰: 8,196 → 3,366 (-58.9%) / 실행 시간: 29.3초 → 12.2초 (-58.6%) / 비용: $0.0203 → $0.0078 (-61.7%))
⏳ 검증 완료 및 순차 공개
|
🧹 E16 |
CLI Test Output Token Killer (원시 터미널 출력 vs. 구조화 JSON 실패 차이점 필터) |
pytest나 테스트 러너의 표준 출력(통과한 대량의 테스트 로그, ANSI 장식, 깊은 내부 프레임의 스택 트레이스)을 그대로 에이전트의 대화 기록에 반환하는 방식 | 도구 실행 래퍼 측에서 통과한 테스트 출력을 모두 잘라내고, '실패한 테스트 이름・입력값・기대값과 실측값의 최소 차이(Diff)・해당 줄'만 구조화된 JSON(몇 줄)으로 압축하여 반환하는 방식 | 둘 다 20/20 합격이었으나, Token Killer Filter가 압승 (도구 출력 문자 수 117,391 → 1,604자로 -98.6% 절감, 모델 호출 3회 → 2회로 -33.3%, 누적 입력 토큰 92,385 → 5,445로 -94.1% 절감, 실행 시간 25.9초 → 16.9초로 -35.0% 단축, 비용 zsh.0770 → zsh.0100으로 -87.0% 절감)
⏳ 검증 완료 및 순차 공개
|
💡 E17 |
Actionable Fix-Suggestion Linter (범용 에러 코드 반환 vs.
Fix Hint가 포함된 Linter 주입(Injection)
)
구문 검사나 자체 규약 Verifier가 실패했을 때, 일반적인 컴파일러나 Linter처럼 '오류 위치와 오류명(예: E402 Invalid state transition)'만 반환하는 방식 | Verifier/Linter의 오류 출력 자체에 AI를 위한 구체적인 수정 레시피(💡 Fix Hint: 어떤 헬퍼 함수를 사용하고, 어떤 순서로 호출해야 하는지 1줄 코드 예시)를 동적으로 포함하여 반환하는 방식 | 둘 다 20/20 합격이며, 실행 가능한 Fix-Hint Linter가 압승 (규약 문서 탐색 1회 → 0회로 -100% 제거, 도구 출력 문자 수 28,252 → 2,248자로 -92.0% 감소, 모델 호출 3회 → 2회로 -33.3%, 누적 입력 토큰 13,367 → 4,064로 -69.6% 감소, 실행 시간 21.6초 → 14.9초로 -31.2% 단축, 비용 zsh.0160 → zsh.0091로 -43.3% 감소) |
⏳ 검증 완료 및 순차 공개
|
🧭 E18 | Advisor-Executor 모델 라우팅 (단일 모델 반복 vs. 최초/막힐 때만 상위 Advisor 상담)
단일 워커 설정(동일 프롬프트 · 동일 추론 예산)만으로 복잡한 알고리즘 설계부터 반복적인 코드 편집 및 테스트 실행까지 모든 턴을 지속하는 방식 | 일상적인 파일 편집·테스트 실행은 고속 경량 Executor 루프에서 처리하고, 접근 단계(또는 테스트 실패 시)에만 깊은 추론을 수행하는 Advisor로부터 '설계 지침 메모'를 받아 구현하는 방식 | 둘 다 20/20 합격이며, Advisor-Executor 라우팅이 압승 (계획 외 재작업 리트라이 2회 → 0회로 -100% 제거, 파일 편집 5회 → 3회, 모델 호출 4회 → 2회로 -50.0%, 누적 입력 토큰 27,699 → 4,172로 -84.9% 감소, 누적 출력 토큰 2,897 → 1,568로 -45.9% 감소, 실행 시간 33.5초 → 18.8초로 -43.9% 단축, 비용 zsh.0316 → zsh.0090으로 -71.5% 감소) |
⏳ 검증 완료 및 순차 공개
|
🌿 E19 | 오류 추적 가지치기 / 실패 시도 롤백 (실패 이력 누적 vs. 실패 턴 가지치기)
버그 수정 패치가 테스트에 실패했을 때, 실패한 코드 차분(diff)이나 대량의 오류 로그를 그대로 대화 기록에 남겨 다음 리트라이 턴을 지속시키는 방식 | 테스트 실패 시, 직전 실패한 패치 전문과 불필요한 추적(trace)을 이력에서 가지치기(Prune)하고, '접근법 X는 이유 Y로 실패했으므로 다른 방침을 취한다'라는 1줄의 실패 교훈만 남기고 리트라이시키는 방식 | 둘 다 20/20 합격이며, 실패 턴 가지치기 (Pruned Failed Attempt)가 압승 / 이력 잔류 실패 턴: 2회 → 0회 (-100% 제거) / 도구 출력: 72,975 문자 → 1,027문자 (-98.6%) / LLM 호출: 3회 → 2회 (-33.3%) / 누적 입력 토큰: 59,944 → 4,210 (-93.0% 감소 · 14.24배 효율화) / 실행 시간: 30.7초 → 19.6초 (-36.3%) / 비용: $0.0558 → $0.0110 (-80.3% 감소) |
⏳ 검증 완료 및 순차 공개
|
🧠 E20 | 에피소드별 함정 기억 (Episodic Gotchas Memory) (매번 콜드 스타트 탐색 vs. 리포지토리 함정 메모 MEMORY.md 상속)
같은 리포지토리에 대한 연속 작업임에도 매번 0(Cold Start)부터 에이전트를 구동하여, 특유의 함정(비자명한 시간대 규격이나 반올림 규칙 등)을 매번 테스트 실패로 거치게 하는 방식 | 선행 작업에서 파악된 리포지토리 고유의 '함정 및 불변 조건(Gotchas & Invariants)'을 15줄의 MEMORY.md 파일로 자동 추출하여 후속 작업의 초기 컨텍스트에 계승하는 방식 | 에피소드별 함정 기억이 모든 지표에서 압승 (17/20 → 20/20 합격, 함정 거치기 2회 → 0회, 호출 3회 → 1회, 입력 토큰 46,560 → 2,078로 -95.5% 감소, 30.2초 → 13.6초, 비용 -83.7%) |
⏳ 검증 완료 및 순차 공개
|
🦴 E21 | Tree-sitter Skeleton Context (의존 파일 전체 읽기 vs.
인터페이스 골격만 주입하기) | 수정 대상 모듈이 의존하는 주변 파일(헬퍼나 데이터 모델 그룹)의 전체 구현 코드를 그대로 프롬프트에 로드한다 | 직접 편집하지 않는 주변 파일에 대해서는 함수 본체 구현 라인을 접어 제거하고, 클래스/함수 시그니처, 타입 정의, Docstring만 남긴 '인터페이스 골격(Skeleton)'을 전달한다 | Tree-sitter Skeleton Context가 모든 지표에서 압승 (16/20 → 20/20 합격, 불일치 재발 2 → 0회, 3 → 1회 호출, 입력 토큰 45,299 → 2,290으로 -94.9% 감소, 31.0초 → 13.5초, 비용 -82.2%) |
⏳ 검증 완료 및 순차 공개
|
🚦 E22 |
재현 우선 게이트(Reproduction-First Gate) (즉시 프로덕션 코드 수정 vs. 최소 버그 재현 테스트 선행 강제) |
버그 보고(Issue)를 받으면, 즉시 프로덕션 소스 코드를 읽고 추측으로 패치를 적용하며 기존 테스트 스위트가 통과하는지만 확인하게 한다 | 처음에는 프로덕션 코드 편집을 잠금 처리하고, 먼저 '보고된 버그를 재현하여 Red(실패)가 되는 최소 테스트'를 생성 및 실증한 후에만 프로덕션 코드 편집을 해제한다 (Fail-Before-Fix Gate) | Reproduction-First Gate가 모든 지표에서 압승 (17/20 → 20/20 합격, 미재현 되돌림 2 → 0회, 3 → 1회 호출, 입력 토큰 49,833 → 2,313으로 -95.4% 감소, 28.3초 → 13.4초, 비용 -84.1%) |
⏳ 검증 완료 및 순차 공개
|
📦 E23 |
원자적 다중 파일 배치 편집(Atomic Multi-File Batch Edit) (파일별 순차 편집 & 테스트 vs. 다중 파일 일괄 원자 업데이트) | 여러 파일에 걸친 인터페이스 변경이나 버그 수정 시, 파일을 하나씩 편집할 때마다 테스트를 실행하고, 중간 상태의 ImportError나 타입 불일치로 혼란을 겪으며 되돌아간다 | 상호 의존하는 여러 파일의 변경 세트(Patch Set)를 한 턴에 원자적으로 일괄 적용한 후에야 검증 테스트를 실행하게 한다 | Atomic Multi-File Batch Edit가 모든 지표에서 압승 (17/20 → 20/20 합격, 중간 불일치 2 → 0회, 3 → 1회 호출, 입력 토큰 41,684 → 2,182로 -94.8% 감소, 27.5초 → 14.5초, 비용 -81.9%) |
⏳ 검증 완료 및 순차 공개
|
✨ E24 |
긍정적 Few-Shot 템플릿 vs. 부정적 금지 사항(Negative Prohibitions) (금지 사항 나열 vs. 긍정적 황금 패턴 제시) | 시스템 프롬프트에
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기