Skip to content

에이전트 팀

Triggerfish 에이전트는 복잡한 작업에 함께 작업하는 협업 에이전트의 영구 팀을 생성할 수 있습니다. 각 팀 구성원은 자체 세션, 역할, 대화 컨텍스트, 도구를 가집니다. 한 구성원이 리드로 지정되어 작업을 조정합니다.

팀은 전문화된 역할이 병렬로 작업하는 것이 유익한 개방형 작업에 최적입니다: 조사 + 분석 + 작성, 아키텍처 + 구현 + 검토, 또는 다른 관점이 서로의 작업을 반복해야 하는 모든 작업.

가용성

에이전트 팀은 Triggerfish Gateway를 사용할 때 Power 플랜($149/월)이 필요합니다. 자체 API 키로 실행하는 오픈 소스 사용자는 에이전트 팀에 완전히 접근할 수 있습니다 -- 각 팀 구성원이 구성된 제공자의 추론을 소비합니다.

도구

team_create

작업에 협업하는 에이전트의 영구 팀을 생성합니다. 구성원 역할, 도구, 모델을 정의합니다. 정확히 한 구성원이 리드여야 합니다.

매개변수유형필수설명
namestring사람이 읽을 수 있는 팀 이름
taskstring팀의 목표 (초기 지시로 리드에게 전달됨)
membersarray팀 구성원 정의 (아래 참조)
idle_timeout_secondsnumber아니오구성원별 유휴 시간 초과. 기본값: 300 (5분)
max_lifetime_secondsnumber아니오최대 팀 수명. 기본값: 3600 (1시간)
classification_ceilingstring아니오팀 전체 분류 상한 (예: CONFIDENTIAL)

구성원 정의:

필드유형필수설명
rolestring고유 역할 식별자 (예: researcher, reviewer)
descriptionstring이 구성원이 하는 일 (시스템 프롬프트에 주입됨)
is_leadboolean이 구성원이 팀 리드인지 여부
modelstring아니오이 구성원의 모델 재정의
classification_ceilingstring아니오구성원별 분류 상한
initial_taskstring아니오초기 지시 (리드는 기본적으로 팀 작업을 사용)

검증 규칙:

  • 팀에 정확히 is_lead: true인 구성원이 하나 있어야 합니다
  • 모든 역할은 고유하고 비어 있지 않아야 합니다
  • 구성원 분류 상한은 팀 상한을 초과할 수 없습니다
  • nametask는 비어 있지 않아야 합니다

team_status

활성 팀의 현재 상태를 확인합니다.

매개변수유형필수설명
team_idstring팀 ID

팀의 상태, 집계 taint 수준, 각 구성원의 현재 taint, 상태, 마지막 활동 타임스탬프를 포함한 구성원별 세부 정보를 반환합니다.

team_message

특정 팀 구성원에게 메시지를 보냅니다. 추가 컨텍스트를 제공하거나, 작업을 리디렉션하거나, 진행 상황 업데이트를 요청하는 데 유용합니다.

매개변수유형필수설명
team_idstring팀 ID
rolestring아니오대상 구성원 역할 (기본값은 리드)
messagestring메시지 내용

팀이 running 상태여야 하고 대상 구성원이 active 또는 idle이어야 합니다.

team_disband

팀을 종료하고 모든 구성원 세션을 중단합니다.

매개변수유형필수설명
team_idstring팀 ID
reasonstring아니오팀이 해산되는 이유

팀을 생성한 세션 또는 리드 구성원만 팀을 해산할 수 있습니다.

팀 작동 방식

생성

에이전트가 team_create를 호출하면 Triggerfish는:

  1. 팀 정의를 검증합니다 (역할, 리드 수, 분류 상한)
  2. 오케스트레이터 팩토리를 통해 각 구성원에 대한 격리된 에이전트 세션을 생성합니다
  3. 각 구성원의 시스템 프롬프트에 역할, 팀원, 협업 지시를 설명하는 팀 명단 프롬프트를 주입합니다
  4. 리드에게 초기 작업을 보냅니다 (또는 구성원별 사용자 정의 initial_task)
  5. 30초마다 팀 상태를 확인하는 수명 주기 모니터를 시작합니다

각 구성원 세션은 자체 대화 컨텍스트, taint 추적, 도구 접근으로 완전히 격리됩니다.

협업

팀 구성원은 sessions_send를 사용하여 서로 통신합니다. 생성 에이전트가 구성원 간 메시지를 중계할 필요가 없습니다. 일반적인 흐름:

  1. 리드가 팀 목표를 수신합니다
  2. 리드가 작업을 분해하고 sessions_send를 통해 구성원에게 할당을 보냅니다
  3. 구성원이 자율적으로 작업하며 도구를 호출하고 반복합니다
  4. 구성원이 리드에게 결과를 보냅니다 (또는 다른 구성원에게 직접)
  5. 리드가 결과를 종합하고 작업이 완료되었는지 결정합니다
  6. 리드가 team_disband를 호출하여 팀을 종료합니다

