6 шагов, реальные конфиги, конкретные цифры. От $100-300 до $10-30 в месяц. ~15 минут чтения.
Содержание
- Шаг 1: Multi-model routing
- Шаг 2: Сжатие workspace
- Шаг 3: Ollama для heartbeats
- Шаг 4: bootstrapMaxChars
- Шаг 5: Token Efficiency prompt
- Шаг 6: Очистка сессий
Проблема · Почему 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`:
```json { "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-файлы загружаются в контекст при каждом сообщении. Каждый лишний килобайт — это деньги.
2.1. Проверьте текущий размер
``` du -sh ~/.openclaw/workspace/ # Типичный результат: 45-80 КБ
wc -c ~/.openclaw/workspace/*.md ```
2.2. Принцип DRY: не дублировать
Самая частая проблема — информация повторяется в нескольких файлах:
- Описание проекта — в SOUL.md, AGENTS.md, и MEMORY.md
- Список инструментов — в TOOLS.md и AGENTS.md
- Команды — в AGENTS.md и MEMORY.md
Правило: каждый факт должен жить в одном месте. Остальные файлы ссылаются на него.
2.3. MEMORY.md — главный источник раздувания
Растёт со временем. Через месяц — 20-30 КБ. Решение:
- Создайте `memory/archive-YYYY-MM-DD.md` для старых записей
- В MEMORY.md оставьте только актуальное
- Цель: MEMORY.md < 5 КБ
2.4–2.6. 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-задачами.
3.1–3.3. Установка
``` # Установить Ollama brew install ollama
# Скачать модель (~2 ГБ) ollama pull llama3.2:3b
# Запустить (или откройте Ollama.app) ollama serve ```
3.4. Настроить провайдер в openclaw.json
```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 } ] } } } } ```
3.5. Назначить Ollama на heartbeats
```json { "agents": { "defaults": { "heartbeat": { "model": "ollama/llama3.2:3b" } } } } ```
Результат: heartbeats работают локально, без API. Стоимость: $0. Задержка: 2-5 сек.
Шаг 4 · bootstrapMaxChars
1 мин · страховка
Одна строка в `agents.defaults`:
```json { "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`. За месяц — сотни мегабайт. Создайте скрипт:
```bash #!/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 ```
Полный конфиг · Всё вместе
```json { "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% в месяц.