Bamboo-agent
요약
Bamboo는 Zenith의 핵심 로컬 에이전트 하네스로, 작업 공간과 구성된 모델을 제공하여 AI 에이전트를 프로젝트에 실행할 수 있게 합니다. 파일을 읽고 도구를 사용하며 세션을 유지하는 기능을 브라우저, 데스크톱 셸 또는 Rust 애플리케이션 등 다양한 환경에서 노출합니다. 로컬에서 런타임 및 세션 저장이 이루어지지만, 구성된 모델 제공업체나 웹 도구는 외부 데이터 전송이 가능하므로 주의가 필요합니다.
핵심 포인트
- AI 에이전트를 로컬 프로젝트에 실행하는 하네스입니다.
- 파일 읽기, 도구 사용, 세션 유지가 핵심 기능입니다.
- 브라우저, 셸, Rust 앱 등 다양한 환경에서 노출 가능합니다.
- 로컬 저장이 기본이지만 외부 데이터 전송 위험은 존재합니다.
Bamboo 🎋

브랜드 일러스트레이션이며, 소프트웨어 스크린샷이 아닙니다. 대나무는 회복탄력성을 상징합니다.
터미널 또는 자체 앱에서 프로젝트에 AI 에이전트를 실행하세요.
Bamboo는 Zenith의 핵심 로컬 에이전트 하네스입니다. 작업 공간과 구성된 모델을 제공하면, 파일을 읽고, 도구를 사용하고, 세션을 유지하며, 동일한 런타임을 브라우저, 데스크톱 셸 또는 Rust 애플리케이션에 노출할 수 있습니다.
사용 사례
| 작업 | Bamboo의 도움 방식 |
|---|---|
| 저장소 이해 또는 작업 수행 | 작업 공간에 프롬프트를 실행하고, 도구 활동을 검사하며, 나중에 세션을 계속할 수 있습니다. 파일 및 셸 접근은 런타임의 권한 정책을 따릅니다. |
| ... |
The 런타임과 세션 저장은 로컬에서 실행됩니다. 구성된 모델 제공업체, MCP 서버, 웹 도구 및 플러그인은 기기 외부로 데이터를 전송할 수 있습니다. 로컬 호스팅이 오프라인 모델 또는 제로 외부 API 비용을 의미하지는 않습니다.
소스 체크아웃인가요 아니면 배포 패키지인가요?
이 README는 개발 소스 체크아웃에 대해 설명하며, 원래 제품 감사는 025641317c5703226052a4b94a52d1844615c352에서 이루어졌고, 이 문서 업데이트는 dev 리비전 10ca51ccdf1f253ff6ec1e78f21b4c74835e1582를 기반으로 합니다. 모든 명령어 또는 기능이 최신 crates.io 릴리스에 포함되어 있다는 주장(claim)은 아닙니다. 버전을 비교할 때는 설치된 바이너리의 bamboo --help와 릴리스/소스 감사를 확인하세요. 소스 매니페스트는 의도적으로 0.0.0을 사용하며, 배포 시에는 릴리스 버전이 별도로 찍힙니다. 아래 기록은 자체적이고 더 오래된 소스 출처(provenance)를 유지합니다.
브라우저 인터페이스가 프로젝트 컨텍스트 준비하는 모습 보기

