Hermes๋ฅผ ์„ค์น˜ํ•œ ๋‹ค์Œ ์ฒด๊ฐ ๊ฐ€์น˜๊ฐ€ ๊ฐ€์žฅ ๋นจ๋ฆฌ ์˜ฌ๋ผ๊ฐ€๋Š” ์ง€์ ์€ Telegram ์—ฐ๊ฒฐ์ด๋‹ค. ํ„ฐ๋ฏธ๋„ ์•ž์— ์•‰์•„ ์žˆ์„ ๋•Œ๋งŒ ์“ฐ๋Š” ์—์ด์ „ํŠธ์™€, ํœด๋Œ€ํฐ์—์„œ ๋ฐ”๋กœ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋Š” ์—์ด์ „ํŠธ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅด๊ฒŒ ๋А๊ปด์ง„๋‹ค. ํŠนํžˆ ๋ฉ”๋ชจ, ์งˆ๋ฌธ, ์Œ์„ฑ ์ž…๋ ฅ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ๊ฒฐ๊ณผ ํ™•์ธ๊นŒ์ง€ ํ•œ ์ฑ„๋„๋กœ ๋ฌถ์ด๋ฉด ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์˜ฌ๋ผ๊ฐ„๋‹ค.

๋‹ค๋งŒ ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ๋งŽ์ด ๊ผฌ์ด๋Š” ๋ถ€๋ถ„๋„ ๋น„์Šทํ•˜๋‹ค. BotFather ์„ค์ •, ํ—ˆ์šฉ ์‚ฌ์šฉ์ž, privacy mode, gateway ์„œ๋น„์Šค ์‹คํ–‰์ด ํ•œ ๋ฒˆ์— ์„ž์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๊ธ€์€ Hermes ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ๊ฐœ์ธ์šฉ Telegram ์—ฐ๊ฒฐ์„ ๊ฐ€์žฅ ๋œ ๊ผฌ์ด๊ฒŒ ๋งŒ๋“œ๋Š” ์ˆœ์„œ๋กœ ์ •๋ฆฌํ•œ๋‹ค.

์•ˆ๋‚ด: ์ด ๊ธ€์€ Hermes ๊ณต์‹ ๋ฌธ์„œ์™€ ๊ณต์‹ ์ €์žฅ์†Œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ–ˆ๊ณ , ๊ตฌ์กฐํ™”์™€ ๋ฌธ์žฅ ์ •๋ฆฌ์— ์ƒ์„ฑํ˜• AI๋ฅผ ๋ณด์กฐ์ ์œผ๋กœ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์˜ ๋ชฉํ‘œ

์ด ๊ธ€์„ ๋๋‚ด๋ฉด ์•„๋ž˜ ๋‹ค์„ฏ ๊ฐ€์ง€๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • Telegram ๋ด‡์ด ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค
  • Hermes gateway๊ฐ€ Telegram๊ณผ ์—ฐ๊ฒฐ๋ผ ์žˆ๋‹ค
  • ๋‚ด ๊ณ„์ •๋งŒ ๋ด‡์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œํ•œ๋ผ ์žˆ๋‹ค
  • DM์—์„œ ๊ธฐ๋ณธ ๋Œ€ํ™”์™€ ๋ช…๋ น์ด ์ •์ƒ ๋™์ž‘ํ•œ๋‹ค
  • ํ•„์š”ํ•˜๋ฉด ๊ทธ๋ฃน์—์„œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์“ธ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋‹ค
flowchart LR
A[BotFather์—์„œ ๋ด‡ ์ƒ์„ฑ] --> B[๋‚ด Telegram ID ํ™•์ธ]
B --> C[Hermes gateway ์„ค์ •]
C --> D[ํ—ˆ์šฉ ์‚ฌ์šฉ์ž ์ œํ•œ]
D --> E[DM์—์„œ ์ฒซ ํ…Œ์ŠคํŠธ]
E --> F[๊ทธ๋ฃน/์ž๋™ํ™” ํ™•์žฅ]

์™œ ์„ค์น˜ ๋‹ค์Œ ํŽธ์ด Telegram์ธ๊ฐ€

