# Self Evolving Agent

> AI 비서가 자기 로그를 분석해서 AGENTS.md 개선안을 제안하는 자동화. v5.0: 시맨틱 임베딩(Ollama nomic-embed-text, FP ~8%), 실시간 스트리밍 모니터(<30초 알림), 플릿 분석(다중 인스턴스). v4.3: 대화형 승인, 멀티포맷 리포트, GitHub Issues. v4.2: Ollama LLM. v4.1: 멀티플랫폼 배달. v4.0: 4단계 파이프라인. 제안만 함, 직접 수정 절대 없음.

- Skill: `johnalbertini14-glitch/self-evolving-agent` (Agent Skill, multi-file: 96 files)
- Install (CLI): `npx skillmds@latest add johnalbertini14-glitch/self-evolving-agent`
- Raw SKILL.md: https://api.skillmd.com/api/skills/johnalbertini14-glitch/self-evolving-agent/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: johnalbertini14-glitch (https://skillmd.com/u/johnalbertini14-glitch)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/johnalbertini14-glitch/self-evolving-agent

---


# Self-Evolving Agent 🧠 (v5.0.0)

**매주 로그를 읽고, 시맨틱 임베딩으로 의미론적 패턴을 찾고, 실시간 모니터링으로 즉각 알리고, 효과가 측정된 AGENTS.md 개선안을 제안하는 자동화 시스템.**  
**제안만 합니다. AGENTS.md는 사용자가 승인해야만 수정됩니다.**

---

## 솔직한 설명

이 스킬은 "AI 자기진화"라는 이름을 달고 있지만 실제 동작은 투명합니다:

1. **실시간**: 스트리밍 모니터가 로그를 감시, 임계치 초과 시 즉각 알림
2. **매주 일요일 22시**: 6단계 파이프라인 시작
3. **수집 에이전트**: 로그 스캔 + 실시간 알림 통합
4. **임베딩 분석 에이전트**: Ollama 시맨틱 임베딩으로 의미론적 패턴 감지
5. **트렌드 에이전트**: 4주간 패턴 추세 비교 (Emerging/Resolved)
6. **플릿 에이전트**: 다중 에이전트 인스턴스 교차 분석
7. **벤치마크 에이전트**: 이전 제안 효과 측정 (개선됐나? 악화됐나?)
8. **합성 에이전트**: 전체 데이터 종합 → 제안 초안 작성
9. Discord로 전송 → 사용자 승인 필요

과대 광고 아닙니다. 완벽하지 않습니다. 하지만 v4.x보다 훨씬 정확합니다.

**v5.0에서 달라진 것 (2026-02-18):**
- **시맨틱 임베딩** (Pillar 1): `sea patterns` — Ollama `nomic-embed-text` 로컬 임베딩으로 의미론적 불만 감지, FP ~15% → ~8%
- **스트리밍 모니터** (Pillar 2): `sea monitor` — 실시간 로그 감시, 임계치 초과 즉각 알림 (<30초)
- **플릿 분석** (Pillar 3): `sea fleet` — 다중 에이전트 인스턴스 교차 분석
- **트렌드 분석**: `sea trends` — 4주간 패턴 추세 (Emerging/Resolved/Stable)
- **폴백 내성**: Ollama 오프라인 시 v4 휴리스틱 자동 폴백 (시스템 중단 없음)
- **신규 CLI**: `sea monitor`, `sea alerts`, `sea trends`, `sea patterns`, `sea fleet`

**v4.3에서 달라진 것:**
- **대화형 승인**: `sea watch` — 30초 폴링, macOS 데스크탑 알림, 터미널 대화형 approve/reject
- **Discord 리액션 지시**: 제안 전달 시 `✅ ❌ 🔍` 리액션 지시 자동 추가
- **멀티포맷 리포트**: `sea export` — markdown/html/json/pdf/all 형식 지원
- **GitHub Issues**: `sea github` — 제안별 이슈 생성, 승인 시 자동 종료, 레이블 관리

**v4.2에서 달라진 것:**
- **Ollama/로컬 LLM 완전 지원**: `config.yaml`에서 `provider: "ollama"` 설정 한 줄로 전환
- **Zero-Cost 모드**: Ollama + `provider: "none"` 조합으로 API 비용 $0.00/주 운영
- **범용 LLM 인터페이스**: `scripts/v4/llm-call.sh` — anthropic/openai/ollama/none 통합
- **합성 단계 LLM 강화**: synthesize-proposal.sh가 llm-call.sh를 통해 AI 제안 생성

