Ruflo API ์—ฐ๋™ ์‹ค์ „: ๊ธฐ์—…์šฉ AI Agent ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์™„์ „ ๊ฐ€์ด๋“œ

โ€ขAI Expert

๋‚œ์ด๋„: ์ž…๋ฌธ | ์†Œ์š” ์‹œ๊ฐ„: 15๋ถ„ | ๋ชฉํ‘œ: Ruflo ๋‹ค์ค‘ Provider API ์—ฐ๋™ ๋งˆ์Šคํ„ฐ ๋ฐ Swarm ํ˜‘์—… ์›๋ฆฌ ์ดํ•ด

Claude, GPT, Gemini ๋“ฑ ๋‹ค์–‘ํ•œ AI ๊ธฐ๋Šฅ์„ ๋™์‹œ์— ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด ์ด ๊ธ€์ด ๋ฐ”๋กœ ๋‹น์‹ ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Ruflo์˜ ์„ค์น˜ ๋ฐ ์„ค์ • ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ, ํŠนํžˆ ๊ณต์‹ ๊ฐ€๊ฒฉ์˜ ์ ˆ๋ฐ˜ ์ˆ˜์ค€์ธ Defapi๋ฅผ ํ†ตํ•œ ์—ฐ๋™ ๋ฐฉ๋ฒ•์„ ์ค‘์ ์ ์œผ๋กœ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์—๋Š” 60๊ฐœ ์ด์ƒ์˜ ์ „๋ฌธ AI Agent๋ฅผ ์ง€ํœ˜ํ•˜๋Š” ์Šˆํผ ์ปค๋งจ๋”๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋Œ€์ƒ ๋…์ž ํ”„๋กœํ•„

  • 1~5๋…„ ์ฐจ ๋ฐฑ์—”๋“œ ๋˜๋Š” ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž
  • AI Agent ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐ ๋‹ค์ค‘ Agent ํ˜‘์—…์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ํŒ€ ๊ธฐ์ˆ  ์ฑ…์ž„์ž
  • Claude/GPT API๋ฅผ ์ €๋ ดํ•œ ๋น„์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์Šคํƒ€ํŠธ์—… ํŒ€

ํ•ต์‹ฌ ์˜์กด์„ฑ ๋ฐ ํ™˜๊ฒฝ

์˜์กด์„ฑ์ตœ์†Œ ๋ฒ„์ „์„ค๋ช…
Node.js20.0.0Ruflo๋Š” Node.js ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋จ
npm9.0.0ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž
Git2.0.0๋ฒ„์ „ ๊ด€๋ฆฌ (์„ ํƒ ์‚ฌํ•ญ)

์‚ฌ์ „ ์ค€๋น„ ์‚ฌํ•ญ:

  • API Key (Defapi / OpenAI / Anthropic / OpenRouter ์ค‘ ํƒ์ผ)
  • ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์ ‘์†์ด ๊ฐ€๋Šฅํ•œ ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

ruflo-demo/
โ”œโ”€โ”€ claude-flow.config.json   # ํ•ต์‹ฌ ์„ค์ • ํŒŒ์ผ (ํ•„์ˆ˜)
โ”œโ”€โ”€ .claude/                  # Claude Code ์„ค์ • ๋””๋ ‰ํ† ๋ฆฌ
โ”‚   โ””โ”€โ”€ settings.json
โ”œโ”€โ”€ data/                    # ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ
โ”‚   โ””โ”€โ”€ memory/              # ๋ฒกํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ
โ””โ”€โ”€ logs/                    # ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ (์„ ํƒ ์‚ฌํ•ญ)

๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ

1๋‹จ๊ณ„: Ruflo CLI ์„ค์น˜

ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค:

# ๊ธ€๋กœ๋ฒŒ ์„ค์น˜
npm install -g ruflo

# ๋˜๋Š” npx ์‚ฌ์šฉ (๊ถŒ์žฅ, ๋จผ์ € ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ)
npx ruflo@latest --version

[!TIP]
Windows ์‚ฌ์šฉ์ž๋ผ๋ฉด WSL2(Ubuntu 22.04) ์„ค์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. Ruflo๋Š” Linux ํ™˜๊ฒฝ์—์„œ ๋” ๋งค๋„๋Ÿฝ๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. macOS ๋ฐ Linux ์‚ฌ์šฉ์ž๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ์„ธ์š”.

์„ค์น˜ ์„ฑ๊ณต ์—ฌ๋ถ€ ํ™•์ธ:

npx ruflo doctor

์ด ๋ช…๋ น์–ด๋Š” Node.js ๋ฒ„์ „, npm ํ™˜๊ฒฝ, Git ์„ค์น˜ ๋“ฑ ๊ธฐ์ดˆ ์˜์กด์„ฑ์„ ์ฒดํฌํ•ด ์ค๋‹ˆ๋‹ค. ์ •์ƒ์ ์ด๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค:

โœ“ Node.js 20.x OK
โœ“ npm 9.x OK
โœ“ Git installed

2๋‹จ๊ณ„: ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™”

์ ๋‹นํ•œ ์œ„์น˜์— ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

mkdir ruflo-demo && cd ruflo-demo

# ์„ค์ • ์ดˆ๊ธฐํ™” (claude-flow.config.json ์ƒ์„ฑ ๊ฐ€์ด๋“œ ์‹คํ–‰)
npx ruflo init --wizard

init ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค:

  • V3 ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (y ์„ ํƒ)
  • SPARC ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (n ์„ ํƒ, ์ดˆ๋ณด์ž๋Š” ๋‚˜์ค‘์—)
  • ์ตœ๋Œ€ Agent ์ˆ˜? (๊ธฐ๋ณธ๊ฐ’ 8, ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค)

๋‹ต๋ณ€์„ ๋งˆ์น˜๋ฉด ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— claude-flow.config.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


3๋‹จ๊ณ„: Defapi ์„ค์ • (๊ฐ•๋ ฅ ์ถ”์ฒœ)

Defapi๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ถ”์ฒœํ•˜๋Š” Provider์ž…๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์ด ๊ณต์‹ API์˜ ์ ˆ๋ฐ˜์ด๋ฉด์„œ ํ’ˆ์งˆ์€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. OpenAI API ํ”„๋กœํ† ์ฝœ๊ณผ ์™„๋ฒฝํžˆ ํ˜ธํ™˜๋˜์–ด Ruflo์—์„œ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € https://defapi.org์— ์ ‘์†ํ•˜์—ฌ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  API Key(dk-๋กœ ์‹œ์ž‘)๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ์„ธ์š”.

claude-flow.config.json ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค:

{
  "version": "3.0.0",
  "v3Mode": true,
  "providers": [
    {
      "name": "defapi",
      "type": "openai",
      "priority": 1,
      "enabled": true,
      "apiKey": "dk-your-defapi-key-here",
      "baseUrl": "https://api.defapi.org",
      "models": {
        "default": "anthropic/claude-sonnet-4.5",
        "chat": [
          "anthropic/claude-sonnet-4.5",
          "anthropic/claude-opus-4.5",
          "anthropic/claude-haiku-4.5"
        ]
      }
    }
  ],
  "swarm": {
    "topology": "hierarchical",
    "maxAgents": 8,
    "autoScale": true,
    "coordinationStrategy": "raft"
  },
  "memory": {
    "backend": "hybrid",
    "enableHNSW": true
  }
}

[!WARNING]
dk-your-defapi-key-here๋ฅผ ์‹ค์ œ ๋ฐœ๊ธ‰๋ฐ›์€ ํ‚ค๋กœ ๊ต์ฒดํ•˜์„ธ์š”. ์ ˆ๋Œ€๋กœ Git์— ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์„ธ์š”!

์„ค์ • ํŒŒ์ผ์— ํ‚ค๋ฅผ ์ง์ ‘ ์ ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

# ๋ฐฉ๋ฒ• 1: Key๋งŒ ์„ค์ •
export OPENAI_API_KEY="dk-your-defapi-key-here"

# ๋ฐฉ๋ฒ• 2: Key + ์‚ฌ์šฉ์ž ์ •์˜ Endpoint
export OPENAI_API_KEY="dk-your-defapi-key-here"
export OPENAI_BASE_URL="https://api.defapi.org/v1"

4๋‹จ๊ณ„: ๊ธฐํƒ€ Provider ์„ค์ • (์„ ํƒ ์‚ฌํ•ญ)

์ด๋ฏธ ๋‹ค๋ฅธ Provider์˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ํ•จ๊ป˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Ruflo๋Š” priority ์ˆœ์„œ์— ๋”ฐ๋ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

OpenRouter (100๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ ์ง€์›):

{
  "name": "openrouter",
  "type": "openai",
  "priority": 2,
  "enabled": true,
  "apiKey": "sk-or-your-key",
  "baseUrl": "https://openrouter.ai"
}

๊ณต์‹ Anthropic:

{
  "name": "anthropic",
  "priority": 3,
  "enabled": true,
  "apiKey": "sk-ant-your-key"
}

๊ณต์‹ OpenAI:

{
  "name": "openai",
  "priority": 4,
  "enabled": true,
  "apiKey": "sk-your-key"
}

์—ฌ๋Ÿฌ Provider๋ฅผ ๋™์‹œ์— ์„ค์ •ํ•  ๋•Œ, priority ์ˆ˜์น˜๊ฐ€ ์ž‘์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.


5๋‹จ๊ณ„: API ์—ฐ๊ฒฐ ํ™•์ธ

์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ์ œ๋Œ€๋กœ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

# ์„ค์ •๋œ ๋ชจ๋“  Provider ํ…Œ์ŠคํŠธ
npx ruflo providers test --all

# ๋˜๋Š” ํŠน์ • Provider๋งŒ ํ…Œ์ŠคํŠธ
npx ruflo providers test -p defapi

์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค:

โœ“ defapi: Connected
โœ“ openai: Connected

๋ชจ๋ธ ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

npx ruflo providers models

claude-sonnet-4.5, gpt-4o, gemini-pro ๋“ฑ ์ˆ˜๋งŽ์€ ๋ชจ๋ธ์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


6๋‹จ๊ณ„: ์ฒซ ๋ฒˆ์งธ Agent ์ƒ์„ฑ

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ coder Agent๋ฅผ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

npx ruflo agent spawn -t coder --name my-first-agent

ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…:

  • -t: Agent ์œ ํ˜•. coder, tester, reviewer, researcher ๋“ฑ 60๊ฐ€์ง€ ์ด์ƒ ์„ ํƒ ๊ฐ€๋Šฅ
  • --name: ๋‚˜์ค‘์— ๊ตฌ๋ถ„ํ•˜๊ธฐ ์‰ฝ๊ฒŒ Agent์˜ ์ด๋ฆ„์„ ์ง€์ •

Agent๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋Œ€ํ™” ํ˜•์‹์œผ๋กœ ์—…๋ฌด๋ฅผ ์ง€์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Agent: my-first-agent
> Hello World๋ฅผ ์ถœ๋ ฅํ•˜๋Š” Python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์ค˜.

7๋‹จ๊ณ„: Swarm ์ดˆ๊ธฐํ™” (๋‹ค์ค‘ Agent ํ˜‘์—…)

์ด ๋‹จ๊ณ„๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Swarm์€ Ruflo์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ, ์—ฌ๋Ÿฌ Agent๊ฐ€ ๋™์‹œ์— ํ˜‘์—…ํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

# ๊ณ„์ธต ๊ตฌ์กฐ(hierarchical) Swarm ์ดˆ๊ธฐํ™”
npx ruflo swarm init --v3-mode --topology hierarchical --max-agents 8

ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…:

  • --v3-mode: V3 ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
  • --topology: ํ† ํด๋กœ์ง€ ๊ตฌ์กฐ. ์ดˆ๋ณด์ž์—๊ฒŒ๋Š” hierarchical(๊ณ„์ธตํ˜•)์ด ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • --max-agents: ์ตœ๋Œ€ Agent ์ˆ˜

์ดˆ๊ธฐํ™” ์„ฑ๊ณต ํ›„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

npx ruflo swarm status

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

Swarm Status:
  Topology: hierarchical
  Max Agents: 8
  Active: 3
  Leader: agent-coordinator-01

8๋‹จ๊ณ„: ๋ฒกํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • (์„ ํƒ์ด์ง€๋งŒ ๊ฐ•๋ ฅ ์ถ”์ฒœ)

Ruflo์˜ ๊ธฐ์–ต ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๋ฉฐ, HNSW ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ 150๋ฐฐ์—์„œ 12,500๋ฐฐ๊นŒ์ง€ ๊ฐ€์†ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•œ ๋ฒˆ ๊ธฐ์–ตํ•œ ๋‚ด์šฉ์„ ๋‹ค์Œ์— ์ฐพ์„ ๋•Œ ๋งค์šฐ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

# ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™”
npx ruflo memory init

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋ณด์„ธ์š”:

npx ruflo memory store \
  --namespace patterns \
  --key "auth-pattern" \
  --value "JWT + Refresh Token์„ ์‚ฌ์šฉํ•œ ๋Š๊น€ ์—†๋Š” ๊ฐฑ์‹  ๊ตฌํ˜„"

๊ฒ€์ƒ‰ํ•ด ๋ณด์„ธ์š”:

npx ruflo memory search \
  --namespace patterns \
  --query "์ธ์ฆ ๋ฐฉ์•ˆ"

๋ฌธ์ œ ํ•ด๊ฒฐ (FAQ)

Q1: npx ruflo doctor ์‹คํ–‰ ์‹œ "Node.js version not supported" ์˜ค๋ฅ˜ ๋ฐœ์ƒ

Ruflo๋Š” Node.js 20 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 18 ๋ฒ„์ „์„ ์‚ฌ์šฉ ์ค‘์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ํ•˜์„ธ์š”:

# ๋ฐฉ๋ฒ• 1: nvm ์‚ฌ์šฉ (๊ถŒ์žฅ)
nvm install 20
nvm use 20

# ๋ฐฉ๋ฒ• 2: ์ง์ ‘ ์žฌ์„ค์น˜
# https://nodejs.org/ ์—์„œ LTS ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ

Q2: providers test ๊ฒฐ๊ณผ "Connection failed"

API Key๊ฐ€ ์ •ํ™•ํ•œ์ง€ ๋จผ์ € ํ™•์ธํ•˜์„ธ์š”:

# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ ์šฉ ์—ฌ๋ถ€ ํ™•์ธ
echo $OPENAI_API_KEY

# ์„ค์ • ํŒŒ์ผ ๋ฐฉ์‹์ธ ๊ฒฝ์šฐ JSON ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ํ™•์ธ
# jq๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ฆ ์ถ”์ฒœ:
cat claude-flow.config.json | jq .

Defapi๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ baseUrl์ด https://api.defapi.org์ธ์ง€ ํ™•์ธํ•˜์„ธ์š” (api.defapi.org ์•„๋‹˜).


Q3: ๋ชจ๋ธ ๋ฏธ์ง€์›, "model not found" ์˜ค๋ฅ˜

Provider๋งˆ๋‹ค ์ง€์›ํ•˜๋Š” ๋ชจ๋ธ๋ช…์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Defapi์—์„œ๋Š” anthropic/claude-sonnet-4.5์ด๊ณ , OpenAI์—์„œ๋Š” gpt-4o์ž…๋‹ˆ๋‹ค.

claude-flow.config.json์˜ models ์„ค์ •์„ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น Provider๊ฐ€ ์‹ค์ œ๋กœ ์ง€์›ํ•˜๋Š” ๋ชจ๋ธ๋ช…์„ ์ž…๋ ฅํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.


Q4: Swarm ์ดˆ๊ธฐํ™” ์‹คํŒจ

๊ฐ€์žฅ ํ”ํ•œ ์›์ธ์€ ํฌํŠธ ์ถฉ๋Œ์ด๋‚˜ ๊ถŒํ•œ ๋ถ€์กฑ์ž…๋‹ˆ๋‹ค:

# 3000๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ํ™•์ธ
lsof -i :3000

# Docker๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ์ถฉ๋Œํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€
docker ps  # ์ปจํ…Œ์ด๋„ˆ ID ํ™•์ธ
docker stop <container-id>

Q5: ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ์˜ค๋ฅ˜

๋ณดํ†ต ๊ถŒํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค:

# data ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ
mkdir -p data/memory
chmod 755 data/memory

Windows ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ํ„ฐ๋ฏธ๋„์„ ๊ด€๋ฆฌ์ž ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”.


Q6: ๊ถŒํ•œ ๋ฌธ์ œ ์˜ค๋ฅ˜

Claude Code ๋‚ด์—์„œ Ruflo MCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ถŒํ•œ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

claude mcp add ruflo -- npx -y ruflo@latest

ํ™•์žฅ ์ฝ์„๊ฑฐ๋ฆฌ / ์‹ฌํ™” ๋ฐฉํ–ฅ

1. Swarm ๊ณ ๊ธ‰ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

  • ๋‹ค์–‘ํ•œ ํ† ํด๋กœ์ง€ ํ•™์Šต: mesh(๋งํ˜•), adaptive(์ ์‘ํ˜•)
  • ๋‹ค์–‘ํ•œ ํ•ฉ์˜ ์ „๋žต ์‹œ๋„: Byzantine(๋น„์ž”ํ‹ด ๊ฒฐํ•จ ํ—ˆ์šฉ), CRDT
  • ๊ณต์‹ ๋ฌธ์„œ์˜ 15๊ฐœ Agent ํ˜‘์—… ์‹ค์ œ ์‚ฌ๋ก€ ์ฐธ๊ณ 

2. ์ปค์Šคํ…€ Agent ๊ฐœ๋ฐœ

Ruflo๋Š” ๊ณ ์œ ํ•œ Agent ์œ ํ˜• ์ •์˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. .claude/agents/ ๋””๋ ‰ํ† ๋ฆฌ์— YAML ์„ค์ • ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Agent์˜ ์—ญํ• , ๋Šฅ๋ ฅ, ์‹ฌ์ง€์–ด ์‚ฌ๊ณ  ๋ฐฉ์‹๊นŒ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. MCP ํ”„๋กœํ† ์ฝœ ํ†ตํ•ฉ

Ruflo๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ MCP๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด GitHub, Jira, Slack ๋“ฑ๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ง„์ •ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์ž๊ธฐ ํ•™์Šต ์‹œ์Šคํ…œ (Self-learning)

Hooks ์‹œ์Šคํ…œ(27๊ฐœ ํ›… + 12๊ฐœ ์›Œ์ปค)์€ Ruflo์˜ ๊ฐ€์žฅ ์ง„๋ณด๋œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ ํŒจํ„ด์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํ•™์Šตํ•˜๊ณ  ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค. ์“ฐ๋ฉด ์“ธ์ˆ˜๋ก ๋˜‘๋˜‘ํ•ด์ง‘๋‹ˆ๋‹ค.


์š”์•ฝ

์—ฌ๊ธฐ๊นŒ์ง€ ์„ค์น˜, ์„ค์ •, API ์—ฐ๋™๋ถ€ํ„ฐ Agent ์ƒ์„ฑ ๋ฐ Swarm ์ดˆ๊ธฐํ™”๊นŒ์ง€ Ruflo์˜ ํ•ต์‹ฌ ์กฐ์ž‘๋ฒ•์„ ๋งˆ์Šคํ„ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ ต๋‚˜์š”? ์‚ฌ์‹ค ๊ฐ€์žฅ ์–ด๋ ค์šด ๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ธ ํ™˜๊ฒฝ ๊ตฌ์ถ•๊ณผ Key ์„ค์ •์ž…๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„์˜ ๊ณผ์ •์€ ๋งค์šฐ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Defapi๋ฅผ ๊ธฐ์–ตํ•˜์„ธ์š”. ์„ฑ๋Šฅ์„ ์›ํ•œ๋‹ค๋ฉด Swarm์„ ๋งˆ์Œ๊ป ํ™œ์šฉํ•ด ๋ณด์„ธ์š”. 60๊ฐœ ์ด์ƒ์˜ ์ „๋ฌธ Agent + ๋ฒกํ„ฐ ๋ฉ”๋ชจ๋ฆฌ + ์ž๊ธฐ ํ•™์Šต์ด ๊ฒฐํ•ฉ๋œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด AI ์ž๋™ํ™”์˜ ์ง„์ •ํ•œ ์ฆ๊ฑฐ์›€์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ฐ”๋กœ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”! ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์–ธ์ œ๋“  ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ๋‹ค์‹œ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


[!TIP]
๊ณ ๊ธ‰ ํŒ: npx ruflo daemon start๋ฅผOS ์‹œ์ž‘ ํ”„๋กœ๊ทธ๋žจ์— ๋“ฑ๋กํ•ด๋‘๋ฉด, ๋‹น์‹ ์˜ Agent ํŒ€์ด ํ•ญ์ƒ ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Ruflo API ์—ฐ๋™ ์‹ค์ „: ๊ธฐ์—…์šฉ AI Agent ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์™„์ „ ๊ฐ€์ด๋“œ