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
Hoje
Vira
Por quê
decisions.md
ficha por decisão em memory/decisoes/
decisão nasce pronta e não muda
lessons.md
ficha por lição
idem
people.md
ficha por pessoa
idem
projects.md
ficha por projeto
cada uma mexe no projeto que está tocando
pending.md
ficha por pendência, com estado no cabeçalho
é o mais disputado: nasce, muda, morre
daily/2026-09-04.md
continua monolítico, mas um por agente:.mari.md e .k.md
nota do dia é diário pessoal, não estado compartilhado. Separar é mais honesto que travar
sales-pipeline.md
continua como está
estado de negociação com cliente; caderno único aqui é uma vantagem, não um problema
índice MEMORY.md
gerado 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 | arquivadocriado: 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.mdnã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.508user 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ê
Onde
Custo
Tempo
Chave da API do Kimi
Conta em platform.kimi.ai, console, API Keys, gerar. Depois Billing, recarregar US$ 20.
US$ 20
8 min
Bot novo no Telegram
@BotFather, /newbot, escolher nome e @. Guardar o token.
grátis
3 min
OK pra mexer como root
Criar o usuário marik, corrigir o vigia e subir dois serviços.
zero
1 palavra
OK pro ensaio
Meia hora com ele pra provar que funciona antes de confiar.
zero
25 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.
Mesma pasta é o que dá conhecimento compartilhado de graça: mesmos arquivos, mesmo banco, mesma API de busca. Nada é exportado nem sincronizado.
Usuário separado é o que garante o relógio de uma só, sem depender de instrução. E é o que impede o token da conta MAX de entrar no ambiente dela por acidente.
Sessão e bot próprios são o que o Chefe decidiu: duas assistentes de verdade, cada uma com seu chat, sem roteador no meio e sem risco no bot que já funciona.
Quem roda onde
Peça
Mari (Claude)
Mari K (Kimi)
Usuário Unix
mari, uid 1000
marik, novo
Sessão tmux
mari
marik
Serviço
mari.service
mari-kimi.service
Bot
/opt/mari-bot · intocado
/opt/mari-bot-k · cópia
Pasta de trabalho
/opt/mari
/opt/mari
Modelo
claude-opus-5, conta MAX
kimi-k3, API paga
Endereço
API da Anthropic
api.moonshot.ai/anthropic
Instruções
CLAUDE.md do projeto
o mesmo, mais o delta dela em /home/marik/.claude/CLAUDE.md
Rotinas de relógio
as 72
nenhuma, e só a dela de contexto
Credenciais
as mesmas, sem separação. Decisão dele.
Ler e escrever memória
as 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ça
Onde
Tamanho
Pasta configurável
linha 49, virar os.environ.get('MARI_BOT_DIR', ...)
1 linha
.env próprio
token novo, TMUX_SESSION=marik, TMUX_USER=marik
3 linhas
Sessão no banco
as 2 chamadas de save_history, virar session_key='telegram-dm-k'
2 linhas
Desligar o gancho de contingência
linhas 903 a 919
2 linhas
Assinatura
prefixo K · na saída, pra ele nunca confundir quem falou
1 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.
Média de mensagens do Chefe por hora ativa, 30 dias
3,88
Pico numa única hora
61
Dia típico da última semana
14 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ário
US$
R$ aprox
Uma hora comum, ritmo médio
1,10 a 2,00
6 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
Degrau
recarga
simultâneas
req/min
teto diário
Tier 0
US$ 1
1
3
1,5M
Tier 1
US$ 10
15
100
sem teto
Tier 2
US$ 20
40
100
sem teto
Tier 3
US$ 100
50
200
sem 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.
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
#
Etapa
Quem
Tempo
1
Conta na Kimi, gerar chave, recarregar US$ 20
Chefe
8 min
2
Bot novo no BotFather, guardar o token
Chefe
3 min
3
Corrigir o vigia: pgrep -u mari. Pré-requisito
root
5 min
4
Criar o usuário marik e a pasta de segredos dela
root
10 min
5
Migrar a memória pra ficha por fato e escrever o gerador de índice
eu
60 min
6
Perfil kimi.sh e link da auto-memória
eu
15 min
7
Copiar os 7 agentes pra /home/marik/.claude/agents/ com model: kimi-k3
eu
15 min
8
Escrever o delta dela em /home/marik/.claude/CLAUDE.md
eu
15 min
9
Copiar o bot, ajustar as 5 coisas, subir os 2 serviços
eu
45 min
10
Vigia de contexto dela e a única linha de crontab dela
eu
20 min
11
Primeiro boot e conferência de qual modelo respondeu de fato
eu
20 min
12
Ensaio de aceitação com o Chefe
os dois
25 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
#
Passo
Prova que
1
Chefe manda uma pergunta qualquer pra Mari K
ela está viva e assina diferente
2
Pergunta: "o que a gente estava fazendo hoje?"
o conhecimento é compartilhado: ela responde sem ele repetir nada
3
Pede uma anotação de memória pra ela
ela escreve ficha, e a Mari enxerga
4
Pede pras duas anotarem coisas diferentes ao mesmo tempo
a ficha por fato: nenhuma das duas some
5
Espera passar um horário de rotina (12h ou 16h)
o relógio é de uma só: chega uma mensagem, não duas
6
crontab -u marik -l como root
a crontab dela está vazia, menos o vigia dela
7
Para a Mari Claude e confere /var/log/mari-watchdog.log
o vigia enxergou a queda mesmo com a Kimi rodando
8
Pergunta pra Mari, depois que ela volta: "o que a K fez?"
ela lê a conversa da outra e continua
9
Confere o gasto no console da Kimi
qual 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.