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
| 항목 | 구성 |
| OS | Windows 11 |
| CPU | Intel Core i7-14700 |
| RAM | 64GB (32GB × 2) |
| GPU | NVIDIA RTX 4070 Ti Super |
| VRAM | 16GB |
| 로컬 모델 런타임 | Ollama |
| Agent | Hermes Agent |
| 최종 로컬 모델 | Qwen3.8 27B IQ4_XS |
| Context | 64,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 |
| Context | 8192 |
| 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 URL | Claude 또는 Chatgpt 이용해서 진행 |
| API Key | 비움 |
| API compatibility | Chat Completions |
| Model | qwen3.8-hermes-64k:latest |
| Context | 64000 |
| 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% |
| Context | 64000 |
| 체감 | 정상 작동하지만 느림 |
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% |
| Context | 64000 | 64000 |
| 체감 | 느림 | 확실히 개선 |
실행 SIZE가 여전히 약 20GB인 것은 이상하지 않습니다. 64K Context용 KV cache 등 런타임 메모리까지 포함되기 때문입니다. 더 중요한 것은 GPU 쪽 비중이 51%에서 71%로 올라갔다는 점입니다.
해석 주의 `ollama ps`의 CPU/GPU 비율은 Windows 작업 관리자에서 보는 순간 사용률과 동일한 개념이 아니라 모델 오프로드/메모리 분배 상태를 보는 지표에 가깝습니다.
16. Hermes 기본 모델을 최종 IQ4_XS로 교체
hermes model
Custom endpoint를 다시 선택하고:
| 항목 | 최종 값 |
| API URL | http://localhost:12345/v1 (예시) |
| API mode | Chat Completions |
| Model | qwen3.8-iq4xs-hermes-64k:latest |
| Context | 64000 |
| 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 모델이 메모리에 다시 올라오느라 조금 늦을 수 있습니다.

답글 남기기