ТЕХНИЧЕСКИЙ ГАЙД

OpenClaw: сокращаем расходы на 80%

6 шагов, реальные конфиги, конкретные цифры. От $100-300 до $10-30 в месяц.

~15 минут чтения 6 шагов Готовые конфиги
TECHNICAL GUIDE

OpenClaw: Cut Costs by 80%

6 steps, real configs, concrete numbers. From $100-300 to $10-30 per month.

~15 min read 6 steps Ready-made configs

Проблема · Почему 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-файлы загружаются в контекст при каждом сообщении. Каждый лишний килобайт — это деньги.

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 КБ. Решение:

  1. Создайте memory/archive-YYYY-MM-DD.md для старых записей
  2. В MEMORY.md оставьте только актуальное
  3. Цель: MEMORY.md < 5 КБ
2.4-2.6

AGENTS.md, HEARTBEAT.md, SOUL.md

Удалите неиспользуемые разделы, упростите инструкции для дешёвой модели, уберите дубли.

ФайлБылоСтало
MEMORY.md22 КБ4.4 КБ
AGENTS.md7.8 КБ2.3 КБ
SOUL.md7.2 КБ4.2 КБ
HEARTBEAT.md4.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

{
  "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

{
  "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

Полный конфиг · Всё вместе

COPY-PASTE READY
{
  "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 routingHaiku для subagents, fallback5 мин~40-50%
2. Сжатие workspaceDRY, архивация, аудит30 мин~50% input
3. Ollama heartbeatsЛокальная модель15 мин$15-25 → $0
4. bootstrapMaxCharsЛимит контекста1 минСтраховка
5. Token EfficiencyИнструкции краткости5 мин~30-50% output
6. Очистка сессийСкрипт архивации5 минСкорость
МетрикаДоПосле
Bootstrap context45+ КБ (~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.

2.1

Check your current size

du -sh ~/.openclaw/workspace/
# Typical result: 45-80 KB

wc -c ~/.openclaw/workspace/*.md
2.2

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.

2.3

MEMORY.md — the main source of bloat

It grows over time. After a month, it’s 20-30 KB. Solution:

  1. Create memory/archive-YYYY-MM-DD.md for old entries
  2. Keep only current items in MEMORY.md
  3. Target: MEMORY.md < 5 KB
2.4-2.6

AGENTS.md, HEARTBEAT.md, SOUL.md

Remove unused sections, simplify instructions for the cheap model, eliminate duplicates.

FileBeforeAfter
MEMORY.md22 KB4.4 KB
AGENTS.md7.8 KB2.3 KB
SOUL.md7.2 KB4.2 KB
HEARTBEAT.md4.8 KB1.6 KB
Total45+ KB20 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.

3.1-3.3

Installation

# Install Ollama
brew install ollama

# Download model (~2 GB)
ollama pull llama3.2:3b

# Start (or open Ollama.app)
ollama serve
3.4

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
          }
        ]
      }
    }
  }
}
3.5

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

COPY-PASTE READY
{
  "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

StepWhat we doTimeSavings
1. Multi-model routingHaiku for subagents, fallback5 min~40-50%
2. Workspace compressionDRY, archiving, audit30 min~50% input
3. Ollama heartbeatsLocal model15 min$15-25 → $0
4. bootstrapMaxCharsContext limit1 minSafety net
5. Token EfficiencyBrevity instructions5 min~30-50% output
6. Session cleanupArchival script5 minSpeed
MetricBeforeAfter
Bootstrap context45+ KB (~15K tokens)20 KB (~7K)
Heartbeat modelSonnet ($3/M)Ollama ($0)
Subagent modelSonnet ($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