A CAMADA DE ACEITAÇÃO PARA TRABALHO DE AGENTES EM ESCALA
Agentes entregam trabalho mais rápido do que qualquer equipe consegue revisar. O crítico da SeaOtter pontua cada artefato e envia correções até cumprir sua política — agente↔crítico, em velocidade de máquina.
EM ESCALA DE AGENTES
Um agente envia trabalho para avaliação. Ele é roteado para uma passada rápida one-shot — ou para uma verificação agêntica profunda que executa o trabalho em um sandbox e o investiga. Um modelo de crítico hostil decide, e você paga pelo cômputo utilizado. Depois afaste o zoom: milhares de agentes, avaliados em paralelo, síncrono ou assíncrono.
FEEDBACK LOCALIZADO
O crítico não apenas diz que algo está errado. Ele localiza o problema para que o agente revise a linha, página, slide, célula, quadro ou timestamp exato que falhou.
"Pode haver um problema em algum lugar neste artefato."
hallucinated_api · alta
self.tasks.add_item(task)add_item não é um método válido de list, então isso lança em runtime. Esperado: self.tasks.append(task).
Uma leitura inicial, verificada por holdout, da capacidade do nosso crítico de fixar o trecho exato e nomear o arquivo. A detecção ainda está em treinamento ativo; a afirmação aqui é sobre a qualidade da localização, não crítica genérica.
ENVIAR → AVALIAR
Um agente faz POST do trabalho recém-produzido e a SeaOtter avalia contra sua política de aceitação. Verificações pequenas e rápidas retornam o veredicto inline. Verificações mais pesadas retornam um job id que o agente consulta, transmite ou recebe por webhook — assim uma revisão longa nunca bloqueia o agente que a solicitou.
PARA PESSOAS
Envie trabalho para a caixa de entrada da SeaOtter e receba um OtterScore avaliado, ou cole na web e avalie no seu navegador. Nenhum agente necessário.
PARA AGENTES
Conecte qualquer agente via HTTP ou MCP para que ele avalie sua própria saída no loop — mesma política, mesmo OtterScore, em velocidade de máquina. O início rápido de 60 segundos está logo abaixo.
SÍNCRONO
Faça POST do trabalho, mantenha a conexão e receba o veredicto do OtterScore — faixa, falhas, âncoras, melhorias — na mesma resposta. Ideal para uma verificação única dentro do ciclo interno do agente, quando ele precisa da resposta antes do próximo passo.
POST /api/v1/eval/score → 200 { band, flaws[], upgrades[] }
ASSÍNCRONO
Faça POST do trabalho, obtenha um job id imediatamente e então consulte o job, assine o stream de resultados ou registre um webhook. Ideal para uma verificação agêntica que executa o trabalho em um sandbox por múltiplas passagens — o agente produtor segue e é chamado de volta quando o veredicto chegar.
POST /api/v1/eval/jobs → 202 { job_id } · poll · stream (SSE) · webhook
Síncrono · one-shot
Uma passada de crítico hostil, retornada inline. Barata e preço fixo.
curl -s https://dev-api.seaotter.ai/api/v1/eval/score \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "mode":"one_shot", "modality":"text",
"policy_id":"acme-prod-acceptance",
"artifact_parts":[{"mime_type":"text/plain","text":"..."}] }'
# 200 { "band":"route_to_fix", "flaws":[...], "upgrades":[...] }Assíncrono · agêntico
O crítico executa o trabalho em um sandbox e o investiga por múltiplas passagens.
POST /api/v1/eval/jobs
{ "mode":"agentic", "modality":"code",
"policy_id":"acme-prod-acceptance",
"artifact_ref":"gs://...", "max_passes":6,
"webhook":"https://acme.internal/otter-callback" }
# 202 { "job_id":"job_8f21", "status":"running" }
GET /api/v1/eval/jobs/job_8f21 # poll, ou stream, ou aguarde o webhookMesma política, mesmo OtterScore, mesmo registro de auditoria assinado — qualquer que seja o transporte escolhido pelo agente.
PARA AGENTES · INÍCIO RÁPIDO MCP
Três passos: gere uma chave, adicione um servidor MCP, então seu agente chama otter_score / otter_iterate no próprio loop — mesmo OtterScore, mesma política de aceitação, em velocidade de máquina. O crítico avalia; seu agente revisa frente às falhas até a faixa liberar. Este é o loop que você acabou de ver na frota acima: todo artefato sinalizado (route_to_fix, o arco âmbar) reentra no gate via otter_iterate e só libera quando ready_to_ship for true. Sem humano no ciclo interno — a assinatura nomeada é o último gate, não o único.
Um usuário autenticado da organização gera a chave de avaliação do agente uma única vez. O segredo sk-otter-… é exibido exatamente uma vez; entregue-o ao agente.
Inclua um servidor otterloop em .mcp.json (Claude / Cursor) ou config.toml (Codex). O agente recebe ferramentas de crítico somente leitura que pode aprovar automaticamente.
O agente envia trabalho, lê falhas ancoradas, revisa e reenvia — iterando enquanto ready_to_ship for false. Sobreviver ao crítico É o produto.
1 — Registrar
POST /api/v1/agent-keys com um JWT de usuário autenticado. O segredo é retornado uma vez — ou clique em "Generate eval API key" no console do desenvolvedor.
curl -s -X POST https://dev-api.seaotter.ai/api/v1/agent-keys \
-H "Authorization: Bearer $SEAOTTER_USER_JWT" \
-H 'Content-Type: application/json' \
-d '{"name":"my-agent"}'
# -> { "id":"...", "key":"sk-otter-...",
# "key_prefix":"sk-otter-abcde", "created_at":"..." }
# Entregue `key` ao agente como OTTERLOOP_API_KEY.2 — Adicionar o servidor MCP
.mcp.json (Claude / Cursor) — Codex usa [mcp_servers.otterloop] em config.toml. Instale uma vez: pip install "otterloop[mcp]". Base de produção: https://api.seaotter.ai.
{
"mcpServers": {
"otterloop": {
"command": "python",
"args": ["-m", "otterloop.mcp_server"],
"env": {
"OTTERLOOP_API_URL": "https://dev-api.seaotter.ai",
"OTTERLOOP_API_KEY": "sk-otter-...",
"OTTERLOOP_POLICY_ID": "enterprise-default"
}
}
}
}
# tools: otter_list_policies · otter_score · otter_iterate
# otter_score_workflow · otter_get_feedback_artifact3 — Pontuar e iterar
O agente executa enviar → falhas → revisar → reenviar inteiramente via MCP. Trate o veredicto como autoritativo — NÃO se avalie sozinho.
# envie seu trabalho -> veredicto autoritativo
v = otter_score(
work="...o artefato que seu agente produziu...",
modality="text",
prompt="Draft the Q3 incident postmortem",
policy_id="enterprise-default")
# -> { run_id, score, band:"route_to_fix",
# flaws:[{criterion,severity,detail,anchor}],
# upgrades:[...], ready_to_ship:false }
# revise frente a flaws[]/upgrades[], então reenvie o MESMO run
d = otter_iterate(
run_id=v["run_id"],
work="...rascunho revisado tratando as falhas...",
prompt="addressed sourcing + tone")
# -> { run_id, verdict:{band:"ship",...},
# delta:{resolved_flaws,new_flaws,persisted_flaws,
# score_change:+18.0}, ready_to_ship:true }
# continue iterando enquanto ready_to_ship for false.ITERAR → CONVERGIR
O que otter_iterate retorna — a mesma convergência route_to_fix → ship que a frota anima acima, congelada como um delta legível.
resolved_flaws ↓ 2 · score_change ↑ +18.0 · ready_to_ship → true
Equivalente puro HTTP (sem MCP): POST /api/v1/eval/runs → { run_id, first_iteration.critic_verdict }, então POST /api/v1/eval/runs/{run_id}/iterate { "decision":"re_prompt", "new_artifact_parts":[…] } → { verdict, delta }. Uma indisponibilidade do crítico falha FECHADO (band:quarantine) — nunca passa silenciosamente.
DOIS MODOS DE VERIFICAÇÃO
Nem toda saída precisa do mesmo escrutínio. Uma verificação one-shot é uma passada única do crítico hostil — rápida, baixo cômputo, retornada inline. Uma verificação agêntica executa o trabalho em um sandbox descartável, com acesso à internet, e o investiga por múltiplas passagens — mais lenta, mais cômputo, retornada de forma assíncrona. Direcione trabalho barato para one-shot e trabalho de alto impacto para agêntico, sob a mesma política.
| One-shotpassada única e hostil | Agênticosandbox, múltiplas passagens | |
|---|---|---|
| O que o crítico faz | Lê o artefato, a política, o prompt e as referências em uma única passada. | Executa o trabalho em um sandbox descartável e o investiga por múltiplas passagens. |
| Latência | Inline — veredicto na resposta. | Assíncrono — job id, depois polling, streaming ou webhook. |
| Cômputo | Baixo e previsível. | Mais alto — escala com as passagens e o tempo de sandbox. |
| Melhor para | Verificações no ciclo interno, rascunhos em alto volume, gates rápidos. | Código que precisa rodar, afirmações que precisam ser reproduzidas, trabalho com alto raio de impacto. |
| Cobrança | Barata, taxa fixa por verificação. | Pelo cômputo e tempo de sandbox. |
Ambos os modos retornam o mesmo formato de veredicto do OtterScore e gravam o mesmo registro de auditoria assinado.
PREÇOS BASEADOS EM USO
Você paga pela avaliação que realmente executar, não por número de assentos. Uma verificação one-shot é barata e de preço fixo; uma verificação agêntica é cobrada pelo cômputo e tempo de sandbox necessários. É isso que torna econômico avaliar toda a saída — e toda a frota — em vez de racionar a revisão para uma amostra.
VERIFICAÇÃO ONE-SHOT
Barata, preço fixo
por verificação, preço fixo
Uma passada única do crítico hostil, retornada inline. Precificada para estar no ciclo interno de todo agente e avaliar rascunhos em alto volume.
VERIFICAÇÃO AGÊNTICA
Por cômputo
por cômputo + tempo de sandbox
Uma revisão em sandbox, de múltiplas passagens. Você paga pelas passagens e pelo tempo de sandbox que o trabalho realmente exige — reserve para saídas de alto impacto, onde se paga.
A implantação Enterprise começa em sombra → aplica → gerenciada; a avaliação baseada em uso mede o trabalho subjacente. Uma composição de £ concreta está disponível mediante solicitação.
OTTERLOOP INFRA
Qualquer agente emite trabalho: código, texto, imagem, deck, planilha, vídeo ou uma trajetória completa.
SeaOtter avalia contra a rubrica correta e a barra condicionada à organização.
O veredicto retorna falhas, melhorias e âncoras que o agente pode atacar diretamente.
O agente reescreve o artefato ou o próximo passo usando o contraponto do crítico.
O ciclo só para quando a faixa cumpre o gate e a evidência de auditoria é gravada.
MCP
Inclua em `.mcp.json` ou `config.toml` para Claude, Codex, Cursor ou um runtime customizado.
{ "mcpServers": { "otterloop": {
"command": "python", "args": ["-m", "otterloop.mcp_server"],
"env": { "OTTERLOOP_API_URL": "https://dev-api.seaotter.ai",
"OTTERLOOP_API_KEY": "sk-otter-...",
"OTTERLOOP_POLICY_ID": "acme-prod-acceptance" } } } }curl
Qualquer runtime que fale HTTP pode avaliar uma vez ou permanecer no loop.
curl -s https://dev-api.seaotter.ai/api/v1/eval/feedback \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "modality":"text", "policy_id":"acme-prod-acceptance", "locale":"ja",
"prompt":"Draft the Q3 incident postmortem",
"artifact_parts":[{"mime_type":"text/plain","text":"..."}],
"return_feedback_artifacts": true }'Python SDK
Uma chamada de loop conduz produzir → avaliar → revisar até o crítico dizer para liberar.
from otterloop import OtterLoopClient otter = OtterLoopClient(policy_id="acme-prod-acceptance", locale="ja") final = otter.loop(produce=lambda feedback: my_agent.revise(feedback), work=my_agent.first_draft(), modality="document", references=["file://brand-guide.pdf", "file://gold-postmortem.md"], max_rounds=5, target_band="ship")