Files
openclaw-backups/skills/openclaw-self-healing/docs/cron-persona-policy.md

194 lines
5.1 KiB
Markdown

# Cron Persona Policy
> Agent 페르소나 일관성 정책 (2026-02-05)
## 핵심 질문
**Isolated cron이 자비스 페르소나를 유지해야 하는가?**
---
## 배경
### 현재 상황
- 49개 크론 중 대부분이 `sessionTarget: isolated` 사용
- 각 크론 메시지에 300-400 토큰짜리 페르소나 지침 중복 포함
- 월간 토큰 소모: 약 150,000 tokens (페르소나 지침만)
### 컨텍스트 주입 규칙
OpenClaw는 세션 종류에 따라 다른 컨텍스트를 주입:
| Session Type | SOUL.md | AGENTS.md | TOOLS.md | MEMORY.md |
|--------------|---------|-----------|----------|-----------|
| main | ✅ | ✅ | ✅ | ✅ |
| isolated | ⚠️ **확인 필요** | ⚠️ **확인 필요** | ⚠️ **확인 필요** | ❌ |
**핵심:** Isolated 세션이 workspace context를 받는지 확인 필요!
---
## 시나리오 분석
### 시나리오 A: Isolated = 완전 격리
**가정:** SOUL.md/AGENTS.md 주입 안 됨
**장점:**
- 크론별 독립적 페르소나 가능
- 디버깅 시 크론 메시지만 보면 됨
**단점:**
- 페르소나 지침 중복 (토큰 낭비)
- 정책 변경 시 49개 크론 전부 수정 필요
### 시나리오 B: Isolated도 workspace context 주입
**가정:** SOUL.md/AGENTS.md 자동 주입됨
**장점:**
- 토큰 절감 (150,000 → ~10,000)
- 정책 변경 시 SOUL.md만 수정
- 일관성 자동 유지
**단점:**
- 크론별 커스텀 페르소나 불가능 (필요한가?)
- 디버깅 시 workspace 파일도 확인 필요
---
## 권장 정책 (시나리오별)
### IF Isolated = 완전 격리 (A)
**템플릿 참조 방식 도입**
```bash
# 각 크론 메시지 앞에:
"$(cat ~/openclaw/templates/cron-persona.txt)
---
[태스크 내용]"
```
**예상 효과:**
- 300-400 tokens → 50-100 tokens (70% 절감)
- 월간 150,000 → 45,000 tokens
### IF Isolated도 주입됨 (B)
**페르소나 블록 완전 제거**
```bash
# 크론 메시지:
"[태스크 내용만]"
```
**예상 효과:**
- 300-400 tokens → 0 tokens (100% 절감)
- 월간 150,000 → 0 tokens
- SOUL.md/AGENTS.md에서 자동 상속
---
## 실험 계획
### 1단계: 컨텍스트 주입 확인
**테스트 크론 생성:**
```json
{
"name": "페르소나 테스트",
"schedule": { "kind": "at", "atMs": 1770260000000 },
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"model": "anthropic/claude-haiku-4-5-20251001",
"message": "다음 질문에 답하세요:\n\n1. 당신의 이름은?\n2. 당신의 페르소나는?\n3. SOUL.md를 읽을 수 있나요?\n4. AGENTS.md를 읽을 수 있나요?\n\n사실만 답하세요.",
"deliver": true,
"channel": "discord",
"to": "channel:1468751194284621967"
}
}
```
**예상 결과:**
- **A 시나리오:** "모릅니다" 또는 일반적 답변
- **B 시나리오:** "자비스", 페르소나 특징 설명, workspace 파일 인지
### 2단계: 토큰 소모 측정
**측정 항목:**
- 페르소나 블록 있을 때 vs. 없을 때
- Prompt cache hit rate
- 실제 비용 차이
### 3단계: 정책 확정 및 롤아웃
**시나리오 A → 템플릿 방식**
- 모든 크론에 `$(cat ...)` 추가
- 유지보수: `cron-persona.txt` 1개만 수정
**시나리오 B → 완전 제거**
- 모든 페르소나 블록 삭제
- SOUL.md/AGENTS.md만 관리
---
## 예외 케이스
### 페르소나 불필요한 크론
- 시스템 점검 (디스크, 로그 정리 등)
- 외부 스크립트 실행 (backup, rotate 등)
- 내부 검증 크론
→ 이들은 페르소나 없이 사실만 보고해도 됨
### 커스텀 페르소나 필요한 크론
- 특정 톤이 필요한 경우 (예: 긴급 알림은 더 단호하게)
- 특정 채널 전용 (예: health 채널은 기술적으로)
→ 크론 메시지에 직접 명시
---
## Action Items
**즉시:**
1. [ ] 테스트 크론 실행 (컨텍스트 주입 확인)
2. [ ] 결과 분석 후 시나리오 확정
**시나리오 A 선택 시:**
1. [ ] 템플릿 참조 스크립트 작성
2. [ ] 5개 크론에 파일럿 적용
3. [ ] 1주 모니터링
4. [ ] 전체 49개 크론 롤아웃
**시나리오 B 선택 시:**
1. [ ] SOUL.md/AGENTS.md 페르소나 지침 강화
2. [ ] 5개 크론 페르소나 블록 제거 (파일럿)
3. [ ] 1주 모니터링 (톤 일관성 확인)
4. [ ] 전체 49개 크론 롤아웃
---
## 예상 효과
| 지표 | 현재 | 템플릿 (A) | 완전 제거 (B) |
|------|------|------------|---------------|
| 크론당 토큰 | 300-400 | 50-100 | 0 |
| 월간 토큰 | 150,000 | 45,000 | 0 |
| 유지보수 포인트 | 49개 크론 | 1개 템플릿 | SOUL.md만 |
| 일관성 보장 | 수동 | 반자동 | 자동 |
| 커스텀 유연성 | 높음 | 중간 | 낮음 |
---
## 결론
**권장:** 시나리오 B (완전 제거)
**근거:**
- 토큰 절감 최대 (월 $3-5 절약)
- 유지보수 최소화
- 자비스 페르소나는 모든 크론에 일관되게 적용되어야 함
- 커스텀이 필요한 케이스는 극소수 (예외로 처리)
**Next Step:** 테스트 크론 실행 → 결과 확인 → 정우님 승인 → 파일럿 → 전체 롤아웃