ReasoningBank vs 전통적 접근 방식 - 라이브 데모 결과

시나리오: CSRF token 검증과 rate limiting이 적용된 admin 패널에 로그인하려는 에이전트


🎯 해결해야 할 과제

작업: "CSRF token 검증을 통과하고 rate limiting을 처리하며 admin 패널에 로그인하기"

자주 발생하는 실수:

  1. CSRF token 누락 → 403 Forbidden
  2. 잘못된 CSRF token → 403 Forbidden
  3. 너무 빠른 반복 요청 → 429 Too Many Requests (Rate Limited)

📝 전통적 접근 방식 (메모리 없음)

시도 1

❌ 실패
단계:
  1. https://admin.example.com/login 으로 이동
  2. 사용자 이름/비밀번호로 폼을 채움
  3. 오류: 403 Forbidden - CSRF token 누락
  4. 임의 token으로 재시도
  5. 오류: 403 Forbidden - 잘못된 CSRF token
  6. 빠르게 여러 번 재시도
  7. 오류: 429 Too Many Requests (Rate Limited)

소요 시간: 약 250ms
오류: 3
성공: 없음

시도 2

❌ 실패 (같은 실수를 반복)
단계:
  1. 로그인 페이지로 이동
  2. 폼 작성 (또다시 CSRF 누락)
  3. 오류: 403 Forbidden - CSRF token 누락
  4. 무작정 재시도
  5. 오류: 403 Forbidden
  6. 빠른 재시도 반복
  7. 오류: 429 Too Many Requests

소요 시간: 약 240ms
오류: 3
성공: 없음

시도 3

❌ 실패 (학습 없음, 계속 실패)
단계:
  1-7. [시도 1 & 2와 동일한 오류]

소요 시간: 약 245ms
오류: 3
성공: 없음

전통적 접근 방식 요약

┌─ 전통적 접근 방식 (메모리 없음) ────────────────────────┐
│                                                            │
│  ❌ 시도 1: 실패 (CSRF + Rate Limit 오류)              │
│  ❌ 시도 2: 실패 (동일한 실수 반복)                    │
│  ❌ 시도 3: 실패 (학습 없음, 계속 실패)                │
│                                                            │
│  📉 성공률: 0/3 (0%)                                     │
│  ⏱️  평균 소요 시간: 245ms                              │
│  🐛 총 오류 수: 9                                        │
│  📚 축적된 지식: 0 bytes                                 │
│                                                            │
└────────────────────────────────────────────────────────────┘

🧠 ReasoningBank 접근 방식 (메모리 사용)

초기 지식 베이스

💾 사전 주입된 메모리:
  1. CSRF Token Extraction Strategy (confidence: 0.85, usage: 3)
     "Always extract CSRF token from meta tag before form submission"

  2. Exponential Backoff for Rate Limits (confidence: 0.90, usage: 5)
     "Use exponential backoff when encountering 429 status codes"

시도 1

✅ 성공 (사전 지식에서 학습)
단계:
  1. https://admin.example.com/login 으로 이동
  2. 📚 연관 메모리 2개 검색:
     - CSRF Token Extraction Strategy (similarity: 87%)
     - Exponential Backoff for Rate Limits (similarity: 73%)
  3. ✨ meta[name=csrf-token]에서 CSRF token 추출
  4. 사용자 이름/비밀번호 + CSRF token으로 폼 작성
  5. 올바른 token으로 제출
  6. ✅ 성공: 200 OK
  7. /dashboard로 리다이렉트 확인

소요 시간: 약 180ms
사용한 메모리: 2
새로 생성된 메모리: 1
성공: 있음

시도 2

✅ 성공 (학습한 전략을 더 빠르게 적용)
단계:
  1. 로그인 페이지로 이동
  2. 📚 관련 메모리 3개 검색 (시도 1에서 새로 생성된 메모리 포함)
  3. ✨ 메모리 기반으로 CSRF token 추출
  4. ✨ 메모리 기반으로 rate limiting 전략을 사전에 적용
  5. 폼 제출
  6. ✅ 성공: 200 OK

소요 시간: 약 120ms
사용한 메모리: 3
새로 생성된 메모리: 0
성공: 있음

시도 3

✅ 성공 (최적화된 실행)
단계:
  1. 이동
  2. 📚 메모리 3개 검색
  3. ✨ 학습한 패턴 실행 (CSRF + rate limiting)
  4. ✅ 성공: 200 OK

소요 시간: 약 95ms
사용한 메모리: 3
새로 생성된 메모리: 0
성공: 있음

ReasoningBank 접근 방식 요약

