Salix
Loops
Loop를 쓰면 에이전트가 24시간 백그라운드에서 일할 수 있습니다. 받은편지함, 저장소, 피드를 지켜보다가 무언가 바뀌면 움직입니다. Loop에는 상시 켜 둔 샌드박스가 필요 없고, 꼭 필요할 때가 아니면 에이전트의 메인 루프를 깨우지 않습니다.
Loop가 실행되는 방식
- 에이전트가 Loop를 C 프로그램으로 작성합니다.
- Salix의 서버 측 eBPF 런타임인 Spinfoam이 프로그램을 eBPF로 컴파일합니다.
- Salix가 클러스터에서 Loop를 에이전트 가까이에 배치합니다.
Spinfoam의 JIT 컴파일러는 형식 검증되었으며, 메모리 안전한 코드를 생성합니다. Loop는 수 KB에서 수십 KB의 메모리만 쓰므로, 에이전트는 필요한 만큼 오래 Loop를 계속 실행할 수 있습니다.
대형 모델 없이 내리는 판단
Loop는 Jev 같은 빠른 판단 모델을 호출할 수 있습니다. 이를 이용해 Loop는 대형 언어 모델을 호출하지 않고도 외부 데이터와 상태를 분류합니다(예: 새 이메일에 내 확인이 필요한지).
에이전트가 처리할 일을 발견하면 Loop가 에이전트에 알립니다. 그때가 되어서야 에이전트의 메인 루프가 실행되고, 모델 토큰도 그때만 사용합니다.
Loop가 할 수 있는 일
Loop는 정해진 기능 목록만 호출할 수 있습니다. 읽기 도구, 디바이스 및 환경 도구, 웹 요청, 연결된 앱, 그리고 자기 에이전트에 보내는 알림입니다. Loop는 자신을 만든 사람의 권한으로 동작하며, 그 이상은 할 수 없습니다.
- 이벤트: 다른 시스템은 API나 Loop별 비밀 웹훅 URL로 Loop에 이벤트를 보낼 수 있습니다.
- 상태: Loop는 체크포인트를 저장하고, 다시 시작할 때 이를 돌려받습니다.
- 제한: Loop가 10분 동안 에이전트를 깨울 수 있는 횟수에는 한도가 있습니다. 한 시간 동안 계속 한도에 머무는 Loop는 일시 중지됩니다.
- 장애: 장애가 나면 Salix는 체크포인트에서 Loop를 다시 시작합니다. 재시작은 한 시간에 최대 세 번까지입니다. 그 뒤에는 Loop가 멈추고 에이전트에 알립니다.