Hermes Agent + Discord + 로컬 모델 연결 성공 후기

Windows11에서 Hermes Agent Qwen 3.8 27b IQ4_XS 로컬 전환과 디스코드 연동


1. 시작한 이유

지금까지 N100 미니 컴퓨터로 Hermes Agent를 돌리고 있었습니다.

하지만 컴퓨터 2대가 한 책상에 있으니 좀 지저분해 보였습니다. 하나로 통일해볼까라는 생각에 시도해보았습니다.

걱정스러운 부분은 역시 전기료입니다.

계속 윈도우 컴퓨터를 켜야 한다는 부담감은 아무래도 존재합니다.

맥미니처럼 전기를 적게 먹지는 않기 때문에 그 부분은 부담이 됩니다.

최종 구성

Discord
   ↓
기존 Discord Bot
   ↓
Hermes Gateway
   ↓
Hermes Agent
   ↓
OpenAI-compatible API
   ↓
Ollama
   ↓
Qwen3.8-27B IQ4_XS / 64K Context
 

사용한 PC

항목구성
OSWindows 11
CPUIntel Core i7-14700
RAM64GB (32GB × 2)
GPUNVIDIA RTX 4070 Ti Super
VRAM16GB
로컬 모델 런타임Ollama
AgentHermes Agent
최종 로컬 모델Qwen3.8 27B IQ4_XS
Context64,000 tokens
메신저Discord (기존 Bot 재활용)


2. 시작부터 막혔습니다.

기존 Hermes Agent를 구동하고 있었기에 잘 되겠지 시도했습니다.

최초 시도는 아래와 같았습니다.

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

그 결과 PowerShell에서 다음과 같은 오류가 발생했습니다.

WSL (…) ERROR: execvpe(/bin/bash) failed: No such file or directory

원인은 단순했습니다. `install.sh`는 Linux/macOS/WSL 계열용인데, 저는 Windows 네이티브 PowerShell에서 실행하고 있었습니다.

PowerShell에서 `bash`가 WSL 진입점으로 해석됐지만 실제 `/bin/bash`가 없어 실패한 것입니다.


해결: Windows 네이티브 설치 스크립트 사용

iex (irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1)

설치가 끝난 뒤에는 새 PowerShell 창을 열어 PATH가 반영되도록 하고 다음 명령으로 확인했습니다.

Get-Command hermes
hermes –version
hermes doctor

초보자 핵심 `install.sh`와 `install.ps1`을 헷갈리지 않는 것이 첫 번째 관문입니다.

Windows 11에서 WSL을 꼭 쓸 이유가 없다면 네이티브 설치가 더 단순했습니다.


3. 처음에는 Quick Setup으로

Hermes 설치 과정에서 Setup 방식 선택 화면이 나왔습니다.

1. Quick Setup (Nous Portal)
2. Full setup
3. Blank Slate

처음에는 1번 Quick Setup을 선택했습니다.

이유는 간단합니다. 처음부터 로컬 모델과 Discord를 동시에 붙이면 어디에서 문제가 생겼는지 구분하기 어렵습니다.

우선 Hermes 자체가 정상적으로 대답하는지 확인하는 것이 더 중요했습니다.

hermes chat -q “reply with ok”

`ok`가 나오면 Hermes CLI 자체는 정상입니다. 이 상태를 확보한 뒤에 로컬 모델 전환을 진행했습니다.

중요한 전략 한 번에 모든 것을 붙이지 말고

① Hermes 자체 → ② 로컬 모델 → ③ Discord 순서로 연결하면 디버깅이 훨씬 쉽습니다.


4. 클라우드 대신 로컬 모델로 전환

Hermes를 계속 사용하면서 모델 사용량과 비용, 그리고 로컬에서 직접 돌려보고 싶은 욕심 때문에

Ollama/LM Studio를 후보로 두고 로컬 모델을 검토했습니다.

최종적으로는 CLI에서 관리하기 쉽고 Hermes에 OpenAI 호환 API로 붙이기 간단한 Ollama를 선택했습니다.

왜 Qwen3.8 27B였나?

제 PC는 16GB VRAM이라 27B급 모델이 완전히 여유로운 사양은 아닙니다.

그래도 Agent의 지시 이해, 도구 선택, 긴 작업 흐름을 고려해 너무 작은 모델로 내려가기보다

27B를 양자화해서 사용하는 쪽을 먼저 시험했습니다.

처음에는 Q4_K_M 계열로 시작했고, 이후 속도가 너무 느려 IQ4_XS로 한 단계 더 압축했습니다.

