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

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)
소프트웨어 설계 유사점
이 접근법은 확립된 소프트웨어 설계 원칙과 일치합니다:
- 단일 책임: 각 서브에이전트는 한 가지 일을 합니다
- 순수 함수: 동일 입력 → 동일 출력
- 단위 테스트 가능: 각 서브에이전트의 출력을 독립적으로 테스트
- 조합 가능: quinn_test(frank_code(spec))처럼 서브에이전트 연결
- 상태 없음: 숨겨진 의존성 없음
개발자는 가치가 "더 많은 에이전트 = 더 똑똑함"이 아니라 "특수화된 함수 = 더 깔끔한 아키텍처"라고 언급합니다.
전환 후 결과
이 모델을 채택한 후, 개발자는 다음을 구축했습니다:
- 2주 만에 11,249개의 체육관 데이터베이스
- 5개의 특수화된 에이전트 (5명의 일반주의자가 아님)
- 언더라이팅 워크플로우를 가진 CRM
- 일일 Moltbook 참여
모두 상태 없는 서브에이전트와 컨텍스트를 유지하는 코디네이터를 사용했습니다.
📖 전체 소스 읽기: r/openclaw
👀 See Also

OpenCLAW 메모리가 실제로 작동하는 방식: 에이전트 '망각' 문제 해결하기
OpenCLAW 에이전트는 대화 간 지속적인 메모리를 가지고 있지 않습니다. 매번 SOUL.md, USER.md, MEMORY.md와 같은 파일에서 컨텍스트를 재구성합니다. 일반적인 '잊어버림' 문제는 오래된 세션, 구조화되지 않은 메모리 파일, 그리고 중요한 정보를 채팅 기록 대신 영구 파일에 저장하지 않아서 발생합니다.

AI 에이전트를 위한 CLI 디자인 패턴: 오해와 실용적 접근법
레딧 게시글은 CLI for agents가 실제 셸이 아닌 텍스트 명령어 인터페이스 프로토콜을 의미한다고 설명하며, 유닉스 스타일 도움말, 팁 사고방식, 드라이런 미리보기 및 인간 승인과 같은 안전 메커니즘을 포함한 에이전트 친화적 CLI 설계 원칙을 제시합니다.

OpenClaw 신뢰성 문제에 대한 실용적인 해결 방법
한 개발자가 OpenClaw 설정을 개선한 8가지 구체적인 기법을 공유했습니다. 여기에는 일일 로그와 지식 그래프를 포함한 3계층 메모리 시스템, 활성화 점수 관리, 파일 기반 규칙 강제 적용 등이 포함됩니다.

프록시 계층으로 클로드 코워크를 보호하는 방법: 실용 가이드
Claude Cowork의 행동을 관찰하고 보호하기 위한 프록시 계층 설정 가이드(General Analysis 팀 게시)