Hermes Agent 에 내 파일 접근 권한 주기
이 글은 이미 Hermes Agent 를 쓰고 계시고 설정에 익숙하다는 것을 전제합니다. 여기서 더하는 것은 나머지 반쪽입니다 — 로컬 문서 검색 서버를 붙여서, 세션에 붙여넣은 것만이 아니라 당신의 파일을 근거로 답하게 만드는 것.
무엇을 보증할 수 있고 무엇은 못 하는가
이걸 먼저 적습니다. 조용히 짐작한 설치 안내는 없는 것보다 나쁘기 때문입니다.
서버 쪽은 보증할 수 있습니다. LocalSynapse 는 stdio 로 MCP 를 말하고 도구 아홉 개를 노출하며, 저희가 그 동작을 계속 측정합니다 — 응답 형태, 지연, 검색이 아무것도 못 찾았을 때 무슨 일이 일어나는지까지.
아래 Hermes 관련 내용은 저희가 둘을 함께 돌려본 결과가 아니라 Hermes 문서에서 온 것입니다. 설정 경로·키 이름·리로드 명령은 Hermes Agent 문서에 적힌 대로입니다. 새 버전에서 무엇이 옮겨졌다면 이 글보다 그쪽 문서가 맞고, 알려주시면 고맙겠습니다.
설정 항목
Hermes 는 ~/.hermes/config.yaml 의 mcp_servers 아래에서 MCP 서버를 읽습니다. LocalSynapse 는 stdio 서버입니다 — 실행 파일 하나를 mcp 인자와 함께 부릅니다.
mcp_servers:
localsynapse:
command: 'C:\Program Files\LocalSynapse\LocalSynapse.exe'
args: ["mcp"]
macOS 에서는:
mcp_servers:
localsynapse:
command: "/Applications/LocalSynapse.app/Contents/MacOS/LocalSynapse"
args: ["mcp"]
그다음 세션에서 /reload-mcp 를 실행하면 재시작 없이 반영됩니다.
Windows 경로는 짚어둘 만합니다. 이게 조용히 실패하는 가장 흔한 경로이기 때문입니다. YAML 은 큰따옴표 문자열 안에서 역슬래시를 이스케이프 문자로 봅니다. 위처럼 작은따옴표를 쓰면 역슬래시가 문자 그대로 읽힙니다. 슬래시를 써도 됩니다. 이걸 틀리면 설정은 파싱되고 서버는 뜨지 않으며 아무도 이유를 말해주지 않습니다.
여기서 가장 중요한 옵션: 도구 필터링
Hermes 는 서버별 도구 필터링을 지원하고, LocalSynapse 와 함께라면 의식적으로 쓸 만합니다.
이유는 이렇습니다. 도구 정의는 실제로 불리든 안 불리든 매 턴 모델로 실려 나갑니다. LocalSynapse 는 아홉 개를 노출합니다 — 검색, 파일 본문 읽기, 색인 훑기, 스프레드시트, 메일 스레드, 타임라인, 색인 관리까지. 당신의 Hermes 작업이 검색과 읽기만 필요로 한다면 나머지 일곱은 세션의 모든 메시지에 붙는 고정 세금입니다.
mcp_servers:
localsynapse:
command: 'C:\Program Files\LocalSynapse\LocalSynapse.exe'
args: ["mcp"]
tools:
include: [search_files, get_file_content]
include 가 exclude 보다 우선하고, 둘 다 정확한 이름과 glob 패턴을 받습니다. 저희가 잰 전체 도구 목록은 약 5,500자인데, 두 개로 줄이면 그 대부분이 매 턴에서 빠집니다. 나중에 타임라인이나 스프레드시트 도구가 필요해지면 추가하고 리로드하면 됩니다.
도구들이 하는 일
무엇을 포함할지 정하기에 충분한 만큼만:
search_files— 문서 안을 키워드로도 의미로도 찾습니다. 문서마다 여러 구절과 함께, 질의를 어떻게 읽었는지도 돌려줍니다.get_file_content— 색인된 파일의 추출 텍스트를 한 번에 최대 스무 개까지 id 로 읽습니다.list_indexed_files— 무엇이 색인돼 있는지 폴더·확장자로 걸러 훑습니다.get_pipeline_status— 결과가 비었을 때 그것을 믿기 전에 색인 범위를 확인합니다.get_email_thread— 메일 대화를 회신 사슬을 따라 위아래로 걷습니다.get_spreadsheet— 통합문서를 구조로 읽습니다. 셀 좌표·시트 이름·병합 범위가 보존되고 선언된 자료형을 그대로 따릅니다.get_timeline과get_work_session— 어떤 기간이나 한 덩어리 작업 주변에서 무슨 일이 있었는지 재구성합니다.preview_index_removal— 색인에서 무엇이 지워질지 보여줍니다. 실행이 아니라 예행입니다.
검색이 돌려주는 것
여기에 맞춰 프롬프트를 쓰실 테니 미리 알아두실 만합니다. 흔한 스니펫 목록과 모양이 다릅니다.
결과는 문서 아래에 구절이 달린 묶음입니다 — 파일마다 잘린 티저 하나가 아니라, 문서마다 여러 발췌가 각자의 위치와 함께. 호출자가 purpose 를 밝히면 응답이 거기 맞춰집니다. 문서를 찾는 목적이면 많이·짧게, 질문에 답하는 목적이면 적게·길게. 저희 시험 묶음에서 그 차이는 결과당 약 176자 대 약 1,850자였습니다.
모든 응답에는 request 블록이 함께 옵니다 — 어떤 항이 쓰였고, 어떤 항이 불용어로 버려졌고, 어떤 표현식이 실행됐는지, 그리고 걸지 않은 축들이 건수와 함께. 해석이 성립하지 않았다면 그럴듯한 목록으로 포장하는 대신 그렇다고 말합니다. 도구 호출을 조합하는 에이전트에게는 이게 중요합니다 — 잘못 읽힌 질의를 고쳐 다시 부를 수 있으니까요. 엉뚱한 재료로 추론하는 대신에.
동작 확인
Hermes 문서에 MCP 서버 상태 확인 명령은 없으므로, 초록불 대신 동작으로 확인합니다.
- 프로세스 목록. Hermes 세션이 열린 상태에서 LocalSynapse 프로세스가 그 자식으로 떠 있어야 합니다.
- 도구 목록. 에이전트에게 어떤 도구가 있는지 물어보십시오. 필터링한 목록이 이름으로 돌아오면 발견이 된 것입니다.
- 실제 검색, 그다음 답이 없는 검색. 파일이 있어야 답할 수 있는 것을 물어본 뒤, 당신 파일에 정말로 없는 것을 물어보십시오. 두 번째가 중요합니다 — 제대로 붙은 구성은 못 찾았다고 말하고, 안 붙은 구성은 에이전트가 똑같은 어조로 일반 지식으로 답하게 둡니다.
실무적인 두 가지
데스크톱 앱을 켜둘 필요가 없습니다. Hermes 가 서버를 직접 띄웁니다. LocalSynapse 창은 선택이고 닫아도 에이전트 쪽은 변하지 않습니다.
Hermes 와 다른 클라이언트를 동시에 써도 됩니다. 각자 자기 서버 프로세스를 띄우고 각자 완전한 검색을 씁니다. 색인은 중복되지 않습니다 — 정확히 한 프로세스만 색인을 유지합니다. 알아두실 비용은 메모리입니다. 의미검색 모델은 그것을 필요로 하는 프로세스마다 올라가고, 색인할 것이 없어지는 즉시 놓는 이유도 여기에 있습니다.
이대로 붙여보셨는데 Hermes 쪽 내용 중 낡은 것이 있으면 알려주십시오. 누군가 이 글을 따라가다 조용히 아무 일도 안 하는 설정에 도달하게 두느니, 글을 고치는 편이 낫습니다.