결과적으로 모델 파라미터 수는 27B로 유지하면서 GPU 오프로드 비중을 크게 높일 수 있었습니다.


5. Ollama 업데이트부터 필요했다

Qwen3.8 27B를 처음 받으려 했을 때 다음 오류가 났습니다.

ollama pull qwen3.8:27b

Error: pull model manifest: 412:
The model you are attempting to pull requires a newer version of Ollama.

이 오류는 모델 이름 문제가 아니라 Ollama 버전이 너무 오래되어 발생한 것이었습니다.

최신 버전으로 업데이트한 뒤 다시 실행했습니다.

ollama –version
ollama pull qwen3.8:27b
ollama run qwen3.8:27b

모델이 실행된 뒤 다른 PowerShell 창에서 다음을 확인했습니다.

ollama ps

처음에는 대략 다음과 같은 상태였습니다.

항목초기 상태
모델Qwen3.8 27B Q4_K_M
Context8192
CPU/GPU 분배약 31% / 69%
문제Hermes Agent용으로 Context가 너무 작음


6. 진짜 문제는 8K Context

Hermes Agent는 일반 챗봇보다 Context 사용량이 큽니다.

시스템 프롬프트, 도구 설명, 대화 기록, 파일 내용, 도구 실행 결과가 한꺼번에 작업 공간을 사용하기 때문입니다.

  • 8K: 간단한 채팅은 가능하지만 Agent 작업에는 매우 빠듯함
  • 32K: 기본 프롬프트와 도구만으로도 여유가 크지 않을 수 있음
  • 64K: 제 환경에서는 성능과 메모리 사용량 사이의 현실적인 타협점

그래서 기존 모델을 다시 받을 필요 없이 Ollama의 Modelfile로 Hermes 전용 64K 모델을 만들었습니다.

@”
FROM qwen3.8:27b
PARAMETER num_ctx 64000
“@ | Set-Content -Encoding ascii .\Modelfile

ollama create qwen3.8-hermes-64k -f .\Modelfile
ollama run qwen3.8-hermes-64k

실행 후 `ollama ps`에서 `CONTEXT 64000`이 보이면 성공입니다.


7. Hermes를 Ollama 로컬 엔드포인트에 연결

이제 Hermes가 Nous/외부 모델이 아니라 Ollama를 바라보게 합니다.

hermes model

Provider에서 `Custom endpoint`를 선택하고 아래 값을 입력했습니다.

설정값
API Base URLClaude 또는 Chatgpt 이용해서 진행
API Key비움
API compatibilityChat Completions
Modelqwen3.8-hermes-64k:latest
Context64000
Display name예: Qwen3.8 Hermes 64K

설정 후 다시:

hermes chat -q “반드시 OK라고만 답해”

라고 테스트하고, 다른 창에서 `ollama ps`에 `qwen3.8-hermes-64k`가 뜨는지 확인했습니다.

이렇게 하면 Hermes 요청이 실제로 내 PC의 Ollama 모델로 들어간 것을 확인할 수 있습니다.


8. Discord는 새 봇을 만들지 않고 기존 봇을 재활용

기존 글에도 있지만, 이미 예전에 API KEY 기반으로 사용하던 Discord Bot이 있었기 때문에

새 Application을 만들지 않고 기존 Bot을 그대로 Hermes Gateway에 붙였습니다.

Discord Developer Portal에서 확인한 것

  • 기존 Bot Token 확보 또는 재발급
  • Server Members Intent: ON
  • Message Content Intent: ON
  • Bot이 대상 서버에 초대되어 있는지 확인

보안 Bot Token은 비밀번호와 같습니다.

블로그 캡처, GitHub, 메신저에 그대로 노출하면 안 됩니다.

이 글의 예시에서는 실제 Token과 User ID를 모두 가렸습니다.


9. Discord User ID 찾기: ‘사용자명 복사’와 다르다

여기서 초보자가 가장 쉽게 헷갈릴 수 있습니다. Discord의 ‘사용자명 복사’를 누르면 `asdfghh1000` 같은 이름이 복사됩니다. Hermes allowlist에는 사용자명을 쓸 수도 있지만 장기적으로는 변하지 않는 숫자 User ID가 더 안정적입니다.

1. Discord 사용자 설정 → 고급 → 개발자 모드 ON

2. 서버 채팅방으로 돌아감

3. 내가 작성한 메시지 옆 프로필 이미지를 우클릭

4. 사용자 ID 복사 선택

예시는 다음처럼 긴 숫자입니다.

123456789012345678