구성원 간 메시지는 오케스트레이터를 통해 직접 전달됩니다 -- 각 메시지가 수신자 세션에서 전체 에이전트 턴을 트리거합니다.

상태

team_status를 사용하여 언제든지 진행 상황을 확인합니다. 응답에는 다음이 포함됩니다:

  • 팀 상태: running, paused, completed, disbanded 또는 timed_out
  • 집계 taint: 모든 구성원의 최고 분류 수준
  • 구성원별 세부 정보: 역할, 상태 (active, idle, completed, failed), 현재 taint 수준, 마지막 활동 타임스탬프

해산

팀은 다음에 의해 해산될 수 있습니다:

  • 생성 세션이 team_disband를 호출
  • 리드 구성원이 team_disband를 호출
  • 수명 제한 만료 후 수명 주기 모니터가 자동 해산
  • 수명 주기 모니터가 모든 구성원이 비활성임을 감지

팀이 해산되면 모든 활성 구성원 세션이 종료되고 리소스가 정리됩니다.

팀 역할

리드

리드 구성원은 팀을 조정합니다. 생성 시:

  • 팀의 task를 초기 지시로 수신합니다 (initial_task로 재정의하지 않는 한)
  • 작업 분해, 작업 할당, 목표 달성 시기 결정을 위한 시스템 프롬프트 지시를 받습니다
  • 팀을 해산할 권한이 있습니다

팀당 정확히 하나의 리드가 있습니다.

구성원

리드가 아닌 구성원은 전문가입니다. 생성 시:

  • initial_task가 제공되면 수신하고, 그렇지 않으면 리드가 작업을 보낼 때까지 대기합니다
  • 완료된 작업을 리드 또는 다음 적절한 팀원에게 보내기 위한 시스템 프롬프트 지시를 받습니다
  • 팀을 해산할 수 없습니다

수명 주기 모니터링

팀에는 30초마다 실행되는 자동 수명 주기 모니터링이 있습니다.

유휴 시간 초과

각 구성원에는 유휴 시간 초과가 있습니다 (기본값: 5분). 구성원이 유휴 상태일 때:

  1. 첫 번째 임계값 (idle_timeout_seconds): 작업이 완료되면 결과를 보내도록 요청하는 넛지 메시지를 받습니다
  2. 두 배 임계값 (2x idle_timeout_seconds): 구성원이 종료되고 리드에게 알립니다

수명 시간 초과

팀에는 최대 수명이 있습니다 (기본값: 1시간). 제한에 도달하면:

  1. 리드가 최종 출력을 생성할 60초의 경고 메시지를 받습니다
  2. 유예 기간 후 팀이 자동으로 해산됩니다

상태 점검

모니터는 30초마다 세션 상태를 확인합니다:

  • 리드 실패: 리드 세션에 더 이상 도달할 수 없으면 팀이 일시 중지되고 생성 세션에 알립니다
  • 구성원 실패: 구성원 세션이 없어지면 failed로 표시되고 리드에게 나머지 구성원과 계속하도록 알립니다
  • 모두 비활성: 모든 구성원이 completed 또는 failed이면 생성 세션에 새 지시를 주입하거나 해산하도록 알립니다

분류 및 Taint

팀 구성원 세션은 다른 모든 세션과 동일한 분류 규칙을 따릅니다:

  • 각 구성원은 PUBLIC taint로 시작하고 분류된 데이터에 접근하면 상승합니다
  • 분류 상한은 팀별 또는 구성원별로 설정하여 구성원이 접근할 수 있는 데이터를 제한할 수 있습니다
  • Write-down 시행은 모든 구성원 간 통신에 적용됩니다. CONFIDENTIAL로 taint된 구성원은 PUBLIC의 구성원에게 데이터를 보낼 수 없습니다
  • 집계 taint (모든 구성원의 최고 taint)가 team_status에 보고되어 생성 세션이 팀의 전체 분류 노출을 추적할 수 있습니다

보안 구성원 분류 상한은 팀 상한을 초과할 수 없습니다. 팀 상한이 INTERNAL이면 어떤 구성원도 CONFIDENTIAL 상한으로 구성될 수 없습니다. 이는 생성 시 검증됩니다. :::

팀 vs 서브 에이전트

측면서브 에이전트 (subagent)팀 (team_create)
수명단일 작업, 결과를 반환하고 종료해산되거나 시간 초과될 때까지 영구
구성원하나의 에이전트고유 역할을 가진 여러 에이전트
상호 작용부모에서 발사 후 잊기구성원이 sessions_send를 통해 자유롭게 통신
조정부모가 결과를 대기리드가 조정, 부모는 team_status로 확인 가능
사용 사례집중된 단일 단계 위임복잡한 다중 역할 협업

단일 에이전트가 집중된 작업을 수행하고 결과를 반환해야 할 때 서브 에이전트를 사용하십시오. 작업이 여러 전문화된 관점이 서로의 작업을 반복하는 것이 유익할 때 팀을 사용하십시오.

팀은 생성되면 자율적입니다. 생성 에이전트는 상태를 확인하고 메시지를 보낼 수 있지만 세부 관리할 필요가 없습니다. 리드가 조정을 처리합니다. :::