Ledger Architecture: как запускать шесть бизнесов на Grok Bot + Kimi K3

Полный перевод X Article NO1ennn о ledger-архитектуре для Grok Bot и Kimi K3: шесть агентов, шесть ledgers, один desk, контроль денег и handoffs с источниками.

Ledger Architecture: как запускать шесть бизнесов на Grok Bot + Kimi K3

Оригинал опубликован NO1ennn в X Article. Поводом для импорта стал пост автора о Pump Corporation.

Каждый бизнес получает собственного agent, каждое число получает owner, и всё, что двигает деньги, останавливается перед вами.


Почему эта связка, а не одно или другое

Grok Bot — это готовая картинка. Вы пишете именованным bots как teammates; они делят одну persistent cloud machine с browser, filesystem и terminal, остаются залогиненными в ваши реальные tools и продолжают работать, когда ноутбук закрыт.

Kimi K3 — это parts bin. Open weights, coding agent с реальными hands, skills, MCP, subagents и SDK. Ничего не спрятано за subscription tier, и org chart остаётся вашим.

Большинство воспринимает это как versus. Это не так. Grok Bot — самый быстрый способ почувствовать, как выглядит рабочая crew. Kimi K3 — способ пересобрать эту crew так, чтобы она принадлежала вам и масштабировалась дальше одного аккаунта.

Бизнесам всё равно, что вы используете. Им важно, чтобы кто-то владел числом.


Установка Kimi K3

Original video

Сначала уберу один миф. Kimi K3 — это не laptop install. Это open weight MoE model на 2,8 триллиона параметров, примерно 104B активных параметров на token через 896 experts, native vision и context window на 1 048 576 токенов. Официальный MXFP4 checkpoint занимает около 1,5-1,6 TB. Официальные vLLM recipes стартуют с 8× B300 / GB300 class GPUs или AMD MI355X equivalent.

Тот, кто говорит “просто скачай”, не смотрел на размер файла.

Official links

Path A — то, что вам реально нужно в первый день

Используйте hosted model. Web и mobile apps на kimi.com или API. Нулевая infrastructure, полный K3, старт сегодня.

Path B — Kimi Code CLI, hands

Именно это превращает answers в work. Он читает и редактирует files, запускает shell commands, fetches pages и выбирает следующий шаг по тому, что нашёл.

# macOS / Linux
curl -LsSf https://code.kimi.com/install.sh | bash
# Windows
Invoke-RestMethod https://code.kimi.com/install.ps1 | Invoke-Expression

Затем войдите и выберите model:

kimi
/login
/model        # choose Kimi K3

Path C — self-hosting open weights

Только если у вас есть cluster. Официальные engines в README: vLLM, SGLang, TokenSpeed.

pip install -U huggingface_hub
hf download moonshotai/Kimi-K3 --local-dir ./Kimi-K3
vllm serve moonshotai/Kimi-K3 \
  --tensor-parallel-size 8 \
  --trust-remote-code \
  --load-format fastsafetensors \
  --enable-prefix-caching \
  --enable-auto-tool-choice \
  --tool-call-parser kimi_k3 \
  --reasoning-parser kimi_k3

Full recipes: vLLM; cookbook: SGLang.

Community GGUF и Unsloth quants существуют для local runs, но всё ещё требуют сотни GB RAM или VRAM: https://unsloth.ai/docs/models/kimi-k3. CPU ports — proof of concept, не production speed.

Моя рекомендация: начните с API. Переходите на self-hosted только тогда, когда token bill превысит GPU bill; вы точно поймёте, когда это случится, потому что будете за этим следить.


Установка Grok Bot

Здесь нет длинного guide, и в этом смысл. Перейдите на сайт, скачайте, войдите.

https://x.ai/bot

Доступ bundled с более высокими xAI tiers, а не продаётся отдельно, поэтому проверьте, что уже входит в ваш current plan, прежде чем платить дважды.

Две вещи, которые нужно знать перед тем, как копировать туда любой org chart:

