์ด ๋ฌธ์๋ ์ฌ๋์ํ์ด์ง ์๋ฌธ **ใOpenClaw ์บ์ฑ ์์ ๊ฐ์ด๋ใ**๋ฅผ ๊ธฐ์ค์ผ๋ก, ํต์ฌ ์ฃผ์ฅ๊ณผ ์ค์ ๊ฐยท์ด์ ํ์ ๋๋ฝ ์์ด ์ค๋ฌดํ์ผ๋ก ์ฌ์ ๋ฆฌํ ๋ฒ์ ์ด๋ค.
ํต์ฌ ๋ฉ์์ง: OpenClaw๋ ๋ฐ๋ณต๋๋ ์์คํ
์ปจํ
์คํธ ๋น์ค์ด ํฐ ๊ตฌ์กฐ๋ผ, ์บ์ฑ ์ ๋ต์ด ๊ณง ๋น์ฉ ์ ๋ต์ด๋ค.
0) ์ ์ฒด ๊ตฌ์กฐ ํ ์ฅ ์์ฝ
mindmap root((OpenClaw ์บ์ฑ ์ด์)) ์ ์ค์ํ๊ฐ ์์คํ ํ๋กฌํํธ ๋ฐ๋ณต ํ์คํ ๋ฆฌ ๋์ heartbeat cron ๋ํ ๋ฐ๋ณต ํธ์ถ ํต์ฌ ์ค์ cacheRetention long contextPruning cache-ttl heartbeat TTL ์ง์ ํธ์ถ ์ ๊ฐ ๋ฉ์ปค๋์ฆ ์ฒซ ๊ตฌ๊ฐ cacheWrite ๋ฐ๋ณต ๊ตฌ๊ฐ cacheRead TTL ์ดํ ์ฒซ ์์ฒญ ์ฌ์บ์ ๋น์ฉ ์ํ ์ด์ ์ ๋ต cron isolated ๋ถ๋ฆฌ ์ง์ ํ์ผ ๊ฒฝ๋ํ ๋ชจ๋ธ ์ญํ ๋ถ๋ฆฌ ์ปจํ ์คํธ ์ํ ๊ด๋ฆฌ
1) ์บ์ฑ์ด๋ ๋ฌด์์ธ๊ฐ
1-1. ๊ธฐ๋ณธ ๊ฐ๋
- Claude API๋ ์์ฒญํ ๋๋ง๋ค ์ ์ฒด ์ปจํ ์คํธ๋ฅผ ๋ค์ ์ฝ๋๋ค.
- Prompt Caching์ ๋ฐ๋ณต๋๋ ๋ธ๋ก์ ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํ๋ค.
์๋ฌธ ์์:
- ์บ์ฑ ์์:
[System 10k] + [History 60k] + [์ ๋ฉ์์ง]= 70k ํ ํฐ ๊ณผ๊ธ - ์บ์ฑ ์์:
[cacheRead 69k] + [์ ๋ฉ์์ง 1k]์ค์ฌ ๊ณผ๊ธ
1-2. ํ ํฐ ์๊ธ ๋น๊ต(์๋ฌธ ์ ์๊ฐ, Sonnet 4.5 ๊ธฐ์ค)
| ์ข ๋ฅ | ์๊ธ (per 1M tokens) | ๋น์จ |
|---|---|---|
| ์ผ๋ฐ Input | $3.00 | 100% |
| Cache Write | $3.75 | 125% |
| Cache Read | $0.30 | 10% |
| Output | $15.00 | 500% |
์์ง:
- Write๋ ๋น์ธ์ง๋ง ์๋์ ์ผ๋ก ๋๋ฌผ๊ณ ,
- Read๋ ๋งค์ฐ ์ ๋ ดํด ๋ฐ๋ณต ์์ฒญ์์ ์ ๊ฐ ํจ๊ณผ๊ฐ ์ปค์ง๋ค.
2) OpenClaw์์ ์บ์ฑ์ด ํนํ ์ค์ํ ์ด์
2-1. ๋งค ์์ฒญ๋ง๋ค ํฐ ์์คํ ์ปจํ ์คํธ๊ฐ ํฌํจ๋จ
์๋ฌธ์์ ๊ฐ์กฐํ OpenClaw ํฌํจ ์์:
SOUL.md,USER.md,AGENTS.md,MEMORY.md,HEARTBEAT.md,IDENTITY.md- ๋๊ตฌ/์คํฌ ๋ชฉ๋ก
๊ณต์ docs ๊ด์ ์ผ๋ก ๋ณด๋ฉด:
- OpenClaw๋ ๋งค ํธ์ถ์ ์์คํ ํ๋กฌํํธ๋ฅผ ์ฌ์กฐ๋ฆฝํ๋ค.
- ์ํฌ์คํ์ด์ค ํต์ฌ ํ์ผ + ๋ฐํ์ ๋ฉํ + ๋๊ตฌ/์คํฌ ๋ฉํ๊ฐ ํฌํจ๋๋ค.
2-2. ์บ์ฑ์ด ์์ผ๋ฉด ๋ฐ๋ณต ๋น์ฉ์ด ๊ทธ๋๋ก ๋์ ๋จ
์๋ฌธ ์๋๋ฆฌ์ค:
- ์์นจ cron, heartbeat, ์ผ๋ฐ ๋ํ๊ฐ ๋ฐ๋ณต๋ ๋
- ๊ฐ์ ์์คํ ๋ธ๋ก ๊ณผ๊ธ์ด ๊ณ์ ๋ฐ์
2-3. ์ ์ (static) ๋ธ๋ก์ ์บ์ฑ ํจ์จ์ด ๋์
์๋ฌธ ํฌ์ธํธ:
- ์์ฃผ ๋ฐ๋์ง ์๋ ํ์ผ์ด ์บ์ ํํธ์ ์ ๋ฆฌ
- ๋ฐ๋ณต ๊ตฌ์กฐ๊ฐ ์ ์ง๋ ์๋ก Read ๋น์ค์ด ์ปค์ง
- (์๋ฌธ ์ธ๊ธ) Anthropic ์บ์ฑ์ ํฐ ๋ธ๋ก ๋ฐ๋ณต ์ ํจ๊ณผ๊ฐ ํฌ๋ฉฐ, ์ต์ ํ ํฐ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํจ
3) ์ค์ ๋น์ฉ ๋ฐ์ดํฐ(์๋ฌธ ์ฌ๋ก)
3-1. ํธ์ถ๋ณ ํจํด(์๋ฌธ ํ ์ฌ๊ตฌ์ฑ)
| ํธ์ถ | cacheRead | cacheWrite | ์ค์ ๋น์ฉ | ์บ์ฑ ์์๋ค๋ฉด(์๋ฌธ) |
|---|---|---|---|---|
| 1 | 8,590 | 11,772 | $0.047 | ~$0.094 |
| 2 | 8,590 | 12,045 | $0.049 | ~$0.094 |
| 3 | 20,635 | 6,395 | $0.036 | ~$0.162 |
| 4 | 27,468 | 266 | $0.011 | ~$0.207 |
| 5 | 27,734 | 838 | $0.013 | ~$0.210 |
| 16 | 69,836 | 455 | $0.025 | ~$0.527 |
| 17 | 70,291 | 1,126 | $0.032 | ~$0.531 |
3-2. ์๋ฌธ ํต์ฌ ์ธ์ฌ์ดํธ
cacheRead 69,836๊ท๋ชจ ํธ์ถ์ ์ผ๋ฐ input ๋๋น ํฐ ์ ๊ฐ ๊ตฌ๊ฐ- ๋ํ๊ฐ ๊ธธ์ด์ง์๋ก ์ ๊ฐ๋ฅ ์ด ์์น
- ์ด๋ฐ: ์ฝ 50%
- ์ค๋ฐ: ์ฝ 70%
- ํ๋ฐ: ์ฝ 87%
flowchart LR A[์ด๊ธฐ: cacheWrite ๋น์ค ํผ] --> B[์ค๋ฐ: cacheRead ์ฆ๊ฐ] B --> C[ํ๋ฐ: cacheRead ์ฐ์ธ] C --> D[๋ฐ๋ณต ํธ์ถ ๊ตฌ๊ฐ์์ ์ ๊ฐ ๊ทน๋ํ]
4) ์บ์ฑ ์ค์ ๋ฐฉ๋ฒ (์๋ฌธ + OpenClaw ๋ฌธ๋ฒ ์ ๋ฆฌ)
4-1. cacheRetention ์ค์ (ํต์ฌ)
{
"agents": {
"defaults": {
"models": {
"anthropic/claude-sonnet-4-5-20250929": {
"params": { "cacheRetention": "long" }
},
"anthropic/claude-haiku-4-5": {
"alias": "haiku",
"params": { "cacheRetention": "long" }
}
}
}
}
}none: ์บ์ฑ ๋short: 5๋ถlong: 1์๊ฐ
๊ณต์ docs ๋ณด๊ฐ:
- Anthropic API key ์ธ์ฆ์ ๊ธฐ๋ณธ๊ฐ์
short - ๋ช
์ ์ค์ ์ผ๋ก
long์ค๋ฒ๋ผ์ด๋ ๊ฐ๋ฅ - ๊ตฌ๋ฒ์
cacheControlTtl๋ ํธํ(5mโshort,1hโlong)
4-2. ์บ์ ํธ๋ ์ด์ค ์ง๋จ(์ ํ)
{
"diagnostics": {
"cacheTrace": {
"enabled": true,
"includeSystem": true,
"includeMessages": false,
"includePrompt": false
}
}
}์๋ฌธ ๋ก๊ทธ ์์ ๊ฒฝ๋ก:
<OPENCLAW_HOME>/logs/cache-trace.jsonl
4-3. contextPruning ์ฐ๊ณ
{
"agents": {
"defaults": {
"contextPruning": {
"mode": "cache-ttl",
"ttl": "1h"
}
}
}
}์๋ฌธ ์ค๋ช :
- ์บ์ ๋ง๋ฃ ํ์ด๋ฐ๊ณผ ๋ง์ถฐ ์ค๋๋ ํ์คํ ๋ฆฌ/๋๊ตฌ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํด
- TTL ์ง๋ ๋ค ์ฒซ ์์ฒญ์ ์ฌ์บ์ ๋น์ฉ์ ์ํ
๊ณต์ docs ๋ณด๊ฐ:
- pruning์ ์จ๋์คํฌ ์ด๋ ฅ ์ญ์ ๊ฐ ์๋๋ผ ์์ฒญ ์ง์ ์ธ๋ฉ๋ชจ๋ฆฌ ์ปจํ ์คํธ ์ ๋ฆฌ
- Anthropic ๊ณ์ด ํธ์ถ์์ TTL ๊ธฐ๋ฐ์ผ๋ก ๋์
4-4. ์ค์ ์ ์ฉ
- ์ค์ ํ์ผ ๋ฐ์ ํ ์ฌ์์
openclaw gateway restart- ๋๋ ์์ด์ ํธ์๊ฒ
config.patch์์ฒญ
5) 1์๊ฐ ์บ์ฑ vs 5๋ถ ์บ์ฑ ๋น๊ต
5-1. ์๋ฌธ ์๋๋ฆฌ์ค(10k system prompt, ํ๋ฃจ 50ํ ํธ์ถ)
- ์บ์ฑ ์์: ์ฝ
$1.50/์ผโ ์$45 - 5๋ถ ์บ์ฑ(short): ์
$20์์ค(์๋ฌธ ์ถ์ ) - 1์๊ฐ ์บ์ฑ(long): ์
$5์์ค(์๋ฌธ ์ถ์ )
5-2. ์๋ฌธ ํต์ฌ ํ: heartbeat๋ฅผ TTL๋ณด๋ค ์ด์ง ์งง๊ฒ
์๋ฌธ์ 59m ์ ๋ต์ ์ ์ํ๋ค.
{
"heartbeat": {
"every": "59m"
}
}๋ ผ๋ฆฌ:
- TTL 60๋ถ ์ ์ ํธ์ถ์ด ๋ค์ด์ค๋ฉด ์บ์ ์ ์ง/๊ฐฑ์ ์ ์ ๋ฆฌ
๊ณต์ docs ๋ณด๊ฐ:
- token-use ๋ฌธ์์์๋
55m์์๋ ์ ์ - ์ค๋ฌด์์ ๋คํธ์ํฌ ์ง์ฐ/์คํ ํธ์ฐจ๋ฅผ ๊ณ ๋ คํด 55~59๋ถ ๋ฒ์์์ ์ด์
5-3. ์๋ฌธ์ OpenClaw ํจํด ๋น๊ต ์์ง
- heartbeat/cron/์๋ฆฌ๋น์ ํ ๋ณต๊ท์ฒ๋ผ ๊ฐํ์ ํธ์ถ์ด ๋ง์ ํ๊ฒฝ์์
- ๊ธด TTL ์บ์ฑ์ ์ฒด๊ฐ ํจ๊ณผ๊ฐ ์ปค์ง๋ค.
6) ๋น์ฉ์ ์ค์ด๋ ์ ๋ต (์๋ฌธ 5๊ฐ์ง, ๋๋ฝ ์์ด)
Strategy 1. ํ๋ฅด์๋/์ ์ ๋ธ๋ก ์ต์ ํ
์๋ฌธ DO:
- ์ ์ ๊ท์น ๋ธ๋ก์ ์๋ถ๋ถ์ ๋๊ณ , ์์ฃผ ์ ๋ฐ๊พธ๊ธฐ
- ๋์ ๋ฐ์ดํฐ(์๊ฐ/์ค์๊ฐ ์ํ)๋ ๋ค์ชฝ์ผ๋ก ๋ถ๋ฆฌ
์๋ฌธ DONโT:
- ์์ฒญ๋ง๋ค ํฐ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฌ์์ฑํด ์บ์ ๋ฌดํจํ
- ํ๋กฌํํธ ์๋ถ๋ถ์ ์์ฃผ ๋ฐ๋๋ ๊ฐ ์ฝ์
Strategy 2. Cron ์ธ์
๋ถ๋ฆฌ (isolated)
{
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "CRON.md์ '์์นจ ์ธ์ฌ' ์น์
์ ๋ฐ๋ผ ์คํ"
}
}ํจ๊ณผ:
- Main ์ธ์ ๋์ ์ด๋ ฅ๊ณผ ๋ถ๋ฆฌ๋์ด ์ด๊ธฐ ์ปจํ ์คํธ๊ฐ ๊ฐ๋ฒผ์์ง
Strategy 3. CRON ์ง์ ํ์ผ ๋ถ๋ฆฌ/์ํํ
์๋ฌธ ๋น๊ต:
- Bad: ํฐ ์ํฌํ๋ก์ฐ ํ์ผ ํต์งธ๋ก ์ฝ๊ธฐ
- Good: ์งง์ CRON.md์ ํ์ํ ์น์ ๋ง ์ฝ๊ธฐ
Strategy 4. ์ปจํ ์คํธ ์ํ ๊ด๋ฆฌ
์๋ฌธ ํฌ์ธํธ:
- ์ปจํ
์คํธ๊ฐ ๊ณผ๋ํ๊ฒ ์ปค์ง๋ฉด
- cacheWrite ๋น์ฉ ๊ธ์ฆ
- ํ ํฐ ํ๋ ์ํ
- ์บ์ ํจ์จ ์ ํ
- ๋ฐ๋ผ์ ์ธ์ ๋ถ๊ธฐ/์ปดํฉ์ /์ ๋ฆฌ ๋ฃจํด์ด ํ์
Strategy 5. ๋ชจ๋ธ ์ ํ ์ต์ ํ
์๋ฌธ ์ทจ์ง:
- ๋ฐ๋ณต ๋ฃจํด(heartbeat/cron ์์ฝ)์ ์ ๋น์ฉ ๋ชจ๋ธ
- ๋ณต์ก ๋ถ์/์ฝ๋ฉ์ ๊ณ ์ฑ๋ฅ ๋ชจ๋ธ
7) ์บ์ฑ ์๋ ์ฌ๋ถ ํ์ธ๋ฒ
7-1. ์ธ์ JSONL์์ usage ํ์ธ
์๋ฌธ ๊ธฐ์ค ํ๋จ:
cacheRead > 0โ ํํธcacheRead = 0โ ๋ฏธ์คcacheWrite๊ธ์ฆ โ ์ ์บ์ ์์ฑ/๊ฐฑ์ ๊ตฌ๊ฐ
7-2. ์๋ฌธ grep ์์(์๋ ์ ์ง)
grep "cacheRead\|cacheWrite" <session>.jsonl | python3 -c "
import sys, json
for line in sys.stdin:
d = json.loads(line)
if d.get('type') == 'message':
u = d['message'].get('usage', {})
if u.get('cacheRead', 0) > 0:
print(f\"ํํธ: {u['cacheRead']:,} tok read, {u['cacheWrite']:,} tok write\")
"7-3. ์๋ฌธ ๋น ๋ฅธ ์ ๊ฐ ์ถ์ ์์(์๋)
cacheRead์ด๋์ ๋จ๊ฐ ์ฐจ์ด๋ฅผ ๊ณฑํด ๋๋ต ์ ๊ฐ์ก ์ถ์
8) ์๋ฌธ ์์ฝ ์ฒดํฌ๋ฆฌ์คํธ (๊ทธ๋๋ก ๋ฐ์)
cacheRetention: "long"์ค์ contextPruning.mode: "cache-ttl"+ttl์ ํฉ์ฑ- cron job์
isolated์ฐ์ - cron ์ง์ ํ์ผ์ ์งง๊ฒ ์ ์ง
- ์ปจํ ์คํธ ๊ณผ๋ํ ๋ฐฉ์ง
- ๋จ์ ๋ฐ๋ณต ์์ ์ ๊ฒฝ๋ ๋ชจ๋ธ ์ฌ์ฉ
diagnostics.cacheTrace๋๋ usage ๋ก๊ทธ๋ก ๋ชจ๋ํฐ๋ง
9) ์ด์ ์ ์ฃผ์(๊ฒ์ฆ ๋ณด๊ฐ)
- ๋น์ฉ ์ซ์๋ ๋ชจ๋ธ ๊ฐ๊ฒฉํ/์ธ์ฆ ๋ฐฉ์/API ์ ์ฑ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
long์บ์ฑ์ Anthropic API ๊ฒฝ๋ก์์ ์ ํจํ๋ฉฐ, ์ธ์ฆ ๋ฐฉ์๋ณ ๊ธฐ๋ณธ๊ฐ ์ฐจ์ด๊ฐ ์๋ค.- pruning์ โ๊ธฐ๋ก ์ญ์ โ๊ฐ ์๋๋ผ โ์์ฒญ ์ง์ ์ ์ก ์ปจํ ์คํธ ์ ๋ฆฌโ๋ค.
AI ํ์ฉ ๊ณ ์ง
์ด ๋ฌธ์๋ ์ธ๋ถ ๊ณต๊ฐ ๊ธ(์ฌ๋์ํ์ด์ง)์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ AI๊ฐ ์ด์์ ์ฌ๊ตฌ์ฑํ๊ณ , OpenClaw ๊ณต์ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ํญ๋ชฉ/ํํ์ ๊ต์ ํด ์ ๋ฆฌํ๋ค.
๐ ๋ค์ ์ฝ๊ธฐ
- ๐ฆ 07. Quota โ ์ฌ์ฉ๋ ํ๋ ๊ด๋ฆฌ
- ๐ฆ 31. Quota ๋ฆฌ์ ์๋จ ํด๊ฒฐ โ ํ ๋น๋ ๋ฆฌ์ ํธ๋ฌ๋ธ์ํ
- ๐ฆ 20. ์ด์์ํคํ ์ฒ ๊ท์น์ด์ ๋ฆฌ โ ์ ์ฒด ์ด์ ๊ธฐ์ค