에이전트 팀
Triggerfish 에이전트는 복잡한 작업에 함께 작업하는 협업 에이전트의 영구 팀을 생성할 수 있습니다. 각 팀 구성원은 자체 세션, 역할, 대화 컨텍스트, 도구를 가집니다. 한 구성원이 리드로 지정되어 작업을 조정합니다.
팀은 전문화된 역할이 병렬로 작업하는 것이 유익한 개방형 작업에 최적입니다: 조사 + 분석 + 작성, 아키텍처 + 구현 + 검토, 또는 다른 관점이 서로의 작업을 반복해야 하는 모든 작업.
가용성
에이전트 팀은 Triggerfish Gateway를 사용할 때 Power 플랜($149/월)이 필요합니다. 자체 API 키로 실행하는 오픈 소스 사용자는 에이전트 팀에 완전히 접근할 수 있습니다 -- 각 팀 구성원이 구성된 제공자의 추론을 소비합니다.
도구
team_create
작업에 협업하는 에이전트의 영구 팀을 생성합니다. 구성원 역할, 도구, 모델을 정의합니다. 정확히 한 구성원이 리드여야 합니다.
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
name | string | 예 | 사람이 읽을 수 있는 팀 이름 |
task | string | 예 | 팀의 목표 (초기 지시로 리드에게 전달됨) |
members | array | 예 | 팀 구성원 정의 (아래 참조) |
idle_timeout_seconds | number | 아니오 | 구성원별 유휴 시간 초과. 기본값: 300 (5분) |
max_lifetime_seconds | number | 아니오 | 최대 팀 수명. 기본값: 3600 (1시간) |
classification_ceiling | string | 아니오 | 팀 전체 분류 상한 (예: CONFIDENTIAL) |
구성원 정의:
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
role | string | 예 | 고유 역할 식별자 (예: researcher, reviewer) |
description | string | 예 | 이 구성원이 하는 일 (시스템 프롬프트에 주입됨) |
is_lead | boolean | 예 | 이 구성원이 팀 리드인지 여부 |
model | string | 아니오 | 이 구성원의 모델 재정의 |
classification_ceiling | string | 아니오 | 구성원별 분류 상한 |
initial_task | string | 아니오 | 초기 지시 (리드는 기본적으로 팀 작업을 사용) |
검증 규칙:
- 팀에 정확히
is_lead: true인 구성원이 하나 있어야 합니다 - 모든 역할은 고유하고 비어 있지 않아야 합니다
- 구성원 분류 상한은 팀 상한을 초과할 수 없습니다
name과task는 비어 있지 않아야 합니다
team_status
활성 팀의 현재 상태를 확인합니다.
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
team_id | string | 예 | 팀 ID |
팀의 상태, 집계 taint 수준, 각 구성원의 현재 taint, 상태, 마지막 활동 타임스탬프를 포함한 구성원별 세부 정보를 반환합니다.
team_message
특정 팀 구성원에게 메시지를 보냅니다. 추가 컨텍스트를 제공하거나, 작업을 리디렉션하거나, 진행 상황 업데이트를 요청하는 데 유용합니다.
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
team_id | string | 예 | 팀 ID |
role | string | 아니오 | 대상 구성원 역할 (기본값은 리드) |
message | string | 예 | 메시지 내용 |
팀이 running 상태여야 하고 대상 구성원이 active 또는 idle이어야 합니다.
team_disband
팀을 종료하고 모든 구성원 세션을 중단합니다.
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
team_id | string | 예 | 팀 ID |
reason | string | 아니오 | 팀이 해산되는 이유 |
팀을 생성한 세션 또는 리드 구성원만 팀을 해산할 수 있습니다.
팀 작동 방식
생성
에이전트가 team_create를 호출하면 Triggerfish는:
- 팀 정의를 검증합니다 (역할, 리드 수, 분류 상한)
- 오케스트레이터 팩토리를 통해 각 구성원에 대한 격리된 에이전트 세션을 생성합니다
- 각 구성원의 시스템 프롬프트에 역할, 팀원, 협업 지시를 설명하는 팀 명단 프롬프트를 주입합니다
- 리드에게 초기 작업을 보냅니다 (또는 구성원별 사용자 정의
initial_task) - 30초마다 팀 상태를 확인하는 수명 주기 모니터를 시작합니다
각 구성원 세션은 자체 대화 컨텍스트, taint 추적, 도구 접근으로 완전히 격리됩니다.
협업
팀 구성원은 sessions_send를 사용하여 서로 통신합니다. 생성 에이전트가 구성원 간 메시지를 중계할 필요가 없습니다. 일반적인 흐름:
- 리드가 팀 목표를 수신합니다
- 리드가 작업을 분해하고
sessions_send를 통해 구성원에게 할당을 보냅니다 - 구성원이 자율적으로 작업하며 도구를 호출하고 반복합니다
- 구성원이 리드에게 결과를 보냅니다 (또는 다른 구성원에게 직접)
- 리드가 결과를 종합하고 작업이 완료되었는지 결정합니다
- 리드가
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분). 구성원이 유휴 상태일 때:
- 첫 번째 임계값 (idle_timeout_seconds): 작업이 완료되면 결과를 보내도록 요청하는 넛지 메시지를 받습니다
- 두 배 임계값 (2x idle_timeout_seconds): 구성원이 종료되고 리드에게 알립니다
수명 시간 초과
팀에는 최대 수명이 있습니다 (기본값: 1시간). 제한에 도달하면:
- 리드가 최종 출력을 생성할 60초의 경고 메시지를 받습니다
- 유예 기간 후 팀이 자동으로 해산됩니다
상태 점검
모니터는 30초마다 세션 상태를 확인합니다:
- 리드 실패: 리드 세션에 더 이상 도달할 수 없으면 팀이 일시 중지되고 생성 세션에 알립니다
- 구성원 실패: 구성원 세션이 없어지면
failed로 표시되고 리드에게 나머지 구성원과 계속하도록 알립니다 - 모두 비활성: 모든 구성원이
completed또는failed이면 생성 세션에 새 지시를 주입하거나 해산하도록 알립니다
분류 및 Taint
팀 구성원 세션은 다른 모든 세션과 동일한 분류 규칙을 따릅니다:
- 각 구성원은
PUBLICtaint로 시작하고 분류된 데이터에 접근하면 상승합니다 - 분류 상한은 팀별 또는 구성원별로 설정하여 구성원이 접근할 수 있는 데이터를 제한할 수 있습니다
- Write-down 시행은 모든 구성원 간 통신에 적용됩니다.
CONFIDENTIAL로 taint된 구성원은PUBLIC의 구성원에게 데이터를 보낼 수 없습니다 - 집계 taint (모든 구성원의 최고 taint)가
team_status에 보고되어 생성 세션이 팀의 전체 분류 노출을 추적할 수 있습니다
보안 구성원 분류 상한은 팀 상한을 초과할 수 없습니다. 팀 상한이 INTERNAL이면 어떤 구성원도 CONFIDENTIAL 상한으로 구성될 수 없습니다. 이는 생성 시 검증됩니다. :::
팀 vs 서브 에이전트
| 측면 | 서브 에이전트 (subagent) | 팀 (team_create) |
|---|---|---|
| 수명 | 단일 작업, 결과를 반환하고 종료 | 해산되거나 시간 초과될 때까지 영구 |
| 구성원 | 하나의 에이전트 | 고유 역할을 가진 여러 에이전트 |
| 상호 작용 | 부모에서 발사 후 잊기 | 구성원이 sessions_send를 통해 자유롭게 통신 |
| 조정 | 부모가 결과를 대기 | 리드가 조정, 부모는 team_status로 확인 가능 |
| 사용 사례 | 집중된 단일 단계 위임 | 복잡한 다중 역할 협업 |
단일 에이전트가 집중된 작업을 수행하고 결과를 반환해야 할 때 서브 에이전트를 사용하십시오. 작업이 여러 전문화된 관점이 서로의 작업을 반복하는 것이 유익할 때 팀을 사용하십시오.
팀은 생성되면 자율적입니다. 생성 에이전트는 상태를 확인하고 메시지를 보낼 수 있지만 세부 관리할 필요가 없습니다. 리드가 조정을 처리합니다. :::
