Trabalhando com Skills, Hooks, Agents e Commands no Claude Code/Droid/Opencode
Introdução e Abertura
- Boa noite a todos, aguardando a chegada do público.
- Início da transmissão com 64 participantes presentes.
- Apresentação de um servidor e impressora 3D.
Apresentação dos Participantes
- Jeff se apresenta como City da Lerian, com 13 anos de experiência na área.
- Fred Amaral, CEO da Lerian, fala sobre sua função multifuncional na empresa.
- Discussão sobre a importância das perguntas durante o webinar.
História e Captação de Recursos
- Fred menciona dois processos de captação realizados pela empresa.
- Reflexão sobre resistência à inteligência artificial no desenvolvimento.
- Importância do capital para construir projetos inovadores.
Mudanças no Cenário de Investimentos
- Descrição do processo de captação com diversos fundos internacionais.
- Observações sobre mudanças nas perguntas feitas por investidores em potencial.
- Necessidade de adaptação ao novo cenário econômico e tecnológico.
Nível de Produtividade e Expectativas do Mercado
- Discussão sobre níveis de throughput de commits, PRs e resolução de problemas.
- Importância do tempo no desenvolvimento, especialmente em junho e julho de 2024.
- Referência a startups pequenas alcançando marcos financeiros significativos.
Interpretação das Expectativas do Mercado
- Necessidade de entender as expectativas dos investidores institucionais.
- A interpretação pessoal sobre o baseline da produtividade no desenvolvimento tecnológico.
- Mudanças esperadas na exigência de produtividade para desenvolvedores.
Aprendizado e Ferramentas
- Evolução nas métricas de produtividade ao longo do tempo.
- Importância do conhecimento adquirido para utilizar ferramentas eficazmente.
- Objetivo de entregar produtos melhores e mais rápidos aos clientes.
Experiência com Inteligência Artificial
- Discussão sobre a experiência prática com IA no desenvolvimento.
- Sensibilidade em relação à qualidade do código gerado por IA.
- Ceticismo inicial sobre a eficácia da IA em gerar código assertivo.
Desafios na Implementação da IA
- Crítica às métricas tradicionais que não refletem qualidade real do código.
- Necessidade de garantir padrões de qualidade ao usar ferramentas baseadas em IA.
- Debate sobre como equilibrar uso da IA com manutenção da qualidade do software.
Desenvolvimento Seguro e Escalável
- A importância de um desenvolvimento seguro e de qualidade para atender às expectativas dos investidores.
- Desafios enfrentados com códigos gerados por inteligência artificial, necessitando de ajustes pela equipe técnica.
- Evolução das ferramentas que permitiram alcançar um padrão adequado de desenvolvimento.
Uso de Agentes e Especializações
- Implementação de agentes especializados em serviços financeiros para lidar com complexidades como risco.
- Aprendizado contínuo sobre a utilização eficaz da IA na criação de soluções.
- Introdução da skill como uma virada chave no desenvolvimento, permitindo a criação de personas reutilizáveis.
Validação do Código Gerado
- Quase 75% do código gerado atualmente é validado pela equipe técnica da Lerian.
- Importância da validação contínua e ajuste dos outputs gerados pela IA.
- Discussão sobre o que a IA não deve fazer, incluindo técnicas para melhorar resultados.
Camadas do Desenvolvimento
- Necessidade de empatia ao entender as dificuldades enfrentadas na criação de software determinístico.
- Início da explicação sobre as camadas até chegar ao usuário final no processo de desenvolvimento.
- Relevância do treinamento em LLM (Modelos Linguísticos Grandes), injetando dados em máquinas.
Treinamento e Qualidade dos Modelos
- Diferenças nos processos de treinamento entre grandes empresas que desenvolvem LLM, como Google e OpenAI.
- Importância do "system prompt" na qualidade dos modelos treinados para nichos específicos.
- Análise das características dos modelos LLM conforme suas aplicações específicas.
Diferenças entre Provedores de LLM
- A OpenAI é mais fechada em comparação à Anthropic, que é mais aberta sobre system prompts.
- Provedores de LLM utilizam uma camada de API com um system prompt injetado para acesso aos modelos.
- No final do ano passado, houve discussões sobre o uso de "alma" nos prompts da Anthropic.
Comportamento dos Modelos
- Modelos da Anthropic têm um "system prompt" que influencia seu comportamento e interação com usuários.
- O GPT tende a ser mais seco nas respostas, enquanto outros modelos têm linguagens diferentes.
- A importância do treinamento e dos system prompts é crucial para a diferenciação entre os modelos.
Ferramentas e Ambientes
- Para operar efetivamente, uma LLM precisa utilizar ferramentas disponíveis no ambiente do usuário.
- Exemplos de ferramentas incluem LS, GRAP e TLDR, que ajudam na manipulação de dados.
- Ferramentas também podem buscar informações na internet através de web fetchers.
Integração de Ferramentas
- É importante informar à LLM sobre as ferramentas disponíveis no ambiente para melhor desempenho.
- O uso de ferramentas como RIP Grap pode melhorar a análise estática em ambientes específicos.
- Acesso a MCP (Multi Contextual Processing) pode expandir as capacidades da LLM.
Desenvolvimento e Uso de CLI
- Foi desenvolvido um conjunto de CLIs para auxiliar agentes em revisões de código.
- Code Rabbit é uma ferramenta escolhida por sua eficácia em análises comparadas aos agentes humanos.
- O volume crescente de código torna essencial o uso dessas ferramentas baseadas em AI.
Análise de Code Rabbit e Ferramentas
- Discussão sobre a análise estática em agentes e a construção de um pacote para melhorar a performance.
- Importância da camada de "hardness" no desenvolvimento de código, permitindo orquestração de modelos.
- A camada "harness" é crucial para manipular LLMs e orquestrar diferentes modelos.
Camadas e Orquestração
- O cloud code é agnóstico em relação às LLMs, permitindo o uso flexível de diferentes modelos.
- A qualidade do harness impacta na eficácia dos comandos e agentes utilizados.
- Cada desenvolvedor tem preferências por diferentes ferramentas, como Jet Brains ou Visual Studio.
Padrões em Harnesses
- Os cinco principais harnesses incluem cloud code, codex, droid, open code e amp.
- Todos esses harnesses suportam quatro tipos principais de plugins para melhor manipulação das LLMs.
- As ferramentas (tools), skills, agents e hooks trabalham juntas nos harnesses.
Ambiente e Ferramentas
- Os harnesses não apenas entregam ambientes, mas também possuem ferramentas específicas que variam conforme as preferências dos usuários.
- O ambiente local se tornou uma ferramenta bash padrão para interação com LLM.
- Exemplos práticos mostram como diferentes ferramentas podem ser utilizadas dentro dos harnesses.
Open Source e Desenvolvimento
- O Open Code permite acesso ao código-fonte, facilitando melhorias nas skills desenvolvidas.
- Diversas ferramentas estão disponíveis no GitHub para personalização das experiências com os harnesses.
- A entrega do ambiente adequado é essencial para o funcionamento eficaz das LLM.
Introdução ao Ring
- O Ring é uma ferramenta que permite criar e utilizar skills personalizadas, facilitando o desenvolvimento.
- A primeira skill criada foi baseada em uma open source de brainstorming, adaptada para um projeto específico.
- O conceito de "ring" é inspirado em nomes do Senhor dos Anéis, representando um conjunto de ferramentas e habilidades.
Desenvolvimento do Ring
- O Ring começou a ser desenvolvido após discussões sobre a eficácia da skill de brainstorming.
- É uma combinação de skills, tools e agentes que padronizam o comportamento das LLM durante o desenvolvimento.
- O objetivo é garantir que as LLM se comportem adequadamente no contexto de desenvolvimento de código.
Funcionalidades do Midas e Agentes
- Midas possui suas próprias skills específicas, sendo um produto principal para powerbanking.
- O Ring é agnóstico e pode ser utilizado em diversos projetos sem estar restrito à Lerian.
- Padrões estabelecidos pela Lerian estão disponíveis para uso por outros desenvolvedores.
Geração de Documentos e TDD
- O Ring inclui agentes para geração automática de documentos contábeis e outros tipos relevantes.
- Cada skill tem metadados específicos que podem ser personalizados conforme necessário.
- A implementação do TDD (Test Driven Development) é discutida como parte fundamental do processo.
Implementação Prática do TDD
- Um plugin dentro do Ring facilita a aplicação prática do TDD no desenvolvimento.
- No TDD, primeiro escreve-se um teste que falha antes de implementar a funcionalidade desejada.
- A abordagem garante alta cobertura de testes desde o início do desenvolvimento.
Desenvolvimento de Skills e Orquestração
Importância da Skill
- A skill é essencial para orquestrar o desenvolvimento manual, evitando trabalho excessivo.
- A skill garante um ciclo de desenvolvimento que inclui TDD, QA e SRE.
- Responsabilidade da skill é assegurar a execução correta dos passos do processo.
Validação e Compliance
- O código deve passar por validações rigorosas antes de ser aceito no ciclo.
- Se os testes não atenderem aos critérios, o desenvolvedor permanece no ciclo até a conformidade.
- Validação humana final é necessária para garantir a implementação correta.
Melhoria Contínua do Prompt
- O prompt da skill está em constante evolução para melhorar resultados.
- Exemplo prático: arquitetura disponível em githack.com/larianestudio/ring.
- A skill se baseia em um front-end que orienta a LLM durante o desenvolvimento.
Estrutura e Triggers
- Nome e descrição são cruciais na criação de uma skill eficaz.
- Triggers ajudam a iniciar processos como desenvolvimento ou correção de bugs automaticamente.
- A LLM segue as instruções da skill conforme os triggers definidos.
Racionalização e TDD
- A habilidade de seguir regras sem racionalizar é fundamental para o sucesso do TDD.
- É importante que a LLM siga estritamente as diretrizes estabelecidas pela skill.
- Analogias com práticas reais ajudam a reforçar a necessidade do TDD antes do desenvolvimento.
Práticas de Desenvolvimento e TDD
Implementação de Práticas
- A prática de pular etapas é comum, mas deve ser evitada em favor do TDD.
- Criação de uma tabela de antirracionalização para evitar decisões impulsivas durante o desenvolvimento.
- Importância da tabela para garantir que atividades não sejam puladas.
Construção da Tabela de Antirracionalização
- A tabela foi desenvolvida a partir da experiência com DDD e TDD.
- Adaptação de códigos existentes para criar uma skill que teste a aplicação do TDD.
- Uso de hooks para identificar problemas comuns, como conectividade SSL.
Testando Skills com Subagentes
- Processo automatizado para verificar se as skills seguem os padrões estabelecidos.
- O subagente inicial não carrega a skill se não houver testes escritos.
- Diálogo humorístico sobre prazos e falta de testes no código entregue.
Racionalizações e Melhorias
- O segundo subagente testa se a skill está sendo seguida após carregar corretamente.
- Racionalizações são apresentadas quando há pressão por resultados imediatos.
- O terceiro subagente injeta racionalizações na skill testada até torná-la robusta.
Conclusão das Práticas
- Uso contínuo do processo de teste com subagentes para garantir qualidade nas skills desenvolvidas.
Conexão com Banco de Dados
- A interface de conexão com o banco de dados deve atender SSL e estar configurada corretamente.
- Importância de testar skills e a flexibilidade na escrita dos agents, podendo usar YAML ou texto corrido.
- Todos os cinco handlers têm pelo menos name e type; é necessário ler a documentação para organizar os fronts.
Uso do Cloud Code
- O cloud code permite o uso de um agent que chama subagents em contextos diferentes.
- O consumo atual dos fronts no cloud code é 2900 tokens, considerado baixo em comparação a outros NCPs.
- Importância do input para agents, especialmente ao trabalhar com arquitetura e contexto.
Análise de Código com Agents
- Demonstração do agent de code review que analisa a correção do código e design patterns.
- O agent pode incluir change logs, mas não é sempre necessário seguir padrões rígidos.
- Agents podem ter output ou input; exemplo dado sobre agentes da equipe David que utilizam atividades.
Documentação e Padrões
- Documentação do cloud code menciona a possibilidade de incluir input e output esquema nos agents.
- Front deve carregar LLM com formato markdown, incluindo seções obrigatórias como padrões verificados.
- A forma como as instruções são passadas aos agents é crucial para garantir resultados desejados.
A Importância da Subjetividade no Output
- Ao enviar um prompt, a forma de resposta pode variar. É crucial incluir subjetividade.
- O output deve ser invocado apenas em situações específicas, como quando o usuário solicita "mod analysis only".
- O uso do front matter em YAML é essencial para direcionar a LLM de maneira subjetiva.
Estrutura e Padrões dos Agentes
- Um agente de desenvolvimento backend deve seguir padrões estabelecidos na equipe.
- É importante definir frameworks e pacotes que o agente pode utilizar durante o desenvolvimento.
- As tabelas de antirracionalização são incluídas para agentes, mas eles tendem a racionalizar menos.
Contexto e Racionalização nas LLMs
- A invocação de habilidades no cloud code geralmente já utiliza contexto prévio.
- LLMs da quinta geração são treinadas para otimizar o uso do contexto disponível.
- Após 40% do contexto utilizado, as LLMs aceleram a entrega das respostas.
Diferenças entre Skills e Agentes
- Habilidades devem ser chamadas com cuidado para evitar sobrecarga de contexto.
- Agentes operam com contexto zerado, reduzindo a probabilidade de racionalização excessiva.
- A escolha entre criar uma skill ou um agente depende da necessidade específica da tarefa.
Estratégias para Execução Eficiente
- Criar uma skill é preferível se a mesma atividade precisa ser executada repetidamente.
- Para agentes, é necessário passar sempre um contexto claro para execução eficaz.
Discussão sobre Skills e Agentes
- A ideia é que a skill sempre passe a mesma instrução para simplificar a execução.
- Discussão sobre a diferença entre skills e agentes, com foco em analogias de cozinha.
- Skill é comparada a uma receita, enquanto o agente é quem executa essa receita.
Exemplos Práticos de Skills e Agentes
- O agente carrega diferentes receitas (skills) para realizar tarefas específicas.
- Exemplo do AMP que não utiliza comandos, mas skills para executar ações como commits.
- Comandos são utilizados para facilitar processos repetitivos, como organizar commits.
Implementação de Comandos e Tracking
- Criação de um comando que organiza commits feitos por IA e humanos.
- O comando pergunta ao usuário se está de acordo com as mudanças antes de finalizar o commit.
- O AMP substitui comandos por skills, permitindo um uso mais minimalista.
Agentes de Code Review
- Existem cinco agentes de code review que realizam análises estáticas do código.
- Um comando específico faz o dispatch dos agentes para consolidar revisões.
Hooks e Eventos no Open Code
- Hooks permitem rastrear eventos em diferentes harnesses, variando conforme cada sistema.
- O Open Code realiza tracking extensivo de eventos, possibilitando diversas funcionalidades.
Atualizações Automáticas e Hooks
- Implementação de um hook chamado session start para comparar versões do código localmente.
- Se houver discrepância entre versões, o script clona novamente o repositório.
Atualização Automática do Ring
- O repositório para atualização automática do ring não é mais necessário, pois todos os harness atualizam automaticamente.
- É possível criar um Shell script que registra ações da LLM e as envia para análise posterior.
- Aprendizados podem ser armazenados em project rules ou arquivos para avaliação futura.
Uso de Hacking e Hooks
- Hooks são utilizados para capturar eventos e melhorar o uso de prompts na equipe.
- Telemetria pode ser implementada para monitorar a frequência e tipo de prompts enviados.
- Cuidado com plugins no cloud code, pois dados podem ser enviados inadvertidamente.
Workflow de Code Review
- Exemplo de workflow: comando
ring code reviewpermite revisar arquivos específicos ou todos os unstaged files.
- O comando invoca cinco agentes com diferentes focos, como segurança e lógica de negócios.
- Cada agente contribui para um relatório final sobre a revisão do código.
Plugins do Ring
- O ring é um plugin open source utilizado em produção, recebendo atualizações constantes.
- Inclui subplugins como Dev Team e Finops, ajudando na construção de templates regulatórios.
- Integração entre PM e dev é essencial; o ring serve como plugin padrão.
Desenvolvimento de Features
- Existem dois tipos de features: full (nove gates com perguntas detalhadas) e normal (quatro perguntas).
- A feature full envolve desenvolvimento significativo, enquanto a normal foca em ajustes menores.
Incrementos no Código Atual
- Discussão sobre o que incrementar no sistema atual, focando em uma visão funcional do produto.
- Geração de PRD e TRD para requisitos técnicos e funcionais, incluindo feature map e dependências.
- Integração com a equipe de desenvolvimento através de testes e atividades organizadas.
Responsabilidade na Construção do Produto
- Comparação entre construção de casas e desenvolvimento de software, destacando papéis essenciais como engenheiros e arquitetos.
- Importância da presença dos engenheiros na supervisão do projeto, mesmo que não estejam sempre presentes.
- A responsabilidade final recai sobre os engenheiros, enfatizando a necessidade de visibilidade nas operações.
Agradecimentos e Feedback
- Agradecimento aos participantes pela presença na discussão sobre o desenvolvimento do Ring.
- Incentivo ao feedback dos usuários para melhorias no padrão utilizado.