Skip to main content
본문으로 건너뛰기
SeaOtter
제출빠른 시작요금제문서라이브 데모루브릭
액세스 요청

대규모 에이전트 업무의 승인 레이어

에이전트는 결과물을
누구보다 빠르게
만듭니다.

에이전트는 어떤 팀보다 빠르게 결과물을 배송합니다. SeaOtter의 크리틱은 모든 산출물을 점수화하고, 귀사 정책을 통과할 때까지 수정 피드백을 되돌려 보냅니다 — 에이전트↔크리틱, 기계 속도로.

라이브 데모 사용작동 방식 보기 ↓
에이전트용API 키 + MCP 받기등록 후 MCP 또는 HTTP로 연결하고, 작업을 프로그램적으로 점수화하고 반복하십시오.→사람 사용자용검토를 위해 작업 제출에이전트의 결과물을 업로드하면 OtterScore와 함께 수정해야 할 결함을 받습니다.→
문서 읽기 →
  • 통과
  • 재작업
  • 실패

사람 검토가 루프였습니다. 에이전트 스케일에선 병목입니다.

에이전트 스케일에서

적대적 크리틱 모델이 작업을 읽고 — 결정합니다.

에이전트가 채점을 위해 작업을 제출합니다. 빠른 단발 패스로 라우팅되거나 — 샌드박스에서 작업을 실행하며 탐색하는 깊은 에이전트형 검사로 라우팅됩니다. 적대적 크리틱 모델이 결정하고, 소요된 연산량에 대해 비용을 지불합니다. 그다음 줌 아웃: 수천 개의 에이전트가 병렬로 채점됩니다, 동기 또는 비동기.

12,480건의 에이전트 작업OtterScore — 적대적 크리틱 에이전트가 병렬로 검토
9,734배포1,997수정 경로749차단
…그리고 수천 건이 더, 실시간으로 선별됨
배포수정 경로차단

OtterScore · 적대적 크리틱 에이전트검토 중

Feature PR → tests → migration

워크플로 체인

  1. Spec the change0.84
  2. Implement query0.12
  3. Write tests0.79
  4. Add migration0.81

포착된 결함`f"SELECT * FROM users WHERE id = {uid}"` — unparameterised SQL. SQL-injection sink. Blocked under security policy.

판정차단0.16

아무 작업이나 클릭해 살펴보십시오 — 또는 ← → 로 이동, Esc로 닫기

현지화된 피드백

위치를 특정할 수 없는 결함은 고칠 수 없는 결함입니다.
SeaOtter는 정확한 구간을 고정하고 파일명을 명시합니다.

크리틱은 단지 잘못되었다고만 말하지 않습니다. 에이전트가 실패한 줄, 페이지, 슬라이드, 셀, 프레임, 타임스탬프를 정확히 수정할 수 있도록 이슈를 로컬라이즈합니다.

background.py · Python
28def add_task(self, func, *args, **kwargs):29 task = BackgroundTask(func, *args, **kwargs)30 self.tasks.add_item(task)
30행
encode/starlette · BSD-3-Clause · public OSS 스크레이프
위치 없는 플래그unlocated

"이 산출물 어딘가에 문제가 있을 수 있습니다."

구간 없음. 파일 없음. 라우팅 불가.

SeaOtter 크리틱30행

hallucinated_api · 높음

self.tasks.add_item(task)

add_item은 list의 유효한 메서드가 아니므로 런타임에서 예외가 발생합니다. 기대값은 self.tasks.append(task)입니다.

로컬라이제이션 F1 — 결함을 정확히 지정하는가?

초기 평가 · n=256 · 홀드아웃 검증
SeaOtter 크리틱
0.218

크리틱이 정확한 구간을 고정하고 파일명을 지정하는 능력에 대한 초기(홀드아웃 검증) 지표입니다. 탐지는 여전히 학습 중이며, 여기서 주장하는 바는 일반적 비평이 아니라 위치 품질입니다.

제출 → 채점

작업을 제출하고 채점을 받으십시오 — 동기 또는 비동기.

에이전트가 방금 생성한 작업을 POST로 제출하면 SeaOtter가 승인 정책에 따라 채점합니다. 작고 빠른 검사는 판정을 인라인으로 반환합니다. 더 무거운 검사는 에이전트가 폴링/스트리밍/웹훅으로 받을 잡 ID를 반환합니다 — 긴 검토가 요청 에이전트를 막지 않도록.

사람 사용자용

사람 — 전달하거나 붙여넣기

작업을 SeaOtter 수신함으로 보내면 채점된 OtterScore 회신을 받거나, 웹에 붙여넣어 브라우저에서 채점할 수 있습니다. 에이전트가 필요 없습니다.

웹에서 제출SeaOtter 수신함으로 이메일 보내기

에이전트용

에이전트 — API & MCP

어떤 에이전트든 HTTP 또는 MCP로 연결해 루프 안에서 자신의 출력을 채점하게 하십시오 — 동일한 정책, 동일한 OtterScore, 기계 속도로. 60초 퀵스타트가 바로 아래에 있습니다.

개발자 콘솔 열기

동기식

제출하고 판정을 기다리기

작업을 POST로 보내고 연결을 유지한 채 OtterScore 판정 — 밴드, 결함, 앵커, 업그레이드 — 을 같은 응답으로 받습니다. 에이전트 내부 루프에서 다음 단계 전 답이 필요한 단발 검사에 적합합니다.

POST /api/v1/eval/score → 200 { band, flaws[], upgrades[] }

비동기식

제출하고 잡 ID를 받아 나중에 수집

작업을 POST로 보내면 즉시 잡 ID를 받습니다. 이후 잡을 폴링하거나, 결과 스트림에 구독하거나, 웹훅을 등록하십시오. 여러 패스로 샌드박스에서 작업을 실행하는 에이전트형 검사에 적합합니다 — 생성 에이전트는 진행하고, 판정이 도착하면 콜백됩니다.

POST /api/v1/eval/jobs → 202 { job_id } · poll · stream (SSE) · webhook

동기 · 단발

한 번의 적대적 크리틱 패스, 인라인으로 반환. 저렴하고 고정 요금.

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":[...] }

비동기 · 에이전트형

크리틱이 샌드박스에서 작업을 실행하며 여러 패스로 탐색합니다.

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, or stream, or await the webhook

에이전트가 어떤 전송을 선택하든 — 동일한 정책, 동일한 OtterScore, 동일한 서명된 감사 기록입니다.

에이전트용 · MCP 퀵스타트

60초 만에 적대적 크리틱에 에이전트를 연결하십시오.

세 단계: 키 발급, MCP 서버 추가, 그다음 에이전트가 루프에서 otter_score / otter_iterate를 호출합니다 — 동일한 OtterScore, 동일한 승인 정책, 기계 속도로. 크리틱이 채점하고; 밴드가 통과할 때까지 에이전트가 결함에 맞춰 반복합니다. 위 플릿에서 본 루프와 같습니다: 플래그된 모든 산출물(route_to_fix, 호박색 아크)은 otter_iterate로 게이트를 재진입하고, ready_to_ship가 true가 될 때에만 배송됩니다. 내부 사이클에는 사람이 없습니다 — 명시적 서명은 마지막 게이트이지 유일한 게이트가 아닙니다.

01

등록

서명된 조직 사용자 1명이 에이전트의 평가 키를 발급합니다. sk-otter-… 시크릿은 단 한 번만 표시됩니다; 에이전트에 전달하십시오.

02

MCP 서버 추가

otterloop 서버 1개를 .mcp.json(Claude / Cursor) 또는 config.toml(Codex)에 추가하십시오. 에이전트는 읽기 전용 크리틱 툴을 얻고 자동 승인할 수 있습니다.

03

채점 및 반복

에이전트가 작업을 제출하고, 앵커가 달린 결함을 읽고, 수정 후 재제출합니다 — ready_to_ship가 false인 동안 루프를 계속합니다. 크리틱을 통과하는 것이 곧 제품입니다.

1 — 등록

서명된 사용자 JWT로 POST /api/v1/agent-keys. 시크릿은 한 번 반환됩니다 — 또는 개발자 콘솔에서 'Generate eval API key'를 클릭하십시오.

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":"..." }
# Hand `key` to the agent as OTTERLOOP_API_KEY.

2 — MCP 서버 추가

.mcp.json(Claude / Cursor) — Codex는 config.toml의 [mcp_servers.otterloop] 사용. 1회 설치: pip install "otterloop[mcp]". 운영 기본 URL: 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_artifact

3 — 채점 및 반복

에이전트가 MCP만으로 제출 → 결함 → 수정 → 재제출을 수행합니다. 판정을 권위적으로 다루십시오 — 자가 채점 금지.

# submit your work -> authoritative verdict
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 against flaws[]/upgrades[], then re-submit the SAME run
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 }

# keep iterating while ready_to_ship is false.

반복 → 수렴

otter_iterate가 반환하는 내용 — 위 플릿 애니메이션의 route_to_fix → ship 수렴을 읽기 쉬운 델타로 고정.

route_to_fix→ship

resolved_flaws ↓ 2 · score_change ↑ +18.0 · ready_to_ship → true

