LA CAPA DE ACEPTACIÓN PARA EL TRABAJO DE AGENTES A ESCALA
Los agentes envían trabajo más rápido de lo que cualquier equipo puede revisar. El crítico de SeaOtter puntúa cada artefacto y envía correcciones hasta que pase su política — agente↔crítico, a velocidad de máquina.
A ESCALA DE AGENTES
Un agente envía trabajo para calificar. Se enruta a un pase rápido one-shot — o a una comprobación agéntica profunda que ejecuta el trabajo en un sandbox y lo sonda. Un modelo crítico hostil decide, y usted paga por el cómputo que consumió. Luego aleje la vista: miles de agentes, calificados en paralelo, síncrono o asíncrono.
RETROALIMENTACIÓN LOCALIZADA
El crítico no solo dice que algo está mal. Localiza el problema para que el agente pueda revisar la línea, página, diapositiva, celda, fotograma o marca de tiempo exacta que falló.
"Puede haber un problema en algún lugar de este artefacto."
hallucinated_api · alto
self.tasks.add_item(task)add_item no es un método válido en list, por lo que esto falla en tiempo de ejecución. Se espera self.tasks.append(task).
Una lectura temprana, verificada por holdout, de la capacidad de nuestro crítico para fijar el tramo exacto y nombrar el archivo. La detección sigue en entrenamiento activo; la afirmación aquí es sobre la calidad de la localización, no sobre la crítica genérica.
ENVIAR → CALIFICAR
Un agente hace POST del trabajo que acaba de producir y SeaOtter lo califica contra su política de aceptación. Las comprobaciones pequeñas y rápidas devuelven el veredicto inline. Las más pesadas devuelven un id de job que el agente sondea, transmite o recibe por webhook — así una revisión larga nunca bloquea al agente que la solicitó.
PARA PERSONAS
Envíe trabajo al buzón de SeaOtter y reciba una respuesta con OtterScore calificado, o pégrelo en la web y califíquelo en su navegador. No se requiere agente.
PARA AGENTES
Cablee cualquier agente por HTTP o MCP para que califique su propia salida en el ciclo — misma política, mismo OtterScore, a velocidad de máquina. El inicio rápido de 60 segundos está justo abajo.
SÍNCRONO
Haga POST del trabajo, mantenga la conexión y reciba el veredicto de OtterScore — banda, fallos, anclas, mejoras — en la misma respuesta. Ideal para una comprobación de una sola pasada dentro del ciclo interno de un agente, donde el agente necesita la respuesta antes de su siguiente paso.
POST /api/v1/eval/score → 200 { band, flaws[], upgrades[] }
ASÍNCRONO
Haga POST del trabajo, obtenga un id de job de inmediato y luego sondee el job, suscríbase al stream del resultado o registre un webhook. Ideal para una comprobación agéntica que ejecuta el trabajo en un sandbox en varias pasadas — el agente productor sigue y se le llama cuando llega el veredicto.
POST /api/v1/eval/jobs → 202 { job_id } · poll · stream (SSE) · webhook
Sync · una pasada
Una lectura hostil, devuelta inline. Barata y con tarifa plana.
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":[...] }Async · agéntico
El crítico ejecuta el trabajo en un sandbox y lo sonda en varias pasadas.
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 # sondear, o transmitir, o esperar el webhookMisma política, mismo OtterScore, mismo registro de auditoría firmado — cualquiera que sea el transporte que elija el agente.
PARA AGENTES · INICIO RÁPIDO MCP
Tres pasos: emita una clave, añada un servidor MCP y su agente llamará a otter_score / otter_iterate en su propio ciclo — mismo OtterScore, misma política de aceptación, a velocidad de máquina. El crítico califica; su agente revisa contra los fallos hasta que la banda despeje. Este es el ciclo que acaba de ver en la flota arriba: cada artefacto marcado (route_to_fix, el arco ámbar) reingresa en la puerta vía otter_iterate y solo se envía cuando ready_to_ship es true. Sin humanos en el ciclo interno — la firma nominal es la última puerta, no la única.
Un usuario de la organización con sesión iniciada emite la clave de evaluación del agente una vez. El secreto sk-otter-… se muestra exactamente una vez; entréguelo al agente.
Agregue un servidor otterloop en .mcp.json (Claude / Cursor) o config.toml (Codex). El agente obtiene herramientas de crítico de solo lectura que puede aprobar automáticamente.
El agente envía trabajo, lee fallos anclados, revisa y vuelve a enviar — iterando mientras ready_to_ship sea false. Sobrevivir al crítico ES el producto.
1 — Registrar
POST /api/v1/agent-keys con un JWT de usuario con sesión iniciada. El secreto se devuelve una vez — o haga clic en "Generate eval API key" en la consola de desarrollador.
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` al agente como OTTERLOOP_API_KEY.2 — Añadir el servidor MCP
.mcp.json (Claude / Cursor) — Codex usa [mcp_servers.otterloop] en config.toml. Instale una vez: pip install "otterloop[mcp]". Base de prod: 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 — Puntuar e iterar
El agente ejecuta enviar → fallos → revisar → reenviar íntegramente por MCP. Trate el veredicto como autoritativo — NO se califique a sí mismo.
# envíe su trabajo -> veredicto autoritativo
v = otter_score(
work="...the artifact your agent produced...",
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[], luego reenvíe la MISMA ejecución
d = otter_iterate(
run_id=v["run_id"],
work="...revised draft addressing the flaws...",
prompt="addressed sourcing + tone")
# -> { run_id, verdict:{band:"ship",...},
# delta:{resolved_flaws,new_flaws,persisted_flaws,
# score_change:+18.0}, ready_to_ship:true }
# siga iterando mientras ready_to_ship sea false.ITERAR → CONVERGER
Lo que devuelve otter_iterate — la misma convergencia route_to_fix → ship que la flota anima arriba, congelada como una delta legible.
resolved_flaws ↓ 2 · score_change ↑ +18.0 · ready_to_ship → true
Equivalente puramente HTTP (sin MCP): POST /api/v1/eval/runs → { run_id, first_iteration.critic_verdict }, luego POST /api/v1/eval/runs/{run_id}/iterate { "decision":"re_prompt", "new_artifact_parts":[…] } → { verdict, delta }. Una caída del crítico falla en CERRADO (band:quarantine) — nunca un aprobado silencioso.
DOS MODOS DE VERIFICACIÓN
No toda salida necesita el mismo escrutinio. Una comprobación de una sola pasada es un único pase de crítico hostil — rápida, de bajo cómputo, devuelta inline. Una comprobación agéntica ejecuta el trabajo en un sandbox desechable con acceso a internet y lo sonda en múltiples pasadas — más lenta, más cómputo, devuelta asíncrona. Enrute el trabajo barato a una sola pasada y el de alto riesgo a agéntico, bajo la misma política.
| One-shotun único pase hostil | Agenticsandbox, multipase | |
|---|---|---|
| Qué hace el crítico | Lee el artefacto, la política, el prompt y las referencias en una pasada. | Ejecuta el trabajo en un sandbox desechable y lo sonda en múltiples pasadas. |
| Latencia | Inline — veredicto en la respuesta. | Asíncrono — id de job, luego sondeo, stream o webhook. |
| Cómputo | Bajo y predecible. | Más alto — escala con las pasadas y el tiempo de sandbox. |
| Mejor para | Comprobaciones internas de ciclo, borradores de alto volumen, puertas rápidas. | Código que debe ejecutarse, afirmaciones que deben reproducirse, trabajo de alto impacto. |
| Facturación | Barata, tarifa plana por comprobación. | Medida por cómputo y tiempo de sandbox. |
Ambos modos devuelven el mismo formato de veredicto de OtterScore y escriben el mismo registro de auditoría firmado.
PRECIOS BASADOS EN USO
Se le cobra por la calificación que realmente ejecuta, no por asientos. Una comprobación de una sola pasada es barata y plana; una comprobación agéntica se mide por el cómputo y el tiempo de sandbox que requiere. Eso hace económico calificar cada salida — y toda la flota — en lugar de racionar la revisión a una muestra.
COMPROBACIÓN ONE-SHOT
Barata, tarifa plana
por comprobación, plana
Un único pase de crítico hostil, devuelto inline. Precio lo bastante bajo como para estar en el ciclo interno de cada agente y calificar borradores de alto volumen.
COMPROBACIÓN AGENTIC
Medida por cómputo
medida por cómputo + tiempo de sandbox
Una revisión en sandbox y multipase. Usted paga por las pasadas y el tiempo de sandbox que el trabajo realmente necesita — resérvela para la salida de alto riesgo donde compensa su coste.
El despliegue Enterprise permanece sombra → forzar → gestionado; la calificación basada en uso mide el trabajo subyacente. Construcción £-concreta disponible bajo solicitud.
INFRA DE OTTERLOOP
Cualquier agente emite trabajo: código, texto, imagen, deck, hoja, video o una trayectoria completa.
SeaOtter lo califica contra la rúbrica correcta y el listón condicionado por la organización.
El veredicto devuelve fallos, mejoras y anclas a las que el agente puede apuntar directamente.
El agente reescribe el artefacto o el siguiente paso usando el rechazo del crítico.
El ciclo se detiene solo cuando la banda supera la puerta y se escribe la evidencia de auditoría.
MCP
Incluya en `.mcp.json` o `config.toml` para Claude, Codex, Cursor o un runtime personalizado.
{ "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
Cualquier runtime que hable HTTP puede calificar una vez o permanecer en el ciclo.
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
Una llamada de ciclo impulsa producir → calificar → revisar hasta que el crítico diga enviar.
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")