LLM 핵심 능력 해부: 추론 vs 코드 생성 vs Tool Calling, 그리고 자율 에이전트

LLM은 모두 같은 방식으로 작동하는 것일까요? 최근 OpenAI o3, DeepSeek R1 같은 추론 모델(Reasoning Model) 이 등장하면서, 기존 LLM과는 근본적으로 다른 사고 방식이 주목받고 있습니다. 또한 코드 생성이나 Tool Calling 능력은 추론과 어떤 관계에 있을까요? 이 글에서는 LLM의 세 가지 핵심 능력 — 일반 생성, 추론, 코드/Tool Calling — 이 어떻게 다르고, 서로 어떤 관계를 갖는지 정리합니다. 1. 일반 LLM: “직감으로 답하기” (System 1) 일반 LLM(GPT-4o, Claude 3.5 Sonnet 등)은 본질적으로 다음 토큰 예측기(Next-Token Predictor) 입니다. 학습된 수십억 개의 파라미터 속에서 패턴을 매칭하여, 입력에 가장 그럴듯한 다음 단어를 즉각적으로 생성합니다. ...

February 25, 2026 · Byung Kyu KIM

AI Agent 구현의 두 갈래: 일반 Tool Calling vs MCP 비교

AI 에이전트를 구축할 때, LLM이 외부 도구를 사용하게 만드는 과정은 필수적입니다. 하지만 최근 등장한 **MCP(Model Context Protocol)**와 기존의 Function/Tool Calling은 비슷해 보이면서도 구조적으로 큰 차이가 있습니다. 오늘은 이 두 방식의 특징과 실제 구현 관점에서의 차이를 상세히 비교해 보겠습니다. 1. 한눈에 보는 비교 요약 구분 일반 Tool Calling (기존 방식) MCP (Model Context Protocol) 핵심 개념 함수 정의와 실행 로직의 수동 연결 도구의 정의와 실행이 결합된 표준화된 서버 실행 주체 에이전트 애플리케이션 (Local, Tightly Coupled) 독립된 MCP 서버 (Remote/Isolated) 통신 규격 모델별 전용 API (OpenAI, Anthropic 등) JSON-RPC 2.0 표준 프로토콜 툴 목록 관리 코드에 하드코딩, 앱 재배포 필요 서버에서 동적으로 list_tools() 조회 확장성 새 툴 추가 시 앱 코드 수정 및 재배포 MCP 서버만 추가·재시작하면 즉시 연동 상호운용성 모델별 규격 변환 코드 직접 작성 필요 MCP 지원 클라이언트라면 어떤 모델이든 재사용 컨텍스트 제공 주로 ‘액션(함수 호출)‘에 집중 툴 + 리소스(파일, DB) + 프롬프트 템플릿 패키지 보안/격리 에이전트 프로세스 내에서 직접 실행 실행 로직이 서버에 캡슐화, 권한 경계 명확 2. 일반 Tool Calling: “직접 요리하기” 방식 일반적인 방식에서 에이전트는 요리사(LLM)가 준 레시피(JSON)를 보고 **직접 요리(함수 실행)**를 합니다. 실행 로직이 에이전트 코드 내부에 깊게 박혀 있는 구조(Tightly Coupled)입니다. ...

February 23, 2026 · Byung Kyu KIM

Claude Code 무료 플랜 활용 가이드 (Ollama, free-claude-code)

Claude Code를 쓰고 싶은데 유료 API 비용이 부담될 때, 실무에서는 보통 두 가지 경로를 사용합니다. Ollama 기반 로컬 모델 연결 free-claude-code 같은 호환 레이어를 통해 NVIDIA NIM, OpenRouter, LM Studio 백엔드 연결 이 글은 각 방식의 배경, 설치/설정 방법, 그리고 운영 시 주의점을 정리합니다. 왜 “무료 플랜” 구성이 필요한가 코드 에이전트는 반복 호출이 많아 토큰 비용이 빠르게 증가합니다. 개인 프로젝트나 학습 단계에서는 응답 품질보다 비용 상한이 더 중요할 수 있습니다. 팀 환경에서는 “무조건 최신 고가 모델"보다 “저비용 + 재현 가능한 워크플로"가 더 실용적입니다. 핵심은, Claude Code UX를 유지하면서 백엔드를 교체하는 것입니다. ...

February 23, 2026 · Byung Kyu KIM

Shell 환경변수 정리: export 유효 범위, 인라인 변수, .env 파일

셸에서 환경변수(Environment Variable)는 프로세스가 실행될 때 함께 전달되는 key=value 형태의 설정값입니다. CLI 도구 동작 제어, API 키 전달, 실행 경로(PATH) 설정 등 DevOps 작업의 기본 단위로 쓰입니다. 1. 환경변수 정의와 셸에서의 사용 방법 환경변수는 보통 다음 형태를 사용합니다. export APP_ENV=production export API_URL=https://api.example.com 확인 방법: echo "$APP_ENV" printenv APP_ENV env | rg '^APP_ENV=' 각 명령의 의미: echo "$APP_ENV": 현재 셸이 가진 변수 값을 확인 (셸 변수/환경변수 모두 확인 가능) printenv APP_ENV: 현재 프로세스의 환경변수만 확인 (export 안 된 셸 변수는 안 보임) env | rg '^APP_ENV=': 현재 프로세스의 환경변수 목록에서 패턴 필터링 예시: ...

February 23, 2026 · Byung Kyu KIM

AI 에이전트(OpenClaw 등)의 LLM 인터페이스 구현 및 툴 콜링 기술 개요

OpenClaw, Claude 데스크톱 앱, 혹은 로컬 기반의 여러 AI 에이전트들은 내부적으로 LLM(대형 언어 모델)과 어떻게 소통하고, 로컬 환경의 도구(Tool)들을 사용할까요? 이 글에서는 에이전트가 LLM과 인터페이스를 맺는 기술적 구현 내용과 핵심 요소들을 살펴봅니다. 1. 지침 파일(agent.md 등) 적용 방법 AI 에이전트의 페르소나, 역할, 기본 규칙을 정의하기 위해 주로 .md 형태의 지침 파일을 사용합니다. (예: agent.md, system_prompt.txt, SOUL.md 등) 기술적 구현: 이러한 지침 파일은 LLM에 전달되는 **시스템 프롬프트(System Prompt)**로 로드됩니다. 에이전트 프로그램이 실행될 때 혹은 세션이 시작될 때 파일 시스템에서 문서를 읽어 LLM의 system 역할(role) 메시지에 주입합니다. ...

February 21, 2026 · Byung Kyu KIM

OpenClaw 용어집 및 운영 지침 가이드

OpenClaw(ClawdBot 기반)는 개인 AI 에이전트를 메시징 채널과 연결해 운영하는 게이트웨이 중심 프레임워크입니다. 이 문서는 용어를 사람 친화적으로 정리하고, 운영 시 바로 적용할 수 있는 체크리스트와 최신 변경 사항(공식 소스 기준)까지 함께 제공합니다. 개요 문서 목적: 용어 설명 + 운영 지침 통합 가이드 최신 정보 범위: 공식 문서와 공식 릴리스만 사용 최신 반영 기준: GitHub Release v2026.2.15 (게시일: 2026-02-16) docs.openclaw.ai의 공식 업데이트 문서 핵심 개념 (단순 설명) Gateway (게이트웨이) 모든 메신저(WhatsApp, Telegram, Discord 등)와 에이전트를 연결해 주는 중앙 서버/데몬. 기본 포트: 18789 (WebSocket). 한 개의 Gateway로 여러 채널과 여러 에이전트를 동시에 관리 가능. Agent (에이전트) AI 어시스턴트의 “뇌"에 해당. 개별 성격, 메모리, 행동 방식을 가짐. 각 Agent는 격리된 상태(workspace, auth, sessions)를 유지. 기본 에이전트 이름: main. Workspace (작업 폴더) Agent의 “개인 폴더"로, 기본 경로: ~/.openclaw/workspace. 주요 파일: AGENTS.md: 동작 지시, 규칙, 메모리. SOUL.md: 성격, 말투, 경계. USER.md: 사용자 정보와 호칭. TOOLS.md: 사용 가능한 도구/툴 설명. BOOTSTRAP.md: 최초 실행 설정(한 번 실행 후 삭제). memory/YYYY-MM-DD.md: 일일 메모리 로그. Agent Directory (agentDir) 에이전트의 기술 설정/인증 정보를 저장. 기본 경로: ~/.openclaw/agents/<agentId>/agent. 주요 파일: auth-profiles.json: 모델 제공자(Anthropic, OpenAI 등) 인증 정보. 에이전트별 모델 설정/구조 파일. 통신 구조 Channel (채널) 메신저 연결 단위. 예: WhatsApp, Telegram, Discord 각각 하나의 관(pipe). Account ID (accountId) 같은 채널 내 여러 계정을 구분. 예: 개인 WhatsApp, 업무용 WhatsApp. Session Key (sessionKey) 대화 스레드를 구분하는 고유 이름/주소. 예: agent:main:main (기본 1:1 대화) agent:main:telegram:group:123 (그룹 대화) Session ID (sessionId) 실제 대화 기록 파일 ID. 경로 예: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl. 세션 재설정 시 값이 바뀜. Binding (바인딩) 라우팅 규칙. 어떤 채널/계정/연락처에서 온 메시지를 어떤 Agent로 보낼지 결정. 가장 구체적인 규칙이 우선 적용. 세션 관리 Main Session (기본 대화) 기본 1:1 대화 세션. 예: agent:<agentId>:main. 모든 개인 대화를 한 세션으로 모아 유지할 수 있음. DM Scope (dmScope) DM(1:1) 분리 수준 설정. main: 모든 DM 공유 per-peer: 사용자별 분리 per-channel-peer: 채널+사용자별 분리 per-account-channel-peer: 계정+채널+사용자별 최대 분리 Session Reset (초기화) 새 대화를 시작할 때 sessionId를 새로 생성. 방법: 수동: openclaw new, openclaw reset 자동: 지정 시각(예: 매일 04:00), 비활성 시간 기준 자동 리셋 Compaction (압축/요약) 긴 대화를 요약해 컨텍스트 한도 초과를 방지. 핵심 맥락은 남기고 오래된 상세를 정리. Memory Flush (메모리 저장) Compaction 전에 중요한 정보를 영구 메모리로 기록. memory/YYYY-MM-DD.md에 저장. NO_REPLY 내부 메시지로 사용자 노출 없이 처리 가능. 접근 제어 / 보안 Pairing (페어링) 새 노드(장치) 연결 시 승인 절차. 로컬(127.0.0.1)은 자동 승인 옵션 가능. 승인 후 토큰 발급으로 접근 허용. DM Policy (dmPolicy) DM 허용 범위 제어. open: 누구나 가능(위험) pairing: 승인 사용자만 allowlist: 허용 목록만 Allow From (allowFrom) 허용 번호/ID 목록. 예: +15555550123 Group Policy (groupPolicy) 그룹 참여 범위 제어. open: 모든 그룹(권장하지 않음) allowlist: 허용 그룹만 denylist: 차단 목록 제외 Require Mention 그룹에서 @멘션이 있을 때만 응답. 불필요 응답/스팸 방지에 유효. Gateway Token (OPENCLAW_GATEWAY_TOKEN) Gateway 접속용 공유 비밀. WebSocket 인증에 사용. Sandbox (샌드박스) 도구 실행 격리(도커 기반). 모드: off: 비격리(전체 시스템 접근) non-main: 메인 세션만 비격리 all: 모든 세션 격리 스코프: session, agent, shared 주의 ...

February 17, 2026 · Byung Kyu KIM

127.0.0.1 vs localhost: 차이와 함정

작성일: 2026-02-08 운영 환경에서 “localhost로 붙었는데 왜 안 되지?” 같은 문제는 자주 발생합니다. 결론부터 말하면 127.0.0.1과 localhost는 보통 같은 의미로 쓰이지만, 항상 동일하게 해석되진 않습니다. 이 미묘한 차이가 헬스체크 실패, 접근 불가, 보안 정책 충돌로 이어질 수 있습니다. 1. 루프백(Loopback) 정의 루프백은 자기 자신에게 되돌아오는 네트워크 경로입니다. 물리 NIC 없이도 TCP/IP 스택을 테스트하거나 로컬 프로세스 간 통신을 가능하게 합니다. IPv4 루프백 대역: 127.0.0.0/8 (대표 주소가 127.0.0.1) IPv6 루프백 주소: ::1 즉, 127.0.0.1은 항상 이 머신 자신을 의미합니다. DNS나 이름 해석 과정과는 무관합니다. ...

February 8, 2026 · Byung Kyu KIM

SSH 리버스 프록시(Reverse Proxy) 네트워크 구성: 설정, 주의 사항, 운영 팁

작성일: 2026-02-08 SSH 리버스 프록시는 외부에서 내부로 직접 접근할 수 없는 환경에서 유용한 연결 방식입니다. 내부 서버가 외부 서버로 역방향 터널을 먼저 열어두고, 외부 사용자가 그 터널을 통해 내부 서비스에 접근하는 구조입니다. DevOps 환경에서 운영할 때 필요한 구성, 주의 사항, 네트워크 프록시 관점을 정리합니다. 1. 개념 정리: SSH 리버스 프록시 일반 SSH 포워딩(로컬 포워딩): 로컬 -> 원격 리버스 포워딩(Reverse): 원격 -> 로컬(내부) 리버스 포워딩은 내부 서버가 먼저 외부(중계) 서버에 접속하고, 외부에서 그 연결을 통해 내부 서비스에 접근하는 방식입니다. ...

February 8, 2026 · Byung Kyu KIM

Lazygit 가이드: 설치부터 패널별 치트시트

Git은 강력하지만 명령어 입력 방식은 때로 직관성이 떨어집니다. 특히 수많은 파일을 개별적으로 스테이징하거나 복잡한 인터랙티브 리베이스를 수행할 때 터미널 UI(TUI) 도구의 진가가 드러납니다. 그중에서도 가장 완성도 높은 도구인 Lazygit을 파헤쳐 봅니다. 1. Lazygit 설치 (Installation) 환경에 맞는 패키지 매니저를 사용하여 간단히 설치할 수 있습니다. macOS brew install lazygit Windows # Scoop 사용 시 scoop bucket add extras scoop install lazygit # Winget 사용 시 winget install jesseduffield.lazygit Linux (Ubuntu/Debian 등) # 바이너리 직접 설치 예시 LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" tar xf lazygit.tar.gz lazygit sudo install lazygit /usr/local/bin 2. TUI 구성 및 레이아웃 (Layout) Lazygit는 한 화면에서 Git의 모든 상태를 조망할 수 있는 대시보드형 레이아웃을 가지고 있습니다. ...

February 4, 2026 · Byung Kyu KIM

macOS 시스템 최적화의 종결자: Mole 유틸리티와 Agent Skills 활용기

서론 유료 앱들의 핵심 기능을 단 하나의 바이너리로 통합한 강력한 오픈소스 CLI 도구, Mole을 소개. 특히 최근 유행하는 AI Agent와 연계하여 시스템 관리를 자동화하는 방법까지 함께 살펴보겠습니다. 1. Mole 유틸리티란? Mole(tw93/Mole)은 tw93이 개발한 macOS용 올인원 시스템 유틸리티다. Go 언어와 셸 스크립트로 작성되어 매우 가볍고 빠르며, 터미널 환경에서 모든 시스템 최적화 작업을 통합 관리할 수 있다. 주요 특징 All-in-One: 청소, 앱 삭제, 최적화, 분석, 실시간 모니터링 기능을 단일 바이너리로 통합. 오픈소스: MIT 라이선스 기반의 무료 도구로, 상업용 앱의 광고나 구독 모델 없이 모든 기능 제공. 초경량: CLI 기반으로 동작하여 시스템 리소스 점유율이 매우 낮음. 2. 설치 방법 Homebrew를 통해 간단히 설치 가능하다. ...

January 29, 2026 · Byung Kyu KIM