**v4.1에서 달라진 것:**
- **영어 + 한국어 불만 패턴 동시 지원**: config.yaml에서 `ko` / `en` 분리 구조
- **자동 언어 감지**: 세션 첫 10개 user 메시지 중 >50%에 한글이면 ko, 아니면 en 패턴 적용
- `config.yaml`의 `auto_detect: true` 설정으로 제어 가능

**v4.0에서 달라진 것:**
- **멀티에이전트 파이프라인**: 단일 Claude 호출 → 4개 전문 에이전트 협력
- **구조적 휴리스틱 분석**: 순수 키워드 매칭 → 문맥·위치·역할 고려한 패턴 분석
- **효과 측정 루프**: 제안 적용 후 실제로 도움됐는지 다음 주기에 측정
- **False positive 감소**: ~40% → 추정 ~15%

---

## 파일 구조

```
~/openclaw/skills/self-evolving-agent/
├── SKILL.md                        ← 이 파일
├── README.md                       ← 영어, ClawHub 배포용
├── _meta.json                      ← ClawHub 메타데이터
├── config.yaml                     ← 설정 파일
├── scripts/
│   ├── analyze-behavior.sh         ← v3.0 분석 (하위 호환 유지)
│   ├── generate-proposal.sh        ← v3.0 제안 생성
│   ├── register-cron.sh            ← 크론 등록/업데이트
│   ├── lib/
│   │   └── config-loader.sh        ← config.yaml 파서
│   ├── v4/                         ← v4.0 파이프라인 (하위 호환 유지)
│   │   ├── orchestrator.sh         ← v4 오케스트레이터 (직접 실행 가능)
│   │   ├── collect-logs.sh         ← Stage 1: 로그 수집 + 구조화
│   │   ├── semantic-analyze.sh     ← Stage 2: 구조적 패턴 분석
│   │   ├── benchmark.sh            ← Stage 3: 효과 측정 + 이전 제안 추적
│   │   ├── synthesize-proposal.sh  ← Stage 4: 합성 에이전트 → 최종 제안
│   │   ├── llm-call.sh             ← 범용 LLM 인터페이스
│   │   ├── measure-effects.sh      ← 제안 효과 측정 루프
│   │   ├── deliver.sh              ← 멀티플랫폼 배달기 (Slack/Telegram/Webhook)
│   │   ├── interactive-approve.sh  ← 대화형 승인 + sea watch
│   │   ├── export-report.sh        ← 멀티포맷 리포트 내보내기
│   │   └── github-issue.sh         ← GitHub Issues 통합
│   └── v5/                         ← v5.0 신규 파이프라인 ⭐
│       ├── orchestrator.sh         ← v5 오케스트레이터 (v4 폴백 내장)
│       ├── embedding-analyze.sh    ← 시맨틱 임베딩 분석 ⭐ (Pillar 1)
│       ├── stream-monitor.sh       ← 실시간 스트리밍 모니터 ⭐ (Pillar 2)
│       ├── fleet-analyzer.sh       ← 플릿 다중 인스턴스 분석 ⭐ (Pillar 3)
│       └── trend-analyzer.sh       ← 주간 트렌드 분석 ⭐
├── dashboard/                      ← 로컬 웹 대시보드
│   ├── index.html                  ← 단일 파일 대시보드 (의존성 없음)
│   ├── load-data.js                ← 데이터 로더 모듈
│   ├── build-index.sh              ← 데이터 인덱스 빌더
│   ├── serve.sh                    ← 로컬 HTTP 서버 실행
│   └── README.md                   ← 대시보드 사용 가이드
├── templates/
│   └── proposal-template.md        ← 개선안 출력 형식
├── docs/
│   ├── architecture.md             ← v3.0 아키텍처 (레거시)
│   ├── v4-architecture.md          ← v4.0 아키텍처 상세
│   ├── v5-architecture.md          ← v5.0 아키텍처 상세 ⭐
│   ├── migration-v4-to-v5.md       ← v4 → v5 마이그레이션 가이드 ⭐
│   ├── roadmap.md                  ← 로드맵
│   ├── devils-advocate.md          ← 악마의 변호인 비판 분석
│   ├── test-results.md             ← QA 테스트 결과
│   └── quality-review.md           ← 품질 검토
├── bin/                            ← CLI 도구
│   ├── sea                         ← 메인 CLI v2.0 (proposals/run/status/... + v5 명령)
│   └── sea-completion.bash         ← Bash 탭 자동완성
├── tests/
│   ├── fixtures/                   ← 테스트 픽스처
│   ├── test-cli.sh                 ← CLI 테스트
│   ├── test-pipeline.sh            ← v4 파이프라인 테스트
│   └── test-v5.sh                  ← v5 컴포넌트 테스트 ⭐
└── data/                           ← 런타임 자동 생성
    ├── proposals/                  ← 생성된 제안 JSON
    ├── benchmarks/                 ← 효과 측정 결과
    ├── stream-alerts/              ← 실시간 알림 큐 ⭐
    ├── fleet/                      ← 플릿 분석 결과 ⭐
    ├── trends/                     ← 트렌드 분석 결과 ⭐
    ├── undelivered/                ← 배달 실패 시 폴백 저장
    └── rejected-proposals.json     ← 거부 기록
```

