Introduction
O OpenCrabs é um agente de orquestração de IA auto-hospedado e agnóstico de provider que corre como um único binário Rust. Automatiza o teu terminal, browser, channels (Telegram/Discord/Slack/WhatsApp/Trello) e codebase, respeitando a tua privacidade e mantendo-te no controlo.
11,091 testes em providers, ferramentas, channels, TUI, self-healing e automação de browser.
O Que Distingue o OpenCrabs
Zero Telemetria, Nem por Opção
- O OpenCrabs nunca liga para casa. Nunca. Sem analytics, sem tracking, sem estatísticas de utilização, sem logs remotos, sem relatórios de falhas
- As tuas conversas, ferramentas, memória, configuração e chaves de API nunca saem da tua máquina
- O único tráfego de saída é o que inicias explicitamente: chamadas a APIs de LLM, pesquisas web, comandos GitHub, automação de browser
- Não é uma checkbox de política de privacidade: não há código de telemetria para desativar, nenhuma flag de opt-out, nenhum serviço de analytics para bloquear. Simplesmente não há nada para enviar
Agnóstico de Provider por Concepção
- 16 providers integrados + Custom OpenAI Compatible: Anthropic Claude, OpenAI, Gemini, Xiaomi MiMo, OpenRouter, Qwen (DashScope), MiniMax, Ollama, z.ai GLM, GitHub Copilot, Codex, Codex CLI, OpenCode, OpenCode CLI, Moonshot AI (Kimi), Command Code CLI
- Integração CLI nativa: usa o Claude Code CLI, OpenCode CLI, Codex CLI e Command Code CLI como providers sem chaves de API
- Cadeia de fallback persistente: failover automático em rate limits ou erros, persistência com noção de estado que sobrevive a reinícios
- Prompt caching em Anthropic, OpenRouter, Gemini e Qwen DashScope reduz custos até 95%
- Override da janela de contexto: limita ou expande o contexto de qualquer model via config (o provider OpenCrabs incorporado é a exceção: a sua janela está fixada em 200k)
- Xiaomi MiMo: mais de 30 models incluindo a série de reasoning MiMo, provider com chave
- Moonshot AI (Kimi): endpoints do plano API (api.moonshot.ai) e do plano Coding (api.kimi.com), config de reasoning-effort, janela de contexto por nível de plano
Multi-Agent Orchestration
- As sessions são agentes totalmente isolados, cada uma com o seu próprio brain, provider, model, diretório de trabalho e histórico
- Sub-agentes tipados:
general,explore,plan,code,researchcom acesso a ferramentas adaptado - Orquestração de equipas:
team_create,team_broadcast,team_deletepara workflows coordenados - Overrides de provider/model por chamada: mistura models entre equipas (planear com GLM, programar com Deepseek, rever com Kimi)
- Protocolo A2A: gateway JSON-RPC 2.0 para comunicação agente-a-agente
Comunicação Nativa dos Channels
- Telegram, Discord, Slack, WhatsApp, Trello, integração completa de bot com DMs, grupos e threads
- Mensagens ricas no Telegram: tabelas nativas, títulos, listas, matemática via config
rich_messages - Streaming de mensagens em rascunho: atualizações “a escrever…” em direto enquanto os tokens são gerados nas DMs
- Blocos colapsáveis: secções
<details>/<summary>para outputs longos - Isolamento de session por tópico de fórum: cada tópico em supergrupos do Telegram tem a sua própria session
- Reações no Telegram: o bot lê as reações emoji recebidas e pode responder com uma reação em vez de uma mensagem quando isso encaixa
- Reações de enquadramento (v0.3.61): reações recebidas lidas por sentimento, o agente trata o utilizador pelo primeiro nome
- Reações a meio do turn (v0.3.61): uma reação durante um turn em execução é injetada no loop atual em vez de disparar um segundo turn
- Sugestões de seguimento (v0.3.69): follow-ups opcionais de toque-para-enviar no Telegram, Discord, Slack e WhatsApp; preencher-sem-enviar no TUI
- Reafixar cartão de plano no Telegram (v0.3.71): reafixa o cartão de plano e enrola o texto nele quando fica enterrado
- Captura integral do histórico de grupos (v0.3.73): persiste todas as mensagens de grupo no histórico, mesmo de remetentes e bots fora da allowlist
- Interlocutor de grupo correto (v0.3.73): deixa de tratar um remetente do histórico do grupo como o interlocutor atual
- Herança de sessions: o
/newherda o diretório de trabalho da tua session mais recente /goalem todos os channels: define objetivos autónomos a partir do Telegram, Discord, Slack e WhatsApp- Suporte de voz: Whisper STT local + Piper TTS, totalmente offline
- Recuperação de falhas entre channels: pedidos pendentes regressam ao channel de origem no reinício
/cowork: cria workspaces partilhados a partir de channels e do TUI/rename,/profiles,/cd, gere sessions, profiles e diretórios a partir de qualquer channel
Self-Healing e Auto-Melhoria
-
Recursive Self-Improvement (RSI): o agente analisa o desempenho, identifica padrões e reescreve os ficheiros brain
-
Deteção de phantom tool calls: apanha quando o model narra alterações sem executar ferramentas
-
Self-heal de phantom calls (v0.3.72): apanha turns sem ferramentas que alegam efeitos secundários críticos (ship/push/tag/release)
-
Edições de config só via config_manager (v0.3.74): o agente nunca edita à bruta o config.toml/keys.toml; cada escrita é validada antes de aterrar
-
Dedup do brain (v0.3.75): o comando
/dedupmais rastreios pós-escrita e semanais entre ficheiros evitam que os ficheiros brain derivem para duplicação, com aprovação por teclado inline no Telegram -
Dicas de ficheiros brain em falhas de ferramentas (v0.3.75), notas brain relevantes surgem automaticamente quando uma chamada de ferramenta falha ou dá erro
-
Memória proativa (v0.3.76): memória relevante surge sem ser pedida quando o contexto da conversa corresponde a conhecimento armazenado
-
Nomes naturais de models (v0.3.76):
/models opusfunciona; nomes coloquiais resolvem para IDs exatos de model -
Encaminhamento de provider plan/execute (v0.3.76): encaminha o planeamento e a execução para providers/models separados
-
Timeout de thinking-loop (v0.3.78): apanha loops de reasoning infinitos, dispara a aplicação de phantom enforcement com fallback persistente
-
Motor epistémico (v0.3.78): tracking de crenças com níveis de confiança, malha cognitiva OODA/BDI, gate de Orient antes da execução do plano
-
Gate de verificação Ralph (v0.3.78): verificação de tarefas com noção de critérios e limite de iterações; as tarefas têm de cumprir os critérios de aceitação declarados
-
Gates de segurança TOML (v0.3.78): blocklist de bash configurável em runtime com hot-reload, redação de segredos entre aspas, verificação de ficheiros brain
-
Analytics do Mission Control (v0.3.78): filtro D/W/M, grelha de cartões 3 por linha, separadores phantom/model/streaming, DB de eventos dedicada
-
Onboarding de OpenAI TTS (v0.3.78): seletor de voz e campo de chave de API no assistente de onboarding
-
Instalação via Homebrew (v0.3.79):
brew install opencrabsa partir do homebrew-core: binário pré-compilado, ambas as arquiteturas, sem toolchain Rust -
/restarte/exit(v0.3.79): reinicia ou desliga a partir de qualquer channel ou do TUI; só o owner nos channels, anuncia antes de agir -
Circuit breaker de quota (v0.3.79): providers com quota esgotada recebem um breaker com TTL e são saltados nas passagens de fallback; o esgotamento da cadeia é reportado explicitamente
-
Estado de planos entre sessions (v0.3.79): os planos sobrevivem aos limites das sessions; a execução isolada de tarefas de plano vem ligada por defeito, o Ralph verifica no próprio diretório da session
-
Sistema de temas (v0.5.0): presets verificados, um seletor interativo e os teus próprios temas em
~/.opencrabs/themes/*.toml; o truecolor é detetado com um nível de recurso ANSI-256, e um preset cujo contraste tornaria o texto ilegível é recusado -
Memória estrutural de código (v0.5.0): o tree-sitter constrói um índice de símbolos e de grafo de chamadas ao lado do índice de texto, por isso “quem chama X” percorre arestas de chamada reais enquanto as perguntas conceptuais mantêm o percurso de texto (#1324)
-
Transferência de ficheiros por SSH (v0.5.0): um ficheiro largado numa TUI a correr num host remoto é obtido através da ligação já aberta, com um
opencrabs drop-agentdo lado do cliente (#1289) -
Veredictos de entrega do notify (v0.5.0): o
session_notifydevolve um resultado de envio legível por máquina, os recibos de injeção de profundidade 3 tornam onotify_idverificável, e a entrega é redirecionada para a session que detém o channel nesse momento -
Compactação em segundo plano (v0.5.0): o sumarizador corre fora do turno em vez de reter a session enquanto trabalha
-
Redação do token na escrita (v0.5.0): um erro de provider que transporte um URL já não pode expor o token do bot num log, seja qual for a origem do registo (#1322)
-
Userbot de Telegram só de receção (v0.5.0, experimental): captura MTProto protegida por feature com início de sessão local por QR/código/2FA; guarda texto autorizado para consulta e nunca age como o utilizador
-
Ancoragem temporal (v0.5.1): o agente sabe sempre que horas são: cada turno traz uma marca temporal no fuso horário do utilizador, e o prompt do sistema permanece byte a byte estável para o cache do provedor (#1516)
-
Sessões cron por job (v0.5.1): cada job agendado recebe a sua própria sessão, para que dois jobs em execução simultânea nunca partilhem contexto ou provedores (#1511)
-
Gating por globs de skill (v0.5.1): a lista
globs:de uma skill pode recusar chamadas de ferramentas sobre ficheiros correspondentes até que o agente tenha lido o corpo da skill (#1515) -
Escritas no config validadas pela estrutura (v0.5.1), a guarda de escrita e as sugestões de secção do config_manager derivam agora do próprio tipo
Config, para nunca divergirem do código publicado (#1508) -
Propostas de plano recusadas à escrita (v0.5.1): um desenho de plano malformado rebate imediatamente com as secções em falta nomeadas, e uma escrita recusada restaura o scaffold em vez de apagar o rascunho (#1507)
-
Backpressure de orçamento do provedor (v0.5.1): um provedor que reporta um orçamento de tokens de saída dispara uma única compactação com limites e uma retentativa, em vez de uma cascata de 400 (#1518)
-
Tokens A2A vinculados e config só do owner (v0.5.1), os tokens A2A ligam-se ao gateway que os emitiu, e config.toml/keys.toml passam a modo exclusivo do owner, com segredos removidos dos logs
-
Modo servidor ACP (v0.5.2):
opencrabs acpfala o Agent Client Protocol sobre stdio JSON-RPC, por isso o Zed, o MonoCode e qualquer cliente ACP conduzem o mesmo brain que os teus channels usam, com streaming do progresso e aprovações a voltar até ao editor (#1540) -
Navegação com consciência de shadow-DOM (v0.5.2): a resolução de seletores atravessa shadow roots, por isso a automação chega a web components que antes eram invisíveis para as ferramentas
-
Superfície completa do WhatsApp (v0.5.2): mensagens de voz nativas, vídeo/sticker/localização/contacto recebidos, votos em sondagens, recuperação de presença e media, confirmações de reação, streaming com edição no lugar, mensagens temporárias, bloqueio de contactos, fixar/reencaminhar/perfil, atualizações de estado, descoberta de newsletters, botões de native flow, histórico por conversa
-
Tracing ao vivo e tabelas nativas no Discord (v0.5.2), turnos longos são transmitidos como uma resposta ao vivo com tracing, as respostas criam thread automaticamente, as tabelas markdown renderizam nativamente e os turnos com ferramentas deixam de publicar a resposta final duas vezes (#1603, #1608)
-
Tópicos de fórum do Telegram e /clear (v0.5.2): criar/renomear tópicos de fórum com ligação à session, e /clear inicia uma session nova sem a chamada ao summariser (#1585)
-
Orçamento do payload do menu de comandos (v0.5.2): o setMyCommands do Telegram rejeita silenciosamente corpos de pedido acima de ~7,8KB reportando BOT_COMMANDS_TOO_MUCH; as descrições passam a encurtar por níveis para o menu inteiro caber (#1613)
-
Cron com triggers (v0.5.3): um job corre um pre-flight check e só executa quando a condição é satisfeita (output não vazio, exit code, regex), os runs saltados custam 0 tokens e um trigger disparado pode despachar um goal para uma session (#233)
-
Windows de primeira classe (v0.5.3): shell handling por plataforma, leitura de ficheiros BOM/UTF-16, fallbacks de tilde e cwd, com a CI a compilar Windows e a fazer gate aos PRs (#627)
-
Memória epistémica (v0.5.3): os factos do MEMORY.md ganham confidence e decay (#1643), as secções frias arquivam-se sozinhas e o
opencrabs memory prunemostra o que ficou frio antes de tocar em nada (#1657) -
Motor de temas terminado (v0.5.3): todos os widgets do TUI resolvem as cores através do tema, com um guard de suite contra novos sítios de ANSI cru, e os temas podem declarar um canvas background (#1634)
-
Polls de sugestões no WhatsApp (v0.5.3): conjuntos de follow-ups além do limite nativo de botões renderizam como poll, e um voto seleciona a opção (#1616)
-
Família de sessions ACP (v0.5.4): os sessions são first-class na superfície ACP: o context meter é restaurado no load e acompanha as usage updates, o
session/loadrepõe a transcrição e restaura o model do session, oset_modelpersiste entre processos, osession/set_modenativo aplica a approval policy do lado do servidor, osession/compactfaz push, e osession/newoferece um catálogo de models ao vivo -
Entrega interativa do terminal (v0.5.4): o
!vi/!nanoassumem o terminal de forma interativa e devolvem-no com o session intacto; apenas terminais Unix, no Windows mantém-se a captura por pipe (#1744, #1759) -
Paste & drop universal (v0.5.4): um router de attachments partilhado aceita qualquer tipo de ficheiro no paste ou no drop e classifica código, docs, arquivos e dados para cada um seguir o pipeline certo (#1740, #1743)
-
Motor de pesquisa Serper (v0.5.4): o
serper_searchacrescenta resultados Google SERP, e o fan-out do web_search elimina duplicados por URL entre engines (#1731) -
Decision cache (v0.5.4): o
decide_cachedresponde a decisões repetidas a partir de um anel de reutilização L1 com tiers shadow/live e config[decisions](#1648) -
Custos reportados pelo provider e uma cadeia de timeouts unificada (v0.5.4), o ledger de usage prefere o custo que o provider reportou de facto em vez de estimativas de tabela (#1707), e os flags de timeout resolvem
[providers.<name>]->[agent]-> default em todos os providers (#1688) -
Comandos compilados /architecture e /attach, audit trail opcional (v0.5.4), ambos os comandos são distribuídos como arms compilados, e um audit trail opcional regista o que correu com um viewer
/audit(#933, #1705) -
Superfície nativa do Discord (v0.5.5): inquéritos nativos via
send_poll, respostas TTS entregues como mensagens de voz, ecommands.tomlprojetado nos slash commands nativos para que os teus comandos apareçam no picker do Discord (#1848, #1849, #1850) -
Flow groups e governors de escrita (v0.5.5): o Discord e o Slack abrem o flow group no início do turno com um relógio ao vivo a cobrir o pensamento e o texto de atividade a liderar a linha, e um governor de escrita partilhado orçamenta cada edição e faz park em 429s (#1841, #1843, #1844, #1845, #1807, #1808, #1809, #1910, #1912, #2012)
-
/respond_to e /cowork (v0.5.5): modos respond_to e open por canal na configuração, mais os dois comandos para os definir a partir do próprio canal (#2014, #2015)
-
Disciplina de rate limit no Telegram (v0.5.5): polls getUpdates e handoffs de handler instrumentados para triagem de stalls, um piso de espaçamento sub-segundo entre superfícies com telemetry de admissão, uma pausa 429 por chat atrás de um único accessor Cooldown, e ligações markdown a ficheiros locais entregues como documentos (#1927, #1916, #1968)
-
Ciclo de vida de sessions ACP v1 (v0.5.5): os cinco métodos v1 de ciclo de vida de session estão implementados e o plano é publicado como um plan update nativo v1 (#1815)
-
Footer de diálogo partilhado, URLs clicáveis, timeline de onboarding no TUI (v0.5.5): todos os diálogos partilham um command footer com verbos de aprovação a/r diretos, URLs e caminhos de ficheiro são clicáveis, e o onboarding foi reconstruído como uma timeline de passos à esquerda com comandos de configuração diretos (#1775, #1772, #1979, #1980, #1981, #1982)
-
Reforma de cron one-shot (v0.5.5): os jobs one-shot reformam-se na entrega em vez de voltarem a disparar um ano depois, cada execução entregue leva o seu run id, e os reports de cron do Discord chegam como um único post no fórum (#544, #1703, #1851)
-
Primeira execução sem configuração (v0.5.11): uma instalação nova cai direto no chat com o provider incorporado já provisionado,
config.tomlekeys.tomlcriados, e o agente a cumprimentar-te. O assistente é opcional através de/onboardou--onboard(#2079) -
Um primeiro turno que não pode abortar o processo (v0.5.11): as threads worker do agente correm numa stack de 16 MiB, por isso o primeiro turno já não transborda a stack predefinida (#2080)
-
Tags de release só com CI verde (v0.5.11): o workflow de release lê a conclusão da run de CI do próprio commit antes de publicar. Uma run vermelha falha a release, uma run ainda em curso é aguardada, e um commit sem run também falha (#2078)
-
O evolve reinicia as unidades certas (v0.5.11): o reinício agendado aponta para nomes de unidades resolvidos em vez do glob de descoberta
opencrabs*.service, que também apanhava a unidade transitória que corre o reinício e fazia o systemd parar o seu próprio executor (#2081) -
As guest queries do Telegram passam a ter a superfície completa (v0.5.12): um tag num chat onde o bot nunca foi convidado corre a mesma superfície de ferramentas, o mesmo bloco de estado ao vivo e a mesma renderização rich de um turno normal, com um turno cancelável por guest session e rate limiting (#2087, #2109, #2133, #2135, #2138, #2143)
-
Um plano passa a ser exigido a partir de um limite de tool calls (v0.5.12): quando um turno ultrapassa um limite de tool calls, o agente tem de parar e escrever um plano antes de continuar (#2128)
-
O transcript sobrevive à troca de session (v0.5.12): o mapa de dobras é indexado por um anchor estável de role e timestamp em vez de um UUID gerado a cada render, por isso trocar de session e voltar já não dobra todos os turnos que tinhas aberto (#2155)
-
Instalações headless provisionam o provider integrado (v0.5.12):
opencrabs run,daemon,agent,acpecroncriam o token integrado numa home nova tal como a TUI já fazia, enquantostatusedoctorficam read-only (#2151) -
Modo de reparação doctor –fix (v0.3.83): linhas de cron presas, markers obsoletos e permissões partidas são reparados no momento em vez de apenas reportados
-
Locks de escrita por caminho (v0.3.83): escritas concorrentes no mesmo ficheiro são serializadas; o último a escrever deixa de ganhar silenciosamente
-
Isolamento de worktree para sub-agentes (v0.3.83): cada agente filho recebe o seu próprio worktree e branch, pelo que um fan-out não consegue destruir a árvore partilhada
-
Critérios de aceitação com noção de tipo (v0.3.83): os critérios do plano são aplicados contra a toolchain que o projeto realmente usa (#1133)
-
Verificação de planos com noção de projeto (v0.3.83), os planos verificam com os comandos do próprio projeto, não sempre cargo, e encontram o projeto a partir da pasta da session
-
/stop cancela imediatamente (v0.3.83): interrompe durante o handshake do provider e os backoffs de retry (#1148)
-
Retoma de sessions A2A (v0.3.83): as sessions retomam por context id, o gateway é endereçado por profile (#1159, #1161)
-
Botões de thinking do DeepSeek (v0.3.83): o DeepSeek recebe os parâmetros de thinking que realmente lê, mais tratamento de turns só de tool-call
-
Correlação de logs por session_id (v0.3.82): cada turn abre um tracing span com o seu session id, e os cron jobs e o motor RSI têm os seus próprios, pelo que um único grep reconstrói um turn inteiro a partir de um log diário partilhado
-
Fiabilidade do logger (v0.3.82): o logger deixa de descartar eventos e deixa de escrever no terminal do TUI; uma escrita travada deixa de silenciar o logging de todas as outras threads
-
Ficheiros brain do utilizador protegidos (v0.3.82): o SOUL.md, USER.md e MEMORY.md nunca recebem merges do upstream, e as diretivas são encaminhadas para o AGENTS.md, que está sempre carregado
-
Unificação de secções de config (v0.3.82): a grafia legada
[gateway]é migrada em disco para[a2a], pelo que um nome sobrevive a um ciclo de reload -
Cache por hash de chunk (v0.3.82): a memória salta o re-embedding de chunks cujo conteúdo não mudou
-
Binários de pre-release (v0.3.82): cinco alvos de plataforma mais SHA256SUMS, publicados como pre-release contínua para que contribuidores testem código por lançar sem esperar por uma tag. Corre a pedido, não em cada push
-
Abandono em rate-limit (v0.3.82): uma janela longa de rate-limit do Telegram devolve imediatamente em vez de estacionar o envio em linha
-
Store de memória in-tree (v0.3.81): a dependência qmd foi removida; pesquisa vetorial + SQLite FTS5 mantida in-tree
-
Caminhos de índice externos (v0.3.81) (a pesquisa de memória lê índices fora do diretório do profile, default-deny em sessions partilhadasCaminhos de índice externos (v0.3.81)) a pesquisa de memória l�� índices fora do diretório do profile, default-deny em sessions partilhadas
-
Mermaid como imagens no Telegram (v0.3.81): os diagramas renderizam como imagens enquanto as tabelas mantêm a formatação nativa
-
Reasoning do Qwen entre turns (v0.3.81): preserve_thinking, botões de thinking gated por família, nível de esforço recomendado por defeito, Qwen hospedado acessível em todo o lado
-
Correção da perda de chaves no keys.toml (v0.3.81), as chaves de API dos providers deixam de se perder em runtime; chaves envenenadas autorrecuperam-se
-
Deteção precoce de loops (v0.3.81): rondas de ferramentas repetitivas apanhadas antes de o provider rejeitar o turn
-
Gate do motor RSI (v0.3.81): RSI autónomo desligado por defeito para daemons headless, ativa com
rsi_enabled -
Âmbito do memory_search (v0.3.80): pesquisa os logs diários (
memory), os ficheiros brain (brain) ou ambos (all); os ficheiros brain são indexados no momento da escrita -
Recuperação de memória por chunks (v0.3.80): documentos divididos em chunks antes do embedding para que chunks posteriores sejam pesquisáveis; recall ordenado com BM25
-
Renderização nativa do Slack (v0.3.80): tabelas e títulos chegam na própria forma do Slack em vez de markdown cru
-
Comandos de channel reservados ao owner (v0.3.80): comandos e skills personalizados são só do owner no braço catch-all dos channels em grupos
-
Gates de convergência do RSI (v0.3.80): a auto-melhoria pausa na convergência, recua em sequências de zero melhorias, faz hash dos achados por identidade estável
-
Guardas de loop (v0.3.80): guardas de repetição de anúncios e quase-correspondências em todas as ferramentas; kills do detetor de loop chegam à cadeia de fallback
-
Modo de inventário do browser (v0.3.80): o
browser_findnu enumera todos os elementos clicáveis na página -
Atualização dos templates de ficheiros brain (v0.3.80), os templates de AGENTS.md, BOOT.md e SOUL.md mudaram; o seeding nunca sobrescreve ficheiros existentes, por isso faz diff contra
src/docs/reference/templates/e faz merge à mão se quiseres os novos defeitos -
Reconstrução do brain de sistema: ficheiros brain reconstruídos a partir do disco quando mudam, sem reinício
-
Descoberta proativa de ferramentas: pesquisa ferramentas disponíveis antes de alegar incapacidade
-
Analisador de prompts multilingue (v0.3.67): PromptAnalyzer partilhado com soft-nudge no TUI e Telegram, 6 packs de idioma (EN/ES/FR/ID/PT/RU)
-
Modo de planos (v0.3.67-v0.3.68): tracks design/checklist, cartão de plano persistente, comando
/plan <query>, auto-aprovação do agente quando o utilizador concede autonomia -
Clique-para-expandir (v0.3.69): clique esquerdo num bloco de tool-call ou reasoning para expandir só esse bloco, a complementar o Ctrl+O
-
review_gate de skills (v0.3.70): declaração no frontmatter para skills críticas que exigem aprovação do utilizador antes de efeitos secundários
-
Ativação JIT de ferramentas: ferramentas estendidas ativadas a pedido, sem pré-registo
-
Auto-reparação da config: repara automaticamente um config.toml partido, nunca envenena a última config boa
-
Gestão do orçamento de contexto: limiares de compaction de 65% suave / 90% rígido com fallback LLM
-
Deteção de streams presas: janela deslizante de 2048 bytes apanha padrões repetitivos
-
Defesa contra gaslighting: remove preâmbulos de recusa de ferramentas a meio do turn
-
Entrega de resultados de build (v0.3.61): os resultados de rebuild/evolve chegam a quem pediu, através de channels e TUI
Interface de Terminal (TUI)
- Renderização nativa de markdown: ênfase, listas, links e itens de tarefa renderizam diretamente no terminal
- Medidor de tok/s em tempo real: tokens por segundo em direto durante o streaming
- Exibição da versão (v0.3.73): mostra a versão em execução no cabeçalho do TUI e no /help + /usage dos channels
- Expansão de reasoning em 3 estados (v0.3.74): clique ou Ctrl+O percorre um bloco de reasoning colapsado → limitado → completo, para nunca inundar a vista
- Cabeçalhos por turn (v0.3.75): cada turn recebe um cabeçalho de resumo de uma linha, o raciocínio enrola-se nele, e os turns vêm dobrados por defeito para a vista se manter limpa
- Agrupamento de tool calls (v0.3.61): chamadas de ferramentas consecutivas colapsam num único bloco expansível, mantendo o TUI limpo em operações multi-passo
- Dobrar texto intermédio (v0.3.61): o texto de processamento intermédio dobra-se no mesmo log in-place das tool calls, pelo que só a resposta final fica visível
- Pesquisa de sessions: filtro de pesquisa + scroll no viewport por todas as sessions
- Painéis divididos: sessions paralelas ao estilo tmux com persistência de layout
- Colar imagens da clipboard: cola imagens do browser ou de qualquer app diretamente no TUI
- Afixar o plano: o plano ativo é afixado no fim do prompt a cada turn
- Onboarding orientado pelo agente: configuração inicial personalizada com fluxo guiado
- Loop autónomo
/goal: define um objetivo e o agente entra em loop até um juiz LLM dizer que está feito, com controlos pause/resume/status - Auto-objetivos (v0.3.61): o agente pode definir e conduzir os seus próprios objetivos multi-turn via ferramenta
goal_managesem o utilizador invocar/goal
Experiência de Desenvolvimento
- Mais de 50 ferramentas integradas: operações de ficheiros, bash, pesquisa web, execução de código, automação de browser, geração de imagens, voz, renderização de PDF
- Pesquisa web paralela unificada (v0.3.73): web_search, exa_search e brave_search dispersam em paralelo sob uma única ferramenta web_search
- web_scrape: scraping nativo de URL para markdown com proteção SSRF, rastreio de sitemaps, deteção de JS-shell e export com noção de profile
- Deteção de captcha DDG (v0.3.73): deteta captcha do DuckDuckGo via HTTP 202 + verificação estrutural de formulário
- Skill /github integrada: controlo total do gh CLI para issues, PRs, code reviews, gestão de repos
- Descoberta proativa de ferramentas: o agente encontra ferramentas antes de dizer “não consigo”
- Sistema de skills: templates de workflow com fuzzy-finding, registadas automaticamente como slash commands
- Ferramentas dinâmicas: definidas em runtime via TOML (executores HTTP + shell)
- Sistema de projetos: sessions dedicadas com overlays de brain por projeto, arquivo de ficheiros e badges de cor
- Edição hashline: edição de ficheiros ancorada por hash com suporte de lote e deteção de colisões
- Mission Control: dashboard de ecrã inteiro com inbox RSI, log de atividade e agenda de cron
- RTK auto-download: proxy de 4MB incluído para 53.5% de poupança de tokens em mais de 100 comandos
- Proteção de ficheiros confidenciais: chaves SSH, .env, credenciais protegidas por defeito
- AGENTS sempre carregado: regras rígidas e governança aplicadas a cada turn
- debug_logs orientado por config (v0.3.71): alterna logs de debug com hot-reload, sem reinício
- Âmbito de redação de segredos (v0.3.71): limita a redação a global/grupo/DM com o comando
/redact - Âmbito de redação de segredos (v0.3.71): limita a redação a global/grupo/DM com o comando
/redact - debug_logs orientado por config (v0.3.71): alterna logs de debug com hot-reload, sem reinício
- Watchdog de tmux (v0.3.71): kill só do painel, aviso de 30s, re-anexação automática
- Plan-gate de três estados (v0.3.71): GateDecision com bash a ir para aprovação no Editing pós-init
- ToolHints ao estilo MCP (v0.3.71): modelo de risco para classificação de ferramentas, alimenta o plan gate
Browser Automation
- Suporte CDP total: navegar, clicar, escrever, screenshot, avaliar JS, encontrar elementos
- Modo headless ou headed com screenshots específicas por elemento
- Persistência de cookies/sessions entre sessions de browser
- Isolamento de separadores por session: sem pisões de DOM entre sessions
Descoberta de Diretivas de Projeto (v0.3.59)
O OpenCrabs descobre automaticamente ficheiros de regras que outras ferramentas de codificação por IA deixam num repo. Aponta o agente para qualquer repositório (via /cd, um workspace de channel, ou lançando dentro de um) e ele pesquisa as convenções enviadas pelo Claude Code, Cursor, Windsurf, Cline, Gemini CLI, GitHub Copilot, OpenCode e o standard entre ferramentas AGENTS.md. Sem config, sem passo de importação.
| Origem | Ficheiros |
|---|---|
| Standard entre ferramentas | AGENTS.md |
| Claude Code | CLAUDE.md, CLAUDE.local.md, .claude/CLAUDE.md, .claude/rules/**/*.md |
| Cursor | .cursorrules, .cursor/rules/**/*.mdc |
| Windsurf | .windsurfrules |
| Cline | .clinerules (file or .clinerules/**/*.{md,txt}) |
| Gemini CLI | GEMINI.md |
| GitHub Copilot | .github/copilot-instructions.md |
| OpenCode | .opencode/AGENTS.md |
O índice reconstrói-se quando fazes /cd para um novo diretório, pelo que os ficheiros de diretivas estão sempre atualizados.
Início Rápido
# Instalar (Linux/macOS)
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
OS=$(uname -s | tr A-Z a-z)
TAG=$(command -v jq >/dev/null 2>&1 && curl -s https://api.github.com/repos/opencrabs/opencrabs/releases/latest | jq -r .tag_name || curl -s https://api.github.com/repos/opencrabs/opencrabs/releases/latest | grep -o '"tag_name":"[^"]*"' | cut -d'"' -f4)
curl -fsSL "https://github.com/opencrabs/opencrabs/releases/download/${TAG}/opencrabs-${TAG}-${OS}-${ARCH}.tar.gz" | tar xz
./opencrabs
# Ou via Cargo (requer Rust 1.94+)
cargo install opencrabs --locked
Auto-update ativado por defeito. Desativa com [agent] auto_update = false em ~/.opencrabs/config.toml.
Architecture
┌─────────────────────────────────────────┐
│ OpenCrabs Binary │
│ (Single 34-36 MB Rust executable) │
├─────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ TUI │ │ CLI Daemon │ │
│ │ (crossterm)│ │ (systemd/launchd)││
│ └─────────────┘ └─────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Provider Registry │ │
│ │ 15 built-in + Custom OpenAI │ │
│ │ Sticky fallback chain │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Tool Layer │ │
│ │ 50+ built-in tools │ │
│ │ Dynamic tools via TOML │ │
│ │ JIT activation │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Channel Adapters │ │
│ │ Telegram / Discord / Slack / │ │
│ │ WhatsApp / Trello / Voice │ │
│ └────────────────���────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Self-Healing Layer │ │
│ │ Context budget / Stuck stream │ │
│ │ Phantom detection / RSI │ │
│ └─────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Persistence │ │
│ │ SQLite + Brain files │ │
│ │ FTS5 + vector search │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
Próximos Passos
- Instalação: Instalar e configurar
- Configuração: Tod as opções de config
- Providers: Liga os teus backends LLM
- Channels: Liga Telegram, Discord, etc.
- Ferramentas: Explora mais de 50 capacidades integradas
- Self-Healing: Funcionalidades de resiliência
- Multi-Agent: Orquestra sub-agentes e equipas
Comunidade e Suporte
- Comunidade no Telegram: junta-te ao grupo OpenCrabs para dúvidas, dicas e conversa sobre releases
- Patrocina no GitHub: apoia o projeto e mantém os crabs alimentados
- Buy Me a Coffee: apoio pontual se o OpenCrabs te poupou uma tarde
Encontraste um bug ou queres uma funcionalidade? Abre uma issue no GitHub.