Skip to content

실행 백엔드 ​

파일시스템을 건드리거나 명령을 실행하는 모든 툴은 실행 백엔드를 거칩니다. 그 일이 어디서 일어나는지를 백엔드가 결정합니다. 툴셋 자체는 바뀌지 않습니다 — read_file, shell, grep, git_commit 등은 내 노트북에서 돌든, 컨테이너 안에서 돌든, 네트워크 너머 호스트에서 돌든 똑같이 동작합니다.

바꾸기 ​

/backend
/backend local
/backend docker {"image": "python:3.11-slim"}
/backend ssh {"host": "10.0.0.5", "user": "build", "key": "~/.ssh/id_ed25519"}

인자 없이 /backend만 치면 현재 백엔드를 출력합니다. 변경은 즉시 세션에 적용되며, 이미 진행 중이던 작업도 다음 툴 호출부터 바뀐 백엔드를 씁니다. 프로젝트는 <project>/.snowpea/settings.json의 backend 항목으로 기본값을 지정할 수 있습니다.

local ​

기본값입니다. 명령은 내 사용자 권한으로, 세션의 작업 디렉터리에서, 내 환경 그대로 실행됩니다. 아무것도 격리되지 않으므로 — 내 코드를 직접 다룰 때 쓸 백엔드이지, auto 모드 잡을 여기에 겨눠서는 안 됩니다.

docker ​

/backend docker {"image": "python:3.11-slim"}
키기본값의미
imagepython:3.11-slim컨테이너를 만들 이미지
workdir세션의 workdir컨테이너 내부의 같은 절대 경로에 바인드 마운트됨

컨테이너는 세션 이름을 따서 만들어지고, 첫 툴 호출 시점에 지연 생성되며, 세션이 닫히면 제거됩니다. 작업 디렉터리는 같은 절대 경로에 바인드 마운트되므로 모델이 추론하는 경로는 안팎이 동일합니다. 설치된 패키지, 네트워크, 환경 등 그 외 모든 것은 컨테이너의 것입니다.

auto 모드에 맞는 백엔드가 바로 이것입니다. 에이전트가 원하는 대로 설치하고 원하는 대로 망가뜨리게 두고, 컨테이너는 버리면 됩니다.

실행 중인 Docker 데몬이 필요합니다. 없으면 조용히 local로 폴백하지 않고 실패를 그대로 보고합니다.

ssh ​

/backend ssh {"host": "10.0.0.5", "port": 22, "user": "build", "key": "~/.ssh/id_ed25519"}
키의미
host호스트 이름 또는 주소
port기본값 22
user원격 사용자
key개인 키 경로
passwordkey의 대안
cwd원격 작업 디렉터리, 기본값은 원격 홈

명령은 SSH로, 파일 읽기·쓰기는 SFTP로 돕니다. 에이전트가 쓴 파일은 원격 호스트에만 존재합니다 — 로컬에는 아무것도 미러링되지 않으며, ssh 백엔드에서의 write_file은 내 디스크를 건드리지 않습니다. 키 인증을 강하게 권장합니다. 세션 설정에 들어간 비밀번호는 결국 설정 파일 속 비밀번호입니다.

지금 어디에 있는지 확인하기 ​

정직한 테스트는 이렇게 물어보는 것입니다:

bash
snowpea -c "run hostname and tell me what it printed"

local에서는 내 머신, docker에서는 컨테이너 id, ssh에서는 원격 호스트가 나옵니다. 에이전트가 파일시스템을 보는 시야 전체가 백엔드를 거쳐 오므로, 이 부분에서 에이전트가 틀릴 여지는 없습니다.

바뀌지 않는 것 ​

백엔드가 다루는 것은 툴 실행이지 데몬이 아닙니다. 세션, 메모리, 승인 큐, 스케줄러, 게이트웨이는 세션이 어떤 백엔드를 쓰든 전부 내 머신의 데몬 안에 그대로 있습니다. 네트워크 툴 — web_search, web_extract, 브라우저 툴, 미디어 툴, MCP 서버 — 은 백엔드 호스트가 아니라 데몬에서 실행됩니다.

다음 ​

헤드리스 — 이 모든 것을 스크립트에서 쓰기.

MIT licensed. The manual is generated from the product repositories — see the banner on each page.