v0.10.0-beta — A Release da Auditoria 🐺
Pre-releaseOkami Agent — v0.10.0-beta "A Release da Auditoria" 🐺
Desde o v0.9.0-alpha: 193 commits · 403 arquivos · +23.841/−1.021 linhas · suíte 2.408 → 3.364 testes
· lançada 2026-07-08.
⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rodeokami policy check --strictantes de expor publicamente. Ver o
CHANGELOG completo.
🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs
A história desta release
Primeiro beta: promoção do alpha por MATURIDADE, não por feature nova. Motivo — uma auditoria E2E
completa vs. Hermes (8 agentes, uso real com minimax) achou a causa-raiz de o agente parecer "lento e
travado" em campo, e 3 ondas de correção (P0 · P1 · P2) fecharam do sintoma à causa.
✨ Highlights
- Auditoria E2E vs. Hermes — 6 causas-raiz encontradas e corrigidas (probe de tool-calling nativo,
retry acoplado ao key-pool, corte de tool-result flat, formatação do Telegram quebrando em respostas
longas, poll loop travado por STT/link-summary, memória poluída por auto-write mecânico). - Portabilidade real Windows/Mac/Linux — 14 breaks confirmados e corrigidos por auditoria adversarial
(7 finders, 51 candidatos triados). - Provisão remota VPS-first — o agente bootstrapa o próprio acesso SSH + GitHub, sem depender de
credenciais herdadas da máquina do usuário. - Multi-agente supervisionado — cada agente com seu próprio processo de gateway, watchdog e
auto-restart (okami agent up/down/status/supervise). - STT ligado por padrão — nota de voz é transcrita automaticamente, com auto-install de
faster-whisper/edge-tts. - Canais: 5 → 14 plataformas, todas bidirecionais (poll + webhook).
- Computer-use embutido, opt-in e approval-gated, com 3 camadas de segurança.
🔎 Auditoria E2E vs. Hermes — por que o agente parecia lento
Sintoma em uso real: respostas lentas, tarefa simples travando, formatação quebrada no Telegram. Não era
1 bug — era uma cadeia de degradação silenciosa:
- Probe de tool-calling nativo quebrado (TypeError silencioso): todo provider não-hardcoded (ex.:
minimax) caía pro rail JSON-em-texto sem avisar — perdia tool-calling nativo, thinking vazava no texto,
contexto inchava. Verdict agora persiste em disco (native_verdict.json). - Retry zero com 1 credencial só:
max_retriesestava acoplado ao tamanho do key-pool. Agora
desacoplado (default 3) + timeout por tier (local 1800s / cloud 600s). - Tool-results cortados 8K/1.5K flat: o orçamento agora ESCALA com a janela do modelo (15%/30% do
contexto, floor 8K/16K, cap 100K/200K). - Telegram dividia antes de formatar: resposta >4096 chars perdia toda a formatação HTML. Agora
renderiza o HTML completo primeiro, divide por unidades UTF-16 com tags balanceadas entre cortes. - STT/link-summary bloqueavam o poll loop de todos os chats: agora rodam fora do poll loop
compartilhado (spawn por chat) + cap de fila 32. - MEMORY.md poluído por auto-write mecânico: só
remember/remember_user/reflectescrevem lá
agora, com gate de durabilidade e dedup near-duplicate por Jaccard. - Hooks builtin sem bit +x:
security-guidance/disk-cleanupvetavam toda tool com exit 126
silencioso; corrigido o bit no pacote. okami runalucinava tool-calls: sem tools disponíveis, o modelo fraco inventava chamadas
inexistentes; agora avisa explicitamente.- Streaming × rail nativo em conflito:
streaming_enabledagora consultanative_supportedantes do
tier. - E2E real (minimax), antes → depois: BLOCKED/alucinando/vazamento de
<think>→ COMPLETE com
verificação mecânica (sha256), formatação íntegra no Telegram,tokens_in6.4-7K → 2.7K por turno.
🖥️ Portabilidade Windows/Mac/Linux — 14 breaks reais corrigidos
Auditoria por 7 finders + triagem rigorosa (51 candidatos → 14 confirmados). Novo
okami/core/platform_compat.py centraliza o que difere entre POSIX e Windows.
- Crashes no Windows:
os.getpgid/start_new_session=True/os.mkfifocorrigidos via
terminate_pid()+popen_session_kwargs(). - Segredo/chave exposto:
os.chmod(0o600)é no-op no Windows (NTFS=ACL) —secure_chmod()cobre
POSIX chmod+verificação e Windows ACL via icacls. - VPS headless: Playwright
headless=True; backend pyautogui poda em Linux sem$DISPLAY; serviço
systemd funciona sem login interativo. - Encoding/paths: pidfiles com
encoding='utf-8'explícito; socket de controle usa
tempfile.gettempdir()em vez de/tmphardcoded.
🌐 Provisão remota VPS-first
O agente assumia credenciais herdadas do host (gh/git/ssh) — errado numa VPS 24/7 sem login herdado.
Agora ele monta o próprio acesso:
okami/integrations/provision.py: gera chave ed25519, importa chave privada, configura GitHub por
token ou SSH, com segredo que nunca volta no retorno de tool.- Tools
ssh_identityegit_auth(approval-gated). - Skill nativa
acesso-vpsguia o procedimento ponta-a-ponta.
🤖 Multi-agente supervisionado
Suporte a N agentes, cada um com gateway/cron/heartbeat/tasks próprios:
okami/gateway/supervisor.py: sobe cada agente como processo próprio, registro durável
anti-PID-reuse, cross-plataforma.okami gateway --agent <id>roda o gateway de um agente isolado.- CLI
okami agent up | down | status | supervise, incluindo watchdog com auto-restart.
🎙️ Voz embutida + recursos nativos
- STT (Whisper) ligado por padrão com auto-install de faster-whisper/edge-tts na primeira vez.
- Plugins nativos (security-guidance, disk-cleanup, usage-observer) viajam no
pip install. - Skills nativas embarcadas (criar-pull-request, depuracao-sistematica, pesquisa-web).
🧱 Subagentes em segundo plano
spawnaceitabackground=true: roda numa thread daemon e retorna na hora, avisando no chat de
origem quando termina.spawn_jobs(list|status|result|await): o agente pai lê o resultado de um background spawn de
volta — fecha o loop de delegação.- Cap de concorrência (Semaphore, default 3) com fallback síncrono se a fila estiver cheia.
- GC de jobs antigos (keep=50 + TTL 7d); reconcile no boot marca jobs órfãos como
interruptedapós
restart do gateway.
🌐 WebFetch resiliente + fixes de robustez
- User-Agent de navegador real resolve a classe "403 só por causa do UA".
smart_fetch: fallback automático para Playwright quando o fetch estático bate em 403/Cloudflare.- MCP stdio anti-zumbi: mata o subprocesso no timeout/EOF.
- Tool
send_message: entrega direta de texto por um canal sem rodar o LLM.
💬 Fix: formatação do Telegram
Tags HTML cruas emitidas pelo modelo viravam texto literal no Telegram. Corrigido com 3 mudanças: dica de
plataforma passa a pedir Markdown, to_html tolera HTML cru do modelo, e o fallback vira texto puro
limpo em vez de markup malformado.
⚡ Harness mais rápido
Streaming token-a-token ligado por default para tier local/weak — a primeira resposta passa a aparecer em
segundos em vez de minutos, resolvendo a maior causa de latência percebida em modelo local.
🖥️ Computer-use embutido
Nova tool computer_use (screenshot/click/type/key/scroll) com 3 camadas de segurança: desligada por
padrão, hardline-block contra combos destrutivos, e approval-gated por ação.
📡 Canais: 5 → 14 plataformas
Novos canais bidirecionais: DingTalk, WeCom, QQBot, WhatsApp, Signal, Matrix, SMS, BlueBubbles, Weixin —
todos com tool-policy por superfície e deny-by-default.
🧠 Mixture-of-Agents, Google Code Assist e LSP
- Mixture-of-Agents (
okami moa): roteia problemas difíceis pelos providers já configurados em
paralelo e sintetiza a melhor resposta. - Google Code Assist (
okami gemini login|status|quota): acesso ao tier grátis de Gemini via
cloudcode-pa, sem billing. - Cliente LSP persistente: language server fica vivo entre edições, fechando o cold-start de ~8s por
edição do pyright.
🐛 Caça adversarial de bugs
Múltiplas rodadas de revisão adversarial (workflows de dezenas de subagentes, com critério de ≥2/3
céticos confirmando cada achado) encontraram e corrigiram dezenas de defeitos reais ao longo do
desenvolvimento desta release — de um SSRF real a um path-injection, dead-code perigoso, race conditions
de roteamento e webhooks mortos em produção. Detalhe completo no CHANGELOG.
✅ Release verification
- 3.364 testes passando (
uv run pytest -q), subindo de 2.408. - Reprodução local:
uv sync --frozen uv run pytest -q uv run ruff check okami tests uv run bandit -c pyproject.toml -r okami -q uv run okami policy check --strict
🚀 Instalação / upgrade
# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex
# upgrade de instalação existente
uv tool upgrade okami-agent # ou: pip install -U okami-agent
okami setup # configura em 2-3 cliques
okami doctor # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat # conversa no terminal📄 License
MIT (LICENSE) © 2026 OkamiOps.
🔗 Links
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 📋 Changelog completo: CHANGELOG.md