Static image · Recording details
실제 소스 체크아웃 기록을 임시 작업 공간과 실제 Bamboo 백엔드와 함께 녹화합니다. 프로젝트 생성 및 선택이 표시되며, 프로바이더 호출이나 클레임된 에이전트 작업 완료는 없습니다. 이는 게시된 데스크톱 패키지의 기록이 아닙니다.
사용해 보기
설치
게시된 패키지의 경우:
cargo install bamboo-agent --locked
bamboo --help
여기에 설명된 소스의 경우, **Rust 1.95+**를 사용하고 이 체크아웃에서 실행합니다:
node scripts/frontend-package.cjs stage
cargo install --path . --locked
스테이징 명령어는 커밋된 프론트엔드 패키지를 검증합니다. 일반 빌드는 잠긴 Lotus Next 아티팩트를 필요로 하며, 이것이 없거나 유효하지 않으면 실패합니다. 이들은 이동하는 latest를 조용히 다운로드하지 않습니다. 정확한 식별자는 frontend-package-lock.json에 있습니다.
의도적으로 API 전용 소스 빌드를 하는 경우:
BAMBOO_FRONTEND_BUILD_MODE=api-only cargo build --bin bamboo
이 POSIX 셸 할당은 Windows에서 PowerShell의 `$env:BAMBOO_FRONTEND_BUILD_MODE =
헬스 엔드포인트는 GET /api/v1/health입니다. bamboo health는 접속 가능한 서버가 필요합니다. doctor는 설정 및 제공업체 자격 증명을 확인하며, 해당 오류 발생 시 실패합니다. 이의 서버 도달성 프로브(server-reachability probe)는 정보용이므로, 서버 자체가 없다고 해서 doctor가 실패하는 것은 아닙니다. --port, --bind, --data-dir, --static-dir, 그리고 --workers를 사용하면 설정을 재정의할 수 있습니다. 전체 목록은 bamboo serve --help를 실행하여 확인하세요.
터미널에서 작업하기
bamboo -p "이 워크스페이스의 README를 요약해 주세요." --workspace /path/to/project
bamboo sessions
bamboo history <session-id>
...
헤드리스(Headless) 실행은 전체 에이전트 런타임과 구성된 제공업체를 사용합니다. 만약 대화형 bamboo -p 실행이 도구 권한이나 질문 때문에 일시 중지되면, 해당 터미널에서 프롬프트에 답변하세요. 브라우저 응답 및 bamboo respond <session-id> --pending / bamboo respond <session-id> "<answer>"는 별도로 실행되는 bamboo serve가 소유한 런타겟을 대상으로 하며, 인프로세스(in-process) 헤드리스 실행을 해제하지 않습니다. 예시를 완료하기 위해 권한 확인 기능을 비활성화하지 마세요.
키가 없나요? bamboo -p "ping" --echo는 전송 스모크 테스트(transport smoke test)일 뿐입니다. 이는 LLM을 사용하지 않고 에코 실행기(echo executor)를 사용하며, 모델 추론이나 성공적인 도구 작동을 입증하지 않습니다.
애플리케이션에서 호출하기
SID=$(curl -fsS http://127.0.0.1:9562/api/v1/chat \
-H 'Content-Type: application/json' \
-d '{"message":"Say hello.","model":"YOUR_MODEL_ID"}' | jq -r .session_id)
...
터미널 A를 열어 둔 상태로 유지하세요. HTTP 200 응답 헤더가 나타나면, 출력된 세션 ID를 터미널 B에 복사하여 실행을 시작합니다:
SID="<터미널 A에서 출력된 세션-id>"
curl -fsS -X POST "http://127.0.0.1:9562/api/v1/execute/$SID" \
-H 'Content-Type: application/json' -d '{}'
Native Chat은 실제 message_id와 ingress_seq 수신 필드를 반환합니다.
직렬화된 엔벨로프는 256 KiB로 제한되며 의미론적 콘텐츠를 포함해야 합니다. 첨부 파일은 중복 이미지나 16개 이상의 이미지를 포함하여 온전히 유지됩니다.
제한에 맞추기 위한 잘림(truncation)은 없습니다. 소비자 없이 실행되는 Chat은 입력을 받은 편지함(Inbox)에 남겨두고, 히스토리를 추가하거나(MessageAppended를 방출), 제목을 시작하지 않습니다. 자동 제목 작업은 확인된 Native 수신(admission)으로 이동한 후 성공적인 HTTP Ready 시작이 이루어집니다. 실행 중인 소유자나 다른 합법적인 동일 세션 활성화가 클라이언트의 execute 요청 이전에 메시지를 소비할 수 있습니다. 특정 의도는 스테이지된 자식/Bash 결과를 방출하지 않으며, 해당 코디네이터는 그 순서를 유지합니다.
참조된/티켓(Referenced/ticket) 및 Root 수신은 기존 스케줄링 규칙을 유지합니다.
실시간 이벤트를 보려면 터미널 A를 확인하십시오. 실행 후에 구독하면 응답 토큰을 놓칠 수 있습니다. 브라우저는 공유 /v2/stream WebSocket을 사용하며, 레거시 SSE 경로는 계속 사용할 수 있습니다.
Rust SDK로 사용하기 (인-프로세스)
SDK 임베딩의 경우, bamboo_sdk::agent::Agent는 동일한 엔진을 사용하여 run, run_stream, 그리고 execute를 제공합니다. 기본값은 구성된 프로바이더를 필요로 하며, 자격 증명(credentials)을 공급하지 않습니다. 완전한 내장 기본값 어셈블리 또한 run_with_skills(session, SdkSkillInput)과 그 취소 변형을 지원합니다. 이 비동기 엔트리는 현재 선택 사항과 포터블 제출 훅(portable submission hook)을 검증한 후 준비된 User를 추가합니다. 이들은 새로운 빈 Session 또는 정확한 영구 Session을 필요로 하며, 제출하기 전에 스테이징된 편집 내용을 저장하고 다시 로드해야 합니다. 기존의 String 엔트리는 동기적 추가 및 오류 순서를 유지합니다. 명시적인 도구 정책(tool policies), 사용자 정의 실행기(custom executors) 및 from_runtime은 이 유한한 Skills 호스트를 공급하지 않으며, 추가하기 전에 타입이 지정된 입력을 거부합니다. 저수준의 execute는 자체 커스텀 요청 계약을 유지합니다. 첫 실행 CLI / HTTP / SDK 예제, API 참조, 그리고 게시된 크레이트의 rustdoc를 참조하십시오.
사용자의 데이터 및 운영 경계
- Bamboo 설정과 세션은 기본적으로
~/.bamboo에 저장됩니다 (BAMBOO_DATA_DIR또는--data-dir로 재정의 가능). Jiandu는 표준 메모리를 별도로~/.jiandu에 소유합니다. 격리 목적으로BAMBOO_JIANDU_DATA_DIR를 사용할 경우, 이는 비어있지 않은 절대 경로여야 합니다;--data-dir만으로는 메모리가 재배치되지 않습니다. - Bamboo가 프롬프트 컨텍스트와 예산을 선택하며, Jiandu는 메모리 영속성, 어휘 검색(lexical retrieval), 그리고 파생된 Dream 스냅샷 바이트를 소유합니다. Dream은 정렬 자료이며, 표준 진실이 아닙니다. 중복되는 Bamboo 메모리 인덱스나 임베딩 파이프라인은 필요하지 않습니다.
- AutoDream의 영구 후보(durable candidates)는 여전히 미확인 상태입니다 (
confidence생략). 모델 자체 평가는 사실을 확인할 수 없습니다. 호스트가 캡처한 메시지 ID와 역할/콘텐츠 지문(fingerprints)이 추출 입력과 체크포인트 재생, 심지어 연속성 중첩까지 검증합니다. 영구 후보는 알 수 없는 메시지 커버리지를 가진 원래 세션(Session)을 유지합니다: Jiandu 0.3.3은 콘텐츠 증명을 영속화하지 않으므로, 나중에 이루어진 메시지 편집이나 잘림이 정확한 범위를 지원할 수 없습니다. Bamboo 역시 기존의 ID 전용 세션 범위는 메모리를 재작성하거나 삭제하지 않고 알 수 없는 것으로 읽습니다; 중복 제거(dedup)도 동일한 뷰를 사용합니다. 요약, 세션 노트, 정제된 입력(sanitized-out input), 그리고 콘텐츠 증명이 없는 레거시 체크포인트는 알 수 없는 커버리지를 유지합니다. 모델은 출처 또는 확인 메타데이터를 제공하거나 프로젝트의 증거를 글로벌(Global)로 확장할 수 없습니다. - 서비스를 루프백(loopback)으로 유지하십시오. 새로운 인스턴스는 인증되지 않으며, 사설 LAN 피어는 비밀번호가 설정된 경우에도 현재 서버에 의해 신뢰하는 로컬로 취급됩니다. 원격 액세스의 경우, 루프백 바인딩/게시를 유지하고 신뢰할 수 있는 네트워크 상단에 인증하는 리버스 프록시(reverse proxy)를 배치하십시오.
- Docker Compose 설정은
127.0.0.1:9562:9562를 게시하고, 비루트 사용자 및 명명된 데이터 볼륨을 사용하며, 권한(capabilities)을 제거합니다. 해당 설정을 구축하려면cd docker && docker compose up -d --build를 실행하십시오. 제공자 설정은 여전히 필요합니다. - 터미널, 서버, 그리고 브라우저 인터페이스 자체가 네이티브 데스크톱 제어 기능을 제공하지는 않습니다.
Nova는 자체 플랫폼과 권한 요구 사항을 가진 별도의 MCP(Micro-Capability Platform) 기능입니다. 이 문서 감사(documentation audit)는 macOS/Windows 런타임 인증이 아닙니다.
Bamboo의 역할
flowchart LR
Bodhi["Bodhi · 데스크톱 셸"] --> Bamboo["Bamboo · 로컬 에이전트 런타임"]
Lotus["Lotus Next · 브라우저 UI"] --> Bamboo
...
Bodhi는 자신이 소유한 Bamboo 사이드카(sidecar)를 시작하고 상태 검사(health-checks)합니다. 외부 서버 재사용은 명시적으로 선택된 레거시 롤백 경로로 제한됩니다. 이 소스 개정판에서는 Bamboo의 기본 임베디드 프론트엔드는 레거시 Lotus UI가 아닌 Lotus Next입니다. 선택적 bodhi-server 계정/프로바이더 서비스는 로컬 경로에 필요하지 않습니다. Magpie는 메시징 채널을 연결하며, Pavilion은 웹사이트/문서를 호스팅합니다. 전체 모듈 맵은 Zenith를 참조하십시오.
Cargo 워크스페이스는 네 개의 계층으로 구성됩니다: crates/core (타입/인터페이스), crates/infra (저장소, 프로바이더, 메모리, MCP, 권한 및 기타 서비스), crates/engine (에이전트 루프/도구), 그리고 crates/app (서버, SDK, TUI, 브로커 및 클라이언트). 루트의 bamboo 바이너리가 이들을 조합하며; 소스 레벨 액터/브로커 명령어는 무제한 동시성이나 릴리스 성숙도를 보장하는 것이 아닌 고급 진입점입니다.
개발 및 탐색
cargo fmt --check
cargo test
cargo clippy
순수 Cargo 명령어는 매니페스트의 default-members를 사용합니다; cargo test가 모든 워크스페이스 멤버를 테스트하는 것은 아닙니다. 개발 전용 분석(analytics) 크레이트는 기본적으로 제외됩니다. --workspace를 사용하기 전에 Cargo.toml을 검사하십시오.
• Architecture · Configuration · Skill bundle input
• Plugins · Migration · Documentation index
• Contributing · Changelog · Security
일반적인 명령어(Ordinary Instruction) 발행물 역시 비공개 소스 바인딩을 유지합니다. 메인 파일과 호출 정책 사이드카드는 동일한 경계가 지정된 소스 기능(bounded source capability)을 통해 캡처되며 한 번 파싱됩니다. 원시 편집, 물리적 파일/루트 교체, 그리고 정책 존재 변경은 정규화된 메타데이터가 같더라도 발행물을 무효화합니다. 캡처된 정책 바이트는 보조 스냅샷과 일치해야 하며, 읽기 오류나 링크로는 정책이 부재할 수 없습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · 9ffce42f의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기