순수 HTTP 동등(무 MCP): POST /api/v1/eval/runs → { run_id, first_iteration.critic_verdict }, 이후 POST /api/v1/eval/runs/{run_id}/iterate { "decision":"re_prompt", "new_artifact_parts":[…] } → { verdict, delta }. 크리틱 장애는 CLOSED로 실패(band:quarantine) — 침묵 통과는 없습니다.

평가 키 발급라이브 데모 사용

두 가지 검사 모드

단발 또는 에이전트형. 깊이는 귀하가 결정합니다.

모든 출력이 같은 수준의 검증을 필요로 하진 않습니다. 단발 검사는 한 번의 적대적 크리틱 패스 — 빠르고, 계산 자원 적으며, 인라인 반환입니다. 에이전트형 검사는 인터넷 사용 가능한 1회용 샌드박스에서 여러 패스로 작업을 탐색 — 느리고, 더 많은 계산 자원을 쓰며, 비동기 반환입니다. 동일한 정책에서 값싼 작업은 단발로, 고위험 작업은 에이전트형으로 라우팅하십시오.

단발단일 적대 패스에이전트형샌드박스, 다중 패스
크리틱이 하는 일한 번의 패스로 산출물, 정책, 프롬프트, 레퍼런스를 읽습니다.1회용 샌드박스에서 작업을 실행하며 여러 패스로 탐색합니다.
지연인라인 — 응답에 판정 포함.비동기 — 잡 ID 후 폴링, 스트리밍, 또는 웹훅.
연산량낮고 예측 가능.더 높음 — 패스 수와 샌드박스 시간에 따라 증가.
권장 사용내부 루프 검사, 대량 초안, 빠른 게이트.실행이 필요한 코드, 재현이 필요한 주장, 고폭발 반경 작업.
과금저렴, 검사당 고정.연산량과 샌드박스 시간 기준 종량제.

두 모드 모두 동일한 OtterScore 판정 형태를 반환하고 동일한 서명된 감사 기록을 작성합니다.

사용량 기반 과금

수행한 작업에 비용을 지불하십시오.

좌석 수가 아니라 실제로 수행한 채점에 대해 비용이 청구됩니다. 단발 검사는 저렴하고 고정 요금이며, 에이전트형 검사는 소요된 연산량과 샌드박스 시간에 따라 종량 과금됩니다. 덕분에 모든 출력 — 그리고 전체 플릿 — 을 채점하는 것이 표본만 검토하는 것보다 경제적입니다.

단발 검사

저렴, 고정 요금

검사당, 고정

한 번의 적대적 크리틱 패스, 인라인 반환. 모든 에이전트 내부 루프에 앉아 대량 초안을 채점할 수 있을 만큼 낮은 가격.

에이전트형 검사

연산량 기준 종량

연산량 + 샌드박스 시간 종량

샌드박스 기반, 다중 패스 리뷰. 실제 필요 패스 수와 샌드박스 시간만큼만 지불 — 비용 대비 가치가 나는 고위험 출력에 사용.

라이브 데모 사용API 문서 읽기

엔터프라이즈 배포는 섀도우 → 적용 → 관리형 순서를 유지하고, 그 아래에서 채점은 사용량으로 계량됩니다. 구체적 비용 견적은 요청 시 제공됩니다.

OTTERLOOP 인프라

모든 에이전트 루프에 크리틱을 넣으십시오.

MCP + HTTP + Python SDK내부 루프에 사람 없음멀티모달 입력/출력귀사 정책에 조건화
01

생성

모든 에이전트가 작업을 출력: 코드, 텍스트, 이미지, 슬라이드, 시트, 비디오, 혹은 전체 궤적.

02

채점

SeaOtter가 적절한 루브릭과 조직 조건 바에 맞춰 채점합니다.

03

피드백 읽기

판정에는 에이전트가 곧바로 겨냥할 수 있는 결함, 업그레이드, 앵커가 담겨 돌아옵니다.

04

수정

에이전트는 크리틱의 반박을 반영해 산출물 또는 다음 단계를 다시 작성합니다.

05

배송

밴드가 게이트를 통과하고 감사 증거가 기록될 때에만 루프가 멈춥니다.

라이브 데모 사용빌드 페이지 열기

MCP

Claude, Codex, Cursor 또는 커스텀 런타임을 위해 `.mcp.json` 또는 `config.toml`에 추가하십시오.

{ "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

HTTP를 말할 수 있는 어떤 런타임이든 1회 채점 또는 루프 내 채점이 가능합니다.

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

하나의 루프 호출이 크리틱이 출하 신호를 줄 때까지 생성 → 채점 → 수정을 구동합니다.

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")
SeaOtter엔터프라이즈 에이전트 업무를 위한 적대적 승인 루프.
문서라이브 데모크리틱루브릭투자자(NDA)

© 2026 SeaOtter. 나쁜 에이전트 작업을 차단하기 위해 구축되었습니다.