One machine, many bots. Каждый bot, которого вы создаёте, делит один persistent cloud computer, привязанный к аккаунту, а не к отдельному bot. Именно поэтому они могут передавать друг другу files, browser sessions и logins. И именно поэтому sensitive credentials не должны жить на этой машине.

There is a ceiling. Bots и group chats ограничены на аккаунт, и собственная документация xAI советует подумать, прежде чем добавлять ещё одного. Хороший совет. Каждый extra bot — ещё одна вещь для debug.


Шесть бизнесов, шесть ledgers, один desk

Это место, где все ошибаются, поэтому скажу прямо.

Вы не строите шесть chatbots. Вы строите шесть ledgers, у каждого есть owner.

Ledger — полное состояние одного бизнеса: что пришло, что в работе, что shipped, что оплачено, что сломалось. Agent, владеющий ledger, не отвечает на вопросы о бизнесе. Он отвечает за число внизу этого ledger.

The six
#	Business	Agent	Owns the number	Never does
1	Content studio	ECHO	published pieces, reach, list growth	never pitches, never invoices
2	Ecommerce store	CRATE	orders shipped, margin per SKU	never changes prices without approval
3	Service agency	PITCH	booked calls, signed retainers	never delivers the work
4	Digital products	VAULT	units sold, refund rate	never runs paid ads
5	Lead generation	BEACON	qualified leads delivered	never negotiates rates
6	Community / membership	HEARTH	active members, churn	never issues credits
—	The desk	WARDEN	routing, cash, priorities	never touches the work itself

Читайте последние две колонки, а не первые две. Businesses взаимозаменяемы. Refusals — это design.

WARDEN — не manager в корпоративном смысле. Это dispatcher с cash view. Он никогда не пишет copy, не пакует orders, не участвует в sales call. Его единственная работа — решать, какой ledger получает внимание дальше, и останавливать всё, что касается денег.

                              YOU
                               │
                          approvals only
                               │
                            WARDEN
                    routing · cash · priorities
                               │
     ┌──────────┬──────────┬───┴───┬──────────┬──────────┐
     ▼          ▼          ▼       ▼          ▼          ▼
   ECHO       CRATE      PITCH   VAULT     BEACON     HEARTH
  content     store      agency  products  leadgen   community
     │          │          │       │          │          │
   cms        supplier    crm     gumroad   scraper    discord
   social     shipping    calendar  stripe   dialer     stripe
   analytics  ads mgr     docs      support  enrich     email

Три правила, которые не дают этому сжечь деньги

Я видел, как многие связывали шесть agents и получали group chat, который просто тратит деньги. Эти три правила отделяют desk от mess.

Rule 1 — два ключа на всё, что двигает деньги

Ни один single agent не может завершить money action. Никогда.

Один agent предлагает, другой agent проверяет по ledger, и вы нажимаете кнопку. Три отдельных contexts, и ни один не может пропустить два других.

CRATE: "reorder 400 units of SKU-118, supplier invoice 2,940"
   ↓
WARDEN: checks cash on hand, checks 30d sell-through, checks open POs
   ↓
   PASS with note: "cash covers it, sell-through 71%, no open PO on 118"
   ↓
YOU: approve / hold / kill

Если WARDEN не может проверить число из ledger, запрос умирает. Он не идёт искать число сам. Proposal без числа — broken proposal, а не puzzle to solve.

Rule 2 — каждое действие получает цвет, и цвета enforced in code

Не в prompt. Prompts — предложения. Code — стена.

GREEN   runs alone, all night, nobody asks
        read the inbox · draft a post · score a lead
        pull analytics · tag a ticket · write to a scratch file

AMBER   runs, then reports before it lands
        schedule a post · update a product description
        reply to a support ticket · move a deal stage

RED     stops dead, waits for a human
        send money · change a price · publish paid ads
        email a client list · issue a refund · delete records
        cancel a supplier order

Две ловушки, в которые попадают люди.

Cancelling is red. Люди кладут cancels в “undo”, но это не undo. Cancelled supplier order на stock, который вы уже продали, — это дыра, и кнопки un-cancel нет.

Reading can be red. Scraper, который сжигает ваш API quota в 2 утра, стоит следующих четырёх часов бизнеса, делящего этот key.

Вот как это выглядит как configuration, а не как добрые намерения:

{
  "permissions": {
    "allow": ["read_*", "grep", "mcp__analytics__*", "mcp__crm__read_*", "mcp__store__read_*"],
    "ask": ["mcp__cms__schedule_post", "mcp__crm__update_stage", "mcp__support__reply"],
    "deny": ["mcp__bank__transfer", "mcp__store__set_price", "mcp__ads__set_budget", "mcp__mail__blast", "mcp__store__cancel_order", "mcp__db__delete_*"]
  },
  "hooks": {"preToolUse": "./guards/colour_check.sh"}
}

deny — это не ask. Deny list существует потому, что в 1 ночи вы одобрите то, чего не стоило. Уберите эту опцию у своего будущего уставшего себя.

Approvals expire. Approval card, на которую никто не ответил за 20 минут, умирает и логирует себя как expired. Упустить opportunity стоит немного. Выполнить действие на context, который устарел шесть часов назад, стоит много.

Rule 3 — каждое утверждение несёт source, иначе handoff отскакивает

Как только agents начинают передавать друг другу numbers, invented numbers начинают двигаться по бизнесу на машинной скорости.

Сделайте это structural, а не judgment call:

{
  "claim": "SKU-118 sell-through 71% over 30d",
  "value": 0.712,
  "source": "mcp://store/reports/sellthrough?sku=118&window=30d",
  "read_at": "2026-08-27T09:14:02Z",
  "produced_by": "crate",
  "ledger": "ecom"
}

Число без source теперь schema violation. Оно падает до WARDEN, и WARDEN не приходится решать, доверять ему или нет.

Именно это правило позволило мне перестать перепроверять всё вручную. Этот re-checking tax не показывают ни в одном demo, а он съедает всю экономию времени.


Как agents на самом деле разговаривают друг с другом

Шесть независимых agents — это шесть бизнесов. Шесть agents, которые передают друг другу работу, — это компания. Разница в wiring.

Daily loop

Каждый ledger работает в одном и том же трёхтактном ритме. Same clock, different work.

07:00  MORNING PULL
       every operator reads its own world and writes a state line
       ECHO   → what published, what performed, what is queued
       CRATE  → orders overnight, stock levels, supplier messages
       PITCH  → replies, booked calls, deals gone quiet
       VAULT  → sales, refunds, support questions
       BEACON → new leads scored, delivery quota status
       HEARTH → joins, cancels, unanswered threads

       WARDEN reads six state lines and writes ONE priority list

12:00  MIDDAY BUILD
       operators work their top two items only
       anything amber gets queued, anything red gets carded

18:00  EVENING CLOSE
       every ledger closes with a number and an exception list
       WARDEN produces one brief for you
       you clear the card queue in about ten minutes

Cross-wire

Здесь прячутся деньги, и это часть, которую почти никто не строит.

Ваши шесть businesses — не шесть островов. Они кормят друг друга, и agents должны route этот traffic автоматически.

ECHO publishes a piece that pulls unusual traffic
  └─→ BEACON tags the inbound as warm, scores it
        └─→ PITCH gets the qualified ones as booked call candidates
              └─→ signed client goes to HEARTH for onboarding
                    └─→ HEARTH sees which questions repeat
                          └─→ VAULT turns the top three into a paid product
                                └─→ ECHO writes the launch content
                                      └─→ loop closes, and it is warmer than last turn

Этот loop — и есть настоящий business. Всё остальное в статье — plumbing, который делает loop безопасным для unattended run.

CRATE стоит немного в стороне и кормит не leads, а cash:

CRATE margin  ──→ WARDEN cash view ──→ funds ad tests for VAULT
                                  └──→ funds BEACON data spend

Как handoff выглядит on the wire

{
  "from": "beacon",
  "to": "pitch",
  "kind": "qualified_lead",
  "priority": "high",
  "payload": {
    "company": "Northline Freight",
    "trigger": "posted 4 ops roles in 14 days",
    "fit_score": 0.81,
    "evidence": ["mcp://jobs/search?company=northline&window=14d", "mcp://crm/history?company=northline"]
  },
  "expires_at": "2026-08-28T09:00:00Z"
}

Обратите внимание на expires_at. Leads портятся. Handoff без expiry превращается в очередь stale work, которую какой-нибудь agent в итоге выполнит в худший момент.

Router enforce org chart, а не prompt

Вежливость в prompt — не control. Положите это в code:

def route(task, desk):
    owner = desk.owner_of(task.ledger)

    if task.colour == "RED" and not desk.has_verification(task.id):
        return card_to_human(task, reason="red action, awaiting your call")

    if not desk.evidence_complete(task.id):
        return bounce(task, to=task.origin, reason="missing source on a number")

    return dispatch(owner, task, desk.slice_for(owner))

desk.slice_for(owner) — тихий герой всей системы. PITCH никогда не видит ecommerce ledger. CRATE никогда не видит client list. Agent нельзя уговорить неправильно использовать данные, которые ему никогда не дали.


Writing the agents

Prompt описывает эту одну задачу. Charter описывает seat. Вам нужны charters.

В Kimi Code это skill files, которые загружаются сами, когда работа совпадает.

---
name: crate-ops
description: Owns the ecommerce ledger end to end
whenToUse: Anything touching orders, stock, suppliers or SKU margin
---

# CRATE — Store Operator

## Owns
Orders shipped, stock cover, margin per SKU, supplier comms.
The number: contribution margin this week.

## Refuses
Never sets or changes a price.
Never cancels a supplier order.
Never runs or edits ads.
Never emails the customer list.

## What good output looks like
A daily state line with four figures, each carrying a source:
orders, stock cover in days, margin, exceptions.
Exceptions are named, not summarised.

## Hard limits
Reorder proposals above 3,000 always go to WARDEN with cash context.
Any SKU below 10 days of cover is an exception, not a note.
Any supplier reply older than 48h without an answer is an exception.

## Rules
If a number is missing, say which one and stop.
Do not estimate margin. Pull it or flag it.
If two data sources disagree, report both and do not pick.

Последнее правило важнее, чем кажется. Agent, который тихо выбирает победителя между двумя конфликтующими numbers, уже начал выдумывать business results.

Сначала пишите refusals. Каждый раз. Если вы не можете написать три вещи, которые seat никогда не должен делать, seat ещё не существует: у вас просто vague helper.


Теперь разговор о деньгах

Буду честен в этом разделе, потому что большинство постов на эту тему такими не являются.

Это model numbers, не receipts. Они показывают, как структура выходит на six figures и что должно быть правдой, чтобы она работала. Ваш market, offer и close rate решают, получится ли. Относитесь к этому как к арифметике, с которой можно спорить, а не как к обещанию.

Реалистичная форма месяца на 100k через шесть ledgers:

Service agency (PITCH)        8 retainers × 4,500       = 36,000
Digital products (VAULT)      620 units × 39            = 24,180
Ecommerce (CRATE)             1,400 orders × 14 margin  = 19,600
Lead generation (BEACON)      3 clients × 3,500         = 10,500
Community (HEARTH)            410 members × 19          =  7,790
Content studio (ECHO)         sponsorships + affiliate  =  4,800
                                                          -------
                                                         102,870

ECHO зарабатывает меньше всех и является самым важным seat на desk. Оценивайте его по тому, что он отправляет downstream, а не по тому, что он bills.

Cost side, если всё запускать через API:

Model usage across six ledgers        900 - 1,600 / month
Tools, hosting, data, subscriptions   400 -   700 / month
Grok Bot access (bundled tier)              included
                                      ------------------
                                      1,300 - 2,300 / month

Интересное число — не margin. Это cost per finished task, потому что именно оно показывает, когда стоит менять billing model. Отслеживайте его с первой недели. Flat subscriptions выигрывают у per-token pricing выше определённого volume threshold, и найти свой threshold без собственных данных невозможно.


Порядок сборки, который реально работает

Не стройте шесть agents сразу. Вы потратите месяц на debugging company, у которой нет customers.

WEEK 1   One ledger. The one already making money.
         Run its jobs manually through Kimi Code and watch.
         Write down every place it stalled or guessed.
         That list is your first charter.

WEEK 2   Colour every action in that ledger.
         Put green, amber, red into permissions and a preToolUse hook.
         Break it on purpose. Try to make it spend. Fix what leaked.

WEEK 3   Second ledger, and WARDEN.
         Two operators is where routing starts to matter.
         Build the evidence schema now, before six seats depend on it.

WEEK 4   Wire the first cross-handoff between the two.
         One direction only. Prove it moves work without you.

WEEK 5-6 Ledgers three and four. Reuse the charter template.
         The second half is much faster than the first.

WEEK 7   The SDK wrapper and the schedule.
         Now it runs nights and you check a queue in the morning.

WEEK 8   Ledgers five and six, only if four ran a full week
         without you opening a terminal.
from kimi_agent_sdk import Agent, Session

desk = Session(
    work_dir="./desk",
    skills=["warden", "echo", "crate", "pitch", "vault", "beacon", "hearth"],
    mcp_servers=["store", "crm", "cms", "mail", "analytics", "stripe"],
)

run = Agent(session=desk).run(
    task="Run the evening close on all six ledgers. Card anything red.",
    require_approval=["mcp__bank__transfer", "mcp__store__set_price", "mcp__ads__set_budget", "mcp__mail__blast"],
)

for event in run.events:
    if event.type == "approval_requested":
        push_card(event)     # your queue, your expiry, your decision

Failure list

Всё ниже уже ломало кому-то систему. Прочитайте это до сборки, а не после.

Один agent на business, а не один agent на tool. Tool-shaped agents размножаются, пока у вас не оказывается двадцать вещей для debug и ни одного owner числа.

Dispatcher не должен делать work. В момент, когда WARDEN начинает писать copy, он перестаёт уметь говорить “нет”.

Ни один agent не чинит плохой input другого agent. Он rejects it и называет missing field. Repair прячет broken upstream навсегда.

Shared credentials — shared blast radius. Одна машина Grok Bot на аккаунт — feature для handoffs и risk для keys. Scope credentials per ledger.

Every seat on the same base model is one blind spot. Если все рассуждают одинаково, они одинаково промахиваются. Честное исправление — другая model в verification chair.

One poisoned data source hits several ledgers at once. Если BEACON, PITCH и WARDEN доверяют одному feed, плохой feed рождает confident agreement вместо disagreement, который поймал бы проблему.

Coordination gets harder faster than output gets better. Шесть — не magic; это минимальное число, при котором каждая dangerous capability сидит в отдельном chair. Добавляйте седьмого только когда шестой стал скучным.


Суть

То, что вы на самом деле строите, — не шесть AI workers. Это desk, где у каждого числа есть owner, у каждого claim есть source, и всё, что двигает деньги, останавливается перед человеком.

Model важит меньше, чем люди думают. K3 даёт reasoning и context window, чтобы удержать полный business day. Kimi Code даёт hands. Grok Bot показывает, как выглядит finished thing, ещё до того как вы его построили.

Org chart — это product. Six agents, six ledgers, one desk и queue, которую вы очищаете за десять минут в день.

Вот как выглядит running six businesses, когда за ними никто не смотрит, кроме вас.


If this was useful, I post breakdowns like this every few days.

Subscribe to Temperature 0.7 - AI блог об AI и роботах

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe