Skip to content
Robotadocs

시작하기

Robota는 같은 기반 위에서 조합 가능한 TypeScript 라이브러리와 에이전트 인터페이스를 제공합니다. 우리가 향하는 방향은 우리의 에이전트가 우리의 에이전트를 개발하고 발전시키는 것이며, 이 가이드는 현재 제공하는 기능을 다룹니다. 에이전트를 만들 때는 SDK를, 코딩 어시스턴트가 필요할 때는 robota CLI를 사용하세요. 이 페이지는 설치부터 첫 에이전트, 내장 도구가 있는 세션, CLI까지 안내합니다.

API는 새 버전에서 바뀔 수 있습니다. 이슈 보고.

어떤 경로가 적합한가요?

"지금 바로 터미널에서 코딩 어시스턴트를 사용하고 싶다" → CLI 빠른 시작 — API 키 또는 로컬 모델 필요

"앱에 챗봇이나 AI 기능을 만들고 싶다" → 첫 번째 에이전트

"코드를 다시 작성하지 않고 AI 프로바이더를 바꾸고 싶다" → 프로바이더 전환

"파일·셸 도구를 갖춘 AI 어시스턴트를 직접 만든 도구나 앱에 넣고 싶다" → 내장 도구가 있는 세션 사용하기

"API 키 없이 무료로 시도하고 싶다" → 로컬 모델


API 키가 없나요? 로컬 모델로 시도하세요

LM Studio를 설치하고 모델을 내려받은 뒤 로컬 서버를 시작하세요(Developer 탭 → Start Server, 주소는 http://localhost:1234). 그다음:

npx @robota-sdk/agent-cli  # "No — use a local model (LM Studio, no API key needed)" 선택

Ollama나 llama.cpp는 Local LLM Setup(영어)을 참고하세요.


사전 요구사항

  • Node.js 22.12 이상 — Robota CLI와 배포되는 모든 @robota-sdk/* 패키지가 node >=22.12.0을 선언합니다. 아래 npm CLI와 Node 예제에도 Node가 필요합니다. node --version으로 확인하세요. 패키지의 메인 진입점은 플랫폼 중립이고, Node 호스트가 필요한 부분은 @robota-sdk/agent-framework/node처럼 /node 서브패스에 있습니다.
  • API 키: Anthropic, OpenAI, Gemini, DeepSeek, Qwen, OpenRouter 중 하나 — 또는 LM Studio, Ollama 같은 로컬 모델 서버(키 불필요).
  • macOS, Linux 또는 Windows. 셸 명령용 OS 샌드박스는 macOS, Linux, WSL2에서 사용할 수 있고, 네이티브 Windows에서는 사용할 수 없습니다.

설치

필요한 패키지를 고르세요:

바로 쓸 수 있는 코딩 어시스턴트

# 설치 없이 바로 실행
npx @robota-sdk/agent-cli
 
# 계속 사용하려면 전역 설치
npm install -g @robota-sdk/agent-cli

커스텀 AI 에이전트

npm install @robota-sdk/agent-core @robota-sdk/agent-provider @anthropic-ai/sdk

@robota-sdk/agent-provider는 임포트한 프로바이더의 벤더 SDK만 불러옵니다. Anthropic은 @anthropic-ai/sdk, OpenAI, DeepSeek, Qwen, Gemma는 openai, Gemini는 @google/genai입니다. 사용하는 것을 설치하세요.

도구 호출(함수 도구)

npm install @robota-sdk/agent-core @robota-sdk/agent-tools @robota-sdk/agent-provider @anthropic-ai/sdk zod@4

agent-tools는 Zod 4를 사용합니다. 스키마가 맞도록 zod@4를 설치하세요.

내장 도구·권한·훅을 갖춘 세션

npm install @robota-sdk/agent-framework @robota-sdk/agent-provider @anthropic-ai/sdk

빠른 시작 — CLI

설치한 패키지가 고정된 제품 식별 정보를 제공합니다. 상태, 캐시, 로그를 어디에 둘지는 패키지에 내장된 기본값에서 오거나, 직접 고른 제품 환경 파일에서 옵니다. 이런 기본값 없이 빌드된 패키지는 파일이 필요합니다. 예를 들어 이 제품의 상태, 캐시, 로그 경로를 담은 product.env를 만드세요:

PRODUCT_USER_STATE_DIR=./state
PRODUCT_PROJECT_STATE_DIR=.project-state
PRODUCT_CACHE_DIR=./cache
PRODUCT_LOG_DIR=./logs

상대 경로로 적은 사용자 경로는 환경 파일이 있는 디렉터리를 기준으로 해석됩니다. 제품마다 상태 경로를 따로 정하세요. 설치한 아티팩트와 일치하지 않는 식별 정보 설정은 이 운영 설정 파일에 넣지 마세요. 파일은 절대 경로로 선택하되, 설치한 제품의 id를 함께 지정하세요. CLI는 PRODUCT_ID가 설치한 제품을 가리킬 때만 PRODUCT_CONFIG_FILE을 읽습니다.

export PRODUCT_ID=robota
export PRODUCT_CONFIG_FILE=/absolute/path/to/product.env
# 설치 없이 바로 실행
npx @robota-sdk/agent-cli
 
# 계속 사용하려면 전역 설치
npm install -g @robota-sdk/agent-cli
robota

처음 실행하면 CLI가 API 키가 있는지 묻고, 프로바이더 설정, 무료 Gemini 키 발급, 로컬 모델 연결, OpenRouter 연결 중 하나를 안내합니다. ANTHROPIC_API_KEY, GEMINI_API_KEY, DASHSCOPE_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY 중 하나가 이미 설정되어 있고 구성된 프로바이더가 없으면 묻지 않고 그 프로바이더의 기본 모델로 시작합니다. 나중에 프로바이더를 바꾸려면 robota --configure를 실행하세요.

아직 신뢰하지 않은 Git 저장소에서는 프로젝트의 지침 파일, 설정, 스킬, 훅을 불러오기 전에 이 워크스페이스를 신뢰할지 묻습니다. 거절하면 이것들 없이 Restricted 상태로 세션을 시작합니다.

한 줄로 워크플로우 작성하기. 설정을 마친 뒤에는 여러 단계로 된 작업을 자연어로 설명하면 CLI가 워크플로우를 만들어 바로 실행합니다:

robota
> /workflows create "CLI 도구의 태그라인을 세 개 쓰고, 가장 좋은 것을 골라 이유를 설명해줘"

/workflows create는 활성 프로바이더에게 워크플로우 설계를 요청하고, 사용자가 확인하면 이를 .workflows/<name>.json에 저장한 다음 즉시 실행합니다. 자세한 내용은 CLI Reference(영어)를 참고하세요.

지원 프로바이더

프로바이더기본 모델과 예시키 변수키 발급
Anthropic (Claude)claude-sonnet-4-6 (기본), claude-opus-4-6ANTHROPIC_API_KEYplatform.claude.com
OpenAI설정할 때 모델을 입력 (예: gpt-5.1)OPENAI_API_KEYplatform.openai.com
Geminigemini-3-flash-preview (기본)GEMINI_API_KEYaistudio.google.com
DeepSeekdeepseek-v4-flash (기본), deepseek-v4-proDEEPSEEK_API_KEYplatform.deepseek.com
Qwen (Alibaba Cloud)qwen-plus (기본), qwen-maxDASHSCOPE_API_KEYModel Studio
OpenRouteranthropic/claude-sonnet-4.6 (기본)OPENROUTER_API_KEYopenrouter.ai
로컬 (Ollama, LM Studio, llama.cpp)서버에서 실행 중인 모델—키 불필요

첫 번째 에이전트

1. 간단한 대화형 에이전트 만들기

import { ConversationAgent } from '@robota-sdk/agent-core';
import { AnthropicProvider } from '@robota-sdk/agent-provider/anthropic';
 
const provider = new AnthropicProvider({
  apiKey: process.env.ANTHROPIC_API_KEY,
});
 
const agent = new ConversationAgent({
  name: 'Assistant',
  aiProviders: [provider],
  defaultModel: {
    provider: 'anthropic',
    model: 'claude-sonnet-4-6',
  },
  systemMessage: 'You are a helpful coding assistant.',
});
 
const response = await agent.run('TypeScript 제네릭이 무엇인가요?');
console.log(response);

2. 에이전트가 사용할 도구 추가하기

createZodFunctionTool은 함수를 실행하기 전에 모델이 넘긴 인자를 Zod 스키마로 검증하고, 그 스키마로 함수 입력의 타입을 정합니다.

import { ConversationAgent } from '@robota-sdk/agent-core';
import { createZodFunctionTool } from '@robota-sdk/agent-tools';
import { AnthropicProvider } from '@robota-sdk/agent-provider/anthropic';
import { z } from 'zod';
 
const provider = new AnthropicProvider({
  apiKey: process.env.ANTHROPIC_API_KEY,
});
 
const weatherTool = createZodFunctionTool(
  'get_weather',
  'Get current weather for a city',
  z.object({
    city: z.string().describe('City name'),
  }),
  async ({ city }) => ({ city, temperature: 22, condition: 'sunny' }),
);
 
const agent = new ConversationAgent({
  name: 'WeatherBot',
  aiProviders: [provider],
  defaultModel: {
    provider: 'anthropic',
    model: 'claude-sonnet-4-6',
  },
  systemMessage: 'You help users check the weather.',
  tools: [weatherTool],
});
 
// 필요할 때 에이전트가 get_weather를 호출합니다
const response = await agent.run('서울 날씨가 어때?');
console.log(response);

3. 프로바이더 동적 전환

import { ConversationAgent } from '@robota-sdk/agent-core';
import { OpenAIProvider } from '@robota-sdk/agent-provider/openai';
import { AnthropicProvider } from '@robota-sdk/agent-provider/anthropic';
 
const agent = new ConversationAgent({
  name: 'MultiProviderAgent',
  aiProviders: [
    new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY }),
    new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY }),
  ],
  defaultModel: {
    provider: 'anthropic',
    model: 'claude-sonnet-4-6',
  },
});
 
// Claude로 시작
let response = await agent.run('안녕하세요!');
 
// 대화 도중 OpenAI로 전환 — 대화 기록은 그대로 이어집니다
agent.setModel({ provider: 'openai', model: 'gpt-5.1' });
response = await agent.run('대화를 이어가 주세요.');

4. 내장 도구가 있는 세션 사용하기

@robota-sdk/agent-framework의 InteractiveSession은 CLI가 쓰는 바로 그 세션입니다. 내장 도구(파일 읽기· 쓰기·편집, glob·grep 검색, 셸, 웹 가져오기·검색), 권한 모드, 훅, 컴팩션, 스트리밍 이벤트를 갖춘 대화를 제공합니다. 도구는 넘겨 주는 host에서 옵니다. createNodeFrameworkHost({ createDefaultTools })가 cwd용 도구를 만들고, createDefaultTools를 주지 않는 호스트는 세션에 도구를 주지 않습니다.

import { InteractiveSession } from '@robota-sdk/agent-framework';
import { createNodeFrameworkHost } from '@robota-sdk/agent-framework/node';
import { AnthropicProvider } from '@robota-sdk/agent-provider/anthropic';
import { createDefaultTools } from '@robota-sdk/agent-tools/defaults';
 
const session = new InteractiveSession({
  host: createNodeFrameworkHost({ createDefaultTools }),
  cwd: process.cwd(),
  provider: new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY }),
  model: 'claude-sonnet-4-6',
  permissionMode: 'default',
});
 
session.on('text_delta', (delta) => process.stdout.write(delta));
 
// submit()은 핸들을 돌려줍니다. 세션이 유휴 상태면 턴이 끝난 뒤에, 실행 중인 턴 뒤에 대기열로 들어가면
// 즉시 돌려줍니다. `completed`는 이 턴의 결과로 완료됩니다.
const turn = await session.submit('src/의 TypeScript 파일을 나열하고 각 파일이 하는 일을 알려줘.');
const { response } = await turn.completed;

도구는 cwd 안에서 동작합니다. default 모드에서는 읽기와 검색이 바로 실행되고, 편집이나 셸 명령은 permission_request 이벤트로 승인을 요청하며, 이 이벤트를 듣는 리스너가 없으면 거부됩니다. 세션은 다음 submit()을 위해 대화를 유지합니다. projectAccess 결정이 없으면 Restricted로 실행되어 AGENTS.md, CLAUDE.md, 프로젝트 설정을 읽지 않습니다. 이것들을 불러오려면 신뢰된 projectAccess를 넘기세요 — Project context and settings(영어) 참고. model을 생략하면 세션은 프로바이더에 claude-opus-4-5를 요청합니다.

5. CLI 사용

# 인터랙티브 TUI
robota
 
# 원샷(print 모드. Git 저장소에서는 터미널에서 신뢰를 승인하거나 --safe-mode를 사용하세요)
robota -p "이 프로젝트의 모든 TODO 주석을 나열해줘"
 
# 모델 오버라이드
robota --model claude-opus-4-6

다음 단계

아래 문서는 아직 한국어 번역이 없어 영어 문서로 연결됩니다.

문제 해결

macOS Terminal.app + 한글/CJK 입력: IME 조합 중 macOS Terminal.app이 크래시될 수 있습니다. iTerm2 같은 다른 터미널을 쓰거나 print 모드(robota -p)를 사용하세요. CLI는 Terminal.app에서 시작하면 경고를 표시합니다.

Node.js 버전: npm CLI와 Node 예제를 실행하려면 Node.js 22.12 이상이 필요합니다. node --version으로 확인하세요. Volta나 nvm으로 버전을 관리할 수 있습니다.

API 키를 찾을 수 없음: 환경 변수로 키를 설정(export ANTHROPIC_API_KEY=...)하거나 robota --configure를 실행해 안내를 따르세요.

"Workspace trust is required before headless startup": print 모드(robota -p)는 신뢰하지 않은 Git 저장소에서 시작하지 않습니다. 터미널에서 robota trust --yes를 실행하고 직접 승인하거나, --safe-mode를 붙여 모든 사용자 정의(지침 파일, 스킬, 플러그인, 훅, MCP 서버)를 끈 채로 실행하거나, --restricted-workspace를 붙여 프로젝트의 설정, 훅, 플러그인, 스킬, MCP 서버 없이 시작하세요.