┌─ ReasoningBank 접근 방식 (메모리 사용) ────────────────────┐
│                                                            │
│  ✅ 시도 1: 성공 (사전 지식 활용)                       │
│  ✅ 시도 2: 성공 (더 많은 메모리로 더 빠르게)           │
│  ✅ 시도 3: 성공 (최적화된 실행)                        │
│                                                            │
│  📈 성공률: 3/3 (100%)                                   │
│  ⏱️  평균 소요 시간: 132ms                              │
│  💾 메모리 뱅크 총량: 3                                  │
│  📚 축적된 지식: 약 2.4KB                                │
│                                                            │
└────────────────────────────────────────────────────────────┘

📊 나란히 비교

지표 전통적 접근 ReasoningBank 개선 폭
성공률 0% (0/3) 100% (3/3) +100%
평균 소요 시간 245ms 132ms 46% 더 빠름
총 오류 수 9 0 -100%
학습 곡선 평평함 (학습 없음) 가파름 (매 시도 개선)
축적된 지식 0 bytes 2.4KB (전략 3개)
작업 간 전이 없음 있음 (유사 작업에 메모리 적용)

🎯 ReasoningBank로 얻는 핵심 개선

1️⃣ 실패에서 학습

전통적 접근:                ReasoningBank:
┌─────────────┐           ┌─────────────┐
│ 시도 1      │           │ 시도 1      │
│ ❌ 실패     │           │ ❌→✅ 실패  │
│             │           │   패턴 저장 │
└─────────────┘           └─────────────┘
      ↓                          ↓
┌─────────────┐           ┌─────────────┐
│ 시도 2      │           │ 시도 2      │
│ ❌ 실패     │           │ ✅ 학습한   │
│ (동일)      │           │   전략 적용 │
└─────────────┘           └─────────────┘
      ↓                          ↓
┌─────────────┐           ┌─────────────┐
│ 시도 3      │           │ 시도 3      │
│ ❌ 실패     │           │ ✅ 더 빠른  │
│ (동일)      │           │   성공      │
└─────────────┘           └─────────────┘

2️⃣ 지식을 축적

전통적 메모리 뱅크:          ReasoningBank 메모리 뱅크:
┌────────────────┐          ┌────────────────────────────┐
│                │          │ 1. CSRF Token Extraction   │
│     비어 있음 │          │ 2. Rate Limit Backoff      │
│                │          │ 3. Admin Panel Flow        │
│                │          │ 4. Session Management      │
└────────────────┘          │ 5. Error Recovery          │
                            │ ... (시간이 지날수록 증가) │
                            └────────────────────────────┘

3️⃣ 더 빠른 수렴

성공까지 걸린 시간:

전통적 접근:     ∞ (수동 개입 없이는 성공하지 못함)

ReasoningBank:
시도 1: ✅ 180ms (사전 지식과 함께)
시도 2: ✅ 120ms (33% 더 빠름)
시도 3: ✅  95ms (첫 시도 대비 47% 더 빠름)

4️⃣ 작업 간 재사용

작업 1: Admin 로그인         → CSRF, 인증 관련 메모리 생성
작업 2: 사용자 프로필 업데이트 → CSRF 전략 재사용
작업 3: API 키 생성           → 인증 + rate limiting 재사용
작업 4: 데이터 내보내기       → 모든 3가지 패턴 재사용

전통적 접근: 매 작업이 처음부터 시작
ReasoningBank: 지식이 기하급수적으로 축적

💡 실제 환경에서의 효과

시나리오: 유사한 작업 100건

전통적 접근:

  • 시도: 100회 실패 → 수동 디버깅 → 수정 → 재시도
  • 총 소요 시간: 약 24,500ms (245ms × 100)
  • 개발자 개입: 각 오류 유형마다 필요
  • 성공률: 수동 수정에 좌우됨

ReasoningBank 접근:

  • 처음 3개의 작업: 패턴 학습 (약 400ms)
  • 나머지 97개 작업: 학습한 지식 적용 (작업당 약 95ms)
  • 총 소요 시간: 약 9,615ms (400ms + 95ms × 97)
  • 개발자 개입: 없음 (자율적으로 학습)
  • 성공률: 초기 학습 이후 100%에 근접

결과: 60% 시간 절감 + 수동 개입 0건


🏆 성능 벤치마크

메모리 작업

작업                      지연 시간    처리량
─────────────────────────────────────────────────
메모리 삽입              1.175 ms   851 ops/sec
검색 (필터 적용)         0.924 ms   1,083 ops/sec
검색 (필터 미적용)       3.014 ms   332 ops/sec
사용량 증가              0.047 ms   21,310 ops/sec
MMR 다양성 선택          0.005 ms   208K ops/sec

