pular para o conteúdo
cd/

um assistente de escrita no CMS que nunca publica nada

como integrei uma IA no painel do blog sem dar a ela o poder de estragar nada: só rascunho, só com o acesso de quem pede, e com trava de versão

3 minver no github

tl;dr#

integrei um assistente de escrita no painel do CMS do blog em que eu trabalho (PR #9). ele conversa, cria rascunhos e categorias e digita dentro do artigo aberto. a parte que mais me fez pensar não foi a IA: foi o que ela não pode fazer. ela nunca publica, arquiva ou apaga, só mexe com o acesso de quem pediu, e se o artigo mudou enquanto ela pensava, a escrita dela é recusada.

como ele aparece#

uma carinha no canto do painel abre a conversa. tem um menu de Skills (cada uma com uma cena curtinha mostrando o que faz) e as respostas que mudam alguma coisa chegam como cartões de proposta. a pessoa aceita, recusa ou desfaz. cada um escolhe a carinha do seu assistente na página da conta.

as regras que importam#

1. só rascunho#

o assistente cria rascunho, nunca publica. se a resposta for ruim, o pior que acontece é um rascunho ruim parado no painel. ninguém lê isso no site.

2. com o acesso de quem pede#

as escritas dele passam pelos mesmos Services que o resto do painel usa, com as permissões da pessoa que tá conversando. ele não tem um acesso especial de "robô" que enxerga tudo. se você não pode mexer numa categoria, ele também não pode por você.

3. trava de versão#

a IA demora pra responder. nesse meio-tempo, alguém pode ter salvado o mesmo artigo. então toda escrita leva junto a versão que o assistente viu. se a versão no banco já mudou, a resposta é 409 e nada é sobrescrito.

4. o artigo aberto muda só digitando#

quando o artigo tá aberto no editor, o assistente não salva direto no banco. ele digita na tela, igual uma pessoa, e quem guarda é o autosave ou o botão Salvar. assim o que tá na tela e o que tá no banco nunca ficam brigando.

5. um script vigia quem pode escrever#

tem um scripts/assistant-scope.check.ts que confere quais arquivos o código do assistente pode usar pra escrever. se alguém, no futuro, fizer o assistente chamar um serviço que publica, esse check quebra.

desligado por padrão#

o assistente só aparece se a variável GEMINI_API_KEY existir. sem ela, o painel é igual ao de antes. isso deixou mandar o código pra produção sem ligar a feature pra todo mundo de uma vez.

o que ficou em aberto#

a conversa ainda não tem limite por conta (só as escritas têm), e cada mensagem custa uma chamada no Gemini. isso virou o próximo PR.

o que eu levo disso#

colocar IA num produto é a parte fácil. a parte difícil é decidir o tamanho da caixa onde ela fica. aqui a caixa é pequena de propósito: ela ajuda a escrever, e o resto continua na mão de quem escreve.