Hermes ๊ณต์‹ Messaging Gateway ๋ฌธ์„œ๋Š” gateway๋ฅผ ๋‹จ์ผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์„ค๋ช…ํ•œ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๊ฐ€ Telegram, Discord, Slack ๊ฐ™์€ ์ฑ„๋„ ์—ฐ๊ฒฐ๊ณผ ์„ธ์…˜ ์ €์žฅ, ํฌ๋ก  ์‹คํ–‰, ์Œ์„ฑ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ๊นŒ์ง€ ํ•จ๊ป˜ ๋งก๋Š”๋‹ค. ์ฆ‰, Telegram ์—ฐ๊ฒฐ์€ ๋‹จ์ˆœ ์ฑ„ํŒ… ์—ฐ๋™์ด ์•„๋‹ˆ๋ผ Hermes๋ฅผ ์ผ์ƒ ์šด์˜ ๋„๊ตฌ๋กœ ๋ฐ”๊พธ๋Š” ์ง„์ž…์ ์ด๋‹ค.

์ฒ˜์Œ๋ถ€ํ„ฐ Discord, WhatsApp, ๊ทธ๋ฃน ํ† ํ”ฝ, ์›นํ›…๊นŒ์ง€ ๋„“ํžˆ๊ธฐ๋ณด๋‹ค, Telegram DM ํ•˜๋‚˜๋ฅผ ๋จผ์ € ์•ˆ์ •ํ™”ํ•˜๋Š” ํŽธ์ด ํ›จ์”ฌ ๋‚ซ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ์›์ธ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

1. BotFather์—์„œ ๋จผ์ € ๋๋‚ด์•ผ ํ•˜๋Š” ๊ฒƒ

Telegram ๋ด‡์€ @BotFather์—์„œ ๋งŒ๋“ ๋‹ค. ๊ณต์‹ Telegram ์„ค์ • ๋ฌธ์„œ๋Š” /newbot์œผ๋กœ ๋ด‡์„ ๋งŒ๋“ค๊ณ  ํ† ํฐ์„ ๋ฐ›๋Š” ํ๋ฆ„์„ ๊ฐ€์žฅ ๋จผ์ € ์•ˆ๋‚ดํ•œ๋‹ค.

๊ธฐ๋ณธ ์ˆœ์„œ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค.

  1. @BotFather์— /newbot ์ „์†ก
  2. ํ‘œ์‹œ ์ด๋ฆ„ ์„ค์ •
  3. ...bot์œผ๋กœ ๋๋‚˜๋Š” ์‚ฌ์šฉ์ž๋ช… ์„ค์ •
  4. ๋ฐœ๊ธ‰๋œ ํ† ํฐ ๋ณด๊ด€

ํ† ํฐ์€ ์‚ฌ์‹ค์ƒ ๋ด‡์˜ ์—ด์‡ ๋‹ค. ์œ ์ถœ๋˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋‚ด ๋ด‡์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ, ๊ณต์‹ ๋ฌธ์„œ๋„ ํ† ํฐ ๋…ธ์ถœ ์‹œ ์ฆ‰์‹œ /revoke๋กœ ํ๊ธฐํ•˜๋ผ๊ณ  ์•ˆ๋‚ดํ•œ๋‹ค.

๊ฐ™์ด ํ•ด๋‘๋ฉด ์ข‹์€ BotFather ์„ค์ •

BotFather์—์„œ ์•„๋ž˜ ๋„ค ๊ฐ€์ง€๋ฅผ ๊ฐ™์ด ์†๋ณด๋ฉด ์ฒซ์ธ์ƒ์ด ์ข‹์•„์ง„๋‹ค.

  • /setdescription : ๋ด‡ ์„ค๋ช… ๋ฌธ๊ตฌ
  • /setabouttext : ํ”„๋กœํ•„ ์งง์€ ์†Œ๊ฐœ
  • /setuserpic : ๋ด‡ ์•„๋ฐ”ํƒ€
  • /setcommands : ๊ธฐ๋ณธ ๋ช…๋ น ๋ฉ”๋‰ด

์ฒ˜์Œ์—๋Š” ์•„๋ž˜ ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.

help - Show help information
new - Start a new conversation
sethome - Set this chat as the home channel
status - Show session info

์ด ๋‹จ๊ณ„๋Š” ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๋‚˜์ค‘์— ๋ชจ๋ฐ”์ผ์—์„œ / ๋ฉ”๋‰ด๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ํ›จ์”ฌ ๋œ ํ—ค๋งจ๋‹ค.

2. ๋‚ด Telegram ID๋ฅผ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

Hermes๋Š” Telegram ์‚ฌ์šฉ์ž๋ช…์„ ๊ธฐ์ค€์œผ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ˆซ์ž user ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ์„ ํ†ต์ œํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฐ๊ฒฐ ์ „์— ๋‚ด ID๋ฅผ ๋จผ์ € ์•Œ์•„๋‘๋Š” ๊ฒŒ ์ข‹๋‹ค.

