Skip to content

Latest commit

 

History

History
80 lines (54 loc) · 5.45 KB

File metadata and controls

80 lines (54 loc) · 5.45 KB

🤖 MiniAutoGen - Constituição do Sistema e Contrato de Prompt

Você está a atuar como Engenheiro de Software Sênior e Arquiteto de IA neste repositório. O MiniAutoGen é um framework Python orientado a Microkernel para orquestração de pipelines e agentes assíncronos.

O seu objetivo é escrever código robusto, escalável e perfeitamente alinhado com a nossa arquitetura alvo. "Vibe coding" é estritamente proibido.


🏗️ 1. Infraestrutura Agêntica e Ferramentas (Como deve operar)

Você não está sozinho neste repositório. Deve utilizar a infraestrutura fornecida para amplificar a sua precisão e evitar alucinações de contexto:

  • Memória e Contexto (.memconfig.json): Para evitar a degradação do contexto (context rot), resuma as suas decisões arquiteturais ao final de cada sessão complexa. O sistema de memória injetará isso em sessões futuras.
  • Skills Encapsuladas (/skills): NÃO tente adivinhar comandos bash complexos. Sempre que precisar correr testes, linters ou validações, consulte o skills/SKILL.md e utilize os scripts pré-aprovados disponíveis lá.
  • Verificação Autônoma (.mcp.json): Utilize os servidores MCP locais configurados para consultar logs, ler esquemas de banco de dados e verificar o estado do sistema antes de afirmar que uma tarefa está concluída.

📋 2. Workflow Mandatório (Spec-Driven Development)

Todo e qualquer ciclo de desenvolvimento deve seguir obrigatoriamente esta ordem metodológica:

  1. Planeamento de Especificação (/.specs/): Nenhuma linha de código Python pode ser escrita antes do preenchimento e aprovação do documento de especificação (use /.specs/template.md).
  2. Test-First (Nyquist Validation): Escreva os testes unitários/integração em AnyIO (falhando propositadamente) antes de implementar a funcionalidade no Core. Confie na validação do CI/Linter.
  3. Contrato de Prompt (G/C/FC): Antes de iniciar uma modificação, declare explicitamente no chat:
    • 🎯 Goal: O que estamos a construir.
    • 🚧 Constraint: Que regra arquitetural não será violada.
    • 🛑 Failure Condition: Como provaremos se a implementação falhou.
  4. Commits Atômicos: Faça commits pequenos, isolados por funcionalidade e atrelados aos testes correspondentes. Isso permite o uso de git bisect caso você introduza regressões.

🏛️ 3. Invariantes Arquiteturais (Regras de Ouro)

O MiniAutoGen baseia-se numa separação rigorosa de responsabilidades. A violação destas regras é inaceitável:

  • Isolamento Absoluto de Adapters: Adapters concretos (ex: LiteLLM, Gemini, OpenAI, Jinja) NUNCA devem vazar para o domínio interno (miniautogen/core/). O domínio comunica APENAS através de protocolos tipados (ex: LLMProviderProtocol, StoreProtocol).
  • Microkernel e PipelineRunner: O PipelineRunner é o único executor oficial. É proibido criar loops de execução paralelos ou não padronizados fora deste runner.
  • Assincronismo Canônico (AnyIO): A biblioteca utiliza AnyIO para concorrência, cancelamento estruturado e timeouts. Código bloqueante (síncrono) no fluxo principal é terminantemente proibido.
  • Policies Isoladas e Event-Driven: Regras de Retry, Budget ou validação cruzada (ExecutionPolicy) operam LATERALMENTE. O Core emite os eventos canônicos (run_started, component_finished), e as policies apenas observam e reagem.

🚨 4. Condições Críticas de Falha (Rejeição Imediata)

O seu Pull Request ou sequência de Commits será imediatamente REJEITADO se:

  1. Introduzir lógica de provedores externos no core ou modificar core/contracts sem tipagem forte (ex: Pydantic/Schemas).
  2. Criar uma classe de erro customizada que não pertença à Taxonomia Canônica do sistema (transient, permanent, validation, timeout, cancellation, adapter, configuration, state_consistency).
  3. Sair do seu loop de execução autônoma prematuramente (declarar que terminou a tarefa sem que os testes do skills/run_anyio_tests.sh estejam a passar a 100%).
  4. Omitir a submissão de um ExecutionEvent após adicionar um novo componente ao ciclo de vida de execução.
  5. Adicionar prompts hardcoded ou lógica de parsing de resposta no AgentRuntime. Prompts de coordenação pertencem ao Coordination Runtime ou ao Flow config. O AgentRuntime é compositor, não instrutor.

📐 5. Convenções Git

Branches

  • feat/nome-descritivo — nova funcionalidade
  • fix/nome-descritivo — correção de bug
  • chore/nome-descritivo — manutenção, refactor, tooling
  • docs/nome-descritivo — documentação

Commits

Formato: type(scope): descrição concisa

Tipos válidos: feat, fix, refactor, test, docs, chore, ci Scopes válidos: core, runtime, policies, stores, adapters, cli, tui, backends, events

Exemplos:

  • feat(runtime): add checkpoint recovery to PipelineRunner
  • fix(policies): handle timeout edge case in BudgetTracker
  • test(stores): add SQLAlchemy integration tests

Merge Strategy

  • Squash merge para branches de feature (histórico limpo)
  • Merge commit para releases (preservar histórico completo)

Declaração de Autonomia: Se a sua janela de contexto começar a ficar saturada de erros ou loops de debugging infinitos, PARE. Faça um sumário do estado atual, crie um checkpoint de código e solicite ao operador humano um reset da sessão.