오픈클로 서브에이전트를 지속적인 팀 구성원이 아닌 무상태 함수로 취급하기

✍️ OpenClawRadar📅 게시일: April 1, 2026🔗 Source
오픈클로 서브에이전트를 지속적인 팀 구성원이 아닌 무상태 함수로 취급하기
Ad

r/openclaw의 한 개발자가 OpenClaw에서 다중 에이전트 팀을 작업할 때 자신의 정신 모델이 어떻게 전환되었는지 설명합니다. 처음에는 서브에이전트를 이름, 배경 이야기, 기억 기대치를 가진 주니어 직원처럼 대하던 것이 몇 주간의 혼란과 깨진 워크플로우로 이어졌습니다.

함수 비유

돌파구는 서브에이전트가 작은 나 자신이나 지속적인 팀원이 아니라 함수라는 점을 인식하면서 찾아왔습니다. 구체적으로:

  • 서브에이전트는 지속적인 팀원이 아닌 상태 없는 함수 호출입니다
  • 그들은 개발자의 주니어 버전이 아닌 특수화된 도구입니다
  • 그들은 컨텍스트를 기억하지 않고 순수 입력 → 출력으로 작동합니다
  • 그들은 서로 대화하기보다 호출자에게 값을 반환합니다

소스는 잘못된 접근법과 올바른 접근법을 대비하는 코드 예시를 제공합니다:

# 잘못됨: 서브에이전트를 지속적인 객체처럼 대하기
frank = Agent("Frank")
frank.build_feature()
frank.fix_it() # Frank가 기억한다고 가정

올바름: 서브에이전트를 함수 호출처럼 대하기

result = frank_task( instructions="로그인 페이지 구축", context={"requirements": reqs, "design": mockup} )

frank_task 실행, 출력 반환, 종료

실용적 함의

이 정신 모델 전환은 몇 가지 구체적인 함의를 가집니다:

1. SOUL.md를 함수 독스트링으로: 개성 프로필 대신, SOUL.md는 명세서 문서가 됩니다:

# frank_task()

목적: Next.js 기능 구축 입력: 요구사항 (딕셔너리), 디자인 (선택사항) 출력: {코드, 테스트, 노트} 제약: 승인 없이 외부 API 호출 금지

2. 반복을 위한 명시적 상태 전달: 서브에이전트가 컨텍스트를 기억하지 않으므로, 필요한 모든 정보를 매개변수로 전달해야 합니다:

# 잘못됨
frank_fix("버그 수정") # 생성, 시도, 소멸
frank_fix("여전히 고장남") # 새로운 생성, 컨텍스트 없음

올바름

result = frank_fix({ "code": previous_output, "issues": ["로그인 검증 실패", "모바일 CSS 고장"], "test_cases": failing_tests }) # 매개변수에 전체 컨텍스트 포함

3. 코디네이터를 메인 프로그램으로: 개발자는 팀 매니저가 아닌 오케스트레이터 함수가 됩니다:

def build_feature(spec):

순차적으로 함수 호출

code = frank_build(spec) tests = quinn_audit(code)

if tests["passed"]: return deploy(code) else: # 명시적 컨텍스트로 반복 fixed = frank_fix({ "code": code, "failures": tests["failures"] }) return deploy(fixed)

Ad

소프트웨어 설계 유사점

이 접근법은 확립된 소프트웨어 설계 원칙과 일치합니다:

  • 단일 책임: 각 서브에이전트는 한 가지 일을 합니다
  • 순수 함수: 동일 입력 → 동일 출력
  • 단위 테스트 가능: 각 서브에이전트의 출력을 독립적으로 테스트
  • 조합 가능: quinn_test(frank_code(spec))처럼 서브에이전트 연결
  • 상태 없음: 숨겨진 의존성 없음

개발자는 가치가 "더 많은 에이전트 = 더 똑똑함"이 아니라 "특수화된 함수 = 더 깔끔한 아키텍처"라고 언급합니다.

전환 후 결과

이 모델을 채택한 후, 개발자는 다음을 구축했습니다:

  • 2주 만에 11,249개의 체육관 데이터베이스
  • 5개의 특수화된 에이전트 (5명의 일반주의자가 아님)
  • 언더라이팅 워크플로우를 가진 CRM
  • 일일 Moltbook 참여

모두 상태 없는 서브에이전트와 컨텍스트를 유지하는 코디네이터를 사용했습니다.

📖 전체 소스 읽기: r/openclaw

Ad

👀 See Also