๊ณต์‹ ๋ฌธ์„œ๋Š” @userinfobot์ด๋‚˜ @get_id_bot์œผ๋กœ user ID๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐ›์€ ์ˆซ์ž๊ฐ€ ๋‚˜์ค‘์— TELEGRAM_ALLOWED_USERS์— ๋“ค์–ด๊ฐ„๋‹ค.

์ด๊ฑธ ๋จผ์ € ํ•ด๋‘๋ฉด โ€œ๋ด‡์€ ์‚ด์•„ ์žˆ๋Š”๋ฐ ์™œ ๋‚ด ๋ง์„ ์•ˆ ๋“ฃ์ง€?โ€ ๊ฐ™์€ ์ดˆ๋ฐ˜ ํ˜ผ๋ž€์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

3. ๊ฐœ์ธ์šฉ์ด๋ผ๋ฉด allowlist๋ถ€ํ„ฐ ์žก๋Š” ๊ฒŒ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๋‹ค

Hermes ๋ณด์•ˆ ๋ฌธ์„œ์™€ Messaging Gateway ๋ฌธ์„œ๋Š” ๋‘˜ ๋‹ค ๊ฐ™์€ ์›์น™์„ ๊ฐ•์กฐํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ deny๋‹ค. ํ—ˆ์šฉ ์‚ฌ์šฉ์ž๋‚˜ pairing์ด ์—†์œผ๋ฉด, ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋Š” ๋ง‰ํžŒ๋‹ค. ํ„ฐ๋ฏธ๋„ ๋„๊ตฌ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ด‡์ด๋ผ๋ฉด ์ด ๊ธฐ๋ณธ๊ฐ’์ด ๋งž๋‹ค.

๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ์•ˆ์ „ํ•œ ๊ฐœ์ธ์šฉ ์„ค์ •์€ ์•„๋ž˜ ๋‘ ์ค„์ด๋‹ค.

TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
TELEGRAM_ALLOWED_USERS=123456789

์ด ๋ฐฉ์‹์˜ ์žฅ์ ์€ ๋ถ„๋ช…ํ•˜๋‹ค.

  • ๋ˆ„๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜๋‹ค
  • ๋ถˆํŠน์ • ์‚ฌ์šฉ์ž DM์„ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค
  • pairing ์Šน์ธ ๊ณผ์ •์„ ๋‹น์žฅ ๋ฐฐ์šฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค

pairing์€ ์–ธ์ œ ์“ฐ๋ฉด ์ข‹์€๊ฐ€

Hermes๋Š” DM pairing๋„ ์ง€์›ํ•œ๋‹ค. ๋ชจ๋ฅด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ด‡์— DM์„ ๋ณด๋‚ด๋ฉด ์ผํšŒ์šฉ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๊ณ , ์†Œ์œ ์ž๊ฐ€ CLI์—์„œ ์Šน์ธํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

hermes pairing approve telegram XKGH5N7P

์ด ๋ฐฉ์‹์€ ํŒ€์› ๋ช‡ ๋ช…์—๊ฒŒ ์ ์ง„์ ์œผ๋กœ ์—ด์–ด ์ค„ ๋•Œ ์œ ์šฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ฒ˜์Œ ์—ฐ๊ฒฐํ•˜๋Š” 1์ธ ๊ฐœ์ธ ์„ธํŒ…์ด๋ผ๋ฉด allowlist๊ฐ€ ๋” ๋น ๋ฅด๊ณ  ๋œ ํ—ท๊ฐˆ๋ฆฐ๋‹ค.

4. ์„ค์ •์€ wizard๊ฐ€ ๊ฐ€์žฅ ๋œ ๊ผฌ์ธ๋‹ค

Telegram ์—ฐ๊ฒฐ์€ ์ˆ˜๋™์œผ๋กœ๋„ ๋˜์ง€๋งŒ, ๊ณต์‹ ๋ฌธ์„œ๋Š” hermes gateway setup์„ ๊ฐ€์žฅ ์‰ฌ์šด ๊ฒฝ๋กœ๋กœ ์ œ์‹œํ•œ๋‹ค.

hermes gateway setup

์ด wizard๋Š” ํ”Œ๋žซํผ ์„ ํƒ, ๋ด‡ ํ† ํฐ, ํ—ˆ์šฉ ์‚ฌ์šฉ์ž ์„ค์ •, gateway ์žฌ์‹œ์ž‘ ์—ฌ๋ถ€๊นŒ์ง€ ํ•œ ํ๋ฆ„์œผ๋กœ ๋ฌถ์–ด ์ค€๋‹ค. ์ฒ˜์Œ์—๋Š” ์ด ๊ฒฝ๋กœ๊ฐ€ ์ œ์ผ ๋‚ซ๋‹ค.

์ˆ˜๋™ ์„ค์ •์ด ๋” ๋‚˜์€ ๊ฒฝ์šฐ

์ด๋ฏธ ~/.hermes/.env์™€ config.yaml์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ๋จธ์‹ ์—์„œ ๊ฐ™์€ ์„ค์ •์„ ๋ณต์ œํ•  ์ƒ๊ฐ์ด๋ผ๋ฉด ์ˆ˜๋™ ์„ค์ •๋„ ๊ดœ์ฐฎ๋‹ค. ์ด๋•Œ ๊ทœ์น™์€ ๋‹จ์ˆœํ•˜๋‹ค.

5. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” foreground๋ณด๋‹ค ์„œ๋น„์Šค๋กœ ๊ตด๋ฆฌ๋Š” ํŽธ์ด ํŽธํ•˜๋‹ค

๊ฐ€๋ณ๊ฒŒ ํ…Œ์ŠคํŠธ๋งŒ ํ•  ๋•Œ๋Š” foreground ์‹คํ–‰๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

hermes gateway

ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๊ณ„์† ์“ธ ๊ฑฐ๋ผ๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋Œ€๋กœ ์„œ๋น„์Šค ์„ค์น˜ ํ›„ ์‹œ์ž‘ํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค.

hermes gateway install
hermes gateway start
hermes gateway status

Linux๋Š” systemd user service, macOS๋Š” launchd agent๋กœ ์„ค์น˜๋œ๋‹ค. ์ฆ‰, ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ๊ณ„์† ์—ด์–ด๋‘์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์–ธ์ œ foreground๊ฐ€ ์ข‹๋‚˜

  • ์ง€๊ธˆ ๋ง‰ ์—ฐ๊ฒฐ ํ™•์ธ๋งŒ ํ•  ๋•Œ
  • ๋กœ๊ทธ๋ฅผ ๋ฐ”๋กœ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ํ† ํฐ ์ž…๋ ฅ์ด ๋งž๋Š”์ง€ ์ฒซ ์ ๊ฒ€ํ•  ๋•Œ

์–ธ์ œ ์„œ๋น„์Šค๊ฐ€ ์ข‹๋‚˜

  • ์ผ์ƒ์ ์œผ๋กœ ๊ณ„์† ์“ฐ๋ ค ํ•  ๋•Œ
  • ํฌ๋ก  ๊ฒฐ๊ณผ๋ฅผ Telegram์œผ๋กœ ๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ
  • ๋…ธํŠธ๋ถ ์žฌ๋ถ€ํŒ… ํ›„์—๋„ ์‰ฝ๊ฒŒ ๋ณต๊ตฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ

๋ฏธ๋‹ˆ ์‚ฌ๋ก€๋กœ ๋ณด๋ฉด ์ฐจ์ด๊ฐ€ ๋ถ„๋ช…ํ•˜๋‹ค. ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ hermes gateway๋กœ 1๋ถ„ ์•ˆ์— DM ํ™•์ธ๊นŒ์ง€ ๊ฐ€๊ณ , ์ •์ƒ ๋™์ž‘์ด ํ™•์ธ๋˜๋ฉด ๊ณง๋ฐ”๋กœ install โ†’ start๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ์•ˆ์ •์ ์ด๋‹ค.

6. ์ฒซ ์—ฐ๊ฒฐ ๋’ค ๋ฐ”๋กœ ํ™•์ธํ•  ์ฒดํฌ๋ฆฌ์ŠคํŠธ

Telegram DM์—์„œ ๋ด‡์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ , ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

1) ์ผ๋ฐ˜ ๋Œ€ํ™”

๋ด‡์—๊ฒŒ ์งง์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ•˜๋‚˜ ๋ณด๋‚ธ๋‹ค. ์‘๋‹ต์ด ์˜ค๋ฉด ์ตœ์†Œ ์—ฐ๊ฒฐ์€ ์„ฑ๊ณต์ด๋‹ค.

2) ๊ธฐ๋ณธ ๋ช…๋ น

์•„๋ž˜ ๋ช…๋ น ๋„ค ๊ฐœ๋Š” ๊ผญ ๋ˆŒ๋Ÿฌ๋ณด๋Š” ํŽธ์ด ์ข‹๋‹ค.

/help
/status
/new
/sethome

