mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
883 lines
26 KiB
Markdown
883 lines
26 KiB
Markdown
<div align="center">
|
|
<img src="assets/logo.jpg" alt="PicoClaw" width="512">
|
|
|
|
<h1>PicoClaw: Assistente de IA Ultra-Eficiente em Go</h1>
|
|
|
|
<h3>Hardware de $10 · 10MB de RAM · Boot em 1s · 皮皮虾,我们走!</h3>
|
|
|
|
<p>
|
|
<img src="https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go&logoColor=white" alt="Go">
|
|
<img src="https://img.shields.io/badge/Arch-x86__64%2C%20ARM64%2C%20RISC--V-blue" alt="Hardware">
|
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
|
<br>
|
|
<a href="https://picoclaw.io"><img src="https://img.shields.io/badge/Website-picoclaw.io-blue?style=flat&logo=google-chrome&logoColor=white" alt="Website"></a>
|
|
<a href="https://x.com/SipeedIO"><img src="https://img.shields.io/badge/X_(Twitter)-SipeedIO-black?style=flat&logo=x&logoColor=white" alt="Twitter"></a>
|
|
</p>
|
|
|
|
[中文](README.zh.md) | [日本語](README.ja.md) | **Português** | [Tiếng Việt](README.vi.md) | [Français](README.fr.md) | [English](README.md)
|
|
</div>
|
|
|
|
---
|
|
|
|
🦐 **PicoClaw** é um assistente pessoal de IA ultra-leve inspirado no [nanobot](https://github.com/HKUDS/nanobot), reescrito do zero em **Go** por meio de um processo de "auto-inicialização" (self-bootstrapping) — onde o próprio agente de IA conduziu toda a migração de arquitetura e otimização de código.
|
|
|
|
⚡️ **Extremamente leve:** Roda em hardware de apenas **$10** com **<10MB** de RAM. Isso é 99% menos memória que o OpenClaw e 98% mais barato que um Mac mini!
|
|
|
|
<table align="center">
|
|
<tr align="center">
|
|
<td align="center" valign="top">
|
|
<p align="center">
|
|
<img src="assets/picoclaw_mem.gif" width="360" height="240">
|
|
</p>
|
|
</td>
|
|
<td align="center" valign="top">
|
|
<p align="center">
|
|
<img src="assets/licheervnano.png" width="400" height="240">
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
> [!CAUTION]
|
|
> **🚨 DECLARAÇÃO DE SEGURANÇA & CANAIS OFICIAIS**
|
|
>
|
|
> * **SEM CRIPTOMOEDAS:** O PicoClaw **NÃO** possui nenhum token/moeda oficial. Todas as alegações no `pump.fun` ou outras plataformas de negociação são **GOLPES**.
|
|
> * **DOMÍNIO OFICIAL:** O **ÚNICO** site oficial é o **[picoclaw.io](https://picoclaw.io)**, e o site da empresa é o **[sipeed.com](https://sipeed.com)**.
|
|
> * **Aviso:** Muitos domínios `.ai/.org/.com/.net/...` foram registrados por terceiros, não são nossos.
|
|
> * **Aviso:** O PicoClaw está em fase inicial de desenvolvimento e pode ter problemas de segurança de rede não resolvidos. Não implante em ambientes de produção antes da versão v1.0.
|
|
> * **Nota:** O PicoClaw recentemente fez merge de muitos PRs, o que pode resultar em maior consumo de memória (10-20MB) nas versões mais recentes. Planejamos priorizar a otimização de recursos assim que o conjunto de funcionalidades estiver estável.
|
|
|
|
|
|
## 📢 Novidades
|
|
|
|
2026-02-16 🎉 PicoClaw atingiu 12K stars em uma semana! Obrigado a todos pelo apoio! O PicoClaw está crescendo mais rápido do que jamais imaginamos. Dado o alto volume de PRs, precisamos urgentemente de maintainers da comunidade. Nossos papéis de voluntários e roadmap foram publicados oficialmente [aqui](docs/picoclaw_community_roadmap_260216.md) — estamos ansiosos para ter você a bordo!
|
|
|
|
2026-02-13 🎉 PicoClaw atingiu 5000 stars em 4 dias! Obrigado à comunidade! Estamos finalizando o **Roadmap do Projeto** e configurando o **Grupo de Desenvolvedores** para acelerar o desenvolvimento do PicoClaw.
|
|
|
|
🚀 **Chamada para Ação:** Envie suas solicitações de funcionalidades nas GitHub Discussions. Revisaremos e priorizaremos na próxima reunião semanal.
|
|
|
|
2026-02-09 🎉 PicoClaw lançado oficialmente! Construído em 1 dia para trazer Agentes de IA para hardware de $10 com <10MB de RAM. 🦐 PicoClaw, Partiu!
|
|
|
|
## ✨ Funcionalidades
|
|
|
|
🪶 **Ultra-Leve**: Consumo de memória <10MB — 99% menor que o Clawdbot para funcionalidades essenciais.
|
|
|
|
💰 **Custo Mínimo**: Eficiente o suficiente para rodar em hardware de $10 — 98% mais barato que um Mac mini.
|
|
|
|
⚡️ **Inicialização Relámpago**: Tempo de inicialização 400X mais rápido, boot em 1 segundo mesmo em CPU single-core de 0.6GHz.
|
|
|
|
🌍 **Portabilidade Real**: Um único binário auto-contido para RISC-V, ARM e x86. Um clique e já era!
|
|
|
|
🤖 **Auto-Construído por IA**: Implementação nativa em Go de forma autônoma — 95% do núcleo gerado pelo Agente com refinamento humano no loop.
|
|
|
|
| | OpenClaw | NanoBot | **PicoClaw** |
|
|
| ----------------------------- | ------------- | ------------------------ | ----------------------------------------- |
|
|
| **Linguagem** | TypeScript | Python | **Go** |
|
|
| **RAM** | >1GB | >100MB | **< 10MB** |
|
|
| **Inicialização**</br>(CPU 0.8GHz) | >500s | >30s | **<1s** |
|
|
| **Custo** | Mac Mini $599 | Maioria dos SBC Linux </br>~$50 | **Qualquer placa Linux**</br>**A partir de $10** |
|
|
|
|
<img src="assets/compare.jpg" alt="PicoClaw" width="512">
|
|
|
|
## 🦾 Demonstração
|
|
|
|
### 🛠️ Fluxos de Trabalho Padrão do Assistente
|
|
|
|
<table align="center">
|
|
<tr align="center">
|
|
<th><p align="center">🧩 Engenharia Full-Stack</p></th>
|
|
<th><p align="center">🗂️ Gerenciamento de Logs & Planejamento</p></th>
|
|
<th><p align="center">🔎 Busca Web & Aprendizado</p></th>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><p align="center"><img src="assets/picoclaw_code.gif" width="240" height="180"></p></td>
|
|
<td align="center"><p align="center"><img src="assets/picoclaw_memory.gif" width="240" height="180"></p></td>
|
|
<td align="center"><p align="center"><img src="assets/picoclaw_search.gif" width="240" height="180"></p></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">Desenvolver • Implantar • Escalar</td>
|
|
<td align="center">Agendar • Automatizar • Memorizar</td>
|
|
<td align="center">Descobrir • Analisar • Tendências</td>
|
|
</tr>
|
|
</table>
|
|
|
|
### 📱 Rode em celulares Android antigos
|
|
|
|
Dê uma segunda vida ao seu celular de dez anos atrás! Transforme-o em um assistente de IA inteligente com o PicoClaw. Início rápido:
|
|
|
|
1. **Instale o Termux** (Disponível no F-Droid ou Google Play).
|
|
2. **Execute os comandos**
|
|
|
|
```bash
|
|
# Nota: Substitua v0.1.1 pela versao mais recente da pagina de Releases
|
|
wget https://github.com/sipeed/picoclaw/releases/download/v0.1.1/picoclaw-linux-arm64
|
|
chmod +x picoclaw-linux-arm64
|
|
pkg install proot
|
|
termux-chroot ./picoclaw-linux-arm64 onboard
|
|
```
|
|
|
|
Depois siga as instruções na seção "Início Rápido" para completar a configuração!
|
|
|
|
<img src="assets/termux.jpg" alt="PicoClaw" width="512">
|
|
|
|
### 🐜 Implantação Inovadora com Baixo Consumo
|
|
|
|
O PicoClaw pode ser implantado em praticamente qualquer dispositivo Linux!
|
|
|
|
- $9.9 [LicheeRV-Nano](https://www.aliexpress.com/item/1005006519668532.html) versão E (Ethernet) ou W (WiFi6), para Assistente Doméstico Minimalista
|
|
- $30~50 [NanoKVM](https://www.aliexpress.com/item/1005007369816019.html), ou $100 [NanoKVM-Pro](https://www.aliexpress.com/item/1005010048471263.html) para Manutenção Automatizada de Servidores
|
|
- $50 [MaixCAM](https://www.aliexpress.com/item/1005008053333693.html) ou $100 [MaixCAM2](https://www.kickstarter.com/projects/zepan/maixcam2-build-your-next-gen-4k-ai-camera) para Monitoramento Inteligente
|
|
|
|
https://private-user-images.githubusercontent.com/83055338/547056448-e7b031ff-d6f5-4468-bcca-5726b6fecb5c.mp4
|
|
|
|
🌟 Mais cenários de implantação aguardam você!
|
|
|
|
## 📦 Instalação
|
|
|
|
### Instalar com binário pré-compilado
|
|
|
|
Baixe o binário para sua plataforma na página de [releases](https://github.com/sipeed/picoclaw/releases).
|
|
|
|
### Instalar a partir do código-fonte (funcionalidades mais recentes, recomendado para desenvolvimento)
|
|
|
|
```bash
|
|
git clone https://github.com/sipeed/picoclaw.git
|
|
|
|
cd picoclaw
|
|
make deps
|
|
|
|
# Build, sem necessidade de instalar
|
|
make build
|
|
|
|
# Build para multiplas plataformas
|
|
make build-all
|
|
|
|
# Build e Instalar
|
|
make install
|
|
```
|
|
|
|
## 🐳 Docker Compose
|
|
|
|
Você tambêm pode rodar o PicoClaw usando Docker Compose sem instalar nada localmente.
|
|
|
|
```bash
|
|
# 1. Clone este repositorio
|
|
git clone https://github.com/sipeed/picoclaw.git
|
|
cd picoclaw
|
|
|
|
# 2. Configure suas API keys
|
|
cp config/config.example.json config/config.json
|
|
vim config/config.json # Configure DISCORD_BOT_TOKEN, API keys, etc.
|
|
|
|
# 3. Build & Iniciar
|
|
docker compose --profile gateway up -d
|
|
|
|
# 4. Ver logs
|
|
docker compose logs -f picoclaw-gateway
|
|
|
|
# 5. Parar
|
|
docker compose --profile gateway down
|
|
```
|
|
|
|
### Modo Agente (Execução única)
|
|
|
|
```bash
|
|
# Fazer uma pergunta
|
|
docker compose run --rm picoclaw-agent -m "Quanto e 2+2?"
|
|
|
|
# Modo interativo
|
|
docker compose run --rm picoclaw-agent
|
|
```
|
|
|
|
### Rebuild
|
|
|
|
```bash
|
|
docker compose --profile gateway build --no-cache
|
|
docker compose --profile gateway up -d
|
|
```
|
|
|
|
### 🚀 Início Rápido
|
|
|
|
> [!TIP]
|
|
> Configure sua API key em `~/.picoclaw/config.json`.
|
|
> Obtenha API keys: [OpenRouter](https://openrouter.ai/keys) (LLM) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) (LLM)
|
|
> Busca web e **opcional** — obtenha a [Brave Search API](https://brave.com/search/api) gratuita (2000 consultas grátis/mês) ou use o fallback automático integrado.
|
|
|
|
**1. Inicializar**
|
|
|
|
```bash
|
|
picoclaw onboard
|
|
```
|
|
|
|
**2. Configurar** (`~/.picoclaw/config.json`)
|
|
|
|
```json
|
|
{
|
|
"agents": {
|
|
"defaults": {
|
|
"workspace": "~/.picoclaw/workspace",
|
|
"model": "glm-4.7",
|
|
"max_tokens": 8192,
|
|
"temperature": 0.7,
|
|
"max_tool_iterations": 20
|
|
}
|
|
},
|
|
"providers": {
|
|
"openrouter": {
|
|
"api_key": "xxx",
|
|
"api_base": "https://openrouter.ai/api/v1"
|
|
}
|
|
},
|
|
"tools": {
|
|
"web": {
|
|
"brave": {
|
|
"enabled": false,
|
|
"api_key": "YOUR_BRAVE_API_KEY",
|
|
"max_results": 5
|
|
},
|
|
"duckduckgo": {
|
|
"enabled": true,
|
|
"max_results": 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**3. Obter API Keys**
|
|
|
|
* **Provedor de LLM**: [OpenRouter](https://openrouter.ai/keys) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) · [Anthropic](https://console.anthropic.com) · [OpenAI](https://platform.openai.com) · [Gemini](https://aistudio.google.com/api-keys)
|
|
* **Busca Web** (opcional): [Brave Search](https://brave.com/search/api) - Plano gratuito disponível (2000 consultas/mês)
|
|
|
|
> **Nota**: Veja `config.example.json` para um modelo de configuração completo.
|
|
|
|
**4. Conversar**
|
|
|
|
```bash
|
|
picoclaw agent -m "Quanto e 2+2?"
|
|
```
|
|
|
|
Pronto! Você tem um assistente de IA funcionando em 2 minutos.
|
|
|
|
---
|
|
|
|
## 💬 Integração com Apps de Chat
|
|
|
|
Converse com seu PicoClaw via Telegram, Discord, DingTalk ou LINE.
|
|
|
|
| Canal | Nível de Configuração |
|
|
| --- | --- |
|
|
| **Telegram** | Fácil (apenas um token) |
|
|
| **Discord** | Fácil (bot token + intents) |
|
|
| **QQ** | Fácil (AppID + AppSecret) |
|
|
| **DingTalk** | Médio (credenciais do app) |
|
|
| **LINE** | Médio (credenciais + webhook URL) |
|
|
|
|
<details>
|
|
<summary><b>Telegram</b> (Recomendado)</summary>
|
|
|
|
**1. Criar o bot**
|
|
|
|
* Abra o Telegram, busque `@BotFather`
|
|
* Envie `/newbot`, siga as instruções
|
|
* Copie o token
|
|
|
|
**2. Configurar**
|
|
|
|
```json
|
|
{
|
|
"channels": {
|
|
"telegram": {
|
|
"enabled": true,
|
|
"token": "YOUR_BOT_TOKEN",
|
|
"allowFrom": ["YOUR_USER_ID"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
> Obtenha seu User ID pelo `@userinfobot` no Telegram.
|
|
|
|
**3. Executar**
|
|
|
|
```bash
|
|
picoclaw gateway
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>Discord</b></summary>
|
|
|
|
**1. Criar o bot**
|
|
|
|
* Acesse <https://discord.com/developers/applications>
|
|
* Crie um aplicativo → Bot → Add Bot
|
|
* Copie o token do bot
|
|
|
|
**2. Habilitar Intents**
|
|
|
|
* Nas configurações do Bot, habilite **MESSAGE CONTENT INTENT**
|
|
* (Opcional) Habilite **SERVER MEMBERS INTENT** se quiser usar lista de permissões baseada em dados dos membros
|
|
|
|
**3. Obter seu User ID**
|
|
|
|
* Configurações do Discord → Avançado → habilite **Modo Desenvolvedor**
|
|
* Clique com botão direito no seu avatar → **Copiar ID do Usuário**
|
|
|
|
**4. Configurar**
|
|
|
|
```json
|
|
{
|
|
"channels": {
|
|
"discord": {
|
|
"enabled": true,
|
|
"token": "YOUR_BOT_TOKEN",
|
|
"allowFrom": ["YOUR_USER_ID"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**5. Convidar o bot**
|
|
|
|
* OAuth2 → URL Generator
|
|
* Scopes: `bot`
|
|
* Bot Permissions: `Send Messages`, `Read Message History`
|
|
* Abra a URL de convite gerada e adicione o bot ao seu servidor
|
|
|
|
**6. Executar**
|
|
|
|
```bash
|
|
picoclaw gateway
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>QQ</b></summary>
|
|
|
|
**1. Criar o bot**
|
|
|
|
- Acesse a [QQ Open Platform](https://q.qq.com/#)
|
|
- Crie um aplicativo → Obtenha **AppID** e **AppSecret**
|
|
|
|
**2. Configurar**
|
|
|
|
```json
|
|
{
|
|
"channels": {
|
|
"qq": {
|
|
"enabled": true,
|
|
"app_id": "YOUR_APP_ID",
|
|
"app_secret": "YOUR_APP_SECRET",
|
|
"allow_from": []
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
> Deixe `allow_from` vazio para permitir todos os usuários, ou especifique números QQ para restringir o acesso.
|
|
|
|
**3. Executar**
|
|
|
|
```bash
|
|
picoclaw gateway
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>DingTalk</b></summary>
|
|
|
|
**1. Criar o bot**
|
|
|
|
* Acesse a [Open Platform](https://open.dingtalk.com/)
|
|
* Crie um app interno
|
|
* Copie o Client ID e Client Secret
|
|
|
|
**2. Configurar**
|
|
|
|
```json
|
|
{
|
|
"channels": {
|
|
"dingtalk": {
|
|
"enabled": true,
|
|
"client_id": "YOUR_CLIENT_ID",
|
|
"client_secret": "YOUR_CLIENT_SECRET",
|
|
"allow_from": []
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
> Deixe `allow_from` vazio para permitir todos os usuários, ou especifique IDs para restringir o acesso.
|
|
|
|
**3. Executar**
|
|
|
|
```bash
|
|
picoclaw gateway
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>LINE</b></summary>
|
|
|
|
**1. Criar uma Conta Oficial LINE**
|
|
|
|
- Acesse o [LINE Developers Console](https://developers.line.biz/)
|
|
- Crie um provider → Crie um canal Messaging API
|
|
- Copie o **Channel Secret** e o **Channel Access Token**
|
|
|
|
**2. Configurar**
|
|
|
|
```json
|
|
{
|
|
"channels": {
|
|
"line": {
|
|
"enabled": true,
|
|
"channel_secret": "YOUR_CHANNEL_SECRET",
|
|
"channel_access_token": "YOUR_CHANNEL_ACCESS_TOKEN",
|
|
"webhook_host": "0.0.0.0",
|
|
"webhook_port": 18791,
|
|
"webhook_path": "/webhook/line",
|
|
"allow_from": []
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**3. Configurar URL do Webhook**
|
|
|
|
O LINE requer HTTPS para webhooks. Use um reverse proxy ou tunnel:
|
|
|
|
```bash
|
|
# Exemplo com ngrok
|
|
ngrok http 18791
|
|
```
|
|
|
|
Em seguida, configure a Webhook URL no LINE Developers Console para `https://seu-dominio/webhook/line` e habilite **Use webhook**.
|
|
|
|
**4. Executar**
|
|
|
|
```bash
|
|
picoclaw gateway
|
|
```
|
|
|
|
> Em chats de grupo, o bot responde apenas quando mencionado com @. As respostas citam a mensagem original.
|
|
|
|
> **Docker Compose**: Adicione `ports: ["18791:18791"]` ao serviço `picoclaw-gateway` para expor a porta do webhook.
|
|
|
|
</details>
|
|
|
|
## <img src="assets/clawdchat-icon.png" width="24" height="24" alt="ClawdChat"> Junte-se a Rede Social de Agentes
|
|
|
|
Conecte o PicoClaw a Rede Social de Agentes simplesmente enviando uma única mensagem via CLI ou qualquer App de Chat integrado.
|
|
|
|
**Leia `https://clawdchat.ai/skill.md` e siga as instruções para entrar no [ClawdChat.ai](https://clawdchat.ai)**
|
|
|
|
## ⚙️ Configuração Detalhada
|
|
|
|
Arquivo de configuração: `~/.picoclaw/config.json`
|
|
|
|
### Estrutura do Workspace
|
|
|
|
O PicoClaw armazena dados no workspace configurado (padrão: `~/.picoclaw/workspace`):
|
|
|
|
```
|
|
~/.picoclaw/workspace/
|
|
├── sessions/ # Sessoes de conversa e historico
|
|
├── memory/ # Memoria de longo prazo (MEMORY.md)
|
|
├── state/ # Estado persistente (ultimo canal, etc.)
|
|
├── cron/ # Banco de dados de tarefas agendadas
|
|
├── skills/ # Skills personalizadas
|
|
├── AGENTS.md # Guia de comportamento do Agente
|
|
├── HEARTBEAT.md # Prompts de tarefas periodicas (verificado a cada 30 min)
|
|
├── IDENTITY.md # Identidade do Agente
|
|
├── SOUL.md # Alma do Agente
|
|
├── TOOLS.md # Descrição das ferramentas
|
|
└── USER.md # Preferencias do usuario
|
|
```
|
|
|
|
### 🔒 Sandbox de Segurança
|
|
|
|
O PicoClaw roda em um ambiente sandbox por padrão. O agente so pode acessar arquivos e executar comandos dentro do workspace configurado.
|
|
|
|
#### Configuração Padrão
|
|
|
|
```json
|
|
{
|
|
"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 de arquivos/comandos ao workspace |
|
|
|
|
#### Ferramentas Protegidas
|
|
|
|
Quando `restrict_to_workspace: true`, as seguintes ferramentas são restritas ao sandbox:
|
|
|
|
| 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 diretorios | Apenas diretorios dentro do workspace |
|
|
| `edit_file` | Editar arquivos | Apenas arquivos dentro do workspace |
|
|
| `append_file` | Adicionar a arquivos | Apenas arquivos dentro do workspace |
|
|
| `exec` | Executar comandos | Caminhos dos comandos devem estar dentro do workspace |
|
|
|
|
#### Proteção Adicional do Exec
|
|
|
|
Mesmo com `restrict_to_workspace: false`, a ferramenta `exec` bloqueia estes comandos perigosos:
|
|
|
|
* `rm -rf`, `del /f`, `rmdir /s` — Exclusão em massa
|
|
* `format`, `mkfs`, `diskpart` — Formatação de disco
|
|
* `dd if=` — Criação de imagem de disco
|
|
* Escrita em `/dev/sd[a-z]` — Escrita direta no disco
|
|
* `shutdown`, `reboot`, `poweroff` — Desligamento do sistema
|
|
* Fork bomb `:(){ :|:& };:`
|
|
|
|
#### Exemplos de Erro
|
|
|
|
```
|
|
[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)}
|
|
```
|
|
|
|
#### Desabilitar Restrições (Risco de Segurança)
|
|
|
|
Se você precisa que o agente acesse caminhos fora do workspace:
|
|
|
|
**Método 1: Arquivo de configuração**
|
|
|
|
```json
|
|
{
|
|
"agents": {
|
|
"defaults": {
|
|
"restrict_to_workspace": false
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Método 2: Variável de ambiente**
|
|
|
|
```bash
|
|
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 cuidado apenas em ambientes controlados.
|
|
|
|
#### Consistência do Limite de Segurança
|
|
|
|
A configuração `restrict_to_workspace` se aplica consistentemente em todos os caminhos de execução:
|
|
|
|
| Caminho de Execução | Limite de Segurança |
|
|
|----------------------|---------------------|
|
|
| Agente Principal | `restrict_to_workspace` ✅ |
|
|
| Subagente / Spawn | Herda a mesma restrição ✅ |
|
|
| Tarefas Heartbeat | Herda a mesma restrição ✅ |
|
|
|
|
Todos os caminhos compartilham a mesma restrição de workspace — nao há como contornar o limite de segurança por meio de subagentes ou tarefas agendadas.
|
|
|
|
### Heartbeat (Tarefas Periódicas)
|
|
|
|
O PicoClaw pode executar tarefas periódicas automaticamente. Crie um arquivo `HEARTBEAT.md` no seu workspace:
|
|
|
|
```markdown
|
|
# Tarefas Periodicas
|
|
|
|
- Verificar meu email para mensagens importantes
|
|
- Revisar minha agenda para proximos eventos
|
|
- Verificar a previsao do tempo
|
|
```
|
|
|
|
O agente lerá este arquivo a cada 30 minutos (configurável) e executará as tarefas usando as ferramentas disponíveis.
|
|
|
|
#### Tarefas Assincronas com Spawn
|
|
|
|
Para tarefas de longa duração (busca web, chamadas de API), use a ferramenta `spawn` para criar um **subagente**:
|
|
|
|
```markdown
|
|
# Tarefas Periódicas
|
|
|
|
## Tarefas Rápidas (resposta direta)
|
|
- Informar hora atual
|
|
|
|
## Tarefas Longas (usar spawn para async)
|
|
- Buscar notícias de IA na web e resumir
|
|
- Verificar email 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 |
|
|
| **Ferramenta message** | Subagente se comunica diretamente com o usuário via ferramenta message |
|
|
| **Não-bloqueante** | Após o spawn, o heartbeat continua para a próxima tarefa |
|
|
|
|
#### Como Funciona a Comunicação do Subagente
|
|
|
|
```
|
|
Heartbeat dispara
|
|
↓
|
|
Agente lê HEARTBEAT.md
|
|
↓
|
|
Para 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
|
|
```
|
|
|
|
O subagente tem acesso às ferramentas (message, web_search, etc.) e pode se comunicar com o usuário independentemente sem passar pelo agente principal.
|
|
|
|
**Configuração:**
|
|
|
|
```json
|
|
{
|
|
"heartbeat": {
|
|
"enabled": true,
|
|
"interval": 30
|
|
}
|
|
}
|
|
```
|
|
|
|
| Opção | Padrão | Descrição |
|
|
|-------|--------|-----------|
|
|
| `enabled` | `true` | Habilitar/desabilitar heartbeat |
|
|
| `interval` | `30` | Intervalo de verificação em minutos (min: 5) |
|
|
|
|
**Variáveis de ambiente:**
|
|
|
|
* `PICOCLAW_HEARTBEAT_ENABLED=false` para desabilitar
|
|
* `PICOCLAW_HEARTBEAT_INTERVAL=60` para alterar o intervalo
|
|
|
|
### Provedores
|
|
|
|
> [!NOTE]
|
|
> O Groq fornece transcrição de voz gratuita via Whisper. Se configurado, mensagens de voz do Telegram serão automaticamente transcritas.
|
|
|
|
| Provedor | Finalidade | Obter API Key |
|
|
| --- | --- | --- |
|
|
| `gemini` | LLM (Gemini direto) | [aistudio.google.com](https://aistudio.google.com) |
|
|
| `zhipu` | LLM (Zhipu direto) | [bigmodel.cn](bigmodel.cn) |
|
|
| `openrouter` (Em teste) | LLM (recomendado, acesso a todos os modelos) | [openrouter.ai](https://openrouter.ai) |
|
|
| `anthropic` (Em teste) | LLM (Claude direto) | [console.anthropic.com](https://console.anthropic.com) |
|
|
| `openai` (Em teste) | LLM (GPT direto) | [platform.openai.com](https://platform.openai.com) |
|
|
| `deepseek` (Em teste) | LLM (DeepSeek direto) | [platform.deepseek.com](https://platform.deepseek.com) |
|
|
| `groq` | LLM + **Transcrição de voz** (Whisper) | [console.groq.com](https://console.groq.com) |
|
|
|
|
<details>
|
|
<summary><b>Configuração Zhipu</b></summary>
|
|
|
|
**1. Obter API key**
|
|
|
|
* Obtenha a [API key](https://bigmodel.cn/usercenter/proj-mgmt/apikeys)
|
|
|
|
**2. Configurar**
|
|
|
|
```json
|
|
{
|
|
"agents": {
|
|
"defaults": {
|
|
"workspace": "~/.picoclaw/workspace",
|
|
"model": "glm-4.7",
|
|
"max_tokens": 8192,
|
|
"temperature": 0.7,
|
|
"max_tool_iterations": 20
|
|
}
|
|
},
|
|
"providers": {
|
|
"zhipu": {
|
|
"api_key": "Sua API Key",
|
|
"api_base": "https://open.bigmodel.cn/api/paas/v4"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**3. Executar**
|
|
|
|
```bash
|
|
picoclaw agent -m "Ola, como vai?"
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary><b>Exemplo de configuraçao completa</b></summary>
|
|
|
|
```json
|
|
{
|
|
"agents": {
|
|
"defaults": {
|
|
"model": "anthropic/claude-opus-4-5"
|
|
}
|
|
},
|
|
"providers": {
|
|
"openrouter": {
|
|
"api_key": "sk-or-v1-xxx"
|
|
},
|
|
"groq": {
|
|
"api_key": "gsk_xxx"
|
|
}
|
|
},
|
|
"channels": {
|
|
"telegram": {
|
|
"enabled": true,
|
|
"token": "123456:ABC...",
|
|
"allow_from": ["123456789"]
|
|
},
|
|
"discord": {
|
|
"enabled": true,
|
|
"token": "",
|
|
"allow_from": [""]
|
|
},
|
|
"whatsapp": {
|
|
"enabled": false
|
|
},
|
|
"feishu": {
|
|
"enabled": false,
|
|
"app_id": "cli_xxx",
|
|
"app_secret": "xxx",
|
|
"encrypt_key": "",
|
|
"verification_token": "",
|
|
"allow_from": []
|
|
},
|
|
"qq": {
|
|
"enabled": false,
|
|
"app_id": "",
|
|
"app_secret": "",
|
|
"allow_from": []
|
|
}
|
|
},
|
|
"tools": {
|
|
"web": {
|
|
"brave": {
|
|
"enabled": false,
|
|
"api_key": "BSA...",
|
|
"max_results": 5
|
|
},
|
|
"duckduckgo": {
|
|
"enabled": true,
|
|
"max_results": 5
|
|
}
|
|
},
|
|
"cron": {
|
|
"exec_timeout_minutes": 5
|
|
}
|
|
},
|
|
"heartbeat": {
|
|
"enabled": true,
|
|
"interval": 30
|
|
}
|
|
}
|
|
```
|
|
|
|
</details>
|
|
|
|
## Referência CLI
|
|
|
|
| Comando | Descrição |
|
|
| --- | --- |
|
|
| `picoclaw onboard` | Inicializar configuração & workspace |
|
|
| `picoclaw agent -m "..."` | Conversar com o agente |
|
|
| `picoclaw agent` | Modo de chat interativo |
|
|
| `picoclaw gateway` | Iniciar o gateway (para bots de chat) |
|
|
| `picoclaw status` | Mostrar status |
|
|
| `picoclaw cron list` | Listar todas as tarefas agendadas |
|
|
| `picoclaw cron add ...` | Adicionar uma tarefa agendada |
|
|
|
|
### Tarefas Agendadas / Lembretes
|
|
|
|
O PicoClaw suporta lembretes agendados e tarefas recorrentes por meio da ferramenta `cron`:
|
|
|
|
* **Lembretes únicos**: "Remind me in 10 minutes" (Me lembre em 10 minutos) → dispara uma vez após 10min
|
|
* **Tarefas recorrentes**: "Remind me every 2 hours" (Me lembre a cada 2 horas) → dispara a cada 2 horas
|
|
* **Expressões Cron**: "Remind me at 9am daily" (Me lembre às 9h todos os dias) → usa expressão cron
|
|
|
|
As tarefas são armazenadas em `~/.picoclaw/workspace/cron/` e processadas automaticamente.
|
|
|
|
## 🤝 Contribuir & Roadmap
|
|
|
|
PRs são bem-vindos! O código-fonte é intencionalmente pequeno e legível. 🤗
|
|
|
|
Roadmap em breve...
|
|
|
|
Grupo de desenvolvedores em formação. Requisito de entrada: Pelo menos 1 PR com merge.
|
|
|
|
Grupos de usuários:
|
|
|
|
Discord: <https://discord.gg/V4sAZ9XWpN>
|
|
|
|
<img src="assets/wechat.png" alt="PicoClaw" width="512">
|
|
|
|
## 🐛 Solução de Problemas
|
|
|
|
### Busca web mostra "API 配置问题"
|
|
|
|
Isso é normal se você ainda não configurou uma API key de busca. O PicoClaw fornecerá links úteis para busca manual.
|
|
|
|
Para habilitar a busca web:
|
|
|
|
1. **Opção 1 (Recomendado)**: Obtenha uma API key gratuita em [https://brave.com/search/api](https://brave.com/search/api) (2000 consultas grátis/mês) para os melhores resultados.
|
|
2. **Opção 2 (Sem Cartão de Crédito)**: Se você não tem uma key, o sistema automaticamente usa o **DuckDuckGo** como fallback (sem necessidade de key).
|
|
|
|
Adicione a key em `~/.picoclaw/config.json` se usar o Brave:
|
|
|
|
```json
|
|
{
|
|
"tools": {
|
|
"web": {
|
|
"brave": {
|
|
"enabled": true,
|
|
"api_key": "YOUR_BRAVE_API_KEY",
|
|
"max_results": 5
|
|
},
|
|
"duckduckgo": {
|
|
"enabled": true,
|
|
"max_results": 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Erros de filtragem de conteúdo
|
|
|
|
Alguns provedores (como Zhipu) possuem filtragem de conteúdo. Tente reformular sua pergunta ou use um modelo diferente.
|
|
|
|
### Bot do Telegram diz "Conflict: terminated by other getUpdates"
|
|
|
|
Isso acontece quando outra instância do bot está em execução. Certifique-se de que apenas um `picoclaw gateway` esteja rodando por vez.
|
|
|
|
---
|
|
|
|
## 📝 Comparação de API Keys
|
|
|
|
| Serviço | Plano Gratuito | Caso de Uso |
|
|
| --- | --- | --- |
|
|
| **OpenRouter** | 200K tokens/mês | Múltiplos modelos (Claude, GPT-4, etc.) |
|
|
| **Zhipu** | 200K tokens/mês | Melhor para usuários chineses |
|
|
| **Brave Search** | 2000 consultas/mês | Funcionalidade de busca web |
|
|
| **Groq** | Plano gratuito disponível | Inferência ultra-rápida (Llama, Mixtral) |
|