▲ Sessão da Comunidade: Plugin da Vercel para o Claude Code

VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Olá a todos. Bem-vindos à transmissão ao vivo da comunidade Vercel desta semana. Eu sou a Amy, e este é o
00:00:26Jacob. Fazemos parte da equipe da comunidade aqui na Vercel. Apenas um lembrete, estamos transmitindo
00:00:31isso no X e no YouTube, mas se você quiser garantir que vejamos suas perguntas e comentários
00:00:36no chat, vá para a comunidade e faça o login. É em [community.vercel.com/live](https://community.vercel.com/live) e você
00:00:43verá que é o primeiro evento.
00:00:44Sim, ao final da sessão, teremos um tempinho para algumas perguntas. Se você
00:00:49for participar do chat enquanto assiste à sessão, lembre-se de seguir
00:00:55nosso código de conduta e, sim, você pode enviar as perguntas que tiver ao longo do caminho e
00:00:59nós garantiremos que sejam feitas. Gostaria de apresentar nosso convidado. Temos Jon Lindquist aqui para nos mostrar
00:01:05o novo plugin da Vercel para o Cloud Code. Oi, Jon.
00:01:09Oi, Jacob. Oi, Amy. Obrigado por me receberem. Certo. Vamos começar a compartilhar
00:01:16minha tela imediatamente para que possamos mostrar o que está acontecendo aqui. Já faz um tempo que as
00:01:23skills têm sido a sensação e todos estão falando sobre quais skills usar para elevar o nível dos seus projetos
00:01:29e para permitir que seus agentes façam coisas que normalmente não são capazes de fazer. Agora, surgindo das
00:01:37skills, a próxima evolução disso é o que chamamos de plugins. E isso é algo
00:01:43que ainda está pegando. Não existem muitos plugins por aí e as pessoas ainda estão
00:01:48explorando exatamente como construí-los. Eu construí a primeira versão do plugin da Vercel e o que
00:01:56eu gostaria de falar é por que construir um plugin, quando você deve construir um plugin, por que um plugin
00:02:03em vez de skills e como eles se complementam, e todas essas questões. Então,
00:02:09se você tiver alguma dúvida sobre o que é, eu estarei falando sobre isso, mas o que um plugin pode
00:02:16proporcionar para você, se você deve construir um internamente ou pessoalmente, eu adoraria discutir isso
00:02:22e falaremos sobre isso durante a sessão de hoje. Então, antes de tudo, um plugin foi inicialmente
00:02:32lançado pelo Cloud Code e pelo Gemini também, mas adotaram abordagens muito diferentes. E a
00:02:39padronização de plugins é um esforço contínuo. E isso é algo que esperamos ter,
00:02:44posso falar mais em breve, onde um único plugin pode funcionar em todos os editores.
00:02:49No momento, estamos falando do suporte ao Cloud Code e ao Cursor também. O CodeX está chegando muito,
00:02:54muito em breve, se não já hoje, e muitos outros também. Há um padrão de plugin
00:03:01sendo trabalhado. Então, podemos esperar que os plugins sejam algo que você possa empacotar e compartilhar
00:03:08em qualquer ferramenta que esteja usando. Dito isso, você pode estar familiarizado com as skills,
00:03:15já que elas são arquivos markdown que podem ser carregados pelo seu agente para fornecer instruções adicionais.
00:03:23Se você as invoca manualmente, como fazendo um "slash" e invocando sua skill, ou se o agente
00:03:29detecta, com base na descrição, que a skill deve ser carregada. Portanto, é muito invocado pelo usuário ou
00:03:36o agente decide com base em uma condição na descrição. Agora, o próximo nível de um plugin
00:03:44é que eles têm algo chamado hooks. E se você pensar em um plugin, ou pensar em uma sessão
00:03:53que você tem com o Cloud Code ou com qualquer um dos suportes de agentes, você pode pensar que eles têm ciclos de vida.
00:03:59Agora estou no diretório do plugin da Vercel; se eu iniciar apenas o Cloud Code aqui, vou
00:04:07perguntar a ele quais são os hooks que ele usa. E isso vai listar os hooks
00:04:18meio que para definir um ciclo de vida. E um ciclo de vida é o quando: quando sua sessão começa, quando ferramentas
00:04:27como... antes das ferramentas serem chamadas, depois que elas são chamadas, quando um usuário envia texto para ele,
00:04:33e quando sua sessão termina. Há uma série de outros hooks lá. Mas para nossos propósitos
00:04:39no plugin da Vercel, estes são os que estamos usando atualmente com base em nossos objetivos iniciais.
00:04:44Para ser claro, o objetivo inicial do plugin da Vercel era ajudar as pessoas a publicar
00:04:51agentes na Vercel. Então a ideia é: como vamos tornar os agentes cientes do ecossistema Vercel,
00:05:02como tudo na plataforma que tem a ver com o AI SDK, o gateway. E nossos fluxos de trabalho
00:05:11estão quase todos aqui. Então, qualquer coisa sobre fluxos de trabalho e, essencialmente, a CLI da Vercel foi muito atualizada.
00:05:19E todas essas coisas sobre o SDK de agentes, ou desculpe, sobre a publicação de
00:05:26agentes na Vercel. São todas coisas que foram lançadas nos últimos dias, semanas,
00:05:33meses. E qualquer um desses suportes de agentes, como o Cloud Code, eles têm esses cortes de conhecimento
00:05:39de provavelmente seis meses a um ano atrás. Então depende do modelo, depende de
00:05:46uma série de variáveis. Mas são todas coisas que todos esses agentes não conhecem
00:05:52sobre todas as novidades incríveis que lançamos. Portanto, o objetivo do plugin da Vercel
00:05:57é impedir que o agente escreva código desatualizado, práticas desatualizadas, e trazê-lo
00:06:06para: aqui está tudo o que há de mais moderno na plataforma Vercel. Então essa é
00:06:11a grande vitória, pois os modelos são inteligentes, mas eles simplesmente não sabem sobre todas essas coisas.
00:06:19E em vez de pedir que façam pesquisas todas as vezes, ou pedir, ter um enorme
00:06:25pacote de skills para cada coisa, se pudermos encontrar alguma maneira de essencialmente forçar
00:06:32um agente a carregar o que há de melhor na plataforma Vercel, então isso é uma grande vitória para
00:06:38nós. Então, se você olhar para esses hooks no ciclo de vida de um agente, e novamente, há muitos,
00:06:45muitos outros hooks que podemos aproveitar no futuro ou que você pode aproveitar. Mas os principais
00:06:49por enquanto são session start. E usamos isso de algumas maneiras diferentes. Pre-tool use, user prompt
00:06:56submit, post-tool use e session end. Então session start e session end são, você sabe, o início
00:07:03e o fim de uma conversa com um agente. E você pode pensar que seu arquivo agents.md ou claud.md
00:07:12é normalmente a coisa que você faz no session start. Então, o que podemos fazer no session start para
00:07:19a plataforma Vercel? E o que poderíamos fazer é carregar um arquivo da plataforma Vercel, o que significa
00:07:27que se olharmos para, eu direi apenas: descreva vercel.md. Então este arquivo é algo que podemos incluir
00:07:40no session start junto com um claud.md. Essencialmente, você poderia ter um plugin que, se tudo o que você
00:07:48quisesse fazer fosse compartilhar um arquivo claud.md e ter uma maneira fácil para alguém
00:07:52instalá-lo. Você poderia construir um plugin que tudo o que ele fizesse fosse apenas injetar um "este é um grafo de conhecimento"
00:07:59da Vercel. E isso é algo que estamos continuamente ajustando. Estamos procurando
00:08:04maneiras de comprimi-lo e torná-lo o menor possível, mas ainda assim ter um bom desempenho
00:08:08e um equilíbrio do que deve estar lá e do que não deve. É muito difícil
00:08:15executar avaliações em todos os diferentes modelos e suportes. Mas estamos descobrindo
00:08:21essas coisas aos poucos. Então, o que está lá são essencialmente relações no ecossistema Vercel
00:08:28em torno de IA, quando usar, qual produto usar, quando chamar quais coisas,
00:08:35como uma compreensão estruturada de todo o ecossistema Vercel. Então o conceito de um... eu gosto
00:08:44de como ele chama de sumário. É como o início de um livro quando você começa uma conversa.
00:08:50E a maneira como estruturamos isso e pensamos nisso é: se você pensar em como eu falo
00:08:56com um agente sobre as coisas, eu tenho um certo vocabulário, eles têm um certo vocabulário.
00:09:02E se você puder fornecer a ele um glossário de termos, mapear isso para documentos, mapear isso para
00:09:07skills, mapear isso para coisas que ele deve carregar. Uma vez que você define essas coisas, você pode
00:09:12pensar no que eu vou dizer e no que o agente
00:09:19deve carregar e chamar, e tentar desenvolver esse mapa mental antecipadamente para que eu possa apenas
00:09:24falar naturalmente com ele e não ter que me preocupar em falar sobre, ou mesmo mencionar o
00:09:30AI SDK. E mesmo sem mencionar nenhum dos recursos. E se eu puder apenas encontrar alguma
00:09:38maneira de dizer apenas: "construa este app e publique-o". E então ele simplesmente resolve tudo no
00:09:45plugin. Perdão, resolve tudo no plugin para que um belo
00:09:52app seja publicado na Vercel e eles possam iterar a partir daí. Semelhante a como o v0 e
00:09:57alguns outros projetos funcionam para nós. Se pudermos apenas fazer com que você tenha uma experiência
00:10:02maravilhosa, sem ter que pensar no ecossistema. E isso é uma grande vitória. Isso
00:10:09faz sentido? Jacob, Amy, alguma pergunta inicial sobre isso ou algo no chat?
00:10:16Jacob, acho que você tem uma pergunta para a sua reunião. Desculpe, sinto muito. Eu tinha uma pergunta
00:10:24para você, Jon. Sim. Já que este plugin opera como um sumário, é por isso que ele não precisa...
00:10:30por que o plugin não precisa se atualizar constantemente toda vez que uma nova documentação é lançada?
00:10:38Porque ele é basicamente uma coleção de URLs que os agentes podem seguir para encontrar
00:10:43os documentos atualizados? Ou o plugin tem algum tipo de sistema de atualização imediata? Como
00:10:49essa abordagem funciona? Sim. Essencialmente, se você pensar no grafo de conhecimento inicial,
00:10:58muito do que ele pode fazer é apenas apontar para os documentos mais recentes. Então, se você pensar nisso...
00:11:07esta é uma pergunta que surge muito com as skills e como gerenciamos as skills por bibliotecas.
00:11:14E se você tem alguém na versão cinco de um SDK e outra pessoa na versão
00:11:18seis do SDK, e você tenta influenciá-los com skills de versões diferentes que são
00:11:22conflitantes, como você faz isso? E muito disso é, tipo, com base no que alguém
00:11:31tem instalado, você pode verificar o arquivo package.json, pode verificar a versão. E com base
00:11:36nisso, criar uma maneira inteligente de ver para quais URLs de documentos ele deve olhar e quais
00:11:44skills devem carregar e todas essas coisas. E essa é outra parte do tipo
00:11:51de fase de pré-carregamento que o session start faz: apenas inspecionar o projeto da pessoa.
00:11:58E, novamente, isso é tudo local. Ele apenas olha para o projeto e vê quais são as bibliotecas
00:12:02que você está usando, quais são as configurações que você está usando para saber como te apontar na direção certa.
00:12:07Um dos erros mais comuns é tentar usar, por exemplo, generateObject na versão mais recente
00:12:12de um SDK quando você sabe que a API mudou. Então, os plugins
00:12:21apenas lidam com isso; você não deveria ter que se preocupar se está usando isso em um projeto
00:12:27antigo ou se está usando no projeto mais novo e do zero; o plugin deve
00:12:32ser capaz de lidar com isso e você não deveria ter que se preocupar com números de versão, não deveria
00:12:34ter que se preocupar com nomes de pacotes, não deveria ter que se preocupar com nada, apenas deixe
00:12:41a Vercel fazer isso por você. Certo. E estamos continuamente trabalhando em formas de...
00:12:49temos muito mais ideias de como fazer isso melhor. E o plugin continuará a se atualizar e levar
00:12:54isso adiante. Mais alguma pergunta?
00:12:58Sim, qual é o escopo total do plugin? Ele lida apenas com serviços da
00:13:04Vercel? Qualquer coisa que eu possa encontrar no dashboard? Ou ele também abrange as bibliotecas de código aberto
00:13:11que suportamos, como Next.js, AI SDK, fluxos de trabalho e assim por diante?
00:13:16Sim, então o escopo inicial... o que decidimos inicialmente é cobrir o máximo possível,
00:13:25e tipo, ter cada biblioteca, tudo na plataforma, tudo lá dentro,
00:13:32para ver o que é mais usado. Internamente, fazemos com que todos ativem a telemetria,
00:13:36e você pode optar por compartilhar a telemetria. E descobriremos quais skills estão realmente sendo
00:13:40usadas e quais não estão. Assim, podemos remover algumas coisas que talvez não
00:13:48precisemos de tanta informação ou adicionar mais com base no que parece ser mais usado; obviamente
00:13:53Next.js, AI SDK e as coisas mais baixadas devem ter mais informações.
00:13:59E então é um equilíbrio inicial, onde intencionalmente fomos bem amplos com o
00:14:08lançamento inicial, e vamos reduzi-lo para algo muito mais enxuto daqui para
00:14:15frente. Então,
00:14:16sim, isso faz muito sentido. Obrigado. Sim. Tudo bem. Então, se você está
00:14:24construindo um plugin, e uma das razões pelas quais eu falo disso em termos gerais e flexíveis
00:14:29é porque eu gosto muito de desenvolvimento orientado a agentes. E em vez de mostrar
00:14:36exatamente como tudo funciona, acho que é muito mais importante aprender a falar
00:14:40sobre isso e absorver a terminologia. Assim você pode simplesmente pedir ao seu assistente de IA
00:14:45para fazer coisas semelhantes. Se você disser ao Cloud Code para construir um plugin para o Cloud
00:14:52Code, e você fornecer os documentos, ele consegue fazer isso. Então é muito mais importante
00:14:58discutir os conceitos e ideias em torno disso do que mergulhar demais no código. Com
00:15:05isso dito, o session start é um ótimo lugar para injetar um sumário
00:15:11da plataforma; tipo, estas são todas as coisas que estão desatualizadas com base em... tipo, as coisas que
00:15:19são importantes para mim que estão desatualizadas para a maioria dos modelos. Então isso
00:15:24é o que traz tudo para o nível de: aqui está como a Vercel é hoje. E assim,
00:15:31mesmo que essa seja a única coisa que aconteça no plugin, ele sabe que deve ir e
00:15:37verificar as coisas daqui para frente. Mas o que também podemos fazer — e apenas como uma nota
00:15:44lateral — um motivo pelo qual cada sessão no Cloud Code tem seu próprio ID exclusivo, o que permite
00:15:52que, conforme a sessão avança, ela garanta que tenha um orçamento de skills,
00:16:01e tenha as skills que já foram carregadas e coisas desse tipo. Então podemos
00:16:07escrever coisas no ambiente da sessão, ou em um local de armazenamento da sessão
00:16:15onde, ao longo dessa sessão, garantimos que não
00:16:20carregaremos coisas que já foram carregadas, ou duplicaremos esforços, porque podemos manter
00:16:26o rastro das coisas que já aconteceram. Então essa é outra ótima parte.
00:16:30A parte boa sobre a sessão é que ela te dá a chance de pegar um ID de sessão para que, através de
00:16:35qualquer um dos hooks futuros, qualquer coisa que for executada dentro da sessão, você tenha
00:16:40um ID para se prender e armazenar informações sobre a sessão para o seu plugin individual.
00:16:47O Claude Code também faz isso; se você olhar no diretório .claud com os projetos, você
00:16:50pode ver sessões e coisas lá. Então você usa esse mesmo conceito para seus próprios plugins
00:16:56e ferramentas próprias. Certo, dito tudo isso, vamos falar de pre-tool use e
00:17:05falaremos de pre-tool e post-tool ao mesmo tempo; o que eles te dão é a chance
00:17:11de ver alterações de arquivos. No pre-tool, você pode obter o conteúdo do arquivo que está prestes
00:17:20a mudar. E isso é em relação a ler arquivos, escrever arquivos, ou desculpe, ler arquivos,
00:17:29editar arquivos, criar arquivos. E o pre-tool também abrange muitas outras ferramentas que podem
00:17:34ser usadas, como executar coisas no bash. Então você tem essa chance de: antes que isso aconteça,
00:17:40existe algo que eu queira fazer? E, por exemplo, se virmos alguém
00:17:47tentando executar um comando específico da CLI da Vercel, e notarmos que existe uma maneira
00:17:55melhor de fazer isso agora na CLI da Vercel, como o fato de que a CLI da Vercel agora tem uma opção de API onde
00:18:00podemos fazer consultas muito mais avançadas. E a CLI da Vercel foi atualizada. Se você não a
00:18:05atualizou recentemente, ela tem muitos novos recursos excelentes. Podemos dar dicas sobre essas coisas e
00:18:11dizer que você está tentando fazer isso, ou mesmo verificar: sua CLI da Vercel está desatualizada? Seria
00:18:17ótimo atualizá-la. Então você tem muito mais opções aqui. Isso te dá a chance de
00:18:21verificar se ele vai fazer algum tipo de chamada de ferramenta, seja uma chamada de CLI.
00:18:27Isso é super importante para a CLI do sandbox, para a CLI de fluxo de trabalho, para todas essas novas
00:18:34CLIs sobre as quais os modelos ainda não sabem nada, porque foram lançadas após os
00:18:39cortes de conhecimento, para garantir que eles estejam fazendo as coisas corretamente. Então é por isso que para
00:18:47chamadas de ferramentas, como chamadas de bash, e para edições de arquivos, fica muito interessante com edições de arquivos.
00:18:52Algo que estamos explorando mais é comparar arquivos; tipo, este arquivo costumava ser assim,
00:18:59o agente está tentando deixá-lo assim. Isso é o correto, com base em nossas bibliotecas,
00:19:06é uma mudança correta? Ou tem algo estranho ali? E isso entra em... eu vou
00:19:11apenas me apoiar no exemplo de: digamos que você tenha o SDK v6 instalado e ele tente usar generateObject
00:19:18como uma API, o que é comum. E se você notar isso naquele momento, tipo: "vejo que
00:19:25você está tentando usar generateObject", vamos parar e lembrá-lo de como o AI SDK realmente
00:19:32funciona para que, antes mesmo de você chegar a testar ou publicar ou qualquer coisa, você o tenha flagrado
00:19:36no exato momento em que o agente estava tentando alterar o arquivo. E esta é uma daquelas
00:19:46coisas onde, se você tentar confiar em uma skill — onde skills são como dicas textuais de
00:19:54se você já tentou escrever no seu claud.md ou em uma skill, tipo: "nunca faça commit de tais
00:20:03arquivos" ou "nunca publique a menos que eu esteja em uma branch" ou algo assim. Você provavelmente
00:20:13já passou por isso; essas dicas nem sempre te protegem. O pre-tool use
00:20:21te dá a chance de, literalmente, impedir que essas coisas aconteçam de uma forma programática
00:20:28e técnica. E você pode dar a ele instruções diferentes e exemplos diferentes
00:20:32de maneiras de fazer isso. Então essa é a enorme diferença aqui entre skills, entre
00:20:41seus arquivos claud.md ou agents.md, é que você pode realmente controlar o que está mudando e
00:20:47se, ou o que está acontecendo. E se você quer que aconteça ou o que está mudando, se
00:20:51você quer que isso mude, esse é o ponto que te permite... é ótimo. A partir daí,
00:21:01você tem capacidades semelhantes no post-tool. A chance de verificar exatamente o que mudou
00:21:07depois que, por exemplo, um comando bash foi executado; o que há de diferente agora que
00:21:13uma ferramenta foi chamada? Então isso não permite que você impeça que algo
00:21:19aconteça, mas permite que você veja o resultado de algo que aconteceu. E se isso,
00:21:25se ele mudou algo ou fez algo inesperado, é outra chance de obter
00:21:31uma comparação e dizer: "isso parece meio estranho. Vamos dizer ao agente que isso nos parece estranho".
00:21:38Então esses são dois enormes hooks de ciclo de vida para se conhecer ao construir. E para nós, é
00:21:43de novo, é muito sobre esse corte de conhecimento. Essa é a
00:21:49coisa contra a qual a Vercel tem que lutar, porque publicamos rápido, publicamos com frequência e
00:21:55e estamos apenas lançando toda essa nova tecnologia tão rapidamente. E é apenas esse material incrível
00:22:00que queremos apresentar às pessoas. E é aí que um plugin pode ser muito, muito útil.
00:22:09Alguma pergunta sobre isso?
00:22:11Sim. Então, se ele está usando caminhos de arquivo para decidir quais habilidades injetar, isso significa que realmente
00:22:21temos muito a ganhar ao restringir os arquivos em nossos projetos para serem um pouco mais de
00:22:27propósito único, para que ele possa determinar com mais precisão de quais habilidades ele precisa,
00:22:34quais habilidades ele precisa adicionar. Por exemplo, se eu tiver um arquivo grande e talvez ele esteja usando cinco ou seis de nossas
00:22:39bibliotecas e agora ele só pode adicionar três, até três habilidades ali, ou ele pode não saber
00:22:47com base no caminho do arquivo. Então, você acha que isso deveria ser uma consideração agora
00:22:51ao construir software com essas ferramentas?
00:22:54Eu diria que você não deveria ter que se importar com o código que o agente escreve e que
00:23:02cabe aos autores do plugin. Cabe aos autores do framework fazer com que essas coisas funcionem
00:23:12bem. Como as pessoas que estão realmente executando avaliações e vendo se
00:23:17isso faz diferença ou não. Enquanto que eu acho que é muito, é muito fácil voltar ao modo engenheiro
00:23:27e pensar: vou resolver isso porque é o que um humano faria. E é definitivamente
00:23:33o que um agente iria querer. Tipo, essa é uma das maiores tentações dos desenvolvedores agora
00:23:39é a resolução de problemas, tipo encontrar problemas que não são problemas. Porque sim, é se,
00:23:50se você está tentando consertar algo e não sabe como testar, tipo,
00:23:53se você sabe como testar isso contra um agente, então vá em frente. Se você não tem vontade
00:24:00de fazer isso, então deixe que as pessoas que estão construindo os plugins e os frameworks
00:24:05cuidem disso, porque os testes e avaliações são caros. Tipo, custa
00:24:12muito dinheiro rodar todos esses modelos contra essas mudanças. Leva muito tempo e é
00:24:17uma dor enorme. Então, tipo, é uma daquelas coisas. Espero que ninguém tenha que se preocupar com isso.
00:24:23E eu acho que gastaria meu esforço em outras coisas por enquanto. Sim.
00:24:33Entendo, entendo. Então não faz sentido mudar a forma como eu construo as coisas. Se a próxima versão
00:24:40do modelo for construída de uma forma que tornaria todas essas alterações desnecessárias
00:24:47essencialmente.
00:24:48Sim. E eu acho, quero dizer, o objetivo final para todos os frameworks e para a Vercel é
00:24:56que você realmente não precise pensar ou olhar tanto para o código. Não estou dizendo que esse
00:25:01seja o caso agora. Estou dizendo que esse é o objetivo final. É para isso que
00:25:07estamos trabalhando, para que você queira entregar software bonito. Você quer ser capaz de
00:25:11pensar, você quer ter um fluxo livre de ideias e obter variações e ver quais realmente ressoam
00:25:19com você e então realmente reduzir para algo que seja bonito para você, sua
00:25:25família ou para seus clientes. Tipo, nós só queremos uma experiência bonita onde
00:25:33você não esteja pensando demais no tamanho dos seus arquivos. Se você está escrevendo,
00:25:39você sabe, os padrões de design certos, quais bibliotecas você está escolhendo. E eu concordo totalmente.
00:25:48Tipo, a tentação de dizer: vamos usar todos esses padrões porque os agentes são
00:25:53melhores com eles. Vamos fazer todas essas coisas. E é definitivamente algo que estamos
00:25:58experimentando com o plugin e testando. Mas, novamente, se você não pode testar, então
00:26:07é tão tentador dizer: eu fiz essa mudança e obviamente está funcionando melhor agora.
00:26:18E esse é um daqueles erros onde, bem, agora que você fez essa mudança, você
00:26:23não está olhando para como funcionava antes e o que isso impacta em outros lugares. E sim,
00:26:28talvez tenha funcionado bem para aquela sessão e, tipo, a engenharia está diferente agora. Desculpe,
00:26:35estou ficando filosófico, eu acho. Sim, acho que entendemos. Sim. Tudo bem.
00:26:44Então, outro hook é o envio do prompt do usuário. Este é muito importante porque permite
00:26:50que você pegue o texto do que o usuário digitou. E se ele mencionar uma biblioteca, se mencionar
00:26:55um conceito, se mencionar, sabe, se mencionar a palavra agendamento, vamos
00:27:00trazer a habilidade de cron. Isso é muito semelhante a como as habilidades funcionam, tipo, se o usuário ou
00:27:07se houver algo detectado na conversa que corresponda à descrição, mas isso na verdade
00:27:12dá a chance de rodar um regex contra um prompt do usuário. E se você detectar certas palavras-chave
00:27:20ou padrões ou o que quer que seja, carregue essas habilidades, faça essas coisas, dê dicas ao agente,
00:27:26tipo, talvez você deva fazer mais perguntas de acompanhamento. Esta é a parte interativa onde
00:27:33é a sua chance de dizer: o usuário disse isso, talvez devêssemos pedir mais esclarecimentos
00:27:38ou devêssemos apenas carregar todas essas coisas e seguir em frente. Você pode fazer
00:27:44algumas coisas muito divertidas com o envio do prompt do usuário onde, se você quiser ter
00:27:48seu próprio glossário personalizado ou linguagem de comandos para você mesmo, e quiser
00:27:56prefixar coisas com cifrões. E se algo começar com um cifrão, faça isso. Ou
00:28:00se algo tiver, você sabe, é como escrever pequenos scripts bash ou algo assim
00:28:07dentro do envio do prompt do usuário, que se você detectar isso, poderá executar uma ferramenta imediatamente e
00:28:13ela pode rodar dentro de, você pode rodar quaisquer scripts bash, scripts node,
00:28:20o que for dentro desse hook que está fora do contexto da sessão. Então você pode fazer
00:28:28todo tipo de coisas rápidas e malucas ali. Se você quiser, tipo, detectar a palavra commit
00:28:37e então evitar que o agente dê alguns passos para fazer o commit de algo. Em vez disso,
00:28:47você apenas tem um script que faz o commit baseado no que quer que seja. Logo após o prompt
00:28:53commit, você pode dizer ao agente: sabe, eu rodei essa coisa de commit, você não precisa se preocupar
00:28:59com isso. E você pode economizar alguns turnos do agente. E há alguns pequenos truques
00:29:03interessantes que você pode fazer ali para realmente acelerar se houver muitas coisas que
00:29:09você faz que são repetitivas, em vez de pedir ao agente para fazer todas as vezes. É
00:29:15um projeto divertido se você quiser construir um pequeno envio de prompt para você mesmo e
00:29:19criar sua própria linguagem de como você quer falar com o agente. Mas para nós,
00:29:25é mais tipo: se eles disseram isso, falaram sobre esse conceito, o que isso significa na
00:29:30terminologia da Vercel, então é como combinar palavras contra, especificamente, tipo,
00:29:37agendamento são crons e workflows. E, sabe, palavras como paralelo ou performance ou o que for, tipo,
00:29:45você pode encontrar e direcionar o agente para coisas específicas que você conhece sobre a Vercel. Muito, muito
00:29:53divertido de brincar com o envio de prompt do usuário se você tiver um fim de semana para mexer com isso.
00:29:58E, novamente, vou reiterar: é totalmente possível chegar aqui e dizer: me ajude
00:30:03a construir um plugin do Claude Code com envio de prompt do usuário que detectará, sabe, cifrões
00:30:09e se mostrar um cifrão, então execute o commit dentro do envio do prompt do usuário para que
00:30:14com esse prompt, sabe, eu pudesse ter construído isso, então não se preocupe muito com
00:30:19o código, você pode simplesmente começar a brincar com ele. Tudo bem, agora que você tem tudo
00:30:26isso organizado, o fim da sessão é uma chance de limpar quaisquer arquivos ou qualquer coisa que você escreveu
00:30:32durante a sessão. Então, se você começou a coletar quais habilidades foram executadas, se começou a
00:30:39coletar qualquer informação sobre resultados de ferramentas que foram chamadas, ou qualquer tipo de
00:30:48orçamento ou algo que você esteja acompanhando durante a sessão, é uma chance de entrar lá e
00:30:51limpar tudo. Há algumas coisas fascinantes que você pode fazer no fim da sessão. Porque ele roda
00:30:57essencialmente no Ctrl C, tipo na saída da sessão. Você pode acionar outros agentes
00:31:05para dizer: ok, olhe para todos os arquivos que mudaram na sessão. Eles correspondem ao que
00:31:09tudo o que não fazemos. É apenas coisas muito interessantes que você pode
00:31:13fazer no fim da sessão onde minha sessão acabou. Essa sessão representa progresso neste
00:31:20projeto? Representa lixo? Tipo, olha todos os arquivos que foram alterados.
00:31:26Isso é duplicidade de coisas que já estão no projeto? E se for, tipo, vá lá,
00:31:30limpe e avise, você teria que avisar o usuário de alguma forma, como através de uma notificação do sistema
00:31:37ou através de algum outro meio, já que sua sessão se foi. Mas coisas realmente
00:31:43interessantes que você pode fazer ali. Tudo bem. Com tudo isso dito, eu só vou
00:31:50escrever uma pequena demonstração aqui. Então, vou iniciar uma versão do Claude Code rodando
00:31:56o plugin da Vercel versus quando não está rodando o plugin da Vercel. Vou usar
00:32:04o Claude para pular permissões perigosamente, vou deixar o debug ligado, mostrarei isso em um segundo.
00:32:08E este modelo será definido como Haiku. Esse é o modelo mais rápido e simples
00:32:13para o Claude Code. E eu vou dizer: apenas escreva um tutorial sobre o AI SDK.
00:32:26E tipo, veremos o que acontece lá. E vou comparar lado
00:32:30a lado, você pode ver que ele já começa a carregar a habilidade. E este tem o plugin carregado.
00:32:37Se eu quiser iniciar uma sessão sem nenhum plugin carregado, há uma flag de fontes
00:32:46de configuração que dá a chance de desativar, tipo, fontes de nível de usuário ou configurações de nível de usuário ou
00:32:53configurações de nível de projeto, essencialmente, apenas ignorar quaisquer configurações. Dessa forma, posso carregá-lo sem
00:32:59plugins. O "no flicker", ops. Esse "no flicker" é novo, de ontem, é uma maneira legal
00:33:05de fazer rolagem suave dentro do Claude Code. Então estou ativando isso também. E então eu
00:33:12vou definir o modelo Opus, sendo o modelo mais inteligente. E se eu fizer o mesmo prompt
00:33:20de tutorial sobre o SDK. E esta é a versão padrão aqui. E vamos
00:33:28comparar os resultados. Oh, ops, eu preciso, eu não apaguei o anterior. Vamos
00:33:36começar de novo. Deixe-me ligar isso e rodar aquilo. Isso foi
00:33:50algo que eu estava rodando hoje de manhã e limpei antes disso começar. Então deixe-me lançar de novo.
00:33:56Fazendo uma comparação. Sim.
00:34:01Tudo bem. Então
00:34:04a grande diferença aqui é este ser Haiku 4.5 versus Opus 4.6, certo? Tipo, o máximo este
00:34:15é um milhão de vezes mais barato e muito, muito mais rápido. E ele já vem carregado com muito mais
00:34:22informações da Vercel. Então, mesmo se você comparar, tipo, o custo orçamentário dos tokens extras
00:34:32que estamos incluindo, incluindo versus, sabe, Haiku versus Opus. Enquanto isso está indo para
00:34:38eu deveria ter dito apenas criar um arquivo markdown. Eu acho que ele está indo para escrever código de verdade,
00:34:45mas isso será interessante o suficiente. Vamos ver. Então esta é uma coisa a notar sobre uma
00:34:59das abordagens que estamos adotando para muitas de nossas habilidades é, como mencionado antes, por causa
00:35:05do número da versão, porque as diferentes habilidades podem mudar para nós fixamos o número da versão
00:35:13das habilidades. Deixe-me reformular isso. Bem
00:35:21habilidades diferentes. Muitas de nossas habilidades dizem: por favor, olhe para os node_modules, onde vamos agrupar
00:35:28muitos dos documentos para que os documentos também fiquem fixados na versão. Então, olhando aqui,
00:35:34você pode ver que ele estava realmente lendo os documentos locais. E ele está passando por aqui
00:35:40e montando este tutorial. Tudo bem. Agora, vamos dar isso. Isso realmente não fez
00:35:53nenhuma pesquisa. Então isso será interessante. Da última vez eu fiz muito mais pesquisa. E eu
00:36:01já posso ver agora, tipo, que ele está usando um modelo desatualizado Sonnet 4 em vez de, tipo,
00:36:074.6. Ele está usando um desatualizado. Mencionou generateObject, que não é o que queremos usar. Nós
00:36:15usamos V6. E já há um monte de coisas que estão apenas desatualizadas. Eu não diria que elas
00:36:23estão erradas, mas estão, tipo, muito, muito desatualizadas para o que há de mais moderno se você quer a melhor performance
00:36:28e as melhores práticas do SDK. Então, tudo bem. Isso capturou algo
00:36:37aqui? Sim, parece que sim. A habilidade do SDK captou, parece que ele escreveu um tutorial inicialmente
00:36:51aqui. E então a habilidade percebeu que não estava atualizado para a V6, tipo, sem eu dizer
00:36:58nada. E agora ele está indo e atualizando. Ele passou de generateObject para generateText.
00:37:03E ele está indo e atualizando tudo para garantir que esteja nas versões mais recentes. Tudo bem,
00:37:10então eu posso comparar esses dois. Vou apenas começar uma nova sessão. Vamos entrar aqui e comparar
00:37:23os tutoriais sem plugin versus o tutorial com o plugin da Vercel para precisão. E isso
00:37:44será interessante de ver, tipo, toda vez que eu rodei isso antes, o Opus escreveu um arquivo markdown
00:37:48desta vez ele fez trechos de código. Vai ser divertido ver a diferença.
00:37:54Quando você está fazendo isso, sim, especialmente se você tiver outras habilidades, talvez trabalhando ao lado
00:38:03deste plugin, existe o risco de eles terem um conflito e, tipo, resultar em coisas desatualizadas
00:38:10sendo preferidas ou o plugin terá, tipo, uma prioridade maior?
00:38:16O plugin irá essencialmente, eu diria, injetar habilidades com força baseado em seus padrões. Então se
00:38:27houver, sempre há esse risco, tipo, é tudo apenas contexto,
00:38:34tipo, todos esses são apenas arquivos de texto que são inseridos em uma sessão. Então eu sempre diria
00:38:41use apenas as coisas que você quer para o projeto em que está como uma, desculpe, muito raramente
00:38:49instale uma habilidade em nível de usuário, a menos que você saiba que quer aquilo em cada projeto.
00:38:58E mesmo para o plugin da Vercel, estamos trabalhando para encontrar as melhores maneiras possíveis de, tipo,
00:39:06carregar apenas o que você precisa para o projeto em que está. E temos muitas ideias em torno
00:39:11disso. Mas uma das, uma das ideias provavelmente mais controversas é: quando
00:39:23um usuário diria que instalou um plugin da Vercel? Então, qual suposição você poderia fazer sobre isso?
00:39:30Se eles instalaram o plugin da Vercel, e estão na plataforma de um concorrente, e abrem um
00:39:35projeto na plataforma do concorrente? Deveríamos falar para eles sobre as nossas coisas? Tipo, isso é,
00:39:42é uma coisa muito controversa, certo? E se uma pessoa vê isso, e
00:39:47ela não queria, e ela não está realmente interessada em migrar para a Vercel,
00:39:53ela vai ficar muito brava. Se outra pessoa estiver, ela ficará muito feliz. Tipo, então tem
00:39:59algumas coisas fascinantes. Se você aceita a teoria de que todo mundo
00:40:05vai apenas interagir com agentes... tipo, qual é a etiqueta em um plugin ou ao informar
00:40:15agentes sobre, tipo, a nova coisa fantástica na sua plataforma sem, tipo, pisar no pé
00:40:24das outras plataformas. E então, tipo, há muitas coisas. Isso é muito relevante para
00:40:31o que eu estou fazendo agora, pois vamos lançar a versão estável do Workflow em breve. E por isso estou escrevendo
00:40:37guias de migração. Se alguém quiser migrar de um dos concorrentes do Workflow, isso,
00:40:43sabe, poderia usar diretamente uma habilidade para dizer: migre disto para o Workflow. É assim que você,
00:40:49é assim que você faz. Se você quiser fazer isso, tipo, em que ponto em um agente eu informaria
00:40:55alguém sobre isso? E esse tipo de coisa é muito, muito interessante para mim. Especialmente porque é
00:41:00uma prioridade agora, já que é no que estou trabalhando no momento. Mas sim, tipo, conflitos de contexto,
00:41:07tipo, vai ser um problema no futuro. Eu não sei o que tentar
00:41:14inferir o que o usuário quer baseado no contexto do projeto deles ou do que pediram até agora.
00:41:19Seria ótimo. Tipo, poderíamos tecnicamente olhar conversas passadas e ver o que eles
00:41:27fizeram. Poderíamos olhar o histórico de commits. Tipo, poderíamos dizer para a CLI do GitHub, tipo, vá olhar
00:41:35qualquer coisa no projeto. Tipo, há muitas coisas que você poderia fazer para reunir contexto,
00:41:40mas isso também é cruzar algumas fronteiras, tipo, chamar ferramentas que eles não pediram para você chamar,
00:41:46muitas e muitas coisas realmente interessantes que, se for, é muito mais fácil apenas fazer tudo
00:41:53na Vercel e apenas ter, tipo, apenas em vez de... e tipo, fornecer um agente com um conjunto específico
00:42:00de regras e um plugin que apenas, tipo, entrega tudo lindamente lá e, tipo, não ter
00:42:05que se preocupar com todos esses conflitos. Enfim. Eu espero mencionar, sim.
00:42:14Em um contexto de plugin, quando nossas habilidades... tipo, em que ponto desse processo as habilidades
00:42:19normalmente estão? Por exemplo, se eu tivesse uma habilidade de migrar o Create React App para o Next.js, e ela
00:42:26estivesse apenas na minha pasta de habilidades, é mais provável que ela seja invocada automaticamente sempre
00:42:32que eu estiver em um projeto Create React App? Em vez de, digamos, se eu tiver o plugin da Vercel aqui, eu posso
00:42:39decidir quando ela será invocada e eu posso, se eu construir essa mesma migração como um plugin,
00:42:47posso fazer com que ela aconteça apenas se o usuário estiver solicitando explicitamente. Esse é o modelo mental
00:42:52correto? Eu acho que sim. Tipo, estivemos conversando sobre
00:42:59o conceito de, tipo, habilidades de uma só vez ou, tipo, habilidades de uso único que são mais tipo: eu quero
00:43:06fazer uma coisa como uma migração, que é, tipo, essa é uma tarefa que você tem, ou
00:43:12tipo, uma habilidade relacionada a uma tarefa que você não quer carregar em nenhum outro momento, exceto para a tarefa.
00:43:17Tipo, você quer que ela seja restrita à tarefa. Você não quer que seja restrita ao projeto.
00:43:22Você não quer que seja restrita ao usuário, você quer que seja restrita à tarefa. E essas são discussões
00:43:27que estamos tendo. E eu acho que, eu não tenho uma resposta ótima porque agora, se você tem
00:43:33uma habilidade como essa carregada, então ela vai influenciar um framework nos modelos baseado
00:43:41no modelo e baseado em outras habilidades. Tipo, é tão difícil dizer sem saber exatamente
00:43:47o que mais está no projeto. Mas sim, tipo, isso definitivamente é, isso também é prioridade como
00:43:55habilidades restritas a tarefas. Outra pergunta na minha mente aqui é o quanto
00:44:04dessa arquitetura de plugin é específica do Claude Code. Então, se eu quisesse ter um comportamento semelhante
00:44:12no Cursor ou Codex ou em qualquer outro, eles têm seu próprio formato de plugin? Eu preciso
00:44:18de um plugin para cada um deles? Como isso funciona? Sim. Então, devemos ter alguns anúncios
00:44:25em breve sobre o tipo de especificação em torno dos plugins e todo mundo concordando em, tipo, finalmente ter
00:44:33plugins que funcionarão universalmente e com compatibilidade cruzada. Praticamente todo mundo
00:44:39está de acordo com isso. Eu não diria hoje, mas hoje, se você construir um plugin no formato do Claude Code,
00:44:45você pode, eu diria que poderia esperar que ele funcione com os outros em pouco tempo.
00:44:54Mas sim, é fantástico. Já existem pastas de habilidades demais. Estou muito feliz
00:45:00que finalmente estamos começando a padronizar algo aqui. Sim. Uma vez que a ideia,
00:45:07tipo, eu adorei quando estava conversando com a Anthropic sobre plugins e o motivo
00:45:13de terem escolhido a palavra plugin em vez de extensão é que plugin implica algo
00:45:18que você pode conectar e desconectar. Tipo, se você criar um plugin com um conjunto
00:45:24de habilidades e só quiser usá-lo novamente para uma única tarefa, isso deve ser bem viável.
00:45:33Se estou no meu projeto e sou um designer, eu não quero que todas as minhas
00:45:40habilidades de design interfiram com as habilidades de desenvolvedor ou algo assim. Tipo,
00:45:46você quer poder conectar apenas aquelas peças. E eu concordo plenamente com esses
00:45:52conceitos de que pessoas individuais terão suas tarefas, funções e projetos individuais.
00:45:59E elas vão querer plugins mais do que habilidades, porque podem, e provavelmente
00:46:05vão querer curar seus próprios plugins também, tipo, construir seu próprio conjunto
00:46:10de habilidades e ganchos, tudo totalmente personalizado para a maneira como trabalham.
00:46:16Isso significa que eu deveria pensar em talvez desconectar o plugin da Vercel se
00:46:21eu estiver trabalhando em um projeto que não seja da Vercel?
00:46:25Eu diria que, a partir de hoje, sim, por causa de como, tipo, ele é muito agressivo
00:46:34em se autopromover. E espero não me meter em encrenca com alguém por dizer isso.
00:46:39Mas a intenção total do plugin da Vercel é: isto é algo para carregar seu
00:46:46agente e dizer "construa isso para mim". E então aquilo simplesmente aparece de forma mágica
00:46:53na Vercel. Esse é o objetivo inicial. E estamos vendo como isso funciona. E se, com base
00:46:59no feedback que estamos recebendo, estamos recuando um pouco, vendo que definitivamente
00:47:04precisamos detectar melhor o que está no projeto para desativar e tudo mais.
00:47:09E isso virá muito, muito, muito em breve. Então, você sabe, provavelmente mantenha-o,
00:47:15mantenha-o instalado e ativado porque estamos trabalhando ativamente nisso,
00:47:18como estávamos conversando hoje de manhã. Então...
00:47:23Entendo. Então é meio que uma troca onde talvez, no futuro, ele entenda um pouco
00:47:29melhor quando deve se invocar. Mas agora, a maneira como o usuário controla se este
00:47:36plugin está agindo ou não é conectando-o ou desconectando-o para uma sessão diferente.
00:47:42Sim. E agora, se você digitar slash plugin, você pode ir até os plugins instalados,
00:47:48navegar com tab, ir até qualquer plugin que queira desativar. E você pode atualizar,
00:47:54pode desinstalar, pode fazer o que quiser. Então você pode desativá-lo dessa forma. E há
00:48:03outros truques mais avançados, como configurar funções ZSH personalizadas
00:48:10que carregam conjuntos específicos de configurações para cada usuário... é tudo muito estranho,”
00:48:17o conceito de um perfil da pessoa que se senta ao computador. E tipo,
00:48:23quais são todos os plugins que ela quer com base no que está olhando? E não há uma
00:48:29solução perfeita para isso. Espero que possamos descobrir uma, no entanto.
00:48:34É como quando um Waymo encosta e ajusta todos os assentos para você no momento em que
00:48:39você entra.
00:48:40Sim, sim. E eu acho que, em certo ponto, imagino que veremos agentes perguntando
00:48:49mais sobre você. Sinto que isso é algo enorme, como o conceito de identidade de perfil, função,
00:48:57que para mim parece uma peça que falta. A menos que você queira assumir que todos agora são
00:49:05o gerente de projeto completo de uma coisa inteira. Eu simplesmente não vejo isso tão cedo.
00:49:12Eu só sinto que algumas pessoas têm ideias melhores sobre algumas coisas do que outras.
00:49:19Então...
00:49:20É, vamos revisar isso. Então, o que é interessante? Vamos ver, estes são... sim,
00:49:33é interessante que estou fazendo o Opus revisar o Opus e ainda está errado, né? Tipo,
00:49:37ele ainda está recomendando generate object e v6. Vamos verificar contra a documentação.
00:49:50Ele está tentando verificar e está dizendo que, sabe, aquele que eu escrevi está incorreto.
00:49:56Isto ainda se mostra válido, mas datado. Então, tipo, nosso Haiku recomendou os modelos
00:50:05mais recentes, e isso, para mim, é super importante. Não sei quantas vezes você tentou
00:50:08usar um agente para escrever algo com IA. E ele diz: "vamos usar o GPT-4o", tipo,
00:50:14não, isso já está muito antigo agora. E não chega nem perto da qualidade que precisamos.
00:50:20O que é apenas uma daquelas coisas que você pode detectar, capturar e dizer: "verifique os
00:50:25modelos mais recentes no gateway de IA". E você poderia dizer para detectar os modelos mais recentes,
00:50:31perguntar ao usuário qual ele quer, descrever cada modelo e tudo mais. Enquanto que agora,
00:50:36esses agentes sempre usam o GPT-4. Tem sido interessante, apenas como uma observação,
00:50:43ver o Claude Code recomendando o SDK da Anthropic cada vez mais recentemente, o que não
00:50:49fazia antes. E você pensa: acho que alguém está ajustando alguns prompts de sistema nos bastidores
00:50:55para recomendar o próprio SDK deles. O que eu não os culpo. São negócios, né? Certo.
00:51:03É, então o generate object ainda está lá. E sim, isso foi bom. Após verificar
00:51:13a documentação, o tutorial está mais preciso. Várias coisas que chamei de fabricadas realmente existem.
00:51:19Então sim, este é o Opus percebendo que estas são coisas reais... este é o Haiku
00:51:25com um plugin. E o Opus escrevendo o tutorial, tentando validar o tutorial, tipo, eu tive
00:51:32que dizer a ele para olhar exatamente na documentação para descobrir que algo que o Haiku
00:51:39com o plugin meio que fez de primeira, certo? E se você sabe a diferença entre Opus
00:51:44e Haiku, isso é algo importante. Aqui está um diff de tudo o que ele acertou
00:51:53nos desafios ou mudanças. Enfim, espero que isso demonstre de uma forma simples.
00:52:04Apenas um dos cenários, o AI SDK, isso é muito, muito mais. Isso para coisas como workflow
00:52:15e sandbox com as tecnologias muito mais recentes da Vercel que são incríveis, mas não estão
00:52:21dentro do corte de conhecimento dos modelos. Essas distinções tornam-se ainda maiores porque
00:52:28os modelos nem sabem sobre elas, certo? Então é para isso que serve o plugin da Vercel.
00:52:35Se alguém tiver dúvidas, sinta-se à vontade para me procurar no X ou em qualquer lugar. Adoro
00:52:41conversar sobre isso, fico feliz em abordar qualquer preocupação. Isto é definitivamente um trabalho em
00:52:48progresso e algo que vamos iterar, iterar e iterar até que seja essa experiência mágica
00:52:52e incrível. E espero que vocês possam ver o começo disso hoje. Se alguém tiver
00:52:59qualquer dúvida, ficarei feliz em responder. Se alguém tiver ideias de plugins e quiser fazer um
00:53:04brainstorm, também ficarei feliz em falar sobre isso. Então é isso, a menos que alguém
00:53:14queira que eu me aprofunde em outra coisa. É o que eu tenho para cobrir por hoje.
00:53:20Realmente agradeço por você dedicar esse tempo. É muita coisa para absorver. É uma grande mudança.
00:53:25Temos avançado tão rápido com todas essas ferramentas de IA.
00:53:28É, infelizmente não vai desacelerar.
00:53:33Uma pergunta que eu tenho é: se as pessoas quiserem contribuir de alguma forma, ou se encontrarem
00:53:38um bug e quiserem relatar, qual é a melhor maneira de fazer isso chegar até você?
00:53:41Ah, sim, o repositório para isso. Vercel slash, Vercel slash plugin ou é Vercel slash
00:53:49Vercel plugin?
00:53:51Sim, Vercel slash Vercel dash plugin.
00:53:58Certo. Vou colocar isso no chat também para que as pessoas tenham o link.
00:54:03Obrigado. Sim, abrir issues lá é ótimo. Vai mudar rapidamente. Eu sei que aprovei
00:54:10um grande PR logo antes desta chamada.
00:54:14Incrível. Certo, Jacob, mais alguma pergunta da sua parte?
00:54:20Não, não, acho que cobrimos tudo na transmissão. Sim, obrigado por fazer uma
00:54:24demonstração tão aprofundada e fantástica. Sinto que agora estou pronto para construir meus
00:54:30próprios plugins para o Claude. E em vez de apenas gritar com o agente quando ele decide
00:54:37forçar um push para o main, agora eu sei quais hooks devo dizer para ele usar para garantir
00:54:42que ele não faça isso de novo. Então isso é super útil.
00:54:45Pre-tools são seus amigos, são sua melhor defesa contra coisas que você não quer que aconteçam.
00:54:51Legal. Muito obrigado, John. Com certeza. Obrigado, pessoal.
00:54:56E obrigado a todos por se juntarem a nós. Vocês podem encontrar as próximas sessões em
00:55:01community.vercel.com slash events. E nos vemos na próxima.
00:55:05Isso aí. Vejo vocês na comunidade. Tenham um ótimo dia, pessoal.

Key Takeaway

O plugin da Vercel para o Claude Code utiliza hooks programáticos para forçar agentes de IA a adotar as práticas e APIs mais recentes da plataforma, superando as limitações de conhecimento datado dos modelos fundamentais.

Highlights

O plugin da Vercel utiliza hooks de ciclo de vida como session start, pre-tool use e user prompt submit para injetar contexto atualizado em agentes de IA.

O uso de plugins resolve o problema de 'knowledge cutoff' de 6 a 12 meses dos modelos de IA, fornecendo acesso imediato às APIs mais recentes como o AI SDK v6.

O hook pre-tool use permite interceptar e impedir comandos de shell ou edições de arquivos incorretas antes que sejam executadas pelo agente.

O modelo Haiku operando com o plugin da Vercel supera a precisão do modelo Opus sem plugin em tarefas específicas de codificação para a plataforma Vercel.

O plugin injeta um grafo de conhecimento estruturado no início da sessão que mapeia termos como 'agendamento' diretamente para conceitos técnicos como 'Cron Jobs' e 'Workflows'.

A padronização em andamento permitirá que um único plugin funcione de forma cruzada entre Claude Code, Cursor e Codex.

Timeline

Evolução de Skills para Plugins

  • Plugins representam a próxima fase evolutiva das habilidades baseadas em Markdown.
  • Um esforço de padronização busca tornar os plugins compatíveis entre diferentes editores como Cursor e Codex.
  • A estrutura de plugin permite empacotar instruções e ferramentas para compartilhamento universal.

Enquanto as skills tradicionais dependem de arquivos estáticos carregados manualmente ou por detecção de descrição, os plugins oferecem uma integração mais profunda. O objetivo é criar um ecossistema onde uma única implementação funcione em múltiplas ferramentas de desenvolvimento assistido por IA. Essa mudança visa simplificar como os desenvolvedores equipam seus agentes com capacidades específicas de plataforma.

Hooks e Ciclo de Vida da Sessão

  • Os hooks definem momentos específicos no ciclo de vida da interação entre o usuário e o agente.
  • O hook session start injeta automaticamente um sumário da plataforma Vercel no início da conversa.
  • Arquivos de contexto como vercel.md funcionam como um grafo de conhecimento estruturado para o modelo.

O ciclo de vida inclui eventos como o início da sessão, o envio de prompts pelo usuário, o uso de ferramentas e o encerramento da sessão. Ao utilizar o session start, o plugin garante que o agente possua um glossário de termos e mapeamento de documentos atualizados. Isso evita que o usuário precise mencionar explicitamente bibliotecas como o AI SDK para que o agente saiba como utilizá-las corretamente.

Resolução do Conhecimento Datado

  • Modelos de IA possuem cortes de conhecimento que ignoram atualizações lançadas nos últimos meses.
  • O plugin inspeciona o arquivo package.json local para determinar quais versões de biblioteca estão em uso.
  • A automação de contexto elimina a necessidade de o desenvolvedor gerenciar manualmente versões de documentação.

A plataforma Vercel lança atualizações com frequência superior à capacidade de retreinamento dos modelos de linguagem. O plugin atua como uma ponte, fornecendo URLs e snippets de código que refletem o estado atual das ferramentas de IA e fluxos de trabalho. Ao analisar o ambiente local, o plugin decide quais habilidades e documentos são pertinentes para aquele projeto específico, reduzindo erros de alucinação sobre APIs antigas.

Controle Programático com Pre-tool e Post-tool

  • O hook pre-tool use oferece uma camada de defesa técnica que impede a execução de código desatualizado.
  • Desenvolvedores podem comparar o estado anterior e posterior de um arquivo para validar alterações do agente.
  • A lógica programática dos plugins é superior às dicas textuais em arquivos de configuração para evitar commits ou deploys indesejados.

Diferente de instruções em Markdown que o agente pode ignorar, os hooks de ferramenta permitem uma intervenção direta no fluxo de execução. Se um agente tenta usar uma função obsoleta como generateObject em uma versão do SDK que exige generateText, o plugin detecta a tentativa no momento da edição. Isso transfere o fardo do teste e validação para o autor do plugin, permitindo que o usuário final foque na lógica de negócio.

Interatividade e Customização de Prompts

  • O hook user prompt submit permite rodar expressões regulares contra a entrada do usuário em tempo real.
  • É possível criar linguagens de comando personalizadas utilizando prefixos como o cifrão para disparar scripts bash.
  • O encerramento da sessão (session end) possibilita a limpeza de arquivos temporários e auditoria final de progresso.

Este nível de integração permite que o plugin antecipe necessidades baseadas em palavras-chave específicas, como carregar habilidades de 'Cron' ao detectar o termo 'agendamento'. O desenvolvedor pode automatizar tarefas repetitivas, como commits, disparando scripts externos diretamente do prompt, sem que o agente precise gastar tokens processando a tarefa. No fim da sessão, acionado pelo comando de saída, o sistema pode avaliar se as mudanças realizadas representam progresso real ou devem ser descartadas.

Demonstração Técnica: Haiku vs. Opus

  • O modelo Haiku (mais barato) com plugin demonstra maior precisão técnica que o Opus (mais caro) sem plugin.
  • O plugin força o uso de modelos de IA modernos no gateway, evitando que o agente sugira modelos obsoletos como o GPT-4 original.
  • A gestão de plugins permite ativar ou desativar funcionalidades agressivas de plataforma via comando slash plugin.

Através de uma comparação lado a lado, observa-se que o plugin injeta conhecimento suficiente para que modelos menores superem modelos maiores em tarefas de nicho. O teste prático mostrou o agente corrigindo a si mesmo para a versão v6 do SDK após a intervenção do plugin. A discussão final aborda a etiqueta dos plugins, sugerindo que, embora sejam agressivos na promoção de frameworks, eles são ferramentas essenciais para a migração e adoção de novas tecnologias.

Community Posts

View all posts