๊ณต์‹ Messaging ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด /new ๋˜๋Š” /reset์€ ์ƒˆ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , /status๋Š” ์„ธ์…˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ, /sethome์€ ์ด ์ฑ„ํŒ…์„ ํ™ˆ ์ฑ„๋„๋กœ ์ง€์ •ํ•œ๋‹ค. ํ™ˆ ์ฑ„๋„๋กœ ์ง€์ •ํ•ด ๋‘๋ฉด ํฌ๋ก  ๊ฒฐ๊ณผ๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์™„๋ฃŒ ๋ฉ”์‹œ์ง€๊ฐ€ ์—ฌ๊ธฐ๋กœ ๋Œ์•„์˜ค๊ธฐ ์‰ฝ๋‹ค.

3) ์Œ์„ฑ ์ž…๋ ฅ

Telegram ๋ฌธ์„œ๋Š” ์Œ์„ฑ ๋ฉ”์‹œ์ง€ ์ „์‚ฌ๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ์†Œ๊ฐœํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€๋Šฅํ•˜๋ฉด ์งง์€ ์Œ์„ฑ ํ•˜๋‚˜๋ฅผ ๋ณด๋‚ด ๋ณด๊ณ , ํ…์ŠคํŠธ๋กœ ์ž˜ ๋“ค์–ด์˜ค๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

4) ์„ธ์…˜ ๋ฆฌ์…‹ ๊ฐ๊ฐ

/new๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ƒˆ ๋Œ€ํ™”์ฒ˜๋Ÿผ ์ดˆ๊ธฐํ™”๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋‚˜์ค‘์— ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ฌด๊ฑฐ์›Œ์งˆ ๋•Œ ์ด ๊ฐ๊ฐ์ด ๊ฝค ์ค‘์š”ํ•˜๋‹ค.

7. ๊ทธ๋ฃน์— ๋„ฃ์„ ๊ฑฐ๋ฉด privacy mode์™€ mention ๊ทœ์น™์„ ๊ฐ™์ด ๋ด์•ผ ํ•œ๋‹ค

Telegram์—์„œ ๊ทธ๋ฃน ์šด์˜์ด ๊ผฌ์ด๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” privacy mode๋‹ค. ๊ณต์‹ Telegram ์„ค์ • ๋ฌธ์„œ๊ฐ€ ์ด๊ฑธ ์•„์˜ˆ โ€œ๊ฐ€์žฅ ํ”ํ•œ ํ˜ผ๋ž€ ์ง€์ โ€์ด๋ผ๊ณ  ์งš๋Š”๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ privacy mode๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋ด‡์€ ๊ทธ๋ฃน์—์„œ ์•„๋ž˜ ์ •๋„๋งŒ ๋ณธ๋‹ค.

  • ์Šฌ๋ž˜์‹œ ๋ช…๋ น
  • ๋ด‡ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ๋‹ต๊ธ€
  • ์ผ๋ถ€ ์„œ๋น„์Šค ๋ฉ”์‹œ์ง€

๋ฐ˜๋Œ€๋กœ privacy mode๋ฅผ ๋„๋ฉด ๊ทธ๋ฃน ๋ฉ”์‹œ์ง€๋ฅผ ๋” ๋„“๊ฒŒ ๋ฐ›๋Š”๋‹ค. ๋˜๋Š” ๋ด‡์„ ๊ทธ๋ฃน admin์œผ๋กœ ์˜ฌ๋ ค๋„ ์ „์ฒด ๋ฉ”์‹œ์ง€ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ ์ „์ฒด ๋ฐ˜์‘ํ˜•์œผ๋กœ ์—ด์–ด ๋‘๋Š” ๊ฑด ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐœ์ธ ์ƒ์‚ฐ์„ฑ์šฉ ๋ด‡์ด๋ผ๋ฉด ๋จผ์ € require_mention์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŽธ์ด ํ›จ์”ฌ ์•ˆ์ „ํ•˜๋‹ค.

telegram:
  require_mention: true

๊ณต์‹ ๋ฌธ์„œ๋Š” ์—ฌ๊ธฐ์— mention_patterns, ignored_threads๊นŒ์ง€ ๋”ํ•ด ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋ฐ˜์‘ ๋ฒ”์œ„๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์„ค๋ช…ํ•œ๋‹ค. ์ฆ‰, ๊ทธ๋ฃน์—์„œ ๋„ˆ๋ฌด ์ˆ˜๋‹ค์Šค๋Ÿฝ๊ฒŒ ๊ตด์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋ฏธ๋‹ˆ ์‚ฌ๋ก€ 1, ๋‚˜๋งŒ ์“ฐ๋Š” ๊ฐœ์ธ ๊ทธ๋ฃน

