genai-io/san
요약
San은 코딩 및 다양한 작업을 수행하기 위해 설계된 터미널 네이티브 통합 런타임입니다. Go 언어로 작성되어 가볍고 빠르며, LLM, 검색 백엔드, 페르소나, 확장 기능을 플러그인 형태로 지원하는 자기 진화형 에이전트 환경을 제공합니다.
핵심 포인트
- Go 기반의 단일 바이너리로 실행 환경 의존성 없이 어디서나 구동 가능
- LLM, 검색, 페르소나, 기술(MCP 포함)을 자유롭게 교체하는 플러그형 구조
- 작업 내용을 메모리와 기술로 추출하여 스스로 성장하는 자기 진화형 기능
- 이벤트 기반 조정 및 세션 지속성을 통한 병렬 서브에이전트 실행 지원
- 지연 시간 단축을 위한 프롬프트 예측 및 로컬 웹 UI 인스펙터 제공
San은 코딩 및 그 이상의 작업을 수행하는 **특화된 에이전트를 위한 터미널 네이티브 통합 런타임 (unified runtime)**이며, 다섯 가지 플러그형 기둥인 LLM, 검색 백엔드 (search backends), 페르소나 (personas), 기술 및 확장 기능 (skills & extensions) (기술, 플러그인, MCP 서버, 서브에이전트), 그리고 사용자가 작업함에 따라 함께 성장하는 자기 진화형 (self-evolving) 에이전트를 기반으로 구축되었습니다. Go 언어로 작성되었습니다.
*이름의 유래 — San은 三("셋")으로 쓰이고 ☰로 그려집니다. 도덕경(Dao De Jing)의 三生万物 — "셋이 만물을 낳는다"에서 따왔습니다: 3단계 루프(추론(reason) → 행동(act) → 관찰(observe))를 실행하며 어떤 에이전트로든 변할 수 있는 하나의 런타임입니다. 명령어는 *
san
LLM 제공업체 (LLM providers)— Anthropic, OpenAI, Google, DeepSeek, Moonshot, Alibaba, MiniMax, Z.ai (GLM), SenseNova, Mimo, Ollama (로컬); /model 명령어를 통해 교체 가능
검색 백엔드 (Search backends)— Exa, Tavily, Brave, Serper; /search 명령어를 통해 교체 가능
페르소나 (Personas)— 사용자 또는 프로젝트 범위로 지정된 Markdown 정체성; /identity 명령어를 통해 교체 가능
(상세 내용).기술 및 확장 기능 (Skills & extensions)— Claude Code 기술, 플러그인 및 MCP 서버를 수정 없이 실행; 샌드박스화된 서브에이전트; 라이프사이클 훅 (shell, LLM, agent, HTTP); 자동 로드되는 프로젝트 메모리.자기 진화형 (Self-evolving)— 몇 번의 턴이 지날 때마다 백그라운드 리뷰어가 최근 작업 내용을 영구적인 메모리와 재사용 가능한 기술로 추출하여, 사용자가 작업함에 따라 에이전트가 레벨업합니다.(Level 1 사용 가능; 더 깊은 레벨은 준비 중입니다.)
어디서나 실행 가능 (Runs anywhere)— 런타임 의존성이 없는(Node.js나 Python 불필요) 단일 ~12 MB 바이너리. 네이티브 Go: ~0.01초의 콜드 스타트(cold start), ~32 MB의 베이스라인, 그리고 동일한 파일이 노트북, 엣지 디바이스 또는 scratch 컨테이너에서 변경 없이 실행됩니다 (footprint · benchmark).
이벤트 기반 조정 (Event-driven coordination)— 발행/구독(pub/sub) 허브를 통한 병렬 서브에이전트 실행 (architecture).
세션 지속성 (Session persistence)— 자동 저장, 재개, 포크(fork) 및 자동 컨텍스트 압축.
프롬프트 예측 (Prompt prediction)— 지연 시간을 줄이기 위해 다음에 올 가능성이 높은 프롬프트를 투기적으로 완성(Speculative completion).
세션 인스펙터 (Session inspector)— 트랜스크립트 재생, 시스템 프롬프트 포렌식 및 활성 세션의 라이브 테일(live-tail)을 위한 로컬 웹 UI (san inspector).
curl -fsSL https://raw.githubusercontent.com/genai-io/san/main/install.sh | bash
업그레이드하려면 다시 실행하세요. 삭제하려면:
curl -fsSL https://raw.githubusercontent.com/genai-io/san/main/install.sh | bash -s uninstall
기타 방법
Windows (PowerShell)
irm https://raw.githubusercontent.com/genai-io/san/main/install.ps1 | iex
업그레이드하려면 다시 실행하세요. 삭제하려면:
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/genai-io/san/main/install.ps1))) uninstall
Go Install
go install github.com/genai-io/san/cmd/san@latest
소스에서 빌드 (Build from Source)
git clone https://github.com/genai-io/san.git
cd san
go build -o san ./cmd/san
...
san # 대화형 (interactive)
san "explain this function" # 원샷 (one-shot)
cat main.go | san "review" # 파이프 입력 (piped input)
...
| 항목 | 방법 |
|---|---|
| 모델 선택 / 전환 | /model — ~/.san/providers.json에 저장 |
| ... |
API 키의 경우, 일치하는 환경 변수 (env var)를 설정하거나 (아래 Credentials 섹션 참조), 첫 실행 시 프롬프트가 나타나면 붙여넣으세요. 전체 가이드: docs/guides/getting-started.md
.
설정(Config)은 ~/.san/ (사용자) 및 <project>/.san/ (프로젝트, 사용자 설정 재정의)에 저장됩니다. 프로젝트 루트에 있는 SAN.md 또는 CLAUDE.md는 시스템 프롬프트(system prompt)로 자동 로드됩니다.
Credentials (인증 정보)
| 서비스 | 변수 |
|---|---|
| Anthropic (Claude) | ANTHROPIC_API_KEY 또는 Vertex AI |
| OpenAI (GPT, o-series, Codex) | OPENAI_API_KEY |
| Google (Gemini) | GOOGLE_API_KEY |
| Moonshot (Kimi) | MOONSHOT_API_KEY |
| DeepSeek (DeepSeek V4) | DEEPSEEK_API_KEY |
| Alibaba (Qwen) | DASHSCOPE_API_KEY |
| MiniMax | MINIMAX_API_KEY |
| Z.ai (GLM) | BIGMODEL_API_KEY |
| Ollama (로컬) | OLLAMA_BASE_URL (기본값 http://localhost:11434/v1 ) |
| SenseNova | SENSENOVA_API_KEY |
| Mimo | MIMO_API_KEY |
| Exa search | 없음 (기본값) |
| Tavily search | TAVILY_API_KEY |
| Brave search | BRAVE_API_KEY |
| Serper search | SERPER_API_KEY |
디렉토리 구조 (Directory layout)
사용자 수준 (~/.san/):
providers.json # 제공자 연결 및 현재 모델
settings.json # 권한, 훅 (hooks), 환경 변수, 신원 (identity)
skills.json # 스킬 상태
...
프로젝트 수준 (.san/):
settings.json # 권한 (Permissions), 훅 (hooks), 비활성화된 도구 (disabled tools)
mcp.json # MCP 서버 정의 (MCP server definitions)
identities/*.md # 프로젝트 범위의 페르소나 (user-level 오버라이드)
...
Apple Silicon 기반의 Claude Code v2.1.112와 동일한 모델 (claude-sonnet-4-6)을 비교했을 때:
| 지표 (Metric) | San | Claude Code | 이점 (Advantage) |
|---|---|---|---|
| 다운로드 크기 (Download size) | 12 MB | 63 MB (+ Node.js 112 MB) | 5배 더 작음 |
| ... |
두 도구 모두 유사한 기능(훅 (hooks), 스킬 (skills), 플러그인 (plugins), 세션 (session), MCP, 등)을 갖추고 있습니다. 성능 차이는 Node.js V8/JIT/GC 런타임 오버헤드 대비, Go의 네이티브 컴파일 (native compilation), 최소한의 아키텍처 설계 (minimal architecture design), 그리고 가벼운 프롬프트 엔지니어링 (lean prompt engineering)에서 비롯됩니다.
전체 상세 내용 확인: docs/operations/benchmark.md
- 문서 인덱스 (Documentation Index) — 아키텍처, 기능, 운영 및 참조 맵
- 아키텍처 (Architecture) — 아키텍처 진입점 및 읽기 순서
- 패키지 맵 (Package Map) — 패키지 소유권 및 의존성 경계
- 시스템 프롬프트 (System Prompt) — 슬롯 모델 (Slot model), 신원 (identity), 스킬/에이전트 주입 (skill/agent injection)
- 서브에이전트 (Subagents) · 스킬 (Skills) · 플러그인 (Plugins) · MCP
- 훅 (Hooks) · 권한 (Permissions) · 태스크 (Tasks)
- 인스펙터 (Inspector) — 트랜스크립트 재생 및 디버깅을 위한 로컬 웹 UI
docs/packages/하위의 패키지별 설계
— 패키지 인덱스 (Package Index)부터 시작
- Claude Code — Anthropic의 AI 코딩 어시스턴트
- Aider — 터미널에서의 AI 페어 프로그래밍
- Continue — 오픈 소스 AI 코드 어시스턴트
두 가지 참여 경로 — 중국 커뮤니티를 위한 WeChat, 그 외 모두를 위한 Slack:
기여를 환영합니다! 가이드라인은 CONTRIBUTING.md를 참조하세요.
Apache License 2.0 - 자세한 내용은 LICENSE를 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기