Autodocument
Gera automaticamente documentação para repositórios de código analisando estruturas de diretórios e arquivos de código usando a API OpenRouter.
Documentação
Servidor MCP Autodocument
Um servidor MCP (Model Context Protocol) que gera automaticamente documentação para repositórios de código, analisando estruturas de diretórios e arquivos de código usando a API OpenRouter.
Recursos
- Análise Inteligente de Diretórios: Analisa recursivamente diretórios e arquivos em um repositório de código
- Integração com Git: Respeita padrões
.gitignorepara ignorar arquivos ignorados - Documentação com IA: Usa a API OpenRouter (com Claude 3.7 por padrão) para gerar documentação abrangente
- Geração de Planos de Teste: Cria automaticamente planos de teste com tipos de teste adequados, casos extremos e requisitos de mock
- Revisão de Código: Realiza revisões de código em nível de desenvolvedor sênior, focadas em segurança, boas práticas e melhorias
- Abordagem de Baixo para Cima: Começa com diretórios folha e avança para cima, criando uma hierarquia de documentação coerente
- Manipulação Inteligente de Arquivos:
- Cria arquivos
documentation.md,testplan.mdereview.mdem cada nível de diretório - Ignora diretórios de arquivo único, mas inclui seu conteúdo nas saídas dos diretórios pai
- Suporta atualização de arquivos existentes
- Cria arquivos de fallback para diretórios que excedem os limites
- Cria arquivos
- Relatório de Progresso: Fornece atualizações detalhadas de progresso para evitar timeouts em operações de longa duração
- Altamente Configurável: Personalize extensões de arquivo, limites de tamanho, modelos, prompts e muito mais
- Arquitetura Extensível: Design modular facilita a adição de mais ferramentas auto-* no futuro
Instalação
Pré-requisitos
- Node.js (v16 ou mais recente)
- Uma chave de API OpenRouter
Etapas de Instalação
# Clone the repository
git clone https://github.com/PARS-DOE/autodocument.git
cd autodocument
# Install dependencies
npm install
# Build the project
npm run build
Configuração
Configure o autodocument usando variáveis de ambiente, argumentos de linha de comando ou um arquivo de configuração MCP:
Variáveis de Ambiente
OPENROUTER_API_KEY: Sua chave de API OpenRouterOPENROUTER_MODEL: Modelo a ser usado (padrão:anthropic/claude-3-7-sonnet)MAX_FILE_SIZE_KB: Tamanho máximo de arquivo em KB (padrão: 100)MAX_FILES_PER_DIR: Número máximo de arquivos por diretório (padrão: 20)
Usando com Roo ou Cline
Roo Code e Cline são assistentes de IA que suportam o Model Context Protocol (MCP), o que permite que eles usem ferramentas externas como o autodocument.
Configuração para Roo/Cline
-
Clone e construa o repositório (siga as Etapas de Instalação acima)
-
Configure o servidor MCP:
Para Roo:
No menu de Servidores MCP, edite as Configurações MCP e adicione a configuração do autodocument usando o caminho completo para onde você clonou o repositório:
Adicione a configuração do autodocument usando o caminho completo para onde você clonou o repositório:
{ "mcpServers": { "autodocument": { "command": "node", "args": ["/path/to/autodocument/build/index.js"], "env": { "OPENROUTER_API_KEY": "your-api-key-here" }, "disabled": false, "alwaysAllow": [] } } }Para o Aplicativo de Desktop Claude:
Edite o arquivo de configuração do aplicativo de desktop Claude em:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Adicione a configuração do autodocument usando o caminho completo para onde você clonou o repositório:
{ "mcpServers": { "autodocument": { "command": "node", "args": ["/path/to/autodocument/build/index.js"], "env": { "OPENROUTER_API_KEY": "your-api-key-here" }, "disabled": false, "alwaysAllow": [] } } } - Windows:
-
Importante: Certifique-se de usar caminhos absolutos para o arquivo build/index.js no seu repositório clonado
-
Reinicie o Roo/Cline ou o aplicativo de desktop Claude
-
Use a ferramenta: Em uma conversa com Roo ou Claude, você agora pode pedir para gerar documentação ou planos de teste para o seu repositório de código:
Please generate documentation for my project at /path/to/my/projectOu para planos de teste:
Please create a test plan for my project at /path/to/my/projectOu para revisões de código:
Please review the code in my project at /path/to/my/project
Como Funciona
O servidor autodocument funciona usando uma abordagem de baixo para cima:
- Descoberta: Escaneia o diretório alvo recursivamente, respeitando as regras de
.gitignore - Processamento Inteligente de Diretórios:
- Identifica diretórios com múltiplos arquivos de código ou subdiretórios
- Ignora diretórios de arquivo único, mas inclui seu conteúdo na documentação do diretório pai
- Análise de Arquivos: Analisa arquivos de código, filtrando por extensão e tamanho
- Geração de Documentação: Para cada diretório qualificado:
- Lê arquivos de código
- Envia código para a API OpenRouter com prompts otimizados
- Cria um arquivo
documentation.md(ou atualiza um existente)
- Agregação: À medida que sobe na árvore de diretórios:
- Processa cada diretório pai
- Inclui documentação dos diretórios filhos
- Cria uma visão geral abrangente em cada nível
Arquitetura
O projeto segue uma arquitetura modular:
- Componentes Principais: Gerenciamento de configuração e implementação do servidor
- Módulo Crawler: Travessia de diretórios e descoberta de arquivos
- Módulo Analisador: Análise e filtragem de arquivos de código
- Módulo OpenRouter: Integração de IA para geração de conteúdo baseado em LLM
- Módulo de Documentação: Orquestração do processo de documentação
- Módulo de Ferramentas: Sistema extensível para diferentes ferramentas auto-* (documentação, planos de teste, etc.)
- Configuração de Prompts: Gerenciamento centralizado de prompts para fácil personalização
Exemplo de Uso
Linha de Comando
# Navigate to your cloned repository
cd path/to/cloned/autodocument
# Set your API key (or configure in environment variables)
export OPENROUTER_API_KEY=your-api-key-here
# Run documentation generation on a project
node build/index.js /path/to/your/project
Uso Programático
const { spawn } = require('child_process');
const path = require('path');
// Path to your project
const projectPath = '/path/to/your/project';
// Your OpenRouter API key
const apiKey = 'your-api-key-here';
// Create a JSON command to simulate an MCP tool call
const toolCallCommand = JSON.stringify({
jsonrpc: '2.0',
method: 'call_tool',
params: {
name: 'generate_documentation',
arguments: {
path: projectPath,
openRouterApiKey: apiKey
}
},
id: 1
});
// Start the server process - use the full path to your cloned repository
const serverProcess = spawn('node', ['/path/to/autodocument/build/index.js'], {
env: {
...process.env,
OPENROUTER_API_KEY: apiKey
}
});
// Send the tool command
serverProcess.stdin.write(toolCallCommand + '\n');
// Handle server output and errors
// ...
Personalizando Prompts
Você pode facilmente personalizar os prompts usados pelas ferramentas editando o arquivo src/prompt-config.ts. Isso permite que você:
- Ajuste o tom e o estilo do conteúdo gerado
- Adicione instruções específicas para as necessidades do seu projeto
- Modifique como o conteúdo existente é atualizado
A configuração de prompts é separada da implementação da ferramenta, facilitando a experimentação com diferentes prompts sem alterar o código.
Ferramentas Disponíveis
generate_documentation
Gera documentação abrangente para um repositório de código:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}
autotestplan
Gera planos de teste para funções e componentes em um repositório de código:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}
autoreview
Gera uma revisão de código em nível de desenvolvedor sênior para um repositório:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}
Arquivos de Saída
O servidor cria vários tipos de arquivos de saída:
documentation.md
Contém documentação abrangente do código em um diretório, incluindo:
- Propósito do código
- Principais funções e classes
- Relações entre arquivos
- Integração com componentes filhos
testplan.md
Contém planos de teste detalhados para código em um diretório, incluindo:
- Tipos de teste apropriados (unitário, integração, e2e) para cada função
- Casos extremos comuns para testar
- Requisitos de mock de dependências
- Estratégias de teste de integração
review.md
Contém feedback de revisão de código em nível de desenvolvedor sênior, incluindo:
- Problemas de segurança e vulnerabilidades
- Violações de boas práticas
- Possíveis bugs ou preocupações arquiteturais
- Oportunidades de refatoração
- Feedback prático e construtivo (não críticas de estilo)
Arquivos de Fallback
Criados quando um diretório excede os limites de tamanho ou número de arquivos:
undocumented.md- Para geração de documentaçãountested.md- Para geração de planos de testereview-skipped.md- Para geração de revisão de código
Esses arquivos contêm:
- Motivo para pular o processamento
- Lista de arquivos que foram analisados e excluídos
- Instruções sobre como corrigir (aumentar limites ou criar conteúdo manualmente)
Solução de Problemas
Problemas com Chave de API
Se você vir erros sobre chave de API inválida:
- Certifique-se de ter definido a variável de ambiente
OPENROUTER_API_KEY - Verifique se sua conta OpenRouter está ativa
- Verifique se você tem créditos suficientes para as chamadas de API
Erros de Limite de Tamanho
Se muitos diretórios forem ignorados devido aos limites de tamanho:
- Defina variáveis de ambiente para aumentar os limites:
MAX_FILE_SIZE_KBeMAX_FILES_PER_DIR - Considere documentar diretórios muito grandes manualmente
Seleção de Modelo
Se você não estiver satisfeito com a qualidade da documentação:
- Tente um modelo diferente definindo a variável de ambiente
OPENROUTER_MODEL
Licença
Licença CC0-1.0 - Este trabalho é dedicado ao domínio público sob CC0 pelo Departamento de Energia dos Estados Unidos
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
Adicionando Novas Ferramentas
A arquitetura é projetada para facilitar a adição de novas ferramentas auto-*:
- Crie uma nova classe que estenda
BaseToolno diretóriosrc/tools - Defina os prompts em
src/prompt-config.ts - Registre a ferramenta no
ToolRegistry
Veja as ferramentas existentes para exemplos de como implementar novas funcionalidades.