spacedriveapp/spacebot
요약
Spacebot은 팀과 커뮤니티 운영을 위한 에이전트 인프라로, LLM이 상태를 관리하는 대신 구조화된 저장소와 SQLite 기반의 타입화된 그래프를 사용하여 메모리를 관리합니다. 단일 세션의 한계를 넘어 다중 사용자 대화와 채널 간 공유 메모리, 프로세스 수준의 동시성을 지원하는 것이 특징입니다.
핵심 포인트
- LLM 대신 구조화된 저장소와 SQLite 그래프를 통한 상태 및 메모리 관리
- 작업 상태 머신 기반의 자율성 구현 및 학습된 기술의 재사용 가능성
- Discord, Slack, Telegram 등 다양한 플랫폼과의 손쉬운 연결 및 배포
- 모놀리스 구조를 탈피한 전문화된 프로세스 분리로 높은 동시성 확보
팀, 커뮤니티, 그리고 기업을 운영하는 에이전트 하네스 (agent harness).
spacebot.sh •
작동 방식 •
목표 및 작업 •
빠른 시작 •
Spacedrive •
문서
spacebot.sh로 클릭 한 번에 배포하세요— Discord, Slack, Telegram 또는 Twitch를 연결하고, 에이전트를 설정하면 끝입니다. 자체 호스팅 (self-hosting)은 필요하지 않습니다.
Spacebot은 팀을 위해 구축되었으며 누구나 사용할 수 있는 주관이 뚜렷한 에이전트 인프라 (agent infrastructure)입니다. 상태 (State)는 LLM이 관리하는 마크다운 (markdown) 파일이 아니라 구조화된 저장소에 있어야 합니다. 메모리 (Memory)는 SQLite 내의 타입화된 그래프 (typed graph)에 존재합니다. 자율성 (Autonomy)은 heartbeat.json이 아니라 목표 (goals)와 연결된 작업 상태 머신 (task state machine)을 기반으로 실행됩니다. LLM은 추론하고, 시스템은 상태를 유지합니다.
사용할수록 더 똑똑해집니다. 복잡한 작업을 수행한 후, 에이전트는 학습한 내용을 재사용 가능한 기술 (skills)로 캡처합니다. 대화가 유휴 상태가 되면, 백그라운드 프로세스가 보관할 가치가 있는 기술과 메모리를 조용히 저장합니다. 사용자의 어떠한 조치 없이도 모든 세션은 이전 세션을 기반으로 구축됩니다.
즉시 사용할 수 있으며, 한 개인부터 전체 커뮤니티까지 확장 가능합니다.
대부분의 AI 에이전트 프레임워크 (AI agent frameworks)는 모든 것을 단일 세션에서 실행합니다. 하나의 LLM 스레드 (thread)가 대화, 사고, 도구 실행 (tool execution), 메모리 검색 (memory retrieval), 그리고 컨텍스트 압축 (context compaction)을 모두 하나의 루프에서 처리합니다. 작업을 수행할 때는 사용자와 대화할 수 없습니다. 압축을 할 때는 응답이 끊깁니다. 메모리를 검색할 때는 가공되지 않은 결과가 노이즈와 함께 컨텍스트를 오염시킵니다.
Spacebot은 이 모놀리스 (monolith)를 단 한 가지 일만 수행하고 나머지는 위임하는 전문화된 프로세스들로 분리합니다.
다른 어떤 에이전트 하네스도 동시 다중 사용자 대화, 채널 간 공유 메모리, 그리고 진정한 프로세스 수준의 동시성 (process-level concurrency)을 처리하지 못합니다. 수백 명의 활성 멤버가 있는 Discord 커뮤니티, 병렬 워크스트림 (workstreams)이 실행되는 Slack 워크스페이스, 여러 시간대에 걸쳐 조정되는 Telegram 그룹까지. Spacebot은 사용자가 다른 사용자를 기다릴 필요 없이 이 모든 것을 처리합니다.
개인 사용자도 동일한 인프라를 누릴 수 있습니다. 더 나은 메모리, 더 나은 동시성, 더 나은 구조를 경험하세요. 팀이 의존하는 모든 것을 한 개인을 위해 제공합니다.
커뮤니티를 위해: Discord 서버에 Spacebot을 추가하세요. 채널과 스레드 전반에 걸친 동시 대화(concurrent conversations)를 처리하며, 모든 멤버에 대한 문맥(context)을 기억하고, 응답이 끊기지 않고 실질적인 업무를 수행합니다. 50명이 동시에 상호작용할 수 있습니다. 메시지 병합(coalescing) 시스템은 빠르게 쏟아지는 메시지 폭주를 감지하여 이를 하나의 턴(turn)으로 배치함으로써, 에이전트가 상황을 파악(read the room)할 수 있게 합니다.
팀을 위해: Slack에 연결하세요. 각 채널은 공유 메모리(shared memory)를 가진 전용 대화 세션을 갖게 됩니다. 한 엔지니어가 심도 있는 코딩 세션을 진행하는 동안, 다른 엔지니어는 빠른 답변을 얻을 수 있습니다. 채널의 응답성을 유지하면서도 워커(workers)들이 백그라운드에서 무거운 작업들을 처리합니다.
멀티 에이전트 설정(multi-agent setups)을 위해: 하나의 인스턴스에서 여러 에이전트를 실행하세요. Discord의 커뮤니티 봇, Slack의 개발 어시스턴트, 백그라운드 작업을 처리하는 리서치 에이전트 등입니다. 각 에이전트는 자신만의 정체성, 메모리, 보안 권한을 가집니다. 하나의 바이너리(binary), 하나의 배포(deploy)로 가능합니다.
다섯 가지 프로세스 유형이 있습니다. 각 유형은 하나의 작업만을 수행합니다.
**채널(Channels)**은 사용자와 대면하는 LLM 프로세스입니다. 대화당 하나씩 존재하며, 영혼과 정체성, 개성을 가집니다. 채널은 직접 작업을 실행하거나 메모리를 검색하지 않습니다. 대신 생각을 하기 위해 브랜치(branch)를 생성하고, 행동하기 위해 워커(worker)를 생성하며, 응답성을 유지합니다.
**브랜치(Branches)**는 생각을 하기 위해 채널의 문맥(context)으로부터 포크(fork)됩니다. 전체 대화 기록을 보유하며 동시에 실행됩니다. 채널은 작업 과정이 아닌 최종 결론만을 확인합니다.
**워커(Workers)**는 독립적인 프로세스입니다. 각 워커는 대화 문맥 없이 특정 작업, 집중된 프롬프트(prompt), 그리고 작업에 적합한 도구(tools)를 할당받습니다. 일회성 작업을 위한 '실행 후 망각(fire-and-forget)' 방식이거나, 후속 작업이 활성 워커로 이어지는 긴 세션을 위한 대화형 방식 모두 가능합니다.
**컴팩터(The Compactor)**는 프로그래밍 방식의 모니터(LLM이 아님)로, 채널당 문맥(context) 크기를 감시하며 채널이 가득 차기 전에 압축(compaction)을 트리거합니다. 압축 워커(compaction workers)는 차단(blocking) 없이 병렬로 실행됩니다.
**Cortex (코텍스)**는 모든 채널(channels), 워커(workers), 브랜치(branches)를 동시에 조망합니다. 이는 에이전트의 작업 메모리(working memory)를 유지하는데, 이는 모든 대화에 에이전트 전반에서 일어나고 있는 일에 대한 구조화된 인식을 부여하는 계층적 컨텍스트 조립 시스템(layered context assembly system)입니다. 이벤트는 발생하는 즉시 기록됩니다. 일중 합성(intra-day synthesis)은 이를 서사(narrative)로 압축하며, 일일 요약(daily summaries)은 자정에 집계됩니다. 지식 합성(knowledge synthesis)은 메모리 그래프(memory graph)가 변경될 때 재생성됩니다. 코텍스는 프로세스를 감독하고 메모리 그래프를 유지합니다.
사용자가 메시지 전송
→ 채널이 메시지 수신
→ 사고를 위한 브랜치 생성 (채널의 컨텍스트 보유)
...
프로세스 기능, 유형별 도구 액세스(tool access), 메모리 내부 구조, cron, 멀티 에이전트 격리(multi-agent isolation)에 대해서는 ARCHITECTURE.md를 참조하십시오.
Spacebot은 태스크 시스템(task system)을 중심으로 구축되었습니다. 목표(Goals)는 방향을 설정하고, 태스크(Tasks)는 작업을 수행합니다. 에이전트는 사용자의 존재 여부와 상관없이 실행하고, 기억하며, 개선됩니다.
설정된 간격에 따라, **자율 채널(autonomy channel)**이 정체성, 메모리, 작업 메모리, 전체 태스크 상태, 활성 목표, 그리고 마지막 몇 번의 실행 요약을 포함한 전체 컨텍스트와 함께 깨어납니다. 자율 채널은 가장 중요한 준비된 태스크를 선택하여 모든 도구 액세스 권한을 가지고 실행한 뒤 종료합니다.
상태(State)는 태스크에 존재합니다. 진행 상황 노트는 태스크 자체에 기록됩니다. 충돌(crash)이 발생한 후, 다음 깨어남(wake) 시 태스크 메타데이터를 읽어 중단된 지점부터 다시 시작합니다. 각 실행이 끝날 때 자율 채널은 발생한 일에 대한 요약을 작성합니다. 다음 깨어남 시, 그 요약이 에이전트가 가장 먼저 읽는 내용이 됩니다.
에이전트가 제안하고, 당신이 결정합니다. 자율 채널이 생성한 태스크는 pending_approval 상태로 들어갑니다. 당신이 승인하기 전까지는 아무것도 자율적으로 실행되지 않습니다.
Spacebot의 메모리는 SQLite와 LanceDB에 저장되는 타입 지정된 그래프 연결 지식 시스템(typed, graph-connected knowledge system)입니다. 모든 메모리는 유형(type), 중요도 점수(importance score), 그리고 관련 메모리로 향하는 그래프 엣지(graph edges)를 가집니다. 에이전트는 사실(facts)과 결정(decisions), 선호도(preferences)와 목표(goals)를 구분합니다.
8가지 메모리 유형— 사실 (Fact), 선호도 (Preference), 결정 (Decision), 정체성 (Identity), 이벤트 (Event), 관찰 (Observation), 목표 (Goal), 할 일 (Todo)
그래프 엣지 (Graph edges)— 관련됨 (RelatedTo), 업데이트함 (Updates), 모순됨 (Contradicts), 원인이 됨 (CausedBy), 일부임 (PartOf)
하이브리드 회상 (Hybrid recall)— 상호 순위 융합 (Reciprocal Rank Fusion)을 통해 벡터 유사도 (vector similarity)와 전체 텍스트 검색 (full-text search)을 병합
메모리 가져오기 (Memory import)— ingest/ 디렉토리에 파일을 드롭하면 Spacebot이 자동으로 구조화된 메모리를 추출합니다. 텍스트, 마크다운 (markdown), PDF를 지원합니다.
작업 메모리 (Working memory)— 5계층 컨텍스트 조립 시스템입니다. 정체성 컨텍스트 (Identity context), 구조화된 이벤트 로그 (structured event log), 교차 채널 활동 지도 (cross-channel activity map), 참여자 인식 (participant awareness), 그리고 변화 주도형 지식 합성 (change-driven knowledge synthesis)으로 구성됩니다. 대부분의 계층은 프로그래밍 방식으로 작동하며, 최신 상태를 유지하기 위해 LLM 호출을 사용하지 않습니다.
기술 (Skills)은 워커 시스템 프롬프트 (worker system prompts)에 주입되는 재사용 가능한 절차입니다. 에이전트는 경험을 통해 이를 작성하며, 시간이 지남에 따라 자동으로 축적됩니다.
자율적 기술 캡처 (Autonomous skill capture)— 채널이 여러 단계의 작업이나 문제 해결이 필요한 워크플로우를 식별하면, 이를 기술로 작성하도록 브랜치 (branch)에 위임합니다. 해당 기술은 다음 세션 및 이후의 모든 세션에 로드됩니다.
대화 후 성찰 (Post-conversation reflection)— 대화가 유휴 상태가 되면, 백그라운드 브랜치가 조용히 이력을 검토하고 보관할 가치가 있는 기술과 메모리를 저장합니다. 사용자의 조작은 필요하지 않습니다.
AI 지원 저작 (AI-assisted authoring)— 평이한 언어로 기술을 설명하면, 에이전트가 이를 생성하고 저장하기 전에 미리보기를 보여줍니다.
워커 주입 (Worker injection)— 전문적인 작업을 위해 기술이 워커 시스템 프롬프트에 주입됩니다.
skills.sh 레지스트리 (skills.sh registry)— 명령어 하나로 공개 생태계의 모든 기술을 설치할 수 있습니다. 공개 레지스트리의 모든 기술과 호환됩니다.
spacebot skill add vercel-labs/agent-skills
spacebot skill add anthropics/skills/pdf
spacebot skill list
대화를 통해 생성 및 관리되는 크론 잡 (Cron jobs):
자연스러운 스케줄링 (Natural scheduling)— "30분마다 내 편지함 확인해줘"라는 요청이 전달 목표를 가진 크론 잡 (Cron job)으로 변환됩니다.
엄격한 실제 시간 스케줄 (Strict wall-clock schedules)— 정확한 현지 시간 실행을 위한 크론 표현식 (Cron expressions)을 사용합니다.
단일 전달 (Single delivery)— 실행 중 발생하는 모든 회신 호출은 버퍼에 저장되었다가 작업이 완료될 때 하나의 메시지로 한꺼번에 전송됩니다. 실행 중간에 파편화된 메시지가 전달되지 않습니다.
서킷 브레이커 (Circuit breaker)— 3회 연속 실패 시 자동으로 비활성화됩니다.
전체 에이전트 기능 (Full agent capabilities)— 각 작업은 분기 (Branching) 및 워커 (Workers)를 포함하는 새로운 채널을 할당받습니다.
워커 (Workers)는 실제 업무를 수행하기 위한 도구들을 탑재하고 있습니다:
셸 (Shell)— 구성 가능한 타임아웃 (Timeout)과 함께 임의의 명령어를 실행합니다.
파일 (File)— 디렉토리를 자동 생성하며 파일을 읽고, 쓰고, 목록을 나열합니다.
브라우저 (Browser)— 접근성 트리 (Accessibility-tree) 참조를 포함한 헤드리스 크롬 (Headless Chrome) 자동화 기능을 제공합니다. 탐색, 클릭, 타이핑, 스크린샷 촬영, 탭 관리가 가능합니다.
OpenCode— 코드베이스 탐색, LSP (Language Server Protocol) 인지, 심층 컨텍스트 관리 기능을 갖춘 지속적인 워커로서 완전한 코딩 에이전트를 생성합니다.
Brave 웹 검색 (Brave web search)— 최신성 필터, 지역화, 구성 가능한 결과 개수를 사용하여 웹을 검색합니다.
Discord, Slack, Telegram, Twitch, Signal, Mattermost, Email, Webchat을 위한 네이티브 어댑터와 범용 웹훅 (Webhook) 수신기를 제공합니다:
메시지 병합 (Message coalescing)— 빠르게 연사되는 메시지들은 타이밍 컨텍스트와 함께 단일 LLM 턴 (Turn)으로 배치 처리됩니다.
파일 첨부 (File attachments)— 파일, 이미지, 문서를 송수신합니다. 첨부 파일은 워크스페이스 (Workspace)에 저장되며 ID를 통해 다시 호출됩니다.
리치 메시지 (Rich messages)— 임베드/카드, 인터랙티브 버튼, 선택 메뉴, 투표 (Discord). Block Kit 및 슬래시 명령어 (Slack).
이메일 (Email)— TLS를 포함한 IMAP 폴링 (Polling) + SMTP 전달, UID 기반 중복 제거, 허용된 발신자 필터링 및 첨부 파일 제한 기능을 제공합니다. Proton Bridge와 같은 로컬 브리지와 함께 작동합니다.
웹챗 (Webchat)— SSE 스트리밍을 지원하며 임베드 가능한 포털 채팅으로, 에이전트별 세션 격리를 제공합니다.
채널별 권한 (Per-channel permissions)— 길드 (Guild), 채널, DM 레벨의 액세스 제어를 지원하며 핫 리로드 (Hot-reloadable)가 가능합니다.
4단계 라우팅 (Four-level routing)은 모든 호출에 대해 적절한 모델을 선택합니다. 채널 (Channels)에는 최적의 대화형 모델이 할당됩니다. 워커 (Workers)에는 빠르고 저렴한 모델이 할당됩니다. 코딩 워커 (Coding workers)는 자동으로 업그레이드됩니다. 단순한 사용자 메시지는 외부 호출 없이 1밀리초 미만의 프롬프트 스코어러 (prompt scorer)에 의해 더 저렴한 모델로 다운그레이드됩니다. 음성 메시지는 전용 음성 모델로 라우팅됩니다.
로컬 모델을 위한 Ollama, Z.ai GLM 모델, Azure OpenAI, 그리고 커스텀 제공업체를 포함하여 OpenAI 호환 또는 Anthropic 호환 엔드포인트라면 무엇이든 작동합니다. Kilo Gateway, NVIDIA, MiniMax, Moonshot AI, Gemini, GitHub Copilot, OpenCode Go 등을 위한 내장 지원을 제공합니다.
워커를 외부 MCP 서버에 연결하여 데이터베이스, API, SaaS 제품, 커스텀 통합 등 임의의 도구 액세스 권한을 부여할 수 있습니다. stdio 및 스트리밍 가능한 HTTP 전송 방식을 모두 지원합니다. 자동 도구 검색 (Automatic tool discovery), 핫 리로드 (Hot-reloadable), 지수 백오프 (Exponential-backoff) 재시도 기능을 지원하여 고장 난 서버가 시작 프로세스를 차단하지 않도록 합니다.
Spacebot은 임의의 셸 명령을 실행하는 자율적인 LLM 프로세스를 실행합니다. 보안은 계층화되어 있어 단일 실패가 자격 증명을 노출하거나 격리 (containment)를 깨뜨리지 않습니다.
자격 증명 격리 (Credential isolation): 비밀 정보 (secrets)는 시스템 자격 증명 (LLM API 키, 메시징 토큰, 서브프로세스에 절대 노출되지 않음)과 도구 자격 증명 (워커에 환경 변수로 주입되는 CLI 토큰)으로 분리됩니다. 모든 서브프로세스는 정화된 (sanitized) 환경에서 시작됩니다. 시스템 비밀 정보는 어떤 서브프로세스에도 들어가지 않습니다.
비밀 저장소 (Secret store)— 자격 증명은 별칭 (alias)으로 참조되는 전용 암호화 데이터베이스에 저장됩니다. 일반 설정 파일에는 절대 비밀 정보가 포함되지 않습니다. 저장 시 암호화 (Encryption at rest)— Argon2id를 통해 유도된 마스터 키를 사용하는 선택적 AES-256-GCM을 지원하며, 이는 OS 자격 증명 저장소 (macOS Keychain, Linux kernel keyring)에 저장되고 디스크나 환경 변수에는 절대 저장되지 않습니다. 출력 스크러빙 (Output scrubbing)— 모든 도구 비밀 값은 워커의 출력이 채널이나 LLM 컨텍스트에 도달하기 전에 삭제(redacted)됩니다. 롤링 버퍼 (rolling buffer)가 스트림 청크 (stream chunks)에 나뉘어 있는 비밀 정보를 처리합니다.
프로세스 격리 (Process containment): shell 및 exec 도구는 OS 수준의 파일 시스템 격리 (filesystem containment) 내에서 실행됩니다. Linux에서는 bubblewrap이 에이전트의 워크스페이스 (workspace)를 제외하고 파일 시스템을 읽기 전용으로 만드는 마운트 네임스페이스 (mount namespace)를 생성합니다. macOS에서는 sandbox-exec가 SBPL 프로필을 통해 동일한 제한 사항을 강제합니다. 이는 커널 수준에서 강제됩니다.
동적 샌드박스 (Dynamic sandbox)— 대시보드 또는 API를 통해 재시작 없이 샌드박스 모드를 전환할 수 있습니다.
워크스페이스 격리 (Workspace isolation)— 파일 도구는 에이전트의 워크스페이스 외부의 경로를 거부합니다. 이를 벗어나는 심볼릭 링크 (Symlinks)는 차단됩니다.
유출 탐지 (Leak detection)— 평문 (plaintext), URL 인코딩 (URL-encoded), base64, hex 인코딩에 걸쳐 채널 유출 (egress) 시 비밀 패턴을 확인합니다.
SSRF 보호 (SSRF protection)— 브라우저 도구는 클라우드 메타데이터 엔드포인트 (cloud metadata endpoints), 사설 IP (private IPs), 루프백 (loopback), 링크 로컬 주소 (link-local addresses)로의 요청을 차단합니다.
Spacebot은 네 가지 특정 메커니즘을 통해 시간이 지남에 따라 스스로를 구축해 나갑니다.
브랜치 (Branches)는 경험으로부터 기술을 작성합니다. 채널이 여러 단계, 문제 해결 또는 도메인 지식이 필요한 워크플로 (workflow)를 식별하면, 이를 구조화된 기술 (skill)로 캡처하기 위해 브랜치에 위임합니다. 이 기술은 디스크에 저장되어 다음 세션에 로드됩니다. 향후 작업자들은 이 기술을 자신의 시스템 프롬프트 (system prompt)에 주입받게 됩니다.
대화 후 성찰 (Post-conversation reflection)은 보존할 가치가 있는 것을 저장합니다. 대화가 유휴 상태가 되면, 백그라운드 브랜치가 이력을 검토하고 보존할 가치가 있는 기술과 기억을 조용히 저장합니다. 이는 제한된 턴 예산 (turn budget) 내에서 실행되며, 사용자에게 보이는 출력은 생성하지 않고, 학습할 만큼 충분한 대화가 있을 때만 실행됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기