godotz.ai 설계 철학

godotz.ai는 단순한 AI 프레임워크가 아닙니다. 자율 에이전트 플리트를 위한 인프라 하네스입니다. 이 철학은 모든 설계 결정의 기반이 됩니다.


1. Cattle, Not Pets (소가 아닌 가축)

핵심 개념

전통적인 서버 관리에서 비롯된 이 원칙은 godotz.ai에서 에이전트 노드에 적용됩니다.

  • Pet(애완동물) 방식: 각 노드에 고유한 이름을 부여하고, 수동으로 설정하며, 장애 시 복구를 위해 노력
  • Cattle(가축) 방식: 노드는 교체 가능하고, 선언적으로 정의되며, 장애 시 즉시 교체

godotz.ai의 구현

# 잘못된 방식 (Pet)
node:
  name: "my-special-ai-server"
  config: "/etc/omp/manual-config.conf"
  
# 올바른 방식 (Cattle)
fleet:
  nodes:
    - role: worker
      count: 3
      flake: "github:omp-team/omp-fleet#worker"

Nix flake를 통해 모든 노드는 동일한 선언적 정의에서 빌드됩니다. 노드 장애는 시스템이 자동으로 교체하는 이벤트일 뿐입니다.

적용 범위

  • 에이전트 인스턴스: 특정 에이전트 프로세스에 의존하지 않음
  • 모델 API 키: 가상 키 추상화로 개별 키에 종속되지 않음
  • 메모리 저장소: Mnemopi는 어떤 노드에서도 동일한 인터페이스 제공

2. Fail-Closed (실패 시 폐쇄)

핵심 개념

기본값은 항상 거부입니다. 명시적으로 허용된 것만 허용됩니다.

“보안 시스템에서 불확실성의 올바른 기본값은 허용이 아닌 거부다.”

godotz.ai의 구현

보안 게이트 체인:

플러그인 실행 요청

[plugin-eval] ← 정적 분석 + 서명 검증
    ↓ PASS
[mcp-scan] ← CVE 데이터베이스 확인
    ↓ PASS
[sandbox] ← 격리 환경에서 실행
    ↓ PASS
실제 실행
    
위 중 하나라도 FAIL → 즉시 종료, 에이전트 차단

Hardcore Mode

Hardcore 모드는 fail-closed를 최대로 강화합니다:

설정기본Hardcore
실패 시 동작폴백 모델 시도즉시 중단
미검증 플러그인경고 후 허용거부
예산 초과경고 발행즉시 차단
자기 수정인간 승인 필요인간 승인 + 2인 검토
omp:
  hardcore: true  # 모든 폴백 비활성화

3. Honest Reporting (정직한 보고)

핵심 개념

에이전트는 성공을 과장하거나 실패를 숨기지 않습니다. 모든 결과는 검증 가능한 증거와 함께 보고됩니다.

문제: AI Slop 패턴

많은 AI 시스템이 실제 작업 없이 완료를 선언하는 패턴을 보입니다:

❌ 잘못된 에이전트 보고:
"파일을 성공적으로 업데이트했습니다."
(실제로는 파일 경로조차 확인하지 않음)

✓ OMP 에이전트 보고:
"파일 업데이트 완료.
 증거: src/config.ts:42 수정됨
 검증: LSP 오류 0개, 테스트 3개 통과
 명령어: bun test src/__tests__/config.test.ts → PASS"

구현

godotz.ai의 에이전트 출력 형식은 구조화된 보고를 요구합니다:

## Changes Made
- `file.ts:42-55`: [무엇을 왜 변경했는지]

## Verification
- Build: [command] → [pass/fail]
- Tests: [command] → [X passed, Y failed]
- Diagnostics: [N errors, M warnings]

## Summary
[실제로 달성한 것, 1-2문장]

Langfuse 추적

모든 에이전트 작업은 Langfuse에서 추적됩니다:

  • 전체 프롬프트/응답 기록
  • 도구 호출 시퀀스
  • 토큰 소비 및 비용
  • 성공/실패 근거
# 모든 에이전트 작업에 자동 추적
langfuse:
  enabled: true
  project: "omp-fleet"
  trace_all_tools: true

4. Idempotency (멱등성)

핵심 개념

모든 godotz.ai 작업은 여러 번 실행해도 동일한 결과를 보장합니다.

“완료된 작업을 다시 실행하면 no-op이어야 한다.”

구현 계층

L5 — beads 태스크

# 동일 태스크를 두 번 실행해도 안전
bd run task-id-123  # 처음 실행: 작업 수행
bd run task-id-123  # 두 번째 실행: "이미 완료됨" 반환

L3 — Temporal 워크플로우

Temporal은 워크플로우 히스토리를 사용해 재실행 시 이전 결과를 재생합니다. 프로세스 재시작 후에도 상태가 완벽히 복원됩니다.

L6 — 메모리 작업

Mnemopi와 Knowledge Gardener는 upsert 의미론을 사용합니다:

# 동일한 키에 두 번 쓰기 — 마지막 값으로 업데이트, 중복 없음
memory.upsert(key="project/analysis", value=result)

L2 — 모델 게이트웨이 캐시

Redis 캐시는 동일한 프롬프트에 대한 두 번째 요청을 캐시 히트로 처리합니다:

프롬프트 해시 → Redis 확인
  ↓ HIT (40%+ 목표)
캐시된 응답 즉시 반환 (API 호출 없음, 비용 없음)

5. Heterogeneity (이종성)

핵심 개념

단일 모델 패밀리, 단일 OS, 단일 아키텍처에 종속되지 않습니다.

모델 이종성

역할모델 패밀리이유
오케스트레이터Antigravity (claude-opus-4-6)복잡한 추론, 고비용
실행자GLM (glm-5.1, glm-4.7)빠른 실행, 저비용
비평가Antigravity (claude-sonnet-4-6)오케스트레이터와 다른 가중치
비전 처리gemini-3.1-pro-low멀티모달 폴백

이것이 중요한 이유: ReConcile 논문(2024)은 이종 모델 패널이 동종 패널 대비 체계적 오류를 31% 줄임을 보였습니다.

OS 이종성

플랫폼아키텍처역할
Ubuntu 22.04+x86_64기본 워크스테이션
Raspberry Pi OSaarch64엣지 노드
macOSaarch64-darwin개발자 머신

Nix flake는 systems 배열로 모든 플랫폼을 단일 정의에서 지원합니다.


관련 문서