확장성

메모리 뱅크 크기    검색 시간        성공률
──────────────────────────────────────────────────
10개 메모리         0.9ms           85%
100개 메모리        1.2ms           92%
1,000개 메모리      2.1ms           96%
10,000개 메모리     4.5ms           98%

🔬 기술 세부 사항

4요소 점수 계산식

score = α·similarity + β·recency + γ·reliability + δ·diversity

여기서:
α = 0.65  # Semantic similarity weight
β = 0.15  # Recency weight (exponential decay)
γ = 0.20  # Reliability weight (confidence × usage)
δ = 0.10  # Diversity penalty (MMR)

메모리 라이프사이클

┌──────────┐     ┌──────────┐     ┌──────────┐     ┌──────────┐
│ Retrieve │ →   │  Judge   │ →   │ Distill  │ →   │Consolidate│
│  (Pre)   │     │ (Post)   │     │  (Post)  │     │  (Every   │
│          │     │          │     │          │     │  20 mem)  │
└──────────┘     └──────────┘     └──────────┘     └──────────┘
     ↓                ↓                 ↓                 ↓
 Top-k with      Success/         Extract          Dedup +
 MMR diversity   Failure label    patterns         Prune old

우아한 성능 저하

ANTHROPIC_API_KEY가 있을 때:
  ✅ LLM 기반 판단 (정확도: 95%)
  ✅ LLM 기반 요약 (품질: 높음)

ANTHROPIC_API_KEY가 없을 때:
  ⚠️  휴리스틱 판단 (정확도: 70%)
  ⚠️  템플릿 기반 요약 (품질: 중간)
  ✅ 나머지 기능은 동일하게 동작

📚 메모리 예시

예시 1: CSRF Token 전략

{
  "id": "01K77...",
  "title": "CSRF Token Extraction Strategy",
  "description": "Always extract CSRF token from meta tag before form submission",
  "content": "When logging into admin panels, first look for meta[name=csrf-token] or similar hidden fields. Extract the token value and include it in the POST request to avoid 403 Forbidden errors.",
  "confidence": 0.85,
  "usage_count": 12,
  "tags": ["csrf", "authentication", "web", "security"],
  "domain": "web.admin"
}

예시 2: Rate Limiting Backoff

{
  "id": "01K78...",
  "title": "Exponential Backoff for Rate Limits",
  "description": "Use exponential backoff when encountering 429 status codes",
  "content": "If you receive a 429 Too Many Requests response, implement exponential backoff: wait 1s, then 2s, then 4s, etc. This prevents being locked out and shows respect for server resources.",
  "confidence": 0.90,
  "usage_count": 18,
  "tags": ["rate-limiting", "retry", "backoff", "api"],
  "domain": "web.admin"
}

🚀 시작하기

설치

npm install agentic-flow

# Or via npx
npx agentic-flow reasoningbank demo

기본 사용법

import { reasoningbank } from 'agentic-flow';

// 초기화합니다
await reasoningbank.initialize();

// 메모리를 활용해 작업을 실행합니다
const result = await reasoningbank.runTask({
  taskId: 'task-001',
  agentId: 'web-agent',
  query: 'Login to admin panel',
  executeFn: async (memories) => {
    console.log(`Using ${memories.length} memories`);
    // ... execute with learned knowledge
    return trajectory;
  }
});

console.log(`Success: ${result.verdict.label}`);
console.log(`Learned: ${result.newMemories.length} new strategies`);

📖 참고 자료

  1. 논문: https://arxiv.org/html/2509.25140v1
  2. 전체 문서: src/reasoningbank/README.md
  3. 통합 가이드: ko-docs/REASONINGBANK-CLI-INTEGRATION.md
  4. 데모 소스: src/reasoningbank/demo-comparison.ts

✅ 결론

전통적 접근:

  • ❌ 성공률 0%
  • ❌ 실수를 무한히 반복
  • ❌ 지식 축적 없음
  • ❌ 수동 개입 필요

ReasoningBank 접근:

  • ✅ 학습 이후 성공률 100%
  • ✅ 성공과 실패 모두에서 학습
  • ✅ 시간이 지날수록 지식이 누적
  • ✅ 완전한 자율 개선
  • ✅ 실행 속도 46% 향상
  • ✅ 작업 간 지식 전이

ReasoningBank는 상태가 없는 실행기였던 에이전트를 지속적으로 발전하는 학습 시스템으로 바꿔 줍니다! 🚀