๋‚˜ ํ˜ผ์ž ์“ฐ๋Š” ์‹คํ—˜์šฉ ๊ทธ๋ฃน์ด๋ผ๋ฉด ์ด ๊ตฌ์„ฑ์ด ๋ฌด๋‚œํ•˜๋‹ค.

  • privacy mode๋Š” ๊บผ ๋‘๊ฑฐ๋‚˜ admin ์Šน๊ฒฉ
  • TELEGRAM_ALLOWED_USERS๋Š” ๋‚ด ID๋งŒ
  • telegram.require_mention: true

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ทธ๋ฃน์— ๋ฉ”์‹œ์ง€๊ฐ€ ๋งŽ์•„๋„, ๋‚ด๊ฐ€ ๋ฉ˜์…˜ํ•˜๊ฑฐ๋‚˜ ๋ช…๋ น์„ ์“ธ ๋•Œ๋งŒ ๋ฐ˜์‘ํ•œ๋‹ค. ๋ด‡์ด ๋Œ€ํ™” ํ๋ฆ„์„ ์–ด์ง€๋Ÿฝํž ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ ๋‹ค.

๋ฏธ๋‹ˆ ์‚ฌ๋ก€ 2, ์ž‘์€ ํŒ€ ๊ทธ๋ฃน

ํŒ€์—์„œ ๊ฐ™์ด ์“ธ ์ƒ๊ฐ์ด๋ผ๋ฉด allowlist๋ฅผ 2~3๋ช…์œผ๋กœ ์ข๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ , ์ž์œ  ์‘๋‹ต๋ณด๋‹ค ๋ฉ˜์…˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜ํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ „์› ๊ฐœ๋ฐฉ์œผ๋กœ ๊ฐ€๋ฉด ๋ˆ„๊ฐ€ ํ˜ธ์ถœํ–ˆ๋Š”์ง€, ๋ˆ„๊ฐ€ ์Šน์ธ๊ถŒ์ž์ธ์ง€, ์–ด๋””๊นŒ์ง€ ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€๊ฐ€ ๊ธˆ๋ฐฉ ํ๋ ค์ง„๋‹ค.

8. ํ™ˆ ์ฑ„๋„๊ณผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ๋ฌถ์œผ๋ฉด ์ฒด๊ฐ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค

Hermes๋Š” /sethome์œผ๋กœ ํ˜„์žฌ ์ฑ„ํŒ…์„ home channel๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€์œผ๋กœ ํฌ๋ก  ๊ฒฐ๊ณผ์™€ ์ผ๋ถ€ ์ž๋™ ๊ฒฐ๊ณผ๋Š” ์ด ํ™ˆ ์ฑ„๋„๋กœ ๋Œ์•„๊ฐ„๋‹ค.

์ด๊ฒŒ ์™œ ์ค‘์š”ํ•˜๋ƒ๋ฉด, Telegram ์—ฐ๊ฒฐ์˜ ์ง„์งœ ๊ฐ€์น˜๋Š” โ€œ๋Œ€ํ™”โ€๋ณด๋‹ค ์•Œ๋ฆผ๊ณผ ๊ฒฐ๊ณผ ํšŒ์ˆ˜์— ์žˆ์„ ๋•Œ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ํ๋ฆ„์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

  • ๋ชจ๋ฐ”์ผ์—์„œ ์•„์ด๋””์–ด ํ•œ ์ค„ ์ „์†ก
  • ๋ฐ์Šคํฌํ†ฑ์—์„œ Hermes๊ฐ€ ์ด์–ด์„œ ์ •๋ฆฌ
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์™„๋ฃŒ ๋ฉ”์‹œ์ง€๋ฅผ Telegram์œผ๋กœ ์ˆ˜์‹ 
  • ๋‹ค์‹œ ๋ชจ๋ฐ”์ผ์—์„œ ํ›„์† ์งˆ๋ฌธ

๋ฉ”๋ชจ๋ฆฌ ๋ฃจํ”„๋‚˜ Obsidian ์—ฐ๋™์€ ๋‹ค์Œ ๋‹จ๊ณ„์ง€๋งŒ, ํ™ˆ ์ฑ„๋„์„ ๋จผ์ € ์žก์•„๋‘๋ฉด ๋‚˜์ค‘ ํ™•์žฅ์ด ํ›จ์”ฌ ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.

9. ํ•ญ์ƒ ์ผœ๋‘˜ ์„œ๋ฒ„๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด polling์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค

Telegram ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ ์—ฐ๊ฒฐ ๋ฐฉ์‹์€ polling์ด๋‹ค. ๋กœ์ปฌ ๋จธ์‹ ์ด๋‚˜ ํ•ญ์ƒ ์ผœ์ ธ ์žˆ๋Š” ์žฅ๋น„์—์„œ๋Š” ์ด ๋ฐฉ์‹์ด ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๋‹ค. ๋ฐ˜๋ฉด Fly.io๋‚˜ Railway ๊ฐ™์€ ์Šฌ๋ฆฝ ๊ธฐ๋ฐ˜ ํด๋ผ์šฐ๋“œ์—์„œ๋Š” webhook์ด ๋” ํšจ์œจ์ ์ด๋‹ค.

TELEGRAM_WEBHOOK_URL=https://my-app.example.com/telegram
TELEGRAM_WEBHOOK_SECRET=...

์ฒ˜์Œ์—๋Š” ๊ตณ์ด webhook๋ถ€ํ„ฐ ๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ฐœ์ธ์šฉ ๋ฐ์Šคํฌํ†ฑ, ๋…ธํŠธ๋ถ, ํ™ˆ์„œ๋ฒ„๋ผ๋ฉด polling์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋””๋ฒ„๊น…๋„ ๋‹จ์ˆœํ•˜๋‹ค. webhook์€ โ€œ๊ณ„์† ์ผœ๋‘˜ ์ˆ˜ ์—†๋Š” ํด๋ผ์šฐ๋“œ ๋ฐฐํฌโ€๊ฐ€ ํ•„์š”ํ•ด์งˆ ๋•Œ ๋„˜์–ด๊ฐ€๋ฉด ๋œ๋‹ค.

10. ํ…”๋ ˆ๊ทธ๋žจ ์—ฐ๊ฒฐ์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋ง‰ํžˆ๋Š” ์›์ธ

์‹ค์ „์—์„œ ๋งŽ์ด ๋ง‰ํžˆ๋Š” ์›์ธ์€ ๋Œ€์ฒด๋กœ ๋„ค ๊ฐ€์ง€๋‹ค.

1) ํ† ํฐ์€ ๋งž๋Š”๋ฐ ์‘๋‹ต์ด ์—†๋‹ค

๋Œ€๋ถ€๋ถ„ gateway๊ฐ€ ์•ˆ ๋–  ์žˆ๊ฑฐ๋‚˜, foreground ํ…Œ์ŠคํŠธ ํ›„ ์ฐฝ์„ ๋‹ซ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿด ๋• hermes gateway status๋ถ€ํ„ฐ ๋ณด๋Š” ํŽธ์ด ๋น ๋ฅด๋‹ค.

2) ๋ด‡์€ ๋ณด์ด๋Š”๋ฐ ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌด์‹œํ•œ๋‹ค

TELEGRAM_ALLOWED_USERS์— ๋„ฃ์€ ์ˆซ์ž๊ฐ€ ํ‹€๋ ธ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค. username์ด ์•„๋‹ˆ๋ผ numeric user ID์ธ์ง€ ๋‹ค์‹œ ๋ด์•ผ ํ•œ๋‹ค.

3) ๊ทธ๋ฃน์—์„œ๋Š” ๋ช…๋ น๋งŒ ๋˜๊ณ  ์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€๋Š” ์•ˆ ๋œ๋‹ค

privacy mode ์˜ํ–ฅ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๊ทธ๋ฃน ์‚ฌ์šฉ ๋ชฉ์ ์ด๋ผ๋ฉด BotFather์˜ Group Privacy ์„ค์ •๊ณผ, ๋ด‡ ์žฌ์ดˆ๋Œ€๋ฅผ ๊ฐ™์ด ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

4) ๋ง์ด ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์ž์ฃผ ๋ผ์–ด๋“ ๋‹ค

telegram.require_mention: true์™€ ignored_threads๋ฅผ ๋จผ์ € ๊ฒ€ํ† ํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค. ๊ทธ๋ฃน ์šด์˜์€ ๊ธฐ๋Šฅ๋ณด๋‹ค ๋ฐ˜์‘ ๋ฒ”์œ„ ์„ค๊ณ„๊ฐ€ ๋” ์ค‘์š”ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

11. ๋ณด์•ˆ ๊ธฐ์ค€์€ ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๊ผญ ์ง€ํ‚ค๋Š” ๊ฒŒ ์ข‹๋‹ค

