---
title: "Loops · Comma 문서"
description: "Spinfoam이 eBPF로 컴파일하는 상시 백그라운드 작업."
url: https://comma.surf/ko/docs/salix/loops
language: ko
---

Salix

# Loops

Loop를 쓰면 에이전트가 24시간 백그라운드에서 일할 수 있습니다. 받은편지함, 저장소, 피드를 지켜보다가 무언가 바뀌면 움직입니다. Loop에는 상시 켜 둔 샌드박스가 필요 없고, 꼭 필요할 때가 아니면 에이전트의 메인 루프를 깨우지 않습니다.

## Loop가 실행되는 방식

1. 에이전트가 Loop를 C 프로그램으로 작성합니다.
2. Salix의 서버 측 eBPF 런타임인 [Spinfoam](https://github.com/AFK-surf/spinfoam)이 프로그램을 eBPF로 컴파일합니다.
3. 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가 멈추고 에이전트에게 알립니다.
