Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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, research com acesso a ferramentas adaptado
  • Orquestração de equipas: team_create, team_broadcast, team_delete para 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 /new herda o diretório de trabalho da tua session mais recente
  • /goal em 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 /dedup mais 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 opus funciona; 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 opencrabs a partir do homebrew-core: binário pré-compilado, ambas as arquiteturas, sem toolchain Rust

  • /restart e /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-agent do lado do cliente (#1289)

  • Veredictos de entrega do notify (v0.5.0): o session_notify devolve um resultado de envio legível por máquina, os recibos de injeção de profundidade 3 tornam o notify_id verificá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 acp fala 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 prune mostra 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/load repõe a transcrição e restaura o model do session, o set_model persiste entre processos, o session/set_mode nativo aplica a approval policy do lado do servidor, o session/compact faz push, e o session/new oferece um catálogo de models ao vivo

  • Entrega interativa do terminal (v0.5.4): o !vi/!nano assumem 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_search acrescenta resultados Google SERP, e o fan-out do web_search elimina duplicados por URL entre engines (#1731)

  • Decision cache (v0.5.4): o decide_cached responde 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, e commands.toml projetado 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.toml e keys.toml criados, e o agente a cumprimentar-te. O assistente é opcional através de /onboard ou --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, acp e cron criam o token integrado numa home nova tal como a TUI já fazia, enquanto status e doctor ficam 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_find nu 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_manage sem 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.

OrigemFicheiros
Standard entre ferramentasAGENTS.md
Claude CodeCLAUDE.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 CLIGEMINI.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

Comunidade e Suporte

Encontraste um bug ou queres uma funcionalidade? Abre uma issue no GitHub.