CFS · Plano de construção · 04.09.2026

Duas Maris,
um cérebro
só, um relógio

Duas agentes autônomas, ao mesmo tempo, com liberdade total e o mesmo conhecimento. Uma no Claude, outra no Kimi K3. Esta página conta como isso funciona do jeito que vai ser vivido: uma quinta-feira comum, hora a hora. Cada hora abre a peça que precisa existir pra aquela hora não dar errado.

Rolo 1 · um dia com as duas

O que acontece, hora a hora

Não é a história de um apagão. É um dia normal de trabalho com duas funcionárias que sabem exatamente a mesma coisa. É aí que aparece o que precisa ser construído, e o que já está pronto.

07h00

O relógio toca, e toca uma vez só

O briefing matinal sai. Uma mensagem, não duas. Os lembretes das 7h30, 12h e 16h também. O monitor de e-mail, o vigia de contexto, o alerta da ficha que roda a cada minuto: tudo uma vez.

A garantia · crontab é por usuário

Hoje são 72 rotinas automáticas ativas, todas na crontab do usuário mari. A Mari K roda como um usuário novo, marik, e a crontab dela nasce vazia. Não é regra combinada, é como o Linux funciona: pra escrever na crontab do mari ela precisaria de crontab -u mari, que exige root, que ela não tem.

Descoberta que muda a conversa: nenhuma dessas rotinas passa pela sessão de agente nenhuma. São scripts do cron que escrevem direto em /opt/mari-bot/outbox/ ou chamam a API do Telegram. A Mari podia estar morta ontem e o briefing sairia igual.

VERIFICADO · li a crontab inteira e abri os scripts de rotina. morning-briefing.sh, lembrete-agenda-tarefas.py, mail_monitor.py, rastreio_monitor.py, consolidate-memory.sh e curate-skills.sh escrevem no outbox. chip_monitor.py, pg_saturation_monitor.py e check-meta-token.sh chamam a API do Telegram direto. Só o monitor-session-context.sh fala com o tmux, e nele a sessão está fixa como "mari" na linha 18.

07h05

Mas ela lê o mesmo CLAUDE.md que fala do despertador

Esse é o risco de verdade, e não é o cron. O arquivo de instruções é compartilhado, e ele descreve as rotinas em primeira pessoa: "o despertador das 07h me acorda", "no briefing matinal, trazer o que merece atenção sem esperar pergunta". Ela boota, lê isso, e pode concluir que é dela.

A construir · três camadas, da mais forte pra mais fraca

1. Usuário separado. Estrutural. Ela não tem os jobs e não consegue tê-los. Nem que quisesse.

2. Outbox separado. Ela escreve em /opt/mari-bot-k/outbox. Se um dia ela decidir mandar um briefing por conta própria, ele chega no chat dela, numa conversa separada. Fica óbvio e visível, nunca vira um duplicado confuso no mesmo fio.

3. O delta dela em /home/marik/.claude/CLAUDE.md. Umas dez linhas: as rotinas de relógio não são suas, você nunca inicia nada por horário, você só age quando o Chefe pede. Esse arquivo é lido além do CLAUDE.md do projeto, então não suja o compartilhado.

Digo com todas as letras: a camada 3 é instrução, e instrução é exatamente onde o Kimi é pior. É por isso que ela é a terceira, e não a primeira. As camadas 1 e 2 não dependem de ela ler nada.

Por que as outras saídas falham

  • Rodar as duas no mesmo usuário e marcar quem é numa variável de ambiente: a variável é rótulo, não trava. Não muda o comportamento de nenhuma rotina, porque as rotinas nem olham pra sessão. E não impede o modelo de ler o arquivo e agir.
  • Seção condicional no CLAUDE.md compartilhado (algo como "se você é a Kimi, ignore isto"): falha pelo mesmo motivo e piora o arquivo pras duas. Instrução condicional é o tipo de coisa que modelo de fora segue pior.
  • Mesmo usuário: resolveria o cron, porque a crontab é uma só e roda uma vez de qualquer jeito. Mas joga fora a única garantia estrutural que existe de graça, e cria problema novo: as duas sessões brigando pelo mesmo ~/.claude, com histórico e snapshots compartilhados.
09h20

Ele pede a mesma coisa pras duas sem querer

As duas fazem. Duas análises da mesma coisa, dois relatórios, duas horas de trabalho pagas. É desperdício, não é estrago, e a coordenação é dele: ele já disse que não vai pedir pra uma enquanto a outra está naquilo.