실전 팁 설정 화면의 내 프로필을 우클릭해도 원하는 메뉴가 안 보일 수 있었습니다. 실제 채팅 메시지 옆 내 아바타를 우클릭하니 ‘사용자 ID 복사’가 나타났습니다.


10. Hermes Gateway에 Discord 연결

hermes gateway setup

Discord를 선택하고 Bot Token, Allowed User ID를 입력했습니다.

Home Channel은 처음에는 비워두고 나중에 Discord에서 `/sethome`으로 지정했습니다.

개인용 Agent라면 Allowed User를 비워서 공개 상태로 두기보다 반드시 내 숫자 User ID만 넣는 것을 권장합니다.


11. 재부팅해도 자동으로 살아나게 만들기

Gateway setup 과정에서 Windows 로그인 시 자동 실행을 묻는 질문이 여러 번 나왔습니다.

자동으로 Discord Bot을 살리고 싶었기 때문에 모두 `y`를 선택했습니다.

Start the gateway now? [Y/n]: y
Start the gateway automatically on login/boot …? [Y/n]: y
Start the gateway now after install? [Y/n]: y
Start the gateway automatically on Windows login …? [Y/n]: y
Open the UAC prompt now? [y/N]: y

UAC 승인을 거친 뒤 최종 확인은 이것 하나면 됩니다.

hermes gateway status

성공했을 때:

✓ Scheduled Task registered: Hermes_Gateway
✓ Gateway process running

재부팅 후 핵심 Windows에 로그인하면 Hermes Gateway는 Scheduled Task로 자동 시작됩니다. Ollama도 실행 가능한 상태라면 Discord에서 첫 질문이 들어오는 순간 필요한 모델이 자동으로 메모리에 올라갑니다. 재부팅 직후 `ollama ps`가 비어 있어도 정상입니다.


12. Bot은 연결됐는데 일반 채팅에 반응하지 않았다

여기서 꽤 오래 헤맸습니다. Gateway는 running이고 Bot Token도 정상인데 `@B bot 안녕`에 반응이 없었습니다.

사실 이럴 때 화면을 복사해서 클로드나 gpt에게 물어보는 게 답이긴 합니다. 아래 내용도 물어본 것에 대한 내용을 정리한 것입니다.

가장 먼저 확인한 것

$envFile = Get-Content “$env:LOCALAPPDATA\hermes\.env”

if ($envFile -match ‘^DISCORD_BOT_TOKEN=.+’) {
    “Discord Bot Token: 설정됨”
} else {
    “Discord Bot Token: 없음”
}

Allowed User도 확인했습니다.

Get-Content “$env:LOCALAPPDATA\hermes\.env” |
Where-Object { $_ -match ‘^DISCORD_ALLOWED_USERS=’ }

Windows 네이티브 Hermes에서 제 환경의 설정 파일은 `%LOCALAPPDATA%\hermes\.env` 아래에 있었습니다.

Linux 문서의 `~/.hermes/.env`만 보고 찾으면 헷갈릴 수 있습니다.

Gateway 로그가 결정적인 단서

Get-Content “$env:LOCALAPPDATA\hermes\logs\gateway.log” -Tail 200 |
Select-String -Pattern “discord|allow|denied|intent|error|ready|connected|login|401|403”

로그에 다음이 확인됐습니다.

[Discord] Connected as B bot#….
✓ discord connected

즉 Token과 Discord 로그인 자체는 정상입니다. 그리고 `/whoami` 슬래시 명령도 정상 응답했습니다.

/whoami

이 테스트가 되면 Discord → Bot → Hermes Gateway 구간이 살아 있다고 볼 수 있습니다.


13. 연결은 성공했지만 너무 느렸다

Qwen3.8 27B Q4_K_M + 64K Context는 정상적으로 돌아갔지만 Discord에서 체감 속도가 꽤 느렸습니다.

`ollama ps`를 보면 실행 시 약 20GB가 필요했고, CPU/GPU 분배가 다음과 같았습니다.

항목Q4_K_M + 64K
실행 SIZE약 20GB
CPU/GPU 분배약 49% / 51%
Context64000
체감정상 작동하지만 느림

16GB VRAM에 모델 + 64K KV cache를 모두 넣기 어려워 상당 부분이 시스템 RAM/CPU로 넘어간 결과입니다.


14. 지능은 거의 유지하고 속도만 조금 올리고 싶었다

27B에서 14B로 크게 내리면 Agent 성능 저하가 체감될 가능성이 있어,

같은 27B를 유지한 채 양자화만 조금 더 강하게 압축하는 `IQ4_XS`를 선택했습니다.

선택의미
Q4_K_M품질 우선, 모델이 더 큼
IQ4_XS같은 27B 구조를 유지하면서 더 작은 메모리 사용을 노림
14B 이하로 다운속도는 더 빨라질 수 있지만 Agent 능력 차이가 더 커질 수 있음

IQ4_XS 다운로드에서 또 막혔다…

Hugging Face GGUF를 Ollama로 직접 받으려 했습니다.

ollama run hf.co/bartowski/Qwen3.8-27B-GGUF:IQ4_XS

15GB 본체와 약 927MB 파일까지 100% 받은 뒤:

Error: context deadline exceeded

가 발생했습니다. `ollama list`에도 모델이 등록되지 않았습니다. 하지만 실제 blob 파일은 이미 디스크에 내려받아져 있었습니다.

다운로드 받은 blob을 직접 Ollama 모델로 등록

다운로드 로그에서 확인한 IQ4_XS blob을 찾아 Modelfile의 `FROM`에 직접 넣었습니다.

당시 파일을 찾는 방식은 클로드나 gpt가 알려줍니다.

찾은 파일 경로로 64K 모델을 만들었습니다.

@”
FROM $($IQ4.FullName)
PARAMETER num_ctx 64000
“@ | Set-Content -Encoding ascii “$env:USERPROFILE\Modelfile-qwen38-iq4xs”

ollama create qwen3.8-iq4xs-hermes-64k `
  -f “$env:USERPROFILE\Modelfile-qwen38-iq4xs”

중요 특정 blob 해시는 모델 파일 버전에 따라 바뀔 수 있습니다. 같은 모델을 받는 경우에도 글을 읽는 시점의 Ollama/Hugging Face 상태에 따라 다를 수 있으므로, 다운로드 로그와 실제 blobs 폴더를 기준으로 찾는 것이 안전합니다.


15. IQ4_XS 결과: 실제로 빨라졌다

새 모델을 실행하고:

ollama run qwen3.8-iq4xs-hermes-64k
ollama ps

확인한 결과는 꽤 만족스러웠습니다. 드라마틱하진 않았습니다만…

항목기존 Q4_K_M 64K최종 IQ4_XS 64K
모델 파일 크기약 17GB약 15GB
실행 SIZE약 20GB약 20GB
CPU/GPU 분배49% / 51%29% / 71%
Context6400064000
체감느림확실히 개선

실행 SIZE가 여전히 약 20GB인 것은 이상하지 않습니다. 64K Context용 KV cache 등 런타임 메모리까지 포함되기 때문입니다. 더 중요한 것은 GPU 쪽 비중이 51%에서 71%로 올라갔다는 점입니다.

해석 주의 `ollama ps`의 CPU/GPU 비율은 Windows 작업 관리자에서 보는 순간 사용률과 동일한 개념이 아니라 모델 오프로드/메모리 분배 상태를 보는 지표에 가깝습니다.


16. Hermes 기본 모델을 최종 IQ4_XS로 교체

hermes model

Custom endpoint를 다시 선택하고:

항목최종 값
API URLhttp://localhost:12345/v1 (예시)
API modeChat Completions
Modelqwen3.8-iq4xs-hermes-64k:latest
Context64000
Display name예: Qwen3.8 IQ4XS 64K

Hermes에서 새 모델 응답을 확인한 뒤 Discord Gateway를 재시작했습니다.

hermes chat -q “반드시 OK라고만 답해”
hermes gateway restart
hermes gateway status

이제 Discord Bot의 응답도 새 IQ4_XS 64K 모델을 사용하게 됐습니다.

아무거나 대충 질문을 해 본 결과

특정 폴더 pdf 읽을 줄 아는지 물어봤습니다. 나름 잘 읽은 듯합니다.


17. 컴퓨터가 꺼지거나 Windows 업데이트로 재부팅되면?

처음에는 재부팅할 때마다 `hermes`나 `ollama run …`을 다시 입력해야 하는지 궁금했습니다.

최종적으로는 그럴 필요가 없었습니다.

  • Hermes Gateway: Windows Scheduled Task로 로그인 시 자동 시작
  • Ollama: Windows에서 백그라운드 실행
  • 모델: Discord에서 첫 질문이 오면 Ollama가 자동 로드

재부팅 직후 점검은 다음 두 개만 기억하면 충분합니다.

hermes gateway status
ollama list

powershell을 별도로 다시 열지 않아도 됩니다. 문제가 있을 때만 열면 됩니다.

1순위 행동은 그냥 Discord에서 B bot에게 말을 거는 것입니다.

물론 바로는 안 됩니다. 바로 말을 걸면 아래처럼 반응할 수 있습니다.

The model server is not responding — it looks like the configured model endpoint is not running or is unreachable.

시간이 조금 지나면 정상 응답합니다.

PowerShell은 문제가 있을 때만 실행합니다.

그때는 가장 먼저:

hermes gateway status

정상이면:

✓ Scheduled Task registered: Hermes_Gateway
✓ Gateway process running

이렇게 나와야 합니다.

그다음 Ollama 확인:

ollama list

여기에 최종 모델:

qwen3.8-iq4xs-hermes-64k:latest

가 있으면 모델 설치도 그대로 유지된 겁니다.

Discord에서 질문을 보내고:

ollama ps

를 보면 현재 실제로 로드된 모델을 확인할 수 있습니다. 재부팅 직후 `ollama ps`가 비어 있어도 정상입니다.


18. 막혔을 때 가장 빠른 진단

그냥 화면 보내주고 gpt나 클로드에게 물어봅니다.


19. 다시 처음부터 한다면: 가장 덜 헤매는 순서

1. Windows용 install.ps1로 Hermes 설치

2. Quick Setup으로 Hermes CLI 자체가 정상인지 확인

3. Ollama 최신 버전 설치

4. Qwen 모델을 먼저 단독 실행

5. `ollama ps`로 Context와 CPU/GPU 분배 확인

6. Modelfile로 Hermes용 64K 모델 생성

7. `hermes model`에서 localhost:11434/v1 연결

8. Hermes CLI에서 로컬 모델 응답 확인

9. Discord Developer Portal에서 Intent와 Bot Token 준비

10. Discord User ID 숫자값 확보

11. `hermes gateway setup`으로 Discord 연결

12. Scheduled Task 자동 시작 등록

13. `/whoami`로 Discord ↔ Hermes 연결 확인

14. `/sethome`으로 Home Channel 지정

15. 필요 시 멘션/Auto Thread 설정 조정

16. Discord에서 질문 후 `ollama ps`로 실제 로컬 모델 사용 확인

17. 속도가 느릴 때만 양자화/Context를 최적화


Q&A

1. 컴퓨터 절전 모드에서는 동작하나요?

아니요. 컴퓨터가 절전 모드에 들어가면 Discord 봇은 사실상 동작하지 않습니다.

Hermes Gateway, Ollama, Qwen 모델 모두 PC의 CPU/GPU가 실제로 깨어 있어야 작동합니다. 절전 모드에서는 프로세스 실행이 멈추기 때문에 Discord에서 메시지를 보내도 답하지 못합니다.

구분하면 이렇습니다.

PC 상태Discord B bot
화면만 꺼짐✅ 정상 작동
PC 잠금✅ 정상 작동
절전 모드❌ 작동 안 함
최대 절전 모드❌ 작동 안 함
PC 종료❌ 작동 안 함
재부팅 후 로그인 완료✅ 자동 실행

2. 그러면 전원, 모니터 설정은 어떻게 하면 좋나요?

가장 좋은 설정은 모니터는 꺼지게 하되 PC는 절전하지 않게 하는 것입니다.

Windows 11에서:

설정
→ 시스템
→ 전원 및 배터리
→ 화면, 절전 모드 및 최대 절전 모드 시간 제한

여기서 전원 연결 시 기준으로 예를 들어:

화면 끄기
→ 10분 또는 15분
장치를 절전 모드로 전환
→ 안 함

으로 두는 것을 추천합니다.

그러면 밤에 모니터는 꺼지지만:

PC
├─ Hermes Gateway 실행
├─ Ollama 실행
├─ Discord B bot 온라인
└─ 필요할 때 Qwen 로드

상태는 계속 유지됩니다.

3. 디스플레이 잠금 모드에서는 동작하는 거지요?

디스플레이만 꺼지거나 Windows 잠금 화면 상태라면 동작합니다.

즉,

화면 꺼짐 → ✅ 동작
Win + L 잠금 → ✅ 동작
절전 모드 → ❌ 중단
최대 절전 → ❌ 중단
종료 → ❌ 중단

이렇게 이해하시면 됩니다.

Hermes Gateway와 Ollama는 백그라운드에서 계속 실행되므로,

PC 자체가 깨어 있기만 하면 Discord의 B bot은 계속 응답할 수 있습니다.

다만 첫 요청 때 Qwen 모델이 메모리에 다시 올라오느라 조금 늦을 수 있습니다.

코멘트

답글 남기기

syn2bloom에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기