revision do projeto com a última que ele conhece e, quando ela muda, comparando o
template atual com o último snapshot. O resultado vai para a MEMORIA.md.
Isso também é o desfazer da agência: a Zatten guarda versões só do agente (o
config do LangChain Agent). Colunas, tags, propriedades e automações não têm
histórico na Zatten. Sem snapshot, não há como voltar.
As três peças
A
revision muda com o que está no template: colunas, tags, propriedades,
automações, departamentos, templates da Meta e o config do agente (inclusive um
rascunho salvo e não publicado). Ela não muda com leads, conversas, membros de
departamento, campanhas ou conexão, que não fazem parte do template.
Ao abrir um cliente
1
Ler o projeto
Chamar
get_template com o project_id do CLIENTE.md.2
Comparar a revision
Comparar com a
revision registrada no Vigente da MEMORIA.md.- Igual: nada mudou. Seguir com o pedido.
- Diferente: alguém mudou o projeto fora do assistente. Ir para o passo 3.
3
Fazer o diff contra o último snapshot
Comparar o template atual com o snapshot citado no Vigente. Ver “Como fazer o
diff” abaixo.
4
Registrar e atualizar
- Acrescentar ao Histórico uma entrada “Mudança externa” com o que mudou.
- Gravar um snapshot novo (assunto
mudanca-externa). - Atualizar o Vigente: a
revisionnova, o snapshot novo e o que passou a valer.
5
Contar para a pessoa
Em uma ou duas linhas, nos termos do painel: “Desde 02/10, alguém criou a tag
Retorno e desligou o follow-up Lembrete 72h pelo painel.”
..._diagnostico.json e a revision no
Vigente. Ver Diagnóstico de um projeto.
Depois de cada escrita
A resposta deupdate_template não traz a revision nova, de propósito. Por
isso o assistente relê.
update_template(depois do plano e do “sim”).get_templatede novo.- Gravar o snapshot:
AAAA-MM-DD_HHMM_<assunto>.json, com a resposta inteira (project_id,project_name,revisionetemplate). - Atualizar o Vigente com a
revisionnova e o nome do snapshot. - Acrescentar a entrada no Histórico, no mesmo formato do relatório.
Por que o snapshot é depois, e não antes?
Para dizer “alguém mexeu no painel” com precisão, o assistente precisa do último estado que ele conhece, que é o de depois da própria escrita. O “antes” da escrita seguinte é o “depois” da anterior. Um snapshot por escrita basta. Comparar com o snapshot de antes obrigaria o assistente a separar o que ele mesmo mudou do que outra pessoa mudou, e ele erraria. Comparar com o Vigente também não serve: o Vigente é texto, não JSON.Como fazer o diff
Compare bloco a bloco, e dentro de cada bloco item a item pela chave, não linha a linha. A ordem dos itens não importa.
Para cada bloco, liste: criado, removido, alterado (campo, antes →
depois). Uma forma rápida de achar os blocos que mudaram, antes de olhar item a
item:
columns[3].shutdown_ai: false → true”.
Formato da MEMORIA.md
clientes/clinica-sorriso/MEMORIA.md
Como desfazer com um snapshot
Para voltar um bloco ao estado de um snapshot, o assistente envia aquele bloco do snapshot porupdate_template, com plano e “sim”, como qualquer escrita. Itens que
foram criados depois do snapshot não somem: o MCP nunca apaga. Eles aparecem como
“ficou de fora sem ser apagado”, e apagar é com uma pessoa, no painel. Ver
Como uma escrita funciona.
Para o agente (o config do LangChain Agent), prefira restaurar a versão pelo
histórico de versões do painel. Ver Versões e publicação.
Armadilhas
- Snapshot sem segredo. O template lido pelo MCP traz a chave do modelo, a do
LangSmith e os headers preenchidos. Antes de gravar o snapshot, troque esses
valores por
"<removido>"(regra em Organizar sua agência). Por isso o diff não mostra se uma chave mudou: para isso, compare só se o campo existe, nunca o valor. - Nunca restaure um campo
"<removido>". Ao usar um snapshot para desfazer, omita as chaves e os headers na escrita. Mandar o marcador grava o marcador. - Rascunho muda a revision. Alguém salvar o agente no painel sem publicar já
troca a
revision. Não é erro; registre como mudança externa. - Escrita recusada por revision velha. Se
update_templateresponde que o projeto mudou desde a leitura, nada foi gravado. Trate como mudança externa: releia, faça o diff, conte para a pessoa e refaça o plano sobre o estado novo. - Snapshot antes da escrita não substitui o de depois. Sem o de depois, a próxima comparação acusa como “externa” a mudança que o próprio assistente fez.
- O diff só vê o template. Lead movido, conversa encerrada, membro adicionado a departamento e campanha disparada não aparecem.
Para saber mais
- O MCP da Zatten: ferramentas
- Como uma escrita funciona
- Organizar sua agência no computador
- As regras que o assistente segue
- jq, manual oficial: https://jqlang.org/manual/
- Termos para buscar: “JSON diff por chave”, “jq -S sort keys”, “optimistic concurrency revision”.