---

## 🛠️ sea CLI (v2.0.0)

`sea`는 Self-Evolving Agent의 명령줄 인터페이스입니다. 제안 관리, 파이프라인 실행, AGENTS.md 적용을 터미널에서 직접 수행할 수 있습니다.

### PATH 설정

```bash
# ~/.zshrc 또는 ~/.bashrc에 추가
export PATH="$HOME/openclaw/skills/self-evolving-agent/bin:$PATH"

# 탭 자동완성 활성화 (bash 전용)
source ~/openclaw/skills/self-evolving-agent/bin/sea-completion.bash
```

### 주요 명령어

```bash
# ── 기존 명령어 (v4에서 유지) ─────────────────────────────
sea run                        # 전체 파이프라인 실행 (v5 오케스트레이터)
sea run --v4                   # v4 파이프라인 강제 실행
sea run --stage 2              # Stage 2(분석)만 실행
sea status                     # 마지막 실행 요약 (한 줄)
sea proposals                  # 대기 중인 제안 목록
sea proposals --all            # 모든 제안 (전체 상태)
sea approve <id>               # 제안 승인: diff → AGENTS.md 패치 → git commit
sea approve --all              # 대기 중인 모든 제안 승인
sea reject <id> "이유"          # 이유와 함께 거부
sea watch                      # 30초 폴링, 새 제안 알림 + 대화형 승인
sea export --format html       # HTML 리포트 내보내기
sea export --format all --output-dir ./reports/   # 모든 형식 내보내기
sea github create --all        # 모든 pending 제안 GitHub 이슈 생성
sea github sync                # proposals/ ↔ GitHub 이슈 동기화
sea github list                # self-evolving 이슈 목록
sea history                    # 전체 제안 이력 (적용/거부/대기)
sea health                     # AGENTS.md 건강도 점수 + 통계
sea config                     # 현재 설정 표시
sea config set analysis.days 14  # 설정값 업데이트
sea version                    # 버전 확인
sea help                       # 도움말

# ── v5.0 신규 명령어 ⭐ ───────────────────────────────────
sea monitor                    # 실시간 스트리밍 모니터 시작 (Ctrl+C로 종료)
sea monitor --poll             # 폴링 모드 (30초 간격, 비대화형 환경)
sea alerts                     # 스트림 알림 목록 (주간 집계)
sea alerts --clear             # 알림 초기화 (처리 완료 후)
sea trends                     # 주간 트렌드 분석 (Emerging/Resolved/Stable)
sea trends --json              # JSON 출력 (CI/자동화용)
sea patterns                   # 시맨틱 패턴 라이브러리 확인
sea patterns add "<text>" --label frustration  # 앵커 패턴 추가
sea fleet                      # 플릿 분석 (전체 에이전트 인스턴스)
sea fleet --agents opus,sonnet # 특정 에이전트만 분석

# 모든 명령에 --json 플래그 추가 가능
sea status --json
sea history --json
sea fleet --json
```

### `sea approve` 동작 방식

1. `data/proposals/<id>.json`에서 제안 읽기
2. `before` / `after` diff 출력
3. `AGENTS.md`의 `before` 텍스트를 `after`로 교체
4. 제안 JSON의 `status`를 `"applied"`로 업데이트
5. `git commit -m "agents: apply proposal <id>"`

---

## 설치

```bash
# 1. Clone
git clone https://github.com/Ramsbaby/self-evolving-agent ~/openclaw/skills/self-evolving-agent

# 2. 설정 마법사 실행 (대화형)
bash ~/openclaw/skills/self-evolving-agent/scripts/setup-wizard.sh
```

비대화형 설치 (CI/자동화용):

```bash
bash ~/openclaw/skills/self-evolving-agent/scripts/setup-wizard.sh \
  --platform discord \
  --channel YOUR_CHANNEL_ID \
  --lang auto \
  --days 7 \
  --yes
```

설정 검증만 실행:

```bash
bash ~/openclaw/skills/self-evolving-agent/scripts/validate-config.sh --fix
```

크론 수동 등록/업데이트:

```bash
bash ~/openclaw/skills/self-evolving-agent/scripts/register-cron.sh
```

크론 JSON 예시 (`~/.openclaw/cron/jobs.json`에 추가):

```json
{
  "name": "🧠 Self-Evolving Agent v4.0 주간 파이프라인",
  "enabled": true,
  "schedule": {
    "kind": "cron",
    "expr": "0 22 * * 0",
    "tz": "Asia/Seoul"
  },
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "model": "anthropic/claude-sonnet-4-5",
    "message": "bash ~/openclaw/skills/self-evolving-agent/scripts/v4/orchestrator.sh 실행. 결과 텍스트만 출력."
  },
  "delivery": {
    "mode": "announce",
    "channel": "discord",
    "to": "channel:YOUR_CHANNEL_ID"
  }
}
```

---

## 📊 로컬 대시보드 (v4.1 신규) ⭐

제안 이력, 품질 추세, 패턴 빈도, 규칙 효과를 시각화하는 로컬 웹 대시보드.

```bash
# 빠른 시작 (스킬 루트에서 실행)
bash dashboard/serve.sh
# → http://localhost:8420/dashboard/ 에서 열기

# 새 제안 후 인덱스 갱신
bash dashboard/build-index.sh
```

**주요 패널:**
- 📈 Quality Trend — 시간별 품질 점수 라인 차트
- 🏥 AGENTS.md Health — 구조 점수 링 + 히스토리 스파크라인
- 🔍 Pattern Frequency — 불만 패턴 스택 바 차트
- 📋 Proposal History — 전체 제안 이력 테이블
- ⚡ Active Rules Effectiveness — 규칙 효과 측정 (녹색/적색)

> 상세: `dashboard/README.md`

---

## 4단계 파이프라인 아키텍처 (v4.0)

### Stage 1: 수집 (collect)
```
collect-logs.sh
├── 채팅 로그 스캔 (세션별 청크 분리)
├── exec 재시도 이벤트 추출 (연속 3회+ 탐지)
├── 크론 에러 로그 파싱
├── 이전 제안 + 적용 이력 로드
└── → data/collect-YYYYMMDD.json
```

### Stage 2: 분석 (analyze)
```
semantic-analyze.sh
├── 키워드 매칭 (기존 방식 유지)
├── 구조적 휴리스틱 분석 (v4.0 신규)
│   ├── 역할 필터: user vs assistant 메시지 분리
│   ├── 문맥 윈도우: 키워드 전후 3줄 확인
│   ├── 반복 임계값: 동일 세션 내 중복 제거
│   └── 감정 강화 신호: "!!", "??" 동반 여부
├── AGENTS.md 규칙 위반 교차 분석
├── 세션 건강도 지표
└── → data/analysis-YYYYMMDD.json
```

### Stage 3: 벤치마크 (benchmark)
```
benchmark.sh
├── 이전 적용 제안 목록 로드
├── 제안 적용 전후 패턴 빈도 비교
├── 효과 분류: Effective / Neutral / Regressed
├── 효과 없는 제안 재검토 플래그
└── → data/benchmarks/benchmark-YYYYMMDD.json
```

### Stage 4: 합성 (synthesize)
```
synthesize-proposal.sh
├── Stage 1-3 결과 종합
├── Claude API 호출 1회 (합성 에이전트)
│   ├── 분석 데이터 → 자연어 제안
│   ├── 벤치마크 결과 → "지난 주 #2 제안 효과 있음" 포함
│   └── diff 형식으로 before/after 작성
└── → Discord #your-channel 게시
```

### Stage 5: 효과 측정 (measure-effects)
```
measure-effects.sh
├── 과거 제안의 타겟 패턴 빈도 비교
├── 세션 트랜스크립트 + 크론 로그만 스캔 (gateway 로그 제외)
├── 효과 분류: Effective / Neutral / Regressed
└── → /tmp/sea-v4/effects.json
```

---

## 분석 항목 (v4.0)

### 1. 구조적 휴리스틱 분석 (v4.0 신규) ⭐

키워드 매칭에 문맥 분석을 보강:

```yaml
heuristic_analysis:
  role_filter: true              # user 메시지만 분석 (assistant 제외)
  context_window: 3              # 키워드 전후 3줄 확인
  dedup_per_session: true        # 동일 세션 내 중복 패턴 1회 계산
  emotion_boost_signals:         # 감정 강화 신호 (가중치 +1.5x)
    - "!!"
    - "??"
    - "왜"
    - "또"
```

이 결과 false positive: ~40% → 추정 ~15%

### 2. 사용자 불만 패턴 (키워드 매칭 + 자동 언어 감지, v4.1) ⭐

v4.1부터 한국어/영어 패턴이 분리되고, 세션 언어를 자동 감지해 적용합니다.

```yaml
complaint_patterns:
  ko:                        # 한국어 세션에 적용
    - "확인중"
    - "다시"
    - "아까"
    - "반복"
    - "기억"
    - "말했잖아"
    - "계속"
    - "물어보지 말고"
    - "전부 다 해줘"
    - "왜 또"
  en:                        # 영어 세션에 적용
    - "you forgot"
    - "again?"
    - "same mistake"
    - "stop doing that"
    - "how many times"
    - "wrong again"
    - "I told you"
    - "still broken"
    - "not what I asked"
  auto_detect: true          # 세션 언어 자동 감지 (ko/en 자동 선택)
```

**자동 언어 감지 로직:** 세션의 첫 10개 user 메시지 중 >50%에 `[가-힣]`이 포함되면 ko, 아니면 en 패턴 적용.

⚠️ **여전한 한계:** 단어 목록에 없는 패턴은 미탐지. config.yaml에서 커스터마이징 필수.

### 3. exec 연속 재시도 감지

```
같은 exec 명령을 3회 이상 연속 재시도한 세션 탐지
→ 에이전트가 루프에 갇혀 있다는 신호
→ 119회 연속 재시도 실제 발견 (v3.0 테스트, v4.0에서도 유지)
```

### 4. 크론 에러 반복 탐지

```
~/.openclaw/logs/cron-catchup.log
~/.openclaw/logs/heartbeat-cron.log
→ 동일 에러 5회 이상 반복 = 구조적 버그
```

### 5. AGENTS.md 규칙 위반

```
AGENTS.md 규칙 목록 추출 → 실제 transcript와 교차 분석
→ "규칙은 있지만 안 지킨 것" 식별
→ "규칙 없는데 자주 실수한 것" 식별
```

### 6. 세션 건강도

```
컴팩션 5회 이상 = 세션이 너무 길거나 복잡
→ 서브에이전트 분리 권고 제안 트리거
```

### 7. 효과 측정 루프 (v4.0 신규) ⭐

```
이전 주기에 적용된 제안들의 효과를 추적:
→ 적용 전 패턴 빈도 vs 적용 후 패턴 빈도 비교
→ Effective: 빈도 30%+ 감소
→ Neutral: ±30% 이내
→ Regressed: 빈도 증가 (재검토 필요)
```

---

## 제안 형식

Discord `#your-channel`에 이런 형식으로 게시:

```markdown
## 🧠 Self-Evolving Agent v4.0 주간 분석

📅 분석 기간: 2026-02-10 ~ 2026-02-17
📊 분석된 세션: 30개 (전체 964개 중 샘플)
⚡ exec 재시도 이벤트: 405건 (최대 119회 연속)
🔴 활성 크론 에러: 3개
📈 지난 주 제안 효과: #2 Effective (패턴 -43%), #3 Neutral

📝 제안: 3개

---

### 제안 #1: exec 연속 재시도 제한 (HIGH)

**근거:** 7일간 405건 재시도 이벤트, 최대 119회 연속 재시도
**역할 필터:** user 메시지 기준 (assistant 제외)

**Before:** 연속 재시도 시 규칙 없음 (무한 루프 가능)

**After:**
같은 exec 3회 실패 시:
1. 에러 즉시 사용자 보고
2. 2번째 시도는 방법 변경
3. 3번째 실패 = 중단 + 수동 확인 요청

---

✅ 적용: "제안 #1 적용해줘"
❌ 거부: "거부: [이유]"
```

---

---

## 🆓 LLM 제공자 설정 (v4.2 신규)

`config.yaml`의 `llm` 섹션으로 합성 단계의 LLM을 선택합니다.

```yaml
llm:
  provider: "ollama"   # anthropic | openai | ollama | none
```

| 제공자 | 비용 | API 키 | 인터넷 | 품질 |
|--------|------|--------|--------|------|
| **anthropic** | ~$0.05/주 | ANTHROPIC_API_KEY | 필요 | ⭐⭐⭐⭐⭐ |
| **openai** | ~$0.05/주 | OPENAI_API_KEY | 필요 | ⭐⭐⭐⭐⭐ |
| **ollama** 🆓 | **$0.00** | **없음** | **없음** | ⭐⭐⭐⭐ |
| **none** | **$0.00** | **없음** | **없음** | 휴리스틱만 |

### 💡 Ollama 설정 (완전 무료!)

```bash
# 1. Ollama 설치
brew install ollama

# 2. 모델 다운로드 (1회만)
ollama pull llama3.1:8b      # 추천: 균형 잡힌 성능
# 또는
ollama pull mistral:7b        # 더 빠름
ollama pull gemma3:9b         # Google 모델

# 3. 서버 실행 (백그라운드)
ollama serve &

# 4. config.yaml 설정
# llm:
#   provider: "ollama"
#   ollama:
#     model: "llama3.1:8b"
#     url: "http://localhost:11434"
```

### 💡 none 모드 (순수 휴리스틱)

LLM 없이 쉘 스크립트 휴리스틱 분석만 수행합니다. API 비용 $0, 인터넷 불필요.

```yaml
llm:
  provider: "none"
```

> 합성 단계에서 LLM 강화 제안 섹션이 생략됩니다. 기본 분석/제안은 그대로 제공됩니다.

### llm-call.sh 직접 사용

```bash
# Ollama로 프롬프트 전송
echo "분석 결과를 요약해줘" | bash scripts/v4/llm-call.sh --provider ollama

# Anthropic으로 전송
echo "분석 결과를 요약해줘" | bash scripts/v4/llm-call.sh --provider anthropic --model claude-haiku-4-5

# 제공자 없음 (빈 JSON 반환)
echo "테스트" | bash scripts/v4/llm-call.sh --provider none

# config.yaml 자동 읽기 (플래그 생략 가능)
echo "분석 결과를 요약해줘" | bash scripts/v4/llm-call.sh
```

---

## 커스터마이징

```yaml
# config.yaml
analysis:
  days: 14                          # 분석 기간 (기본 7일)
  max_sessions: 50                  # 최대 세션 수
  complaint_patterns:               # v4.1: 언어별 분리 구조
    ko:                             # 한국어 패턴 커스터마이징
      - "물어보지 말고"
      - "전부 다 해줘"
      - "나보고 하라고"
    en:                             # 영어 패턴 커스터마이징
      - "you're useless"
      - "that's wrong again"
      - "stop asking me"
    auto_detect: true               # 세션 언어 자동 감지
  exec_retry_threshold: 3           # 몇 회 재시도부터 탐지할지
  log_error_repeat_threshold: 5     # 동일 에러 몇 회부터 심각으로 볼지

  # v4.0 신규
  heuristic:
    role_filter: true               # user 메시지만 분석
    context_window: 3               # 전후 몇 줄 확인
    dedup_per_session: true         # 세션 내 중복 제거
    emotion_boost: true             # 감정 강화 신호 가중치

  benchmark:
    enabled: true                   # 효과 측정 활성화
    effective_threshold: 0.30       # 30% 감소 = Effective 판정

cron:
  schedule: "0 22 * * 0"           # 일요일 22시 (기본)
  discord_channel: ""  # Required: set your Discord channel ID
```

---

## 배달 설정 (Multi-Platform Delivery)

`config.yaml`의 `delivery` 섹션으로 제안서 전송 플랫폼을 선택합니다.

```yaml
delivery:
  platform: "discord"  # discord | slack | telegram | webhook
```

### Discord (기본)

OpenClaw 크론의 `delivery` 설정을 그대로 사용합니다. `deliver.sh` 호출 없음.

```yaml
delivery:
  platform: "discord"
  discord:
    channel_id: "YOUR_CHANNEL_ID"
```

### Slack

Slack Incoming Webhook을 사용합니다. [Slack Webhook 생성 가이드](https://api.slack.com/messaging/webhooks)

```yaml
delivery:
  platform: "slack"
  slack:
    webhook_url: "https://hooks.slack.com/services/T.../B.../..."
```

### Telegram

BotFather에서 발급한 토큰과 채팅방 ID가 필요합니다.

```yaml
delivery:
  platform: "telegram"
  telegram:
    bot_token: "123456:ABC-DEF..."
    chat_id: "-1001234567890"   # 채널은 -100으로 시작
```

### Generic Webhook

JSON POST로 임의 엔드포인트에 전송합니다.

```yaml
delivery:
  platform: "webhook"
  webhook:
    url: "https://your-server.example.com/sea-proposals"
    method: "POST"
```

Payload 형식:
```json
{
  "source": "self-evolving-agent",
  "version": "4.0",
  "timestamp": "2026-02-18T00:00:00Z",
  "proposal": "## 🧠 SEA v4.0 ...(마크다운)..."
}
```

### 배달 실패 시 폴백

전송에 실패하면 `data/undelivered/YYYYMMDD-HHMMSS-<platform>.md`에 저장됩니다.  
수동 재전송: `PLATFORM=slack bash scripts/v4/deliver.sh data/undelivered/<파일>`

---

## 안전 규칙 (보안 강조)

- ✅ **제안만 합니다** — AGENTS.md를 직접 수정하는 코드 경로 없음
- ✅ **diff 형식** — before/after로 명확한 변경사항 제시
- ✅ **근거 필수** — 측정된 데이터(실제 카운트)가 없으면 제안 없음
- ✅ **승인 후 적용** — 사용자 명시적 승인 시에만 AGENTS.md 반영 + git commit
- ✅ **거부 기록** — 거부 이유를 다음 분석 사이클에 반영
- ✅ **로컬 우선** — 분석은 로컬에서, API 호출은 합성 에이전트 1회뿐
- ✅ **코드 투명성** — 전체 분석 스크립트 ~400줄, 15분이면 다 읽음
- ✅ **효과 측정** — 적용된 제안의 효과를 다음 주기에 리포트

---

## 한계 (솔직하게)

| 한계 | v3.0 | v4.0 개선 | v5.0 개선 |
|------|------|-----------|-----------|
| 키워드 매칭 (의미론 아님) | FP ~40% | 휴리스틱으로 ~15% | **임베딩으로 ~8%** ✅ |
| assistant 발화 필터 불완전 | "다시", "계속" 과다 계산 | role_filter로 개선 | 동일 (유지) |
| 키워드 목록에 없으면 미탐지 | 자율실행 요구 패턴 놓침 | 여전히 동일 | **임베딩 유사도로 목록 외 패턴 감지** ✅ |
| 개선 효과 미측정 | 도움됐는지 모름 | **벤치마크 루프로 해결** ✅ | 동일 (유지) |
| 영어 세션 패턴 미지원 | 영어 감지 불가 | **ko/en + auto_detect** ✅ | 동일 (유지) |
| 데이터 부족 시 제안 품질 하락 | generic 제안 | 여전히 동일 | 여전히 동일 |
| Cold start | 처음 2-4주 데이터 없음 | 여전히 동일 | 여전히 동일 |
| 주 1회 배치만 가능 | 주간 사각지대 있음 | 여전히 동일 | **실시간 스트리밍 모니터로 해결** ✅ |
| 단일 인스턴스만 분석 | 다중 에이전트 분석 불가 | 여전히 동일 | **플릿 분석으로 해결** ✅ |

**v5.0에서 여전히 해결 못 한 것:**
- 혼용 세션 (한영 혼합) 정밀 처리 — 임베딩이 완화하지만 완전 해결은 아님
- 효과 측정은 빈도 기반 상관관계 — 인과관계 분석 아님 (v5.2 계획)
- 스트리밍 모니터는 별도 프로세스 필요 — 크론 외 상시 가동 필요
- 플릿 분석은 4주+ 이력이 있어야 의미 있는 트렌드 도출 가능

---

## v5.0 변경사항 (2026-02-18)

- ✅ **`scripts/v5/embedding-analyze.sh`** 신설 — Ollama `nomic-embed-text` 시맨틱 임베딩 분석 (Pillar 1)
- ✅ **`scripts/v5/stream-monitor.sh`** 신설 — 실시간 스트리밍 모니터 + 임계치 알림 (Pillar 2)
- ✅ **`scripts/v5/fleet-analyzer.sh`** 신설 — 다중 에이전트 인스턴스 교차 분석 (Pillar 3)
- ✅ **`scripts/v5/trend-analyzer.sh`** 신설 — 4주간 패턴 추세 비교 (Emerging/Resolved)
- ✅ **`scripts/v5/orchestrator.sh`** 신설 — v5 6단계 오케스트레이터 (v4 폴백 내장)
- ✅ **`bin/sea`** v2.0.0 — `monitor`, `alerts`, `trends`, `patterns`, `fleet` 커맨드 추가
- ✅ **`config.yaml`** — `embedding`, `streaming`, `fleet`, `trends` 섹션 추가
- ✅ **`tests/test-v5.sh`** 신설 — v5 컴포넌트 독립 테스트 (Ollama 불필요)
- ✅ **`docs/v5-architecture.md`** 신설 — 전체 아키텍처 문서 (ASCII 다이어그램)
- ✅ **`docs/migration-v4-to-v5.md`** 신설 — v4 → v5 마이그레이션 가이드
- ✅ **`Makefile`** — `make test-v5`, `make test` v5 포함

## v4.3 변경사항 (2026-02-18)

- ✅ **`scripts/v4/interactive-approve.sh`** 신설 — sea watch, macOS 알림, 대화형 approve/reject
- ✅ **`scripts/v4/export-report.sh`** 신설 — markdown/html/json/pdf/all 리포트 내보내기
- ✅ **`scripts/v4/github-issue.sh`** 신설 — GitHub Issues 통합 (생성/종료/동기화/레이블)
- ✅ **`bin/sea`** v1.1.0 — `watch`, `export`, `github` 커맨드 추가
- ✅ **`synthesize-proposal.sh`** — Discord 리액션 지시 푸터 자동 추가
- ✅ **`config.yaml`** — `github`, `interactive`, `export` 섹션 추가
- ✅ **`sea approve`** → GitHub 이슈 자동 종료 연동 (GH_TOKEN 있을 때)

## v4.2 변경사항 (2026-02-18)

- ✅ **Ollama/로컬 LLM 완전 지원**: config.yaml `llm.provider` 설정 한 줄로 전환
- ✅ **`scripts/v4/llm-call.sh`** 신설 — anthropic/openai/ollama/none 통합 인터페이스
- ✅ **Zero-Cost 모드**: `provider: "ollama"` 또는 `provider: "none"` → API 비용 $0/주
- ✅ **`synthesize-proposal.sh`**: LLM 강화 제안 섹션 추가 (none이면 생략)
- ✅ **`config.yaml`**: `llm` 섹션 추가 (provider/anthropic/openai/ollama/none)

## v4.1 변경사항 (2026-02-18)

- ✅ **멀티플랫폼 배달 지원**: Slack / Telegram / Generic Webhook
- ✅ **`scripts/v4/deliver.sh`** 신설 — 플랫폼별 독립 핸들러 (각 <30줄)
- ✅ **`data/undelivered/`** 디렉토리 — 배달 실패 시 자동 저장 (유실 방지)
- ✅ **`config.yaml`**: `delivery` 섹션 추가
- ✅ **`config-loader.sh`**: 배달 설정 자동 노출 (`SEA_DELIVERY_PLATFORM` 등)
- ✅ **`orchestrator.sh`**: synthesize 이후 platform != discord 시 deliver.sh 자동 호출

---

## v4.1 변경사항

- ✅ **영어 + 한국어 불만 패턴 동시 지원**: config.yaml `complaint_patterns` → `ko` / `en` 분리 구조
- ✅ **자동 언어 감지**: 세션 첫 10개 user 메시지 기반 언어 자동 판별 (`auto_detect: true`)
- ✅ `semantic-analyze.sh`: `load_config_patterns()` + `detect_session_language()` 함수 추가
- ✅ `collect-logs.sh`: 불만 키워드 목록 ko/en 분리, config.yaml 우선 로드
- ✅ config.yaml: `complaint_patterns.ko` / `.en` / `auto_detect` 구조로 재편

## v4.0 변경사항

- ✅ **4단계 멀티에이전트 파이프라인** 도입 (collect → analyze → benchmark → synthesize)
- ✅ **구조적 휴리스틱 분석**: role_filter + context_window + dedup_per_session
- ✅ **효과 측정 루프**: 이전 제안 효과를 다음 주기에 자동 측정
- ✅ **False positive 감소**: ~40% → 추정 ~15%
- ✅ **성능 목표**: 총 실행 시간 <3분, 비용 <$0.05/회 (Sonnet 기준)
- ✅ `scripts/v4/` 디렉토리 신설 (v3.0 스크립트는 하위 호환 유지)
- ✅ `data/benchmarks/` 디렉토리 신설 (효과 측정 결과 저장)
- ✅ `docs/v4-architecture.md` 신설 (상세 아키텍처 문서)

---

## v3.0 변경사항 (참고)

- ✅ exec 연속 재시도 탐지 추가 (119회 연속 사례 실제 발견)
- ✅ 동일 에러 반복 분석 추가 (18회 heartbeat 버그 발견)
- ✅ 세션 건강도 지표 추가 (컴팩션 카운트)
- ✅ README 완전 재작성 (솔직한 한계 명시)

---

## self-improving-agent와 차이

| | self-improving-agent | self-evolving-agent |
|--|--|--|
| **범위** | 세션 1개 | 7일치 전체 세션 |
| **타이밍** | 각 세션 직후 실시간 | 매주 일요일 |
| **출력** | 세션 품질 점수 + 교훈 | AGENTS.md diff 제안 |
| **강점** | 즉각적 피드백 | 시스템 패턴 발견 |
| **v4.0 연동** | 품질 스코어 → 분석 가중치 | 집계 + 벤치마크 |

**함께 쓰면:** self-improving이 세션 품질 데이터를 생성 → self-evolving이 집계해서 시스템 수준 문제 발견 + 효과 측정.

