docs/guides/configuration.pt-br.md
Voltar ao README
Arquivo de configuração: ~/.picoclaw/config.json
Você pode substituir os caminhos padrão usando variáveis de ambiente. Isso é útil para instalações portáteis, implantações em contêineres ou execução do picoclaw como serviço do sistema. Essas variáveis são independentes e controlam caminhos diferentes.
| Variável | Descrição | Caminho Padrão |
|---|---|---|
PICOCLAW_CONFIG | Substitui o caminho para o arquivo de configuração. Isso indica diretamente ao picoclaw qual config.json carregar, ignorando todos os outros locais. | ~/.picoclaw/config.json |
PICOCLAW_HOME | Substitui o diretório raiz para dados do picoclaw. Isso altera o local padrão do workspace e outros diretórios de dados. | ~/.picoclaw |
Exemplos:
# Executar picoclaw usando um arquivo de configuração específico
# O caminho do workspace será lido de dentro desse arquivo de configuração
PICOCLAW_CONFIG=/etc/picoclaw/production.json picoclaw gateway
# Executar picoclaw com todos os dados armazenados em /opt/picoclaw
# A configuração será carregada do padrão ~/.picoclaw/config.json
# O workspace será criado em /opt/picoclaw/workspace
PICOCLAW_HOME=/opt/picoclaw picoclaw agent
# Usar ambos para uma configuração totalmente personalizada
PICOCLAW_HOME=/srv/picoclaw PICOCLAW_CONFIG=/srv/picoclaw/main.json picoclaw gateway
gateway.log_level controla a verbosidade dos logs do Gateway, configurável em config.json:
{
"gateway": {
"log_level": "warn"
}
}
O valor padrão é warn. Valores suportados: debug, info, warn, error, fatal.
Também pode ser substituído pela variável de ambiente: PICOCLAW_LOG_LEVEL=info
O PicoClaw armazena dados no seu workspace configurado (padrão: ~/.picoclaw/workspace):
~/.picoclaw/workspace/
├── sessions/ # Sessões de conversa e histórico
├── memory/ # Memória de longo prazo (MEMORY.md)
├── state/ # Estado persistente (último canal, etc.)
├── cron/ # Banco de dados de tarefas agendadas
├── skills/ # Skills personalizadas
├── AGENT.md # Guia de comportamento do agente
├── HEARTBEAT.md # Prompts de tarefas periódicas (verificados a cada 30 min)
├── IDENTITY.md # Identidade do agente
├── SOUL.md # Alma do agente
└── USER.md # Preferências do usuário
Nota: Alterações em
AGENT.md,SOUL.md,USER.mdememory/MEMORY.mdsão detectadas automaticamente em tempo de execução via rastreamento de data de modificação (mtime). Não é necessário reiniciar o gateway após editar esses arquivos — o agente carrega o novo conteúdo na próxima requisição.
Por padrão, as skills são carregadas de:
~/.picoclaw/workspace/skills (workspace)~/.picoclaw/skills (global)<caminho-embutido-na-compilação>/skills (embutido)Para configurações avançadas/de teste, você pode substituir o diretório raiz de skills builtin com:
export PICOCLAW_BUILTIN_SKILLS=/path/to/skills
Depois que as skills estiverem instaladas, voce pode inspeciona-las e aplica-las diretamente de um canal de chat:
/list skills mostra os nomes das skills instaladas visiveis para o agente atual./use <skill> <message> força uma skill para uma unica requisicao./use <skill> prepara essa skill para a sua proxima mensagem no mesmo chat./use clear cancela uma substituicao pendente criada por /use <skill>./btw <question> faz uma pergunta lateral imediata sem alterar o historico atual da sessao. /btw e tratado como uma consulta direta sem ferramentas e nao entra no fluxo normal de execucao de ferramentas.Exemplos:
/list skills
/use git explique como fazer squash dos ultimos 3 commits
/btw me relembre o que ja decidimos sobre o plano de deploy
/use italiapersonalfinance
dammi le ultime news
pkg/agent/loop.go via commands.Executor./start, /help, /show, /list, /use e /btw./foo) passa para o processamento normal do LLM./show no WhatsApp) retorna um erro explícito ao usuário e interrompe o processamento.O PicoClaw é executado em um ambiente sandbox por padrão. O agente só pode acessar arquivos e executar comandos dentro do workspace configurado.
{
"agents": {
"defaults": {
"workspace": "~/.picoclaw/workspace",
"restrict_to_workspace": true
}
}
}
| Opção | Padrão | Descrição |
|---|---|---|
workspace | ~/.picoclaw/workspace | Diretório de trabalho do agente |
restrict_to_workspace | true | Restringir acesso a arquivos/comandos ao workspace |
Quando restrict_to_workspace: true, as seguintes ferramentas são isoladas:
| Ferramenta | Função | Restrição |
|---|---|---|
read_file | Ler arquivos | Apenas arquivos dentro do workspace |
write_file | Escrever arquivos | Apenas arquivos dentro do workspace |
list_dir | Listar diretórios | Apenas diretórios dentro do workspace |
edit_file | Editar arquivos | Apenas arquivos dentro do workspace |
append_file | Anexar a arquivos | Apenas arquivos dentro do workspace |
exec | Executar comandos | Caminhos de comando devem estar dentro do workspace |
Mesmo com restrict_to_workspace: false, a ferramenta exec bloqueia estes comandos perigosos:
rm -rf, del /f, rmdir /s — Exclusão em massaformat, mkfs, diskpart — Formatação de discodd if= — Imagem de disco/dev/sd[a-z] — Escritas diretas em discoshutdown, reboot, poweroff — Desligamento do sistema:(){ :|:& };:| Config Key | Type | Default | Description |
|---|---|---|---|
tools.allow_read_paths | string[] | [] | Additional paths allowed for reading outside workspace |
tools.allow_write_paths | string[] | [] | Additional paths allowed for writing outside workspace |
| Config Key | Type | Default | Description |
|---|---|---|---|
tools.exec.allow_remote | bool | false | Allow exec tool from remote channels (Telegram/Discord etc.) |
tools.exec.enable_deny_patterns | bool | true | Enable dangerous command interception |
tools.exec.custom_deny_patterns | string[] | [] | Custom regex patterns to block |
tools.exec.custom_allow_patterns | string[] | [] | Custom regex patterns to allow |
Nota de Segurança: A proteção contra symlinks é habilitada por padrão — todos os caminhos de arquivo são resolvidos através de
filepath.EvalSymlinksantes da correspondência com a whitelist, prevenindo ataques de escape via symlink.
O guard de segurança do exec inspeciona apenas a linha de comando que o PicoClaw executa diretamente. Ele não inspeciona recursivamente processos filhos gerados por ferramentas de desenvolvimento permitidas como make, go run, cargo, npm run ou scripts de build personalizados.
Isso significa que um comando de nível superior ainda pode compilar ou executar outros binários após passar pela verificação inicial do guard. Na prática, trate scripts de build, Makefiles, scripts de pacotes e binários gerados como código executável que precisa do mesmo nível de revisão que um comando shell direto.
Para ambientes de maior risco:
[ERROR] tool: Tool execution failed
{tool=exec, error=Command blocked by safety guard (path outside working dir)}
[ERROR] tool: Tool execution failed
{tool=exec, error=Command blocked by safety guard (dangerous pattern detected)}
Se você precisar que o agente acesse caminhos fora do workspace:
Método 1: Arquivo de configuração
{
"agents": {
"defaults": {
"restrict_to_workspace": false
}
}
}
Método 2: Variável de ambiente
export PICOCLAW_AGENTS_DEFAULTS_RESTRICT_TO_WORKSPACE=false
⚠️ Aviso: Desabilitar esta restrição permite que o agente acesse qualquer caminho no seu sistema. Use com cautela apenas em ambientes controlados.
A configuração restrict_to_workspace se aplica consistentemente em todos os caminhos de execução:
| Caminho de Execução | Limite de Segurança |
|---|---|
| Main Agent | restrict_to_workspace ✅ |
| Subagent / Spawn | Herda a mesma restrição ✅ |
| Heartbeat tasks | Herda a mesma restrição ✅ |
Todos os caminhos compartilham a mesma restrição de workspace — não há como contornar o limite de segurança através de subagentes ou tarefas agendadas.
O PicoClaw pode executar tarefas periódicas automaticamente. Crie um arquivo HEARTBEAT.md no seu workspace:
# Tarefas Periódicas
- Verificar meu e-mail para mensagens importantes
- Revisar meu calendário para eventos próximos
- Verificar a previsão do tempo
O agente lerá este arquivo a cada 30 minutos (configurável) e executará quaisquer tarefas usando as ferramentas disponíveis.
Para tarefas de longa duração (busca na web, chamadas de API), use a ferramenta spawn para criar um subagente:
# Tarefas Periódicas
## Tarefas Rápidas (responder diretamente)
- Informar a hora atual
## Tarefas Longas (usar spawn para assíncrono)
- Pesquisar notícias de IA na web e resumir
- Verificar e-mails e reportar mensagens importantes
Comportamentos principais:
| Funcionalidade | Descrição |
|---|---|
| spawn | Cria subagente assíncrono, não bloqueia o heartbeat |
| Contexto independente | Subagente tem seu próprio contexto, sem histórico de sessão |
| message tool | Subagente comunica diretamente com o usuário via message tool |
| Não-bloqueante | Após o spawn, o heartbeat continua para a próxima tarefa |
Heartbeat disparado
↓
Agent lê HEARTBEAT.md
↓
Tarefa longa: spawn subagente
↓ ↓
Continua próxima tarefa Subagente trabalha independentemente
↓ ↓
Todas tarefas concluídas Subagente usa ferramenta "message"
↓ ↓
Responde HEARTBEAT_OK Usuário recebe resultado diretamente
Configuração:
{
"heartbeat": {
"enabled": true,
"interval": 30
}
}
| Opção | Padrão | Descrição |
|---|---|---|
enabled | true | Ativar/desativar heartbeat |
interval | 30 | Intervalo em minutos (mínimo: 5) |
Variáveis de ambiente:
PICOCLAW_HEARTBEAT_ENABLED=false para desativarPICOCLAW_HEARTBEAT_INTERVAL=60 para alterar o intervalo[!NOTE] O Groq fornece transcrição de voz gratuita via Whisper. Se configurado, mensagens de áudio de qualquer canal serão automaticamente transcritas no nível do agente.
| Provider | Finalidade | Obter API Key |
|---|---|---|
gemini | LLM (Gemini direto) | aistudio.google.com |
zhipu | LLM (Zhipu direto) | bigmodel.cn |
volcengine | LLM (Volcengine direto) | volcengine.com |
openrouter | LLM (recomendado, acesso a todos modelos) | openrouter.ai |
anthropic | LLM (Claude direto) | console.anthropic.com |
openai | LLM (GPT direto) | platform.openai.com |
deepseek | LLM (DeepSeek direto) | platform.deepseek.com |
qwen | LLM (Qwen direto) | dashscope.console.aliyun.com |
groq | LLM + Transcrição de voz (Whisper) | console.groq.com |
cerebras | LLM (Cerebras direto) | cerebras.ai |
vivgrid | LLM (Vivgrid direto) | vivgrid.com |
Novidade: PicoClaw agora usa uma abordagem centrada no modelo. Basta especificar o formato
vendor/model(ex.:zhipu/glm-4.7) para adicionar novos providers — sem alterações de código!
| Vendor | Prefixo model | API Base padrão | Protocolo | API Key |
|---|---|---|---|---|
| OpenAI | openai/ | https://api.openai.com/v1 | OpenAI | Obter |
| Anthropic | anthropic/ | https://api.anthropic.com/v1 | Anthropic | Obter |
| 智谱 AI (GLM) | zhipu/ | https://open.bigmodel.cn/api/paas/v4 | OpenAI | Obter |
| DeepSeek | deepseek/ | https://api.deepseek.com/v1 | OpenAI | Obter |
| Google Gemini | gemini/ | https://generativelanguage.googleapis.com/v1beta | Gemini | Obter |
| Groq | groq/ | https://api.groq.com/openai/v1 | OpenAI | Obter |
| 通义千问 (Qwen) | qwen/ | https://dashscope.aliyuncs.com/compatible-mode/v1 | OpenAI | Obter |
| Ollama | ollama/ | http://localhost:11434/v1 | OpenAI | Local (sem chave) |
| OpenRouter | openrouter/ | https://openrouter.ai/api/v1 | OpenAI | Obter |
| VolcEngine (Doubao) | volcengine/ | https://ark.cn-beijing.volces.com/api/v3 | OpenAI | Obter |
| Antigravity | antigravity/ | Google Cloud | Custom | Somente OAuth |
Configure múltiplos endpoints para o mesmo nome de modelo — PicoClaw fará round-robin automaticamente:
{
"model_list": [
{ "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api1.example.com/v1", "api_keys": ["sk-key1"] },
{ "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api2.example.com/v1", "api_keys": ["sk-key2"] }
]
}
providersA configuração antiga providers está depreciada e foi removida no V2. Configs V0/V1 existentes são auto-migradas. Veja docs/migration/model-list-migration.md.
PicoClaw roteia providers por família de protocolo:
models/*:generateContent e models/*:streamGenerateContent.Isso mantém o runtime leve enquanto torna novos backends compatíveis com OpenAI basicamente uma operação de configuração (api_base + api_keys).
PicoClaw suporta tarefas agendadas via ferramenta cron.
{
"tools": {
"cron": {
"enabled": true,
"exec_timeout_minutes": 5
}
}
}
As tarefas agendadas persistem após reinicializações em ~/.picoclaw/workspace/cron/.
| Tópico | Descrição |
|---|---|
| Sistema de Hooks | Hooks orientados a eventos: observadores, interceptores, hooks de aprovação |
| Steering | Injetar mensagens em um loop de agente em execução |
| SubTurn | Coordenação de subagentes, controle de concorrência, ciclo de vida |
| Gerenciamento de Contexto | Detecção de limites de contexto, compressão |