O que mini-coding-agent faz?
Construa um agente de codificação local com Ollama, snapshots de workspace, uso de ferramentas, aprovações e memória persistente para codificação automatizada mais segura.
Visão Geral
Este agente de codificação é executado inteiramente na sua máquina, usando modelos de linguagem via Ollama. Ele foi projetado para automatizar tarefas de desenvolvimento com segurança, tirando snapshots do workspace antes de executar ações, solicitando aprovações para operações críticas e mantendo um registro persistente de contexto e decisões entre sessões.
Funcionalidades
- Uso de Ferramentas: O agente pode ler, escrever e modificar arquivos, executar comandos do terminal e interagir com o sistema de arquivos.
- Snapshots de Workspace: Antes de cada ação, o workspace é capturado em um snapshot, permitindo rollback fácil.
- Aprovações: Ações potencialmente destrutivas ou arriscadas exigem aprovação manual antes da execução.
- Memória Persistente: Decisões, contexto e preferências são armazenados em um banco de dados local para reutilização em sessões futuras.
- Design Modular: Fácil de estender com novas ferramentas e comportamentos.
Pré-requisitos
- Python 3.10+
- Ollama instalado e em execução
- Um modelo de linguagem compatível (recomendado: llama3.2, qwen2.5-coder)
Instalação
git clone https://github.com/ardathhomeless585/mini-coding-agent
cd mini-coding-agent
pip install -r requirements.txt
Uso
- Certifique-se de que o Ollama está rodando com um modelo puxado:
ollama pull llama3.2
- Configure o modelo no arquivo
config.yaml:
model: llama3.2
snapshot_dir: ./snapshots
memory_backend: sqlite
- Execute o agente:
python agent.py --task "Conserte o bug no arquivo main.py" --workspace ./meu-projeto
- O agente analisará a tarefa, usará ferramentas conforme necessário e solicitará aprovações para alterações importantes.
Estrutura do Projeto
agent.py— Ponto de entrada do agentetools/— Módulos de ferramentas (ler, escrever, executar)memory/— Backend de memória persistentesnapshots/— Diretório para armazenar snapshots do workspaceconfig.yaml— Arquivo de configuração
Exemplo de Ferramenta
# tools/file_tools.py
def read_file(path: str) -> str:
with open(path, 'r') as f:
return f.read()
def write_file(path: str, content: str) -> None:
with open(path, 'w') as f:
f.write(content)
Aprovações
O agente usa um sistema de aprovação em modo prompt:
- Para comandos de execução
- Para alterações em arquivos sensíveis (definidos no
config.yaml) - Para ações que afetam múltiplos arquivos
Memória Persistente
Memória é armazenada em um banco SQLite local. O agente pode:
- Lembrar preferências do usuário
- Reutilizar soluções anteriores
- Manter contexto entre tarefas
Personalização
Você pode adicionar novas ferramentas registrando-as em tools/__init__.py. Cada ferramenta deve ser uma função assíncrona que recebe um dicionário de argumentos e retorna uma string.
Contribuição
Contribuições são bem-vindas! Por favor, abra uma issue ou pull request.
Licença
MIT