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

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 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.

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 — 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.

2.3

MEMORY.md — the main source of bloat

It grows over time. After a month — 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 weighs 2 GB 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 — 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