O que ajuda sem restringir nada

Como as duas gravam no mesmo conversation_history, no boot e a cada turno cada uma vê o que a outra está fazendo. Uma linha no CLAUDE.md resolve o resto: antes de começar tarefa longa, olhar as últimas trocas da outra e avisar se for a mesma. Isso não bloqueia nada, ele continua mandando o que quiser pra quem quiser.

11h00

As duas anotam ao mesmo tempo

Aqui o compartilhamento quebra de verdade, e o lugar exato é arquivo markdown, não banco de dados.

O banco aguenta · verificado
  • conversation_history: chave primária por sequência, sem restrição de unicidade, sem leitura antes de escrever. Duas gravando ao mesmo tempo é seguro por construção. seguro
  • A API da porta 3007: só faz SELECT e gera o vetor da consulta na hora. Não guarda cache em memória, não escreve nada. As duas podem consultar à vontade. seguro
  • memory_chunks, o índice vetorial: aqui não é seguro pra dois escritores. O index_knowledge.py faz DELETE ... WHERE source_file= e depois INSERT, e a tabela tem restrição de unicidade em (source_file, agent_id, chunk_index). Dois indexadores ao mesmo tempo colidem ou apagam o trabalho um do outro. um só
  • embed_conversations.py: dois rodando não corrompem, mas fazem o trabalho em dobro e a OpenAI cobra duas vezes. um só

Os dois últimos são cron do mari. Como a crontab é por usuário, resolvem sozinhos: a Mari K nunca os terá.

VERIFICADO · li o esquema das tabelas no banco, o index_knowledge.py (linhas 71 e 76) e o memory-api/server.py inteiro. O índice tem 3.858 pedaços hoje.

O que quebra: caderno único

pending.md, decisions.md, projects.md, lessons.md, people.md e as notas de daily/ são arquivo único. Duas escrevendo é lost update silencioso: a segunda salva o arquivo inteiro e a anotação da primeira some, sem erro, sem log, sem ninguém saber. E não é teórico, é o padrão de uso: quando um item vira arquivado, o arquivo inteiro é reescrito.

Some no arquivo e some no índice vetorial junto, porque o indexador reconstrói a partir do arquivo. É o defeito mais caro possível: memória perdida sem barulho.

11h05

A saída: uma ficha por fato

Não é invenção. É o padrão que a auto-memória já usa há meses: 185 arquivos, um fato por arquivo, em /home/mari/.claude/projects/-opt-mari/memory/. Dois processos escrevendo arquivos diferentes nunca se perdem.

A construir · a migração
HojeViraPor quê
decisions.mdficha por decisão em memory/decisoes/decisão nasce pronta e não muda
lessons.mdficha por liçãoidem
people.mdficha por pessoaidem
projects.mdficha por projetocada uma mexe no projeto que está tocando
pending.mdficha por pendência, com estado no cabeçalhoé o mais disputado: nasce, muda, morre
daily/2026-09-04.mdcontinua monolítico, mas um por agente: .mari.md e .k.mdnota do dia é diário pessoal, não estado compartilhado. Separar é mais honesto que travar
sales-pipeline.mdcontinua como estáestado de negociação com cliente; caderno único aqui é uma vantagem, não um problema
índice MEMORY.mdgerado por script, nunca escrito à mãoíndice escrito à mão é o próprio lost update

Cabeçalho mínimo de cada ficha, pra o índice conseguir montar sozinho:

---
id: pend-2026-09-04-chave-kimi
titulo: Chave da API do Kimi
estado: aberto        # aberto | feito | arquivado
criado: 2026-09-04
por: mari             # quem escreveu
---

Considerei append-only e descartei

A outra saída era log só de acréscimo, com um consolidador de hora em hora. Ganha em segurança bruta, porque acréscimo de linha curta no Linux é atômico e nunca perde. Perde no que importa aqui: pra saber o estado atual você teria que reduzir o log inteiro, e esses arquivos são lidos no boot das duas. Boot fica mais caro e mais frágil, e o git já dá o histórico que o append-only daria.

Fica um híbrido: as notas de daily/ viram só acréscimo, uma por agente. Nota do dia é log por natureza, então ali o formato certo é log.

14h00

A Kimi lê o que a Mari escreveu de manhã

Sem exportar, sem sincronizar, sem copiar. As duas rodam com a mesma pasta de trabalho e o mesmo banco: são os mesmos arquivos no mesmo disco.

Já pronto · nada a construir

E tem um detalhe que faz isso funcionar sozinho: a consulta de boot do CLAUDE.md não filtra por sessão. Ela é ORDER BY created_at DESC LIMIT 30, sem WHERE. Basta o bot novo gravar na mesma tabela e cada uma lê a conversa da outra de graça, no boot e sempre que quiser.

Uma correção pequena e obrigatória: os 185 arquivos da auto-memória ficam dentro da pasta pessoal, em /home/mari/.claude/projects/-opt-mari/memory/. Usuário novo teria a dele, vazia. Um link simbólico resolve, e aí as duas veem o índice inteiro.

16h40

A Mari cai no meio de uma tarefa, sem tempo de anotar

Foi a pergunta certa, e a resposta é boa: quem grava o histórico é o bot, não a sessão. Queda dura não apaga a conversa.

Verificado no código, linha por linha

bot.py:901 grava o lado user dentro do handle_update, antes de injetar no tmux. bot.py:1195 grava o lado assistant dentro do outbox_loop, depois do Telegram confirmar 200. A sessão do Claude Code não escreve nessa tabela em momento nenhum.

VERIFICADO · grep save_history bot.py devolve 5 linhas, sendo 2 chamadas reais. O banco confirma: 8.291 registros assistant e 4.508 user em telegram-dm, com a última troca de hoje íntegra.

Onde ainda tem furo, com nome

  • O que ela pensou e não publicou morre junto: raciocínio, plano de cabeça, meia tarefa.
  • Resposta escrita no outbox que o bot não chegou a enviar não vira histórico, porque o registro só acontece depois do 200 do Telegram.
  • Arquivo escrito pela metade fica pela metade.

É por isso que a ficha de pendência continua importando: ela guarda intenção. O histórico guarda o que foi dito.

19h20

O disparo agendado sai, com a Mari morta ou viva

Notícia boa que muda a percepção de urgência: as réguas e os disparos datados não dependem de nenhuma sessão de agente. São cron chamando Python direto. O apagão de ontem não parou nenhuma régua e nenhum disparo. Parou só a conversa dele com a Mari.

O que eu recomendo proteger mesmo assim

O Chefe decidiu liberdade total, sem separar credencial, e é decisão dele. Só que existe um cenário que vale ele conhecer, porque conhecimento idêntico piora ele:

As duas leem a mesma ficha, veem a mesma medição, chegam à mesma conclusão correta e as duas disparam. O grupo recebe a mensagem duas vezes. Não é bug de nenhuma das duas: as duas fizeram a coisa certa com a mesma informação.

A proteção que eu proponho não restringe ninguém: em vez de tirar credencial de alguém, colocar idempotência no disparador. O disparo já tem estado de quem recebeu; o job passa a recusar repetir a mesma mensagem pro mesmo número na mesma janela, venha de quem vier. Assim as duas continuam com liberdade total e o grupo fica protegido pela máquina, não pela memória de quem mandou.

NÃO CONFERI se os disparadores atuais já têm essa trava. Não abri nada em /opt/leads-maringa, que está com duas mensagens armadas pra hoje à noite. Fica como pergunta pra depois do disparo de hoje, não como afirmação.

23h00

A consolidação da memória roda, e roda uma vez

O consolidate-memory.sh chama o Claude sem sessão pra consolidar o dia e escreve nos arquivos de memória. Duas consolidações escrevendo os mesmos arquivos seria o lost update de novo, agora com a casa dormindo. Fica no cron do mari, uma só.

Pino 1 · o que depende só do Chefe

Quatro coisas, e nenhuma leva 10 minutos

O quêOndeCustoTempo
Chave da API do KimiConta em platform.kimi.ai, console, API Keys, gerar. Depois Billing, recarregar US$ 20.US$ 208 min
Bot novo no Telegram@BotFather, /newbot, escolher nome e @. Guardar o token.grátis3 min
OK pra mexer como rootCriar o usuário marik, corrigir o vigia e subir dois serviços.zero1 palavra
OK pro ensaioMeia hora com ele pra provar que funciona antes de confiar.zero25 min

Por que US$ 20 e não US$ 10

Os dois saem do degrau que sufoca. Com US$ 20 ele cai no Tier 2 e ganha 40 requisições simultâneas em vez de 15, que é o que faz diferença quando ela dispara três subagentes ao mesmo tempo. E é crédito, não mensalidade: sobra pro mês seguinte.

Não confirmei se o crédito da Moonshot tem prazo de validade. Vale conferir na tela de Billing na hora da recarga.

Rolo 2 · a máquina

Arquitetura escolhida

Usuário Unix separado, mesma pasta de trabalho, sessão e bot próprios. Um usuário novo marik roda a sessão dela, com o diretório de trabalho apontando pro mesmo /opt/mari.

Quem roda onde

PeçaMari (Claude)Mari K (Kimi)
Usuário Unixmari, uid 1000marik, novo
Sessão tmuxmarimarik
Serviçomari.servicemari-kimi.service
Bot/opt/mari-bot · intocado/opt/mari-bot-k · cópia
Pasta de trabalho/opt/mari/opt/mari
Modeloclaude-opus-5, conta MAXkimi-k3, API paga
EndereçoAPI da Anthropicapi.moonshot.ai/anthropic
InstruçõesCLAUDE.md do projetoo mesmo, mais o delta dela em /home/marik/.claude/CLAUDE.md
Rotinas de relógioas 72nenhuma, e só a dela de contexto
Credenciaisas mesmas, sem separação. Decisão dele.
Ler e escrever memóriaas duas, sempre

VERIFICADO · api.moonshot.ai/anthropic respondeu daqui em 0,35s com erro de autenticação no formato da Anthropic. Sem bloqueio geográfico. A máquina tem 15 GB de RAM com 4 em uso e 102 GB de disco livres: cabe a segunda sessão.

Configuração do modelo · 9 variáveis

# /opt/mari/.claude-profiles/kimi.sh · perfil novo, ao lado dos 3 atuais
unset ANTHROPIC_API_KEY
unset CLAUDE_CODE_OAUTH_TOKEN
export ANTHROPIC_BASE_URL="https://api.moonshot.ai/anthropic"
export ANTHROPIC_AUTH_TOKEN="$(cat /home/marik/.secrets/kimi_key)"
export ANTHROPIC_MODEL="kimi-k3"
export ANTHROPIC_DEFAULT_OPUS_MODEL="kimi-k3"
export ANTHROPIC_DEFAULT_SONNET_MODEL="kimi-k3"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="kimi-k2.6"
export CLAUDE_CODE_SUBAGENT_MODEL="kimi-k3"

VERIFICADO · extraí os nomes das nove variáveis de dentro do binário instalado, versão 2.1.239. Todas existem. Os identificadores kimi-k3 e kimi-k2.6 vêm da documentação oficial da Kimi.

Rolo 2b · o bot e os vigias

O que muda, e o que não se toca

Com Telegram separado, o problema do TMUX_SESSION no singular desapareceu. Ele aparece 14 vezes no bot.py e 5 no contingency.py, sempre apontando pra Mari Claude. Nada disso é mexido.

Na cópia, em /opt/mari-bot-k

MudançaOndeTamanho
Pasta configurávellinha 49, virar os.environ.get('MARI_BOT_DIR', ...)1 linha
.env própriotoken novo, TMUX_SESSION=marik, TMUX_USER=marik3 linhas
Sessão no bancoas 2 chamadas de save_history, virar session_key='telegram-dm-k'2 linhas
Desligar o gancho de contingêncialinhas 903 a 9192 linhas
Assinaturaprefixo K · na saída, pra ele nunca confundir quem falou1 linha

Risco no bot de produção: zero, porque ele não é aberto. O outbox_loop já é indiferente a modelo e a sessão: lê JSON de uma pasta e manda pro Telegram. Ela responde sem nada precisar ser adaptado.

Obrigatório antes de ligar

O vigia fica cego com duas sessões

O /usr/local/bin/mari-watchdog.sh checa se o Claude Code está vivo com pgrep -f 'cli-wrapper.cjs' | head -1. Essa busca é global. Com uma segunda sessão rodando o mesmo binário, se o processo da Mari morrer e o tmux dela sobreviver, o vigia vai encontrar o processo da Mari K, concluir que está tudo bem e não reiniciar ninguém. A Mari fica muda e o alarme não toca.

Correção: pgrep -u mari -f 'cli-wrapper.cjs'. Uma linha, precisa de root, e é pré-requisito, não melhoria.

VERIFICADO · li o vigia inteiro, confirmei que o processo roda como usuário mari e que pgrep -u mari -f cli-wrapper.cjs devolve 2 resultados agora. É aqui que usuário separado deixa de ser preferência e vira o que permite a desambiguação.

Senão ela trava em silêncio

Ela precisa do vigia de contexto dela

O monitor-session-context.sh roda a cada 30 min, mede o contexto e às 75% manda a Mari salvar estado e reiniciar sozinha. Sem um equivalente, o contexto da Mari K enche e ela para de responder sem avisar ninguém.

É uma cópia com duas linhas trocadas (TMUX_SESSION="marik" e OUTBOX_DIR="/opt/mari-bot-k/outbox", linhas 18 e 19) e uma linha na crontab dela. É a única rotina de relógio que ela recebe, e é sobre ela mesma.

Se um dia ele quiser passar o relógio pra ela

Dá, e é honesto dizer o preço: os caminhos estão fixos no código. 19 scripts escrevem /opt/mari-bot/outbox direto, sem variável. Passar o relógio exige uma linha em cada um (OUTBOX_DIR="${MARI_OUTBOX:-/opt/mari-bot/outbox}", que não muda nada hoje) e um comando de troca:

sudo mari-relogio passar k   # comenta na crontab do mari, instala na do marik
sudo mari-relogio voltar
sudo mari-relogio quem

Minha recomendação é não fazer isso agora. Das 72 rotinas, as que doem se faltarem por algumas horas são poucas, e as que agem pra fora não param nem com a Mari morta. Fica desenhado, meia hora de trabalho, na gaveta.

Rolo 3 · sem suavizar

Onde o Chefe vai sentir a diferença

Isso não é ressalva de praxe. É o que ele precisa saber antes de encostar numa decisão de dinheiro com ela.

Pior

1 · Conta e conferência de dinheiro

Fechamento do Guru, CPL, ROAS, contagem de inscritos, cruzamento de CPF. É a fraqueza conhecida do Kimi e é justo onde a casa faz aritmética sobre dinheiro real. O risco não é ela errar, é ela errar com cara de certeza.

Regra: número financeiro dela só vale com a consulta colada junto. Número dado de cabeça é suposição, não medição.

Pior

2 · Cadeia longa de ferramenta

O laço do Claude Code foi afinado no Claude. Modelo de fora erra mais o texto exato do Edit, repete chamada e às vezes não sabe parar. Tarefa de 5 minutos vira 15, e o custo sobe junto, porque cada tentativa é uma chamada cobrada.

Pior

3 · Velocidade

Não é só o modelo. É endpoint público, acessado do Brasil, sem o caminho quente da Anthropic. 0,35s só pra abrir conexão, medido daqui hoje, antes do primeiro token. Num laço de 8 chamadas isso multiplica.

Pior

4 · Português e tom

Ele é forte em inglês e chinês. A regra de zero travessão vai furar, e o texto vai sair mais longo e com mais cara de IA. O humanizer-ptbr deixa de ser acabamento e vira passe obrigatório.

Pior, e é o que mais importa aqui

5 · Seguir instrução de julgamento

"Não ir fundo no que não move o ponteiro", "não desviar do pedido", "as rotinas de relógio não são suas". Regra de julgamento é exatamente o que modelo de fora segue pior. É por isso que o plano põe a instrução como terceira camada e não como primeira, e por que o usuário separado vale os 10 minutos que custa.

Igual ou melhor

6 · Onde ela não fica devendo

  • Front-end. HTML, CSS e página. É a área forte dele.
  • Ler coisa gigante. Janela de 1 milhão de tokens: ela engole um log inteiro sem precisar compactar.
  • Resumo e leitura. Ler muita coisa e devolver o que importa.
  • As skills carregam igual. A casca é a mesma, então impeccable e humanizer-ptbr são lidas do mesmo jeito. Seguidas com menos rigor, mas lidas.
Rolo 4 · a conta

Quanto custa, de verdade

Preço oficial do K3

Itempor 1M de tokens
Entrada, com cacheUS$ 0,30
Entrada, sem cacheUS$ 3,00
SaídaUS$ 15,00
Janela de contexto1.048.576

VERIFICADO · lido da página oficial hoje. platform.kimi.ai/docs/pricing/chat-k3

Volume real, medido no banco

Medidavalor
Média de mensagens do Chefe por hora ativa, 30 dias3,88
Pico numa única hora61
Dia típico da última semana14 a 46

MEDIDO · consulta na conversation_history, últimos 30 dias, só o lado user.

A conta aberta, pra ele conferir

Cada mensagem dispara um laço de aproximadamente 8 chamadas. Contexto médio de 45 mil tokens por chamada, com 90% batendo em cache, e saída média de 700 tokens.

por mensagem
  entrada  8 x 45k = 360k
    cache  324k x $0,30 = $0,097
    novo    36k x $3,00 = $0,108
  saida    5,6k x $15,00 = $0,084
  = US$ 0,29 por mensagem, sem delegar
  = US$ 0,52 por mensagem, com subagente
CenárioUS$R$ aprox
Uma hora comum, ritmo médio1,10 a 2,006 a 11
Três horas de uso pesado~6~33
Um dia típico inteiro dedicado a ela~12~66
Mês leve, ela como apoio eventual~15~83
Mês pesado, ela trabalhando todo dia~120~660

ESTIMATIVA minha, com a fórmula aberta de propósito pra ele conferir. O volume de mensagens é medido; o tamanho do contexto por chamada e a taxa de cache são suposição minha, calibrada em como a Mari trabalha. Câmbio a R$ 5,50. O ensaio de aceitação mede o valor real no console da Kimi, e aí a estimativa vira número.

Degraus de limite, e qual sufoca

Degraurecargasimultâneasreq/minteto diário
Tier 0US$ 1131,5M
Tier 1US$ 1015100sem teto
Tier 2US$ 2040100sem teto
Tier 3US$ 10050200sem teto

O número de julho estava certo e continua valendo: 3 requisições por minuto, 1 por vez, teto de 1,5 milhão de tokens por dia. Isso é o Tier 0 e sufoca de verdade. Uma Mari trabalhando faz 8 chamadas por mensagem: no Tier 0 ela levaria quase 3 minutos só pra responder uma vez. US$ 10 já resolve. US$ 20 dá a folga de concorrência que ela precisa pra delegar.

VERIFICADO · tabela oficial de limites, lida hoje. platform.kimi.ai/docs/pricing/limits

E a assinatura mensal?

Existe, é outro produto: Kimi Code, com endereço próprio em api.kimi.com/coding, também compatível com o formato da Anthropic. Testei daqui hoje, respondeu limpo em 1,03s.

Se ela vai trabalhar todo dia, a assinatura passa a fazer sentido e o pré-pago fica caro. A conta acima mostra o ponto de virada: uso pesado mensal na casa dos US$ 120 no pré-pago paga várias assinaturas.

SUPOSIÇÃO, fonte secundária e contraditória · não achei a tabela oficial dos planos. Uma fonte descreve 4 degraus em yuan (¥49, ¥99, ¥199 e ¥699, com o K3 começando no segundo); outra descreve um plano único de cerca de US$ 19 por mês. Não afirmo nenhum dos dois. Recomendo começar com os US$ 20 de crédito, medir um mês de uso real e só então decidir assinatura com número na mão.

Rolo 5 · o que pode dar errado

Riscos, e o que fazer em cada um

Risco 1

A versão 2.1.251 inverte a precedência

Hoje, na 2.1.239, a variável de ambiente ganha do model: escrito no arquivo do agente. Da 2.1.251 em diante isso inverte, e os 7 subagentes voltariam a pedir claude-opus-5 pro servidor da Kimi. Pior: modelo desconhecido não falha alto, cai no modelo do pai e registra family_step_down em silêncio.

  • DISABLE_AUTOUPDATER=1 já está no start.sh. Segura, mas npm i -g passa por cima calado.
  • Agentes próprios dela em /home/marik/.claude/agents/, com model: kimi-k3 escrito no arquivo. Aí não importa quem ganha a disputa. Esse é o cinto que resolve.
  • Checagem diária que avisa no Telegram se o claude --version mudar sozinho.

VERIFICADO · a string family_step_down existe dentro do binário 2.1.239 instalado. A inversão a partir da 2.1.251 veio do levantamento de hoje e eu não testei a versão nova.

Risco 2

O Kimi ficar fora

A Mari continua trabalhando; nada da casa depende da Kimi. E o Codex segue de pé como terceira perna: testei hoje, codex-cli 0.142.3, executou e saiu limpo. O Permission denied das tentativas de junho não se reproduz mais, então aquele aviso está desatualizado.

Fica em pé o furo já conhecido: o BLACKOUT_PATTERNS não reconhece 500 nem 529, e foi por isso que o Codex não entrou sozinho no apagão de ontem. Não é escopo desta obra, mas é o conserto que faria a rede funcionar.

Risco 3

Trabalho duplicado

Com liberdade total e conhecimento idêntico, é o risco que sobra e ele já assumiu a coordenação. O que reduz sem restringir nada: as duas se enxergam no histórico. Antes de tarefa longa, olhar o que a outra fez nos últimos minutos e avisar se for a mesma coisa. Custa uma linha no CLAUDE.md e não bloqueia nenhuma das duas.

Volta ao normal

Um comando desliga tudo

sudo mari-so-claude

Para mari-kimi e mari-kimi-bot e confirma nos dois Telegrams. A casa volta exatamente ao estado de hoje. Nada do que a Mari usa foi modificado pra isso: o bot dela, o serviço dela, as 72 rotinas e os três perfis atuais continuam intactos, e o kimi.sh é arquivo novo ao lado dos que já existem. A única mudança permanente é a linha do pgrep no vigia, que é conserto de um defeito real e fica de qualquer jeito.

Pino 2 · ordem de execução

Doze passos, quatro horas de trabalho

#EtapaQuemTempo
1Conta na Kimi, gerar chave, recarregar US$ 20Chefe8 min
2Bot novo no BotFather, guardar o tokenChefe3 min
3Corrigir o vigia: pgrep -u mari. Pré-requisitoroot5 min
4Criar o usuário marik e a pasta de segredos delaroot10 min
5Migrar a memória pra ficha por fato e escrever o gerador de índiceeu60 min
6Perfil kimi.sh e link da auto-memóriaeu15 min
7Copiar os 7 agentes pra /home/marik/.claude/agents/ com model: kimi-k3eu15 min
8Escrever o delta dela em /home/marik/.claude/CLAUDE.mdeu15 min
9Copiar o bot, ajustar as 5 coisas, subir os 2 serviçoseu45 min
10Vigia de contexto dela e a única linha de crontab delaeu20 min
11Primeiro boot e conferência de qual modelo respondeu de fatoeu20 min
12Ensaio de aceitação com o Chefeos dois25 min

Hoje mesmo, sem depender de nada dele: os passos 5, 7 e 8 já podem ser feitos, porque não precisam de chave nem de root. O passo 5 é o mais demorado e o mais valioso, porque conserta um defeito que já existe: hoje, com uma Mari só, dois subagentes escrevendo no pending.md ao mesmo tempo já perdem anotação.

Precisa do OK dele: passos 3 e 4, que mexem como root, e o passo 5, que reorganiza a memória. Os passos 1 e 2 são só ele.

De pé em: mesma tarde, se ele fizer 1 e 2 e liberar o root. Cerca de 4 horas de trabalho meu, mais os 25 minutos do ensaio.

Rolo 6 · a prova

Como a gente prova que funciona

Ensaio marcado, com hora combinada. Nada de simulação de tela: cada passo prova uma afirmação desta página.

Roteiro, 25 minutos

#PassoProva que
1Chefe manda uma pergunta qualquer pra Mari Kela está viva e assina diferente
2Pergunta: "o que a gente estava fazendo hoje?"o conhecimento é compartilhado: ela responde sem ele repetir nada
3Pede uma anotação de memória pra elaela escreve ficha, e a Mari enxerga
4Pede pras duas anotarem coisas diferentes ao mesmo tempoa ficha por fato: nenhuma das duas some
5Espera passar um horário de rotina (12h ou 16h)o relógio é de uma só: chega uma mensagem, não duas
6crontab -u marik -l como roota crontab dela está vazia, menos o vigia dela
7Para a Mari Claude e confere /var/log/mari-watchdog.logo vigia enxergou a queda mesmo com a Kimi rodando
8Pergunta pra Mari, depois que ela volta: "o que a K fez?"ela lê a conversa da outra e continua
9Confere o gasto no console da Kimiqual modelo respondeu de fato, e o custo real contra a estimativa

Duas provas que não podem faltar

  • O passo 9. Como modelo desconhecido cai no do pai em silêncio, só o consumo no console prova que era o Kimi respondendo. Se o gasto for zero, ela estava respondendo por outro caminho e o resto do ensaio não vale nada.
  • O passo 5. É o único que prova que ele não vai receber tudo dobrado, que é a coisa que mais incomodaria no dia a dia.