Skip to Content
AI & AgentsOllama와 OpenClaw로 로컬 에이전트 환경 준비
🤖 AI & Agents2026년 2월 11일

Ollama와 OpenClaw로 로컬 에이전트 환경 준비

#ai#agents#local-llm#ollama#openclaw#memory
OpenClaw와 아침 브리핑 자동화1 / 6
맥미니에 Ollama와 로컬 모델을 설치하고 OpenClaw의 작업 규칙과 메모를 구성했습니다. 작은 모델에서 긴 프롬프트와 많은 컨텍스트를 다루며 겪은 문제도 정리합니다.

OpenClaw를 써보기 전에 로컬 LLM부터 실행해 보고 싶었습니다. 처음부터 외부 모델 API에 연결하기보다 맥미니에서 모델을 돌리고, 응답 속도와 한국어 답변을 먼저 확인하는 것으로 시작했습니다.

모델 실행과 OpenClaw 설정을 동시에 진행하면 연결에 문제가 생겼을 때 확인할 곳이 많아집니다. 그래서 Ollama와 모델만 먼저 준비한 뒤 다음 단계로 넘어갔습니다.

Ollama 설치

Ollama는 로컬에서 모델을 실행하고 다른 프로그램에서도 API로 호출할 수 있게 해주는 도구입니다. 맥미니 한 대에 Ollama와 모델을 설치하는 구성으로 시작했습니다.

아래는 설치와 실행 순서를 설명하는 예시입니다. 모델명은 명령 사용법을 위한 것으로, 당시 테스트한 모델 목록을 뜻하지 않습니다.

bash
sample/install-ollama.sh
brew install ollama # 별도 터미널에서 실행 ollama serve

서버가 실행된 상태에서 다른 터미널을 열고 모델을 내려받아 실행합니다.

bash
sample/run-model.sh
ollama pull qwen2.5:7b ollama run qwen2.5:7b

질문을 입력하면 OpenClaw를 거치지 않고 로컬 모델의 응답을 확인할 수 있습니다.

다이어그램 로딩 중...

여기서 모델이 응답하는지 확인해 두면, 이후 OpenClaw 연결에 문제가 생겨도 Ollama에 직접 질문해 비교할 수 있습니다. 모델 자체의 실행 문제와 에이전트 설정 문제를 나눠 보는 기준이 됩니다.

API에서 확인하는 모델 응답

터미널 대화가 되는 것을 확인한 다음에는 다른 프로그램에서도 같은 모델을 호출할 수 있는지 봅니다. Ollama의 기본 로컬 주소는 http://localhost:11434입니다. 먼저 설치된 모델 목록을 읽고, 그 목록에 있는 이름으로 요청합니다.

bash
sample/check-ollama-api.sh
curl --fail-with-body http://localhost:11434/api/tags curl --fail-with-body http://localhost:11434/api/chat \ -H 'Content-Type: application/json' \ -d '{ "model": "qwen2.5:7b", "messages": [{"role": "user", "content": "실행 환경을 확인하는 중입니다. 짧게 답해주세요."}], "stream": false }'

앞의 설치 예시에서 내려받은 모델을 사용하는 요청입니다. stream: false는 이번 확인에서 응답 전체를 JSON 하나로 받기 위한 설정입니다. 연결 오류라면 서버 실행부터, 모델을 찾지 못한다면 목록과 요청의 모델명부터 확인할 수 있습니다. API의 경로와 응답 항목은 Ollama Chat API 와 모델 목록 API 를 기준으로 했습니다.

OpenClaw 설정을 바꾸기 전에 이 요청을 남겨 두면 비교가 편합니다. 직접 API 호출도 실패하는지, 직접 호출은 되는데 에이전트의 작업만 멈추는지에 따라 다음에 볼 부분이 달라집니다. 같은 질문과 모델을 사용해야 차이를 좁히기 쉽습니다.

모델을 불러오는 시간과 답변을 생성하는 시간도 구분할 수 있습니다. Chat 응답에는 load_duration, prompt_eval_count, eval_count 같은 정보가 있습니다. 다만 한 번의 응답으로 모델 성능을 단정하지는 않았습니다. 첫 요청에는 모델을 메모리에 올리는 시간이 포함될 수 있고 입력이 길어지면 처리할 토큰 수도 달라집니다.

대화형 확인에서 에이전트 확인으로

설치가 끝난 다음의 질문은 “답변이 나오나”에서 “시키는 일을 끝까지 이어가나”로 바뀌었습니다. 확인할 작업도 한 번에 크게 주기보다 단계를 나누는 편이 원인을 찾기 좋았습니다.

확인 순서예시다음 단계로 넘길 판단
직접 질문짧은 한국어 질문모델 실행과 응답 여부
문서 읽기작은 메모의 내용 확인입력 자료의 내용 유지
도구 사용허용된 테스트 파일 조회도구 요청과 결과 반영
여러 단계파일을 읽고 수정안을 작성작업 순서와 완료 조건 유지
다음 세션이전 메모를 읽고 작업 재개파일 기록을 실제로 사용하는지

이 표는 비교 실험 결과가 아니라 환경을 확인하는 절차 예시입니다. 특히 문서를 읽는 단계와 수정하는 단계를 구분하면, 모델이 내용을 이해하지 못한 것인지 도구 호출에서 멈춘 것인지 보기 쉬워집니다.

긴 컨텍스트를 확인할 때도 메모를 무작정 늘리기보다는 작업에 필요한 규칙과 자료부터 넣는 편이 낫습니다. 오래된 로그를 전부 읽게 하면 정작 이번에 지켜야 할 조건이 어디에 있는지 찾기 어려워집니다. 장기 메모를 짧게 정리하고 상세 실행 기록은 파일로 남긴 이유도 여기에 있습니다.

작업에 따른 모델 선택

처음부터 모델 하나로 모든 작업을 처리하려고 하지는 않았습니다. 짧은 질문에 빠르게 답하는 경우와 긴 글을 다듬는 경우에 같은 기준을 적용하기 어렵기 때문입니다. 모델을 바꿔 가며 확인할 수 있도록 준비했습니다.

용도확인할 항목
짧은 질문과 반복 작업응답을 기다리는 시간
글쓰기와 요약한국어 표현과 원문 내용 유지
일반적인 질의응답질문의 조건을 빠뜨리는지
복잡한 문제여러 조건을 함께 고려하는지

Ollama에서는 실행할 때 모델명을 바꿔 같은 질문을 넣어볼 수 있습니다. 다만 모델마다 필요한 메모리가 다르므로 장비에서 실행할 수 있는 크기인지 먼저 확인해야 합니다.

이 단계의 목적은 모델별 순위를 정하는 것이 아니라, 제 장비에서 직접 테스트할 환경을 만드는 것이었습니다. 단순 질의응답과 에이전트 작업의 차이는 OpenClaw에 연결한 뒤 더 분명하게 드러났습니다.

OpenClaw 연결

로컬 모델의 응답을 확인한 뒤 OpenClaw 설정으로 넘어갔습니다.

처음에는 에이전트 이름과 말투를 정했지만, 실제 작업을 맡기려면 다른 설정도 필요했습니다. 작업을 시작할 때 어떤 문서를 읽을지, 변경한 내용은 어디에 남길지, 다음 세션에서는 무엇을 참고할지 정해야 했습니다.

작업 파일과 기록의 저장 위치

스크립트와 데이터, 실행 로그, 작업 메모를 구분했습니다. 모두 작업 중 생기는 파일이지만 나중에 찾아보는 이유는 다릅니다.

구분담을 내용
작업 규칙시작 전에 읽을 문서, 작업 중 지킬 규칙, 기록 방법
스크립트와 데이터실행할 코드와 작업에 사용하는 파일
실행 로그프로그램 실행 결과와 오류
일일 메모그날 한 작업과 결정, 남은 일
장기 메모이후에도 참고할 설정과 규칙

오류를 찾을 때는 실행 로그가 필요하지만, 왜 설정을 바꿨는지는 작업 메모에서 확인해야 합니다. 로그만 남기면 변경 이유를 찾기 어렵고, 메모에 모든 출력을 붙이면 필요한 결정을 찾기 어려워집니다.

에이전트 작업 규칙

이름과 말투를 정하는 문서 외에 작업 절차를 적는 규칙을 뒀습니다. 새 작업을 시작할 때 참고할 문서와 변경 후 기록할 내용을 명시하는 방식입니다.

아래는 구성을 설명하기 위해 단순화한 예시입니다. 당시 파일을 그대로 옮긴 것은 아닙니다.

md
sample/AGENTS.md
# 작업 규칙 - 작업을 시작하기 전에 실행 절차 문서와 최근 일일 메모를 읽는다. - 설정을 바꾸면 바꾼 내용과 이유를 당일 메모에 남긴다. - 다음 작업에서도 필요한 설정과 규칙은 장기 메모에 정리한다. - 외부 자료가 필요한 내용은 확인한 뒤 답한다.

이런 규칙이 있으면 세션마다 같은 작업 방식을 다시 설명하는 일을 줄일 수 있습니다. 다만 규칙 파일을 만드는 것만으로 동작이 보장되는 것은 아니어서, 실제 작업에서 읽고 기록하는지도 확인해야 했습니다.

일일 기록과 장기 메모 분리

메모는 사람이 직접 읽고 수정할 수 있는 텍스트 파일로 시작했습니다. 일일 메모에는 당일 작업과 남은 일을 적고, 장기 메모에는 여러 작업에서 다시 참고할 내용을 남겼습니다.

두 파일을 나눈 이유는 상세 기록과 계속 필요한 요약을 함께 유지하기 위해서입니다. 일일 기록을 전부 장기 메모로 복사하면 시간이 지날수록 다시 읽을 내용도 늘어납니다.

다음은 각각의 역할을 보여주는 예시입니다.

md
sample/memory/2026-02-08.md
# 2026-02-08 - Ollama에서 로컬 모델이 응답하는 것을 확인했다. - 작업 규칙과 일일 메모를 따로 관리하기로 했다. - 다음 작업: OpenClaw에서 이전 메모를 읽는지 확인하기.
md
sample/MEMORY.md
# 계속 참고할 내용 - 실행 로그와 작업 메모는 구분해서 남긴다. - 설정을 바꿀 때는 변경 이유도 기록한다. - 다음 작업에 필요한 내용은 대화에만 남기지 않고 파일에 적는다.

파일을 남기는 것과 그 파일을 다음 작업에서 사용하는 것은 별개입니다. 작업 전에 어떤 기록을 읽을지도 규칙에 함께 적었습니다. 일일 파일과 장기 메모의 역할은 OpenClaw 공식 메모리 문서에서도 구분해 설명합니다.

긴 프롬프트와 작은 모델의 한계

Ollama에서 짧은 질문에 잘 답하던 모델도 OpenClaw에 연결하면 제대로 동작하지 않는 경우가 많았습니다. 특히 작은 모델에서 작업이 잘 이어지지 않았습니다.

OpenClaw가 모델에 보내는 내용에는 사용자의 질문만 들어가는 것이 아닙니다. 작업 규칙과 도구 설명, 이전 대화, 읽어 온 자료도 포함됩니다. 직접 질문할 때보다 프롬프트가 길어지고 한 번에 다뤄야 하는 내용도 많아집니다.

그래서 모델이 지원하는 컨텍스트 길이만 보고 선택하기 어려웠습니다. 입력이 한도 안에 들어가더라도 그 안의 규칙을 따르고 필요한 도구를 사용하면서 작업을 이어갈 수 있어야 합니다. 제 환경에서 작은 모델을 사용했을 때는 이 부분에서 한계가 있었습니다.

모든 실패의 원인을 따로 분석한 비교 실험은 아니지만, 짧은 질의응답 결과만으로 에이전트 작업까지 판단할 수 없다는 것은 확인했습니다. 이후에는 모든 작업을 로컬에서 처리한다는 조건을 두지 않았습니다. 로컬 모델을 먼저 써보되 작업이 잘 진행되지 않거나 답변이 부족하면 외부 API도 사용할 수 있게 했습니다.

실제 자동화에 연결하기

Ollama에서 모델을 직접 호출하는 환경을 만들고, OpenClaw에 연결한 뒤 작업 규칙과 메모를 정리했습니다. 다만 짧은 질문에 답하던 작은 모델도 긴 프롬프트와 도구 사용이 필요한 작업에서는 잘 이어가지 못했습니다. 그래서 모든 작업을 로컬 모델로 처리하기보다, 필요하면 외부 API를 함께 쓰는 쪽으로 정했습니다.

이 글에서 준비한 것은 에이전트를 실행하고 작업 기록을 이어갈 환경까지입니다. 다음에는 실제 자료 수집과 아침 브리핑을 붙이면서, 에이전트에 맡길 일과 스크립트로 실행할 일을 나눴습니다.

다음 글: 독립 수집기로 구성한 아침 브리핑

참고 자료

Last updated on