Проблема · Почему 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 has grown 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. This guide covers 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)
Running subagents on Haiku 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 is information 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, it’s 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 is a 2 GB download 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, that’s 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