Проблема · Почему OpenClaw дорогой из коробки
OpenClaw — мощная платформа для AI-ассистентов. Но из коробки она не оптимизирована по расходам:
Одна модель для всего. По умолчанию OpenClaw использует одну модель (обычно Sonnet) для основных задач, heartbeats, subagents. Sonnet стоит $3 за миллион input-токенов.
Раздутый bootstrap. Каждое сообщение начинается с загрузки всех workspace-файлов. Типичный workspace — 45+ КБ (~15 000 токенов). Это $0.045 только за один bootstrap.
Нет лимита на контекст. Если workspace вырос до 100 КБ — OpenClaw загрузит все 100 КБ в каждое сообщение.
Heartbeats на дорогой модели. Каждые 3-4 часа. Каждый heartbeat = bootstrap + проверка + ответ. На Sonnet это $0.10-0.20, или $2-5 в день.
Результат: $100-300/мес, из которых 60-70% — накладные расходы. В этом гайде — 6 шагов, которые сократят расходы на 80%.
Шаг 1 · Multi-model routing 5 мин ~40-50%
Максимальный эффект. Дорогая модель — для сложных задач, дешёвая — для рутины.
Откройте ~/.openclaw/openclaw.json и настройте секцию agents.defaults:
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5-20250929",
"fallbacks": ["anthropic/claude-haiku-4-5-20251001"]
},
"models": {
"anthropic/claude-haiku-4-5-20251001": { "alias": "haiku" },
"anthropic/claude-sonnet-4-5-20250929": { "alias": "sonnet" }
},
"subagents": {
"model": "anthropic/claude-haiku-4-5-20251001"
}
}
}
}
Что происходит:
primary— основная модель для чатов (Sonnet, $3/M input)fallbacks— автоматическое переключение на Haiku при rate limit ($0.25/M input)subagents.model— subagents всегда используют Haiku (в 12 раз дешевле)
Subagents на Haiku — это ок. Они выполняют параллельные подзадачи: поиск файлов, проверки, простые запросы. Haiku 4.5 справляется отлично.
Шаг 2 · Сжатие workspace 30 мин ~50% input
Workspace-файлы загружаются в контекст при каждом сообщении. Каждый лишний килобайт — это деньги.
Проверьте текущий размер
du -sh ~/.openclaw/workspace/
# Типичный результат: 45-80 КБ
wc -c ~/.openclaw/workspace/*.md
Принцип DRY: не дублировать
Самая частая проблема — информация повторяется в нескольких файлах:
- Описание проекта — в SOUL.md, AGENTS.md, и MEMORY.md
- Список инструментов — в TOOLS.md и AGENTS.md
- Команды — в AGENTS.md и MEMORY.md
Правило: каждый факт должен жить в одном месте. Остальные файлы ссылаются на него.
MEMORY.md — главный источник раздувания
Растёт со временем. Через месяц — 20-30 КБ. Решение:
- Создайте
memory/archive-YYYY-MM-DD.mdдля старых записей - В MEMORY.md оставьте только актуальное
- Цель: MEMORY.md < 5 КБ
AGENTS.md, HEARTBEAT.md, SOUL.md
Удалите неиспользуемые разделы, упростите инструкции для дешёвой модели, уберите дубли.
| Файл | Было | Стало |
|---|---|---|
| MEMORY.md | 22 КБ | 4.4 КБ |
| AGENTS.md | 7.8 КБ | 2.3 КБ |
| SOUL.md | 7.2 КБ | 4.2 КБ |
| HEARTBEAT.md | 4.8 КБ | 1.6 КБ |
| Всего | 45+ КБ | 20 КБ |
Шаг 3 · Ollama для heartbeats 15 мин $0/мес
Ollama запускает LLM локально. Модель llama3.2:3b весит 2 ГБ и отлично справляется с heartbeat-задачами.
Установка
# Установить Ollama
brew install ollama
# Скачать модель (~2 ГБ)
ollama pull llama3.2:3b
# Запустить (или откройте Ollama.app)
ollama serve
Настроить провайдер в openclaw.json
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434/v1",
"api": "openai-completions",
"apiKey": "ollama-local",
"models": [
{
"id": "llama3.2:3b",
"name": "Llama 3.2 3B",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0, "output": 0,
"cacheRead": 0, "cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192
}
]
}
}
}
}
Назначить Ollama на heartbeats
{
"agents": {
"defaults": {
"heartbeat": {
"model": "ollama/llama3.2:3b"
}
}
}
}
Результат: heartbeats работают локально, без API. Стоимость: $0. Задержка: 2-5 сек.
Шаг 4 · bootstrapMaxChars 1 мин страховка
Одна строка в agents.defaults:
{
"agents": {
"defaults": {
"bootstrapMaxChars": 12000
}
}
}
Если workspace вырос сверх лимита — OpenClaw обрежет bootstrap-контекст, а не загрузит всё.
Рекомендуемые значения:
12000— агрессивная экономия (для сжатого workspace)20000— умеренная (хороший баланс)30000— лёгкая (для workspace с большим количеством инструкций)
Шаг 5 · Token Efficiency в system prompt 5 мин ~30-50% output
Добавьте в SOUL.md блок инструкций по экономии:
## Token Efficiency
- Отвечай кратко. Не повторяй контекст обратно.
- Для heartbeats: если нечего сообщить → только HEARTBEAT_OK
- Не пересказывай файлы — используй ссылки.
- Группируй проверки: одно сообщение вместо нескольких.
Без этого блока ассистент может пересказывать содержимое файлов (+500-1000 output-токенов), отвечать развёрнуто на heartbeat вместо HEARTBEAT_OK, отправлять 3 сообщения вместо одного.
С инструкциями Token Efficiency ассистент генерирует на 30-50% меньше output-токенов.
Шаг 6 · Автоматическая очистка сессий 5 мин скорость
Каждая сессия OpenClaw сохраняется в .jsonl. За месяц — сотни мегабайт. Создайте скрипт:
#!/usr/bin/env bash
# cleanup-sessions.sh
set -euo pipefail
SESSIONS_DIR="$HOME/.openclaw/agents/main/sessions"
ARCHIVE_DIR="$HOME/.openclaw/sessions-archive"
DAYS="${1:-7}"
[ ! -d "$SESSIONS_DIR" ] && echo "Нет сессий" && exit 1
TOTAL=$(find "$SESSIONS_DIR" -name '*.jsonl' | wc -l | tr -d ' ')
OLD=$(find "$SESSIONS_DIR" -name '*.jsonl' -mtime +"$DAYS" | wc -l | tr -d ' ')
SIZE_BEFORE=$(du -sh "$SESSIONS_DIR" | cut -f1)
echo "Сессии: $TOTAL ($SIZE_BEFORE), старше $DAYS дней: $OLD"
[ "$OLD" -eq 0 ] && echo "Нечего архивировать" && exit 0
mkdir -p "$ARCHIVE_DIR"
ARCHIVE="sessions-$(date +%Y%m%d).tar.gz"
find "$SESSIONS_DIR" -name '*.jsonl' -mtime +"$DAYS" -print0 | \
tar czf "$ARCHIVE_DIR/$ARCHIVE" --null -T -
find "$SESSIONS_DIR" -name '*.jsonl' -mtime +"$DAYS" -delete
echo "Готово: $(du -sh "$SESSIONS_DIR" | cut -f1), удалено: $OLD"
chmod +x cleanup-sessions.sh
./cleanup-sessions.sh 7
Полный конфиг · Всё вместе
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5-20250929",
"fallbacks": ["anthropic/claude-haiku-4-5-20251001"]
},
"models": {
"anthropic/claude-haiku-4-5-20251001": { "alias": "haiku" },
"anthropic/claude-sonnet-4-5-20250929": { "alias": "sonnet" }
},
"bootstrapMaxChars": 12000,
"heartbeat": {
"model": "ollama/llama3.2:3b"
},
"subagents": {
"model": "anthropic/claude-haiku-4-5-20251001"
}
}
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434/v1",
"api": "openai-completions",
"apiKey": "ollama-local",
"models": [
{
"id": "llama3.2:3b",
"name": "Llama 3.2 3B",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0, "output": 0,
"cacheRead": 0, "cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192
}
]
}
}
}
}
Результат · До и После
| Шаг | Что делаем | Время | Экономия |
|---|---|---|---|
| 1. Multi-model routing | Haiku для subagents, fallback | 5 мин | ~40-50% |
| 2. Сжатие workspace | DRY, архивация, аудит | 30 мин | ~50% input |
| 3. Ollama heartbeats | Локальная модель | 15 мин | $15-25 → $0 |
| 4. bootstrapMaxChars | Лимит контекста | 1 мин | Страховка |
| 5. Token Efficiency | Инструкции краткости | 5 мин | ~30-50% output |
| 6. Очистка сессий | Скрипт архивации | 5 мин | Скорость |
| Метрика | До | После |
|---|---|---|
| Bootstrap context | 45+ КБ (~15K токенов) | 20 КБ (~7K) |
| Heartbeat модель | Sonnet ($3/M) | Ollama ($0) |
| Subagent модель | Sonnet ($3/M) | Haiku ($0.25/M) |
| Idle расход/день | $2-5 | $0 |
| Расход/мес | $100-300 | $10-30 |
Время на все 6 шагов: ~1 час. Экономия: 80-90% в месяц.
Не хотите делать вручную?
Все эти оптимизации уже встроены в MILA GPT — персональный AI-ассистент на базе OpenClaw.
- ✓ Multi-model routing — из коробки
- ✓ Ollama для heartbeats — предустановлен
- ✓ Workspace сжат и оптимизирован
- ✓ Token Efficiency — в system prompt
- ✓ Скрипт очистки сессий — включён
Problem · Why OpenClaw Is Expensive Out of the Box
OpenClaw is a powerful platform for AI assistants. But out of the box, it is not optimized for cost:
One model for everything. By default, OpenClaw uses a single model (usually Sonnet) for main tasks, heartbeats, and subagents. Sonnet costs $3 per million input tokens.
Bloated bootstrap. Every message starts by loading all workspace files. A typical workspace is 45+ KB (~15,000 tokens). That is $0.045 just for one bootstrap.
No context limit. If your workspace grew to 100 KB, OpenClaw will load all 100 KB into every message.
Heartbeats on an expensive model. Every 3-4 hours. Each heartbeat = bootstrap + check + response. On Sonnet that is $0.10-0.20, or $2-5 per day.
Result: $100-300/month, of which 60-70% is overhead. In this guide — 6 steps that will cut costs by 80%.
Step 1 · Multi-model routing 5 min ~40-50%
Maximum impact. Use the expensive model for complex tasks, the cheap one for routine work.
Open ~/.openclaw/openclaw.json and configure the agents.defaults section:
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5-20250929",
"fallbacks": ["anthropic/claude-haiku-4-5-20251001"]
},
"models": {
"anthropic/claude-haiku-4-5-20251001": { "alias": "haiku" },
"anthropic/claude-sonnet-4-5-20250929": { "alias": "sonnet" }
},
"subagents": {
"model": "anthropic/claude-haiku-4-5-20251001"
}
}
}
}
What happens:
primary— main model for chats (Sonnet, $3/M input)fallbacks— automatic switch to Haiku on rate limit ($0.25/M input)subagents.model— subagents always use Haiku (12x cheaper)
Subagents on Haiku — that is fine. They handle parallel subtasks: file search, checks, simple queries. Haiku 4.5 handles them perfectly.
Step 2 · Workspace compression 30 min ~50% input
Workspace files are loaded into context with every message. Every extra kilobyte costs money.
Check your current size
du -sh ~/.openclaw/workspace/
# Typical result: 45-80 KB
wc -c ~/.openclaw/workspace/*.md
DRY principle: do not duplicate
The most common issue — information is repeated across multiple files:
- Project description — in SOUL.md, AGENTS.md, and MEMORY.md
- Tool list — in TOOLS.md and AGENTS.md
- Commands — in AGENTS.md and MEMORY.md
Rule: each fact should live in one place. Other files reference it.
MEMORY.md — the main source of bloat
It grows over time. After a month — 20-30 KB. Solution:
- Create
memory/archive-YYYY-MM-DD.mdfor old entries - Keep only current items in MEMORY.md
- Target: MEMORY.md < 5 KB
AGENTS.md, HEARTBEAT.md, SOUL.md
Remove unused sections, simplify instructions for the cheap model, eliminate duplicates.
| File | Before | After |
|---|---|---|
| MEMORY.md | 22 KB | 4.4 KB |
| AGENTS.md | 7.8 KB | 2.3 KB |
| SOUL.md | 7.2 KB | 4.2 KB |
| HEARTBEAT.md | 4.8 KB | 1.6 KB |
| Total | 45+ KB | 20 KB |
Step 3 · Ollama for heartbeats 15 min $0/mo
Ollama runs LLMs locally. The llama3.2:3b model weighs 2 GB and handles heartbeat tasks perfectly.
Installation
# Install Ollama
brew install ollama
# Download model (~2 GB)
ollama pull llama3.2:3b
# Start (or open Ollama.app)
ollama serve
Configure provider in openclaw.json
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434/v1",
"api": "openai-completions",
"apiKey": "ollama-local",
"models": [
{
"id": "llama3.2:3b",
"name": "Llama 3.2 3B",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0, "output": 0,
"cacheRead": 0, "cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192
}
]
}
}
}
}
Assign Ollama to heartbeats
{
"agents": {
"defaults": {
"heartbeat": {
"model": "ollama/llama3.2:3b"
}
}
}
}
Result: heartbeats run locally, no API calls. Cost: $0. Latency: 2-5 sec.
Step 4 · bootstrapMaxChars 1 min safety net
One line in agents.defaults:
{
"agents": {
"defaults": {
"bootstrapMaxChars": 12000
}
}
}
If your workspace exceeds the limit, OpenClaw will truncate the bootstrap context instead of loading everything.
Recommended values:
12000— aggressive savings (for a compressed workspace)20000— moderate (good balance)30000— light (for workspaces with many instructions)
Step 5 · Token Efficiency in system prompt 5 min ~30-50% output
Add a Token Efficiency instruction block to SOUL.md:
## Token Efficiency
- Отвечай кратко. Не повторяй контекст обратно.
- Для heartbeats: если нечего сообщить → только HEARTBEAT_OK
- Не пересказывай файлы — используй ссылки.
- Группируй проверки: одно сообщение вместо нескольких.
Without this block, the assistant may re-state file contents (+500-1,000 output tokens), respond verbosely to heartbeats instead of just HEARTBEAT_OK, or send 3 messages instead of one.
With Token Efficiency instructions, the assistant generates 30-50% fewer output tokens.
Step 6 · Automatic session cleanup 5 min speed
Every OpenClaw session is saved as a .jsonl file. After a month — hundreds of megabytes. Create a script:
#!/usr/bin/env bash
# cleanup-sessions.sh
set -euo pipefail
SESSIONS_DIR="$HOME/.openclaw/agents/main/sessions"
ARCHIVE_DIR="$HOME/.openclaw/sessions-archive"
DAYS="${1:-7}"
[ ! -d "$SESSIONS_DIR" ] && echo "No sessions" && exit 1
TOTAL=$(find "$SESSIONS_DIR" -name '*.jsonl' | wc -l | tr -d ' ')
OLD=$(find "$SESSIONS_DIR" -name '*.jsonl' -mtime +"$DAYS" | wc -l | tr -d ' ')
SIZE_BEFORE=$(du -sh "$SESSIONS_DIR" | cut -f1)
echo "Sessions: $TOTAL ($SIZE_BEFORE), older than $DAYS days: $OLD"
[ "$OLD" -eq 0 ] && echo "Nothing to archive" && exit 0
mkdir -p "$ARCHIVE_DIR"
ARCHIVE="sessions-$(date +%Y%m%d).tar.gz"
find "$SESSIONS_DIR" -name '*.jsonl' -mtime +"$DAYS" -print0 | \
tar czf "$ARCHIVE_DIR/$ARCHIVE" --null -T -
find "$SESSIONS_DIR" -name '*.jsonl' -mtime +"$DAYS" -delete
echo "Done: $(du -sh "$SESSIONS_DIR" | cut -f1), deleted: $OLD"
chmod +x cleanup-sessions.sh
./cleanup-sessions.sh 7
Full Config · All Together
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5-20250929",
"fallbacks": ["anthropic/claude-haiku-4-5-20251001"]
},
"models": {
"anthropic/claude-haiku-4-5-20251001": { "alias": "haiku" },
"anthropic/claude-sonnet-4-5-20250929": { "alias": "sonnet" }
},
"bootstrapMaxChars": 12000,
"heartbeat": {
"model": "ollama/llama3.2:3b"
},
"subagents": {
"model": "anthropic/claude-haiku-4-5-20251001"
}
}
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434/v1",
"api": "openai-completions",
"apiKey": "ollama-local",
"models": [
{
"id": "llama3.2:3b",
"name": "Llama 3.2 3B",
"reasoning": false,
"input": ["text"],
"cost": {
"input": 0, "output": 0,
"cacheRead": 0, "cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192
}
]
}
}
}
}
Results · Before and After
| Step | What we do | Time | Savings |
|---|---|---|---|
| 1. Multi-model routing | Haiku for subagents, fallback | 5 min | ~40-50% |
| 2. Workspace compression | DRY, archiving, audit | 30 min | ~50% input |
| 3. Ollama heartbeats | Local model | 15 min | $15-25 → $0 |
| 4. bootstrapMaxChars | Context limit | 1 min | Safety net |
| 5. Token Efficiency | Brevity instructions | 5 min | ~30-50% output |
| 6. Session cleanup | Archival script | 5 min | Speed |
| Metric | Before | After |
|---|---|---|
| Bootstrap context | 45+ KB (~15K tokens) | 20 KB (~7K) |
| Heartbeat model | Sonnet ($3/M) | Ollama ($0) |
| Subagent model | Sonnet ($3/M) | Haiku ($0.25/M) |
| Idle cost/day | $2-5 | $0 |
| Cost/month | $100-300 | $10-30 |
Time for all 6 steps: ~1 hour. Savings: 80-90% per month.
Don't want to do it manually?
All these optimizations are already built into MILA GPT — a personal AI assistant powered by OpenClaw.
- ✓ Multi-model routing — out of the box
- ✓ Ollama for heartbeats — pre-installed
- ✓ Workspace compressed and optimized
- ✓ Token Efficiency — in system prompt
- ✓ Session cleanup script — included