Hermes ๋ณด์•ˆ ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋ฉด Telegram ์—ฐ๊ฒฐ ์‹œ ์ตœ์†Œ ๊ธฐ์ค€์€ ์ด ์ •๋„๋‹ค.

  • GATEWAY_ALLOW_ALL_USERS=true๋Š” ์›ฌ๋งŒํ•˜๋ฉด ์“ฐ์ง€ ์•Š๊ธฐ

  • ๊ฐœ์ธ์šฉ์ด๋ฉด TELEGRAM_ALLOWED_USERS๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

  • ์œ„ํ—˜ ๋ช…๋ น ์Šน์ธ ๋ชจ๋“œ๋Š” ๊ธฐ๋ณธ manual ์œ ์ง€ํ•˜๊ธฐ

  • ์ฒ˜์Œ๋ถ€ํ„ฐ YOLO ๋ชจ๋“œ๋กœ ์—ด์ง€ ์•Š๊ธฐ

  • ํ•ญ์ƒ ์ผœ๋‘˜ ํ™˜๊ฒฝ์ด๋ฉด local๋ณด๋‹ค Docker ๊ฐ™์€ ๊ฒฉ๋ฆฌ ๋ฐฑ์—”๋“œ๋„ ๊ฒ€ํ† ํ•˜๊ธฐ

  • Security Overview: https://hermes-agent.nousresearch.com/docs/user-guide/security

  • Configuration, Terminal Backend: https://hermes-agent.nousresearch.com/docs/user-guide/configuration

ํŠนํžˆ Hermes๋Š” terminal ๋„๊ตฌ๋ฅผ ํฌํ•จํ•œ ๊ฐ•ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ โ€œํŽธํ•˜๊ฒŒ ๋‹ค ์—ด๊ธฐโ€๋ณด๋‹ค, ๋‚ด๊ฐ€ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋งŒ ๋จผ์ € ์—ด๊ธฐ๊ฐ€ ๋งž๋‹ค.

์ถ”์ฒœ ์‹œ์ž‘ ์กฐํ•ฉ

๊ฐœ์ธ ์‚ฌ์šฉ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋ฌด๋‚œํ•œ ์‹œ์ž‘ ์กฐํ•ฉ์€ ์ด๋ ‡๋‹ค.

# ~/.hermes/config.yaml
terminal:
  backend: local
 
telegram:
  require_mention: true
 
approvals:
  mode: manual
# ~/.hermes/.env
TELEGRAM_BOT_TOKEN=...
TELEGRAM_ALLOWED_USERS=๋‚ด์ˆซ์žID

์ด ์กฐํ•ฉ์€ ๊ณผํ•˜๊ฒŒ ๋ณต์žกํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„, ๊ฐœ์ธ์šฉ Telegram assistant๋กœ ์จ ๋ณด๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜๋‹ค. ์ดํ›„ ์ต์ˆ™ํ•ด์ง€๋ฉด Docker backend, webhook, group topic skill binding ๊ฐ™์€ ๊ณ ๊ธ‰ ํ๋ฆ„์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ๋œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ํ–ˆ์œผ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋‘ ๊ฐˆ๋ž˜๋‹ค

์ด์ œ ๊ฐˆ๋ฆผ๊ธธ์€ ๋ถ„๋ช…ํ•˜๋‹ค.

1) ๋ฉ”๋ชจ๋ฆฌ์™€ ์ง€์‹ ์ชฝ์œผ๋กœ ํ™•์žฅ

Telegram์—์„œ ๋“ค์–ด์˜จ ์งˆ๋ฌธ๊ณผ ์•„์ด๋””์–ด๋ฅผ llm-wiki, Obsidian ๊ฐ™์€ ์ง€์‹ ๊ณ„์ธต์œผ๋กœ ๋ถ™์ด๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ์ž…๋ ฅ ๋ฃจํ”„์™€ ์ €์žฅ ์œ„์น˜ ์„ค๊ณ„๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค.

2) ๋ชจ๋ฐ”์ผ ์ž…๋ ฅ ํšจ์œจ ์ชฝ์œผ๋กœ ํ™•์žฅ

Gboard ์Œ์„ฑ ์ž…๋ ฅ, Telegram ์Œ์„ฑ ๋ฉ”์‹œ์ง€, ์งง์€ ํ”„๋กฌํ”„ํŠธ ์Šต๊ด€์„ ๋ถ™์ด๊ณ  ์‹ถ๋‹ค๋ฉด, ์ž…๋ ฅ ๋งˆ์ฐฐ์„ ์ค„์ด๋Š” ๋ฃจํ‹ด ์„ค๊ณ„๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค.

Hermes๋ฅผ ์˜ค๋ž˜ ์“ฐ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฑด ๊ฒฐ๊ตญ ์„ค์น˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ž์ฃผ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„๊ณผ ๊ธฐ๋ก์ด ๋‚จ๋Š” ๊ตฌ์กฐ๋‹ค. Telegram ์—ฐ๊ฒฐ์€ ๊ทธ ์ฒซ ๋ฒˆ์งธ ๋ฌธํ„ฑ์ด๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