- Add hardware-banner.jpg, launcher-webui.jpg, launcher-tui.jpg (lost in previous force push) - Add io.LimitReader (1MB) to BaiduSearchProvider response body read - Add no-results fallback and "Results for: ... (via Baidu Search)" header - Add api_keys field to Brave and Perplexity tables in fr/ja/pt-br/vi tools_configuration.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
17 KiB
🔧 Configuração de Ferramentas
Voltar ao README
A configuração de ferramentas do PicoClaw está localizada no campo tools do config.json.
Estrutura de diretórios
{
"tools": {
"web": {
...
},
"mcp": {
...
},
"exec": {
...
},
"cron": {
...
},
"skills": {
...
}
}
}
Ferramentas Web
As ferramentas web são usadas para pesquisa e busca de páginas web.
Web Fetcher
Configurações gerais para busca e processamento de conteúdo de páginas web.
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | true | Habilitar a capacidade de busca de páginas web. |
fetch_limit_bytes |
int | 10485760 | Tamanho máximo do payload da página web a ser buscado, em bytes (padrão é 10MB). |
format |
string | "plaintext" | Formato de saída do conteúdo buscado. Opções: plaintext ou markdown (recomendado). |
DuckDuckGo
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | true | Habilitar pesquisa DuckDuckGo |
max_results |
int | 5 | Número máximo de resultados |
Baidu Search
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar pesquisa Baidu |
api_key |
string | - | Chave API Qianfan |
base_url |
string | https://qianfan.baidubce.com/v2/ai_search/web_search |
URL da API Baidu Search |
max_results |
int | 10 | Número máximo de resultados |
{
"tools": {
"web": {
"baidu_search": {
"enabled": true,
"api_key": "YOUR_BAIDU_QIANFAN_API_KEY",
"max_results": 10
}
}
}
}
Perplexity
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar pesquisa Perplexity |
api_key |
string | - | Chave API do Perplexity |
api_keys |
string[] | - | Várias chaves API do Perplexity para rotação (prioridade sobre api_key) |
max_results |
int | 5 | Número máximo de resultados |
Brave
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar pesquisa Brave |
api_key |
string | - | Chave API única do Brave Search |
api_keys |
string[] | - | Várias chaves API do Brave para rotação (prioridade sobre api_key) |
max_results |
int | 5 | Número máximo de resultados |
Tavily
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar pesquisa Tavily |
api_key |
string | - | Chave API do Tavily |
base_url |
string | - | URL base personalizada do Tavily |
max_results |
int | 0 | Número máximo de resultados (0 = padrão) |
SearXNG
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar pesquisa SearXNG |
base_url |
string | http://localhost:8888 |
URL da instância SearXNG |
max_results |
int | 5 | Número máximo de resultados |
GLM Search
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar GLM Search |
api_key |
string | - | Chave API GLM |
base_url |
string | https://open.bigmodel.cn/api/paas/v4/web_search |
URL da API GLM Search |
search_engine |
string | search_std |
Tipo de motor de busca |
max_results |
int | 5 | Número máximo de resultados |
Ferramenta Exec
A ferramenta exec é usada para executar comandos shell.
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | true | Habilitar a ferramenta exec |
enable_deny_patterns |
bool | true | Habilitar bloqueio padrão de comandos perigosos |
custom_deny_patterns |
array | [] | Padrões de negação personalizados (expressões regulares) |
Desabilitando a Ferramenta Exec
Para desabilitar completamente a ferramenta exec, defina enabled como false:
Via arquivo de configuração:
{
"tools": {
"exec": {
"enabled": false
}
}
}
Via variável de ambiente:
PICOCLAW_TOOLS_EXEC_ENABLED=false
Nota: Quando desabilitada, o agent não poderá executar comandos shell. Isso também afeta a capacidade da ferramenta Cron de executar comandos shell agendados.
Funcionalidade
enable_deny_patterns: Defina comofalsepara desabilitar completamente os padrões de bloqueio de comandos perigosos padrãocustom_deny_patterns: Adicione padrões regex de negação personalizados; comandos correspondentes serão bloqueados
Padrões de comandos bloqueados por padrão
Por padrão, o PicoClaw bloqueia os seguintes comandos perigosos:
- Comandos de exclusão:
rm -rf,del /f/q,rmdir /s - Operações de disco:
format,mkfs,diskpart,dd if=, escrita em/dev/sd* - Operações do sistema:
shutdown,reboot,poweroff - Substituição de comandos:
$(),${}, crases - Pipe para shell:
| sh,| bash - Escalação de privilégios:
sudo,chmod,chown - Controle de processos:
pkill,killall,kill -9 - Operações remotas:
curl | sh,wget | sh,ssh - Gerenciamento de pacotes:
apt,yum,dnf,npm install -g,pip install --user - Contêineres:
docker run,docker exec - Git:
git push,git force - Outros:
eval,source *.sh
Limitação arquitetural conhecida
O guarda exec apenas valida o comando de nível superior enviado ao PicoClaw. Ele não inspeciona recursivamente processos filhos gerados por ferramentas de build ou scripts após o início desse comando.
Exemplos de fluxos de trabalho que podem contornar o guarda de comando direto uma vez que o comando inicial é permitido:
make rungo run ./cmd/...cargo runnpm run build
Isso significa que o guarda é útil para bloquear comandos diretos obviamente perigosos, mas não é um sandbox completo para pipelines de build não revisados. Se seu modelo de ameaça inclui código não confiável no workspace, use isolamento mais forte, como contêineres, VMs ou um fluxo de aprovação em torno de comandos de build e execução.
Exemplo de configuração
{
"tools": {
"exec": {
"enable_deny_patterns": true,
"custom_deny_patterns": [
"\\brm\\s+-r\\b",
"\\bkillall\\s+python"
]
}
}
}
Ferramenta Cron
A ferramenta cron é usada para agendar tarefas periódicas.
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
exec_timeout_minutes |
int | 5 | Tempo limite de execução em minutos, 0 significa sem limite |
Ferramenta MCP
A ferramenta MCP permite a integração com servidores Model Context Protocol externos.
Descoberta de ferramentas (carregamento preguiçoso)
Ao conectar a vários servidores MCP, expor centenas de ferramentas simultaneamente pode esgotar a janela de contexto do LLM e aumentar os custos de API. O recurso Discovery resolve isso mantendo as ferramentas MCP ocultas por padrão.
Em vez de carregar todas as ferramentas, o LLM recebe uma ferramenta de pesquisa leve (usando correspondência de palavras-chave BM25 ou Regex). Quando o LLM precisa de uma capacidade específica, ele pesquisa a biblioteca oculta. As ferramentas correspondentes são então temporariamente "desbloqueadas" e injetadas no contexto por um número configurado de turnos (ttl).
Configuração global
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Habilitar integração MCP globalmente |
discovery |
object | {} |
Configuração de descoberta de ferramentas (veja abaixo) |
servers |
object | {} |
Mapa de nome do servidor para configuração do servidor |
Configuração Discovery (discovery)
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled |
bool | false | Se true, as ferramentas MCP ficam ocultas e são carregadas sob demanda via pesquisa. Se false, todas as ferramentas são carregadas |
ttl |
int | 5 | Número de turnos de conversa que uma ferramenta descoberta permanece desbloqueada |
max_search_results |
int | 5 | Número máximo de ferramentas retornadas por consulta de pesquisa |
use_bm25 |
bool | true | Habilitar a ferramenta de pesquisa por linguagem natural/palavras-chave (tool_search_tool_bm25). Aviso: consome mais recursos que a pesquisa regex |
use_regex |
bool | false | Habilitar a ferramenta de pesquisa por padrão regex (tool_search_tool_regex) |
Nota: Se
discovery.enabledfortrue, você deve habilitar pelo menos um mecanismo de pesquisa (use_bm25ouuse_regex), caso contrário a aplicação falhará ao iniciar.
Configuração por servidor
| Config | Tipo | Obrigatório | Descrição |
|---|---|---|---|
enabled |
bool | sim | Habilitar este servidor MCP |
type |
string | não | Tipo de transporte: stdio, sse, http |
command |
string | stdio | Comando executável para transporte stdio |
args |
array | não | Argumentos do comando para transporte stdio |
env |
object | não | Variáveis de ambiente para processo stdio |
env_file |
string | não | Caminho para arquivo de ambiente para processo stdio |
url |
string | sse/http | URL do endpoint para transporte sse/http |
headers |
object | não | Cabeçalhos HTTP para transporte sse/http |
Comportamento do transporte
- Se
typefor omitido, o transporte é detectado automaticamente:urlestá definido →ssecommandestá definido →stdio
httpesseambos usamurl+headersopcionais.enveenv_filesão aplicados apenas a servidoresstdio.
Exemplos de configuração
1) Servidor MCP Stdio
{
"tools": {
"mcp": {
"enabled": true,
"servers": {
"filesystem": {
"enabled": true,
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/tmp"
]
}
}
}
}
}
2) Servidor MCP remoto SSE/HTTP
{
"tools": {
"mcp": {
"enabled": true,
"servers": {
"remote-mcp": {
"enabled": true,
"type": "sse",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
}
}
3) Configuração MCP massiva com descoberta de ferramentas habilitada
Neste exemplo, o LLM verá apenas o tool_search_tool_bm25. Ele pesquisará e desbloqueará ferramentas do Github ou Postgres dinamicamente apenas quando solicitado pelo usuário.
{
"tools": {
"mcp": {
"enabled": true,
"discovery": {
"enabled": true,
"ttl": 5,
"max_search_results": 5,
"use_bm25": true,
"use_regex": false
},
"servers": {
"github": {
"enabled": true,
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_TOKEN"
}
},
"postgres": {
"enabled": true,
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://user:password@localhost/dbname"
]
},
"slack": {
"enabled": true,
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "YOUR_SLACK_BOT_TOKEN",
"SLACK_TEAM_ID": "YOUR_SLACK_TEAM_ID"
}
}
}
}
}
}
Ferramenta Skills
A ferramenta skills configura a descoberta e instalação de habilidades via registros como o ClawHub.
Registros
| Config | Tipo | Padrão | Descrição |
|---|---|---|---|
registries.clawhub.enabled |
bool | true | Habilitar registro ClawHub |
registries.clawhub.base_url |
string | https://clawhub.ai |
URL base do ClawHub |
registries.clawhub.auth_token |
string | "" |
Token Bearer opcional para limites de taxa mais altos |
registries.clawhub.search_path |
string | /api/v1/search |
Caminho da API de pesquisa |
registries.clawhub.skills_path |
string | /api/v1/skills |
Caminho da API de Skills |
registries.clawhub.download_path |
string | /api/v1/download |
Caminho da API de download |
Exemplo de configuração
{
"tools": {
"skills": {
"registries": {
"clawhub": {
"enabled": true,
"base_url": "https://clawhub.ai",
"auth_token": "",
"search_path": "/api/v1/search",
"skills_path": "/api/v1/skills",
"download_path": "/api/v1/download"
}
}
}
}
}
Variáveis de ambiente
Todas as opções de configuração podem ser substituídas via variáveis de ambiente com o formato PICOCLAW_TOOLS_<SECTION>_<KEY>:
Por exemplo:
PICOCLAW_TOOLS_WEB_BRAVE_ENABLED=truePICOCLAW_TOOLS_EXEC_ENABLED=falsePICOCLAW_TOOLS_EXEC_ENABLE_DENY_PATTERNS=falsePICOCLAW_TOOLS_CRON_EXEC_TIMEOUT_MINUTES=10PICOCLAW_TOOLS_MCP_ENABLED=true
Nota: Configuração de tipo mapa aninhado (por exemplo tools.mcp.servers.<name>.*) é configurada no config.json em vez de variáveis de ambiente.