194 lines
5.1 KiB
Markdown
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:** 테스트 크론 실행 → 결과 확인 → 정우님 승인 → 파일럿 → 전체 롤아웃
|