ProductiveTechTalk - AI, Development Tools, and Productivity Blog
Hermes AI linked securely to G2 smart glasses via VPS

Kính Even Realities G2 + Hermes Agent: Tự Lưu Trữ AI Lên Mặt | 2026

Kim Jongwook · 2026-07-31

TL;DR

Architecture diagram linking G2 glasses, phone, and Hermes VPS
  • Hermes đã có plugin G2 sẵn, không cần tự viết bridge từ OpenClaw.
  • Token kính G2 tương đương root, phải tách quyền bằng platform_toolsets.
  • WebSocket, Traefik service= và Even Hub packaging là ba điểm dễ gãy nhất.
  • Korean ASR thực tế bị giới hạn bởi CPU — 1 vCPU chỉ chịu được whisper-tiny.
  • Nhật ký api_calls là cách đơn giản nhất để kiểm chứng quyền bị chặn có thực thi.
Table of Contents

Giới thiệu

Hermes platform tool isolation limiting G2 smart glasses access

Tự lưu trữ AI agent là một chuyện. Gắn nó lên kính thực tế hỗn hợp như Even Realities G2 để dùng mọi lúc mọi nơi lại là chuyện khác hẳn.

Related: Claude Code Auto Mode: Chạy Tác Vụ Dài Không Bị Hỏi

Related: Claude Computer Use là gì? AI điều khiển trọn vẹn máy

Related: Palantir AI Agent & Ontology: Chuẩn mới cho doanh nghiệp

Related: AI agent 2026 đã thay đổi luật chơi: đừng chọn sai công cụ

Yêu cầu ở đây không chỉ là “nó chạy được” — mà là chạy trên hạ tầng riêng, chia sẻ ngữ cảnh với agent đang vận hành, không mở cổng thô trên máy cá nhân, và quan trọng nhất: không vô tình biến chiếc kính thành root shell lưu động.

Bài này xuất phát từ một video của “Tech with Spencer” dùng OpenClaw trên Windows, OcuClaw skill, Tailscale và Soniox để đẩy AI agent vào G2. Tôi đi hướng khác: giữ nguyên Hermes agent đang chạy trên VPS, nối thêm G2 vào cùng hệ sinh thái Slack/Telegram hiện có. Trong quá trình đó, buộc phải giải quyết luôn bài toán tách quyền theo nền tảng. Khi triển khai thật, tám cái bẫy rất cụ thể xuất hiện mà video gốc không đề cập.

Phần thú vị không nằm ở “làm thế nào để kính trả lời được câu hỏi” mà ở “sau khi nó trả lời được rồi thì hạ tầng, bảo mật và UX trông như thế nào”. Bài này đi theo hướng đó: Hermes thay OpenClaw, VPS thay Windows, on-device ASR thay Soniox, và một loạt chỉnh sửa nhỏ để token kính không trở thành thảm họa bảo mật khi endpoint được mở ra Internet.


Vì sao chọn Hermes thay vì OpenClaw?

Secure VPS and reverse proxy setup for Hermes G2 bridge

Hermes là nền tảng AI agent tự lưu trữ cho phép định nghĩa nhiều “platform” như CLI, Slack, Telegram và gán mỗi platform một bộ toolset riêng. Trong ngữ cảnh này, nó phù hợp vì đã là agent vận hành chính — có bộ nhớ lâu dài, session cũ trên Slack/Telegram và toàn bộ ngữ cảnh công việc đang chạy.

Điểm xuất phát là video 25 phút dùng OpenClaw trên Windows để đưa AI vào kính G2. Nhưng Hermes đã nằm trong Docker trên VPS, nói chuyện với Slack và Telegram, đã được tinh chỉnh toolset lẫn memory. Dựng thêm một agent OpenClaw chỉ để phục vụ kính G2 vô nghĩa: mọi câu hỏi từ kính đáng lẽ phải có thể tiếp tục trên Slack, và ngược lại. Nhân đôi agent chỉ tạo thêm chỗ mất đồng bộ.

OpenClaw + OcuClaw + Tailscale + Soniox là một stack song song với Hermes. Thay vì mang thêm stack đó vào, tôi tìm cách plugin kính G2 vào Hermes trực tiếp. Điều này cho phép dùng chung model, memory, session, tool registry, và cả hạ tầng triển khai (Traefik, wildcard DNS, TLS) đang có sẵn.

Với hệ thống agent đã vận hành vài tháng, “đưa thiết bị mới vào chung” luôn rẻ hơn “dựng agent mới cho thiết bị”.


Hermes plugin cho Even Realities G2 là gì?

Korean speech recognition tradeoffs on G2 with Whisper models

Hermes plugin cho Even Realities G2 là một tập hợp dự án mã nguồn mở giúp kính G2 nói chuyện trực tiếp với Hermes agent qua WebSocket và WebView. Trước khi nghĩ chuyện “port từ OpenClaw” hay tự viết bridge, bước đúng là kiểm tra xem hệ sinh thái đã có sẵn chưa.

Khi đổi câu hỏi từ “Mang OcuClaw sang Hermes thế nào?” sang “Có plugin G2 riêng cho Hermes không?”, câu trả lời xuất hiện gần như ngay lập tức. Ba dự án sau đã giải quyết trọn bài toán:

  • huntsyea/hermes-evenhub-bridge: plugin nền tảng Hermes, đăng ký even_g2 như một gateway platform.
  • huntsyea/hermes-even-hub-app: WebView client phía G2, nói chuyện với bridge.
  • wingk1314/even-g2-hermes: triển khai tích hợp 3 chế độ (AI-proxy, Terminal Mode, Even Hub plugin).

Tất cả đã được tổng hợp trong pangoleen/awesome-even-realities-g2. Điều này có hai ý nghĩa thực tế. Một là có “single source of truth” về hệ sinh thái G2, nơi cả cầu nối OpenClaw lẫn Hermes đều có mặt. Hai là, trong vùng công nghệ còn đang phình nhanh như G2, chi phí tìm kiếm gần như luôn thấp hơn chi phí tái phát minh.

Plugin Hermes còn có thêm một lợi thế lớn: dùng ASR on-device của kính nên không cần API key STT như Soniox. Toàn bộ quy trình đăng ký tài khoản, tạo API key, cấu hình endpoint biến mất khỏi lộ trình triển khai ngay lập tức.


Tình trạng bảo trì của plugin Hermes–G2 ra sao?

Tình trạng bảo trì của plugin Hermes–G2 là “ổn định nhưng đóng băng tính năng” — vẫn dùng được, nhưng khi hỏng thì bạn là người sửa cuối cùng. Cách đánh giá tốt nhất không phải là nhìn số sao GitHub mà là đọc lịch sử commit.

Log commit cho thấy: lần chỉnh sửa chức năng cuối cùng dừng ở đầu tháng 6/2026, phần sau toàn là bump dependency tự động bằng bot. Trong hơn chục pull request, chỉ có một PR chức năng và nó vẫn chưa được merge. Kết luận thực tế: tác giả không còn actively phát triển thêm, và việc update dependency cũng chỉ để tránh lỗi bảo mật hoặc cảnh báo CI.

Với vận hành thực tế, điều này có hai hệ quả. Phải coi snapshot hiện tại của code như “hình đông cứng” tại thời điểm đó: nếu môi trường xung quanh (Hermes core, Even SDK, OS) thay đổi và làm hỏng plugin, chính bạn phải vá. Cũng không nên kỳ vọng hỗ trợ chủ động từ tác giả qua issue hay PR. Trong quá trình triển khai, tôi phải chạm tay vào ba chỗ trong code để vá nhanh và ghi chú lại script re-patch cho lần cập nhật sau.

Điểm tích cực là giấy phép MIT cho phép fork, chỉnh sửa, thậm chí duy trì nhánh riêng cho production. Với những đội đã quen vận hành dịch vụ tự host, “tự chịu trách nhiệm cho fork của mình” không phải chuyện lạ.


Cần chuẩn bị hạ tầng và thiết bị gì?

Hạ tầng và thiết bị trong triển khai này là cấu hình tối giản đủ dùng cho self-hosting, không phụ thuộc Mac hay Windows luôn bật. Cấu hình thực tế như sau:

  • Thiết bị đeo: Even Realities G2.
  • Điện thoại: iPhone, cài ứng dụng Even chính thức.
  • Máy chủ: VPS Ubuntu, chạy Docker, 1 vCPU và 3 GB RAM.
  • Agent: Hermes Agent trong container Docker — instance đang vận hành thật.
  • Hạ tầng mạng: wildcard DNS, reverse proxy Traefik, chứng chỉ TLS từ Let’s Encrypt.
  • Chi phí bổ sung: không có, vì dùng ASR on-device và tái sử dụng VPS có sẵn.

So với cấu hình dùng Soniox STT trong video gốc, phần này loại bỏ hoàn toàn chi phí cloud STT. Bù lại, CPU trên VPS phải chịu phần decode whisper nếu bật ASR server-side. Như tôi sẽ nói kỹ ở phần ASR tiếng Hàn, sự đánh đổi này trở thành nút cổ chai khi muốn đẩy độ chính xác cao trên máy chủ cấu hình thấp.

Sự khác biệt lớn nhất không phải ở thiết bị mà ở triết lý triển khai: thay vì một PC luôn bật trong LAN, tất cả được gom vào một VPS có endpoint TLS công khai, có thể truy cập từ 4G/5G, Wi-Fi quán cà phê hoặc bất kỳ đâu miễn là điện thoại có Internet.


Cài Hermes plugin G2 trên Mac để thử trước là gì?

Cài Hermes plugin G2 trên Mac để thử trước là cách tách riêng bài toán plugin ra khỏi bài toán network và deploy. Ý tưởng đơn giản: trước khi đổ lỗi cho Traefik, DNS hay firewall, hãy đảm bảo Hermes + plugin evenhub-bridge hoạt động tốt trong LAN nội bộ đã.

Quy trình tối giản trên Mac chỉ cần ba lệnh:

hermes plugins install huntsyea/hermes-evenhub-bridge
hermes even-g2 setup
hermes pairing approve even_g2 <mã-pairing>

Sau bước này, ứng dụng Even trên iPhone mở developer QR, quét để load WebView client, nhập URL bridge và token, và câu nói từ kính được đẩy đến Hermes agent đang chạy trên Mac. Chuỗi dữ liệu “hoạt động” trông như sau:

G2 → ASR on-device → ws://192.168.1.100:8766 → Hermes trên Mac → LLM

Khi thử đến bước này mà vẫn chưa chạy được thì gần như chắc chắn vấn đề nằm ở plugin hoặc cấu hình Hermes, không phải hạ tầng mạng công khai. Còn nếu ở đây chạy trơn tru, mọi vấn đề tiếp theo đều là câu chuyện transport — TLS, reverse proxy, WebSocket, CORS — và packaging app cho G2.


Làm thế nào để đưa Hermes–G2 lên VPS với Traefik?

Đưa Hermes–G2 lên VPS với Traefik là bước biến một bridge nội bộ thành dịch vụ WebSocket an toàn, có thể truy cập từ bất cứ đâu qua HTTPS. Với hạ tầng đã dùng Traefik làm reverse proxy, việc này xoay quanh cấu hình nhãn (label) đúng cho container.

Cấu hình điển hình:

- traefik.http.routers.hermes-g2.rule=Host(`g2.example-vps.your-host.cloud`)

  • traefik.http.routers.hermes-g2.entrypoints=websecure
  • traefik.http.routers.hermes-g2.tls.certresolver=letsencrypt
  • traefik.http.routers.hermes-g2.service=hermes-g2
  • traefik.http.routers.hermes-g2.middlewares=g2-ratelimit
  • traefik.http.services.hermes-g2.loadbalancer.server.port=8765
  • traefik.http.middlewares.g2-ratelimit.ratelimit.average=30
  • traefik.http.middlewares.g2-ratelimit.ratelimit.burst=60

Nhãn service= là điểm rất dễ gây lỗi. Nếu bỏ qua, Traefik sẽ cố tự nối router với service dựa trên heuristic — nhưng khi container có nhiều service, heuristic trở nên mơ hồ và những router cũ bỗng “rơi vào” service mới, dẫn đến lỗi 404 bất ngờ. Tôi từng làm chết dashboard chỉ vì quên thêm service= vào router cũ khi tạo router mới cho G2.

Để kiểm tra WebSocket thực sự xuyên qua Traefik/TLS đúng cách:

curl -s -i --http1.1 -H "Connection: Upgrade" -H "Upgrade: websocket" \
  -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \
  https://g2.example-vps.your-host.cloud

Phản hồi HTTP/1.1 101 Switching Protocols nghĩa là mọi thứ ổn. Nếu lỡ bỏ --http1.1, curl sẽ thử HTTP/2 — và theo chuẩn HTTP/2, header Connection: Upgrade không hợp lệ, bạn sẽ thấy mã 426. Điều này không có nghĩa là WebView trên G2 thất bại, vì WebView vẫn dùng HTTP/1.1 cho kết nối WebSocket.


Token kính G2 nguy hiểm đến mức nào?

Token kính G2 là credential có mức rủi ro tương đương quyền root đối với Hermes agent nếu không tách quyền. Theo tài liệu bảo mật của plugin, bất kỳ ai có token và ghép cặp thành công đều có thể điều khiển Hermes agent với mọi tool mà profile được cấp.

Trong cấu hình thực tế, agent có quyền chạy shell trên VPS, ghi file, thao tác code và điều khiển desktop. Nói thẳng: nếu để nguyên mặc định, một token G2 bị lộ tương đương với việc cho người khác SSH root vào server. Mở endpoint bridge ra Internet mà không suy nghĩ về quyền là một hố sâu bảo mật.

Với những agent có tool kiểu terminal, file, computer_use, mọi token nền tảng mới phải được coi là credential quản trị — không phải chỉ là “API key tiện lợi”.

Vì vậy, mục tiêu quan trọng nhất khi chuyển từ Mac LAN sang VPS công khai là: giữ nguyên Hermes profile vận hành, nhưng chặn quyền nguy hiểm riêng cho platform even_g2. Slack/Telegram vẫn giữ full toolset, còn G2 chỉ được một tập con.


Vì sao Hermes CLI từ chối even_g2 nhưng runtime vẫn chạy?

Hermes CLI từ chối even_g2 vì danh sách “platform hợp lệ” của CLI được hardcode, trong khi runtime được thiết kế để chấp nhận platform mở rộng từ plugin. Đây là chi tiết dễ gây hiểu nhầm nếu chỉ nhìn thông báo lỗi CLI.

Khi gọi hermes tools ... với platform even_g2, CLI báo:

✗ Unknown platform 'even_g2'. Valid: cli, telegram, discord, slack, whatsapp, ...

Nếu dừng ở đây, bạn sẽ kết luận rằng platform plugin không được hỗ trợ và chuyển sang dựng một profile Hermes riêng ít quyền hơn. Nhưng khi mở source, đoạn xử lý platform trong runtime lại như sau:

plat_info = PLATFORMS.get(platform)
if plat_info:
    default_ts = plat_info["default_toolset"]
else:
    default_ts = f"hermes-{platform}"  # platform plugin

Nghĩa là: nếu platform không nằm trong registry chuẩn, runtime coi nó là platform plugin, đặt tên toolset mặc định theo pattern hermes-<platform> và chạy bình thường. Khi tôi thêm vào config.yaml:

platform_toolsets:
  even_g2:
    - web
    - memory
    - session_search
    - clarify

Hermes load đúng cấu hình này cho platform even_g2 dù CLI vẫn kêu “unknown”. Đây là điểm mấu chốt cho phép dùng chung cùng một profile Hermes, nhưng:

  • G2 chỉ có bốn tool: web, memory, session_search, clarify.
  • Slack/Telegram vẫn giữ nguyên ~17 tool, gồm cả terminal, file, code_execution, computer_use.

Quan trọng hơn, mặc định hermes-even_g2 không tồn tại trong registry — nên nếu không khai báo, quyền của G2 ở trạng thái gần như “mọi thứ hoặc không gì cả”. Thêm platform_toolsets không chỉ là “thắt” mà còn là “định nghĩa rõ” quyền trước khi nó trở thành vấn đề.


Làm sao kiểm chứng tách quyền bằng api_calls?

Kiểm chứng tách quyền bằng api_calls là cách thực nghiệm đơn giản để xem platform kính G2 có thực sự bị chặn terminal hay không. Trong Hermes, mỗi lượt gọi LLM được ghi log với số lượng api_calls, cho phép suy ra việc tool có được invoke hay không.

Dựa trên quan sát nhật ký:

Câu hỏi gửi từ G2 api_calls Diễn giải
“Báo dung lượng ổ đĩa hiện tại” 1 Không có vòng gọi tool → terminal bị chặn
“Tên mã dự án của tôi là gì?” 2 Có vòng gọi memory → truy vấn nhớ hoạt động
“Thời tiết hôm nay thế nào?” 3 Có vòng gọi web → truy vấn web hoạt động

Khi agent chạy một tool, quy trình tối thiểu là một lượt model để quyết định gọi tool và một lượt sau khi có kết quả để tạo câu trả lời. Vì vậy api_calls >= 2 là dấu hiệu tool thực sự được dùng. Nếu chỉ có 1, LLM trả lời trực tiếp dựa trên ngữ cảnh sẵn có.

Kết quả thử nghiệm thêm: khi hỏi G2 về dung lượng ổ đĩa, agent trả lời kiểu “Nếu chạy lệnh X trên server, bạn sẽ biết được dung lượng” — thay vì chạy lệnh thật. Cùng câu hỏi đó trên Slack lại thực sự chạy df trên VPS. Điều này chứng minh quyền đang được tách theo platform, không phải chặn tất cả một cách mù quáng.


Cách cài đặt ứng dụng G2 để dùng được ngoài nhà?

Cài đặt ứng dụng G2 đúng cách là yếu tố quyết định việc bạn có dùng được kính ngoài nhà hay không — không chỉ là chuyện “QR dev chạy được là xong”. Developer QR chủ yếu mở URL của ứng dụng WebView, không phải kết nối trực tiếp đến bridge.

Nếu QR dev trỏ vào http://192.168.1.100:5173 (dev server trên Mac), việc đã chuyển bridge lên VPS không giúp ích gì khi ở ngoài nhà. Ở chế độ 4G, điện thoại không thể truy cập IP LAN 192.168.x.x, nên WebView không load nổi UI — khiến bạn có cảm giác “bridge không nhận được gì” trong khi thực tế là app không khởi động.

Khi tôi thử chuyển mạng từ Wi-Fi sang 4G, server không ghi nhận bất kỳ truy vấn nào. Tín hiệu rõ ràng: nếu log phía server hoàn toàn im lặng, vấn đề nhiều khả năng nằm ở cách app được serve, không phải kết nối WebSocket.

Có hai hướng xử lý:

  • Serve app bundle từ máy chủ: build dist/, đưa vào container nginx trên VPS, để QR trỏ thẳng vào URL public. Mac không còn là dependency, nhưng vẫn phải quét QR mỗi lần mở.
  • Đóng gói .ehpk và dùng Even Hub Beta Testing: đóng app thành gói .ehpk, upload qua web console, thêm chính mình vào nhóm testing. Ứng dụng xuất hiện lâu dài trong Developer Hub trên điện thoại với nút Open, không cần QR cho mỗi phiên.

Hiện tại CLI Even Hub chỉ hỗ trợ init, login, qr, self-check, pack — không có lệnh upload. Flow thực tế: build bằng CLI, upload qua web console, quản lý quyền truy cập bằng Test Group, giữ package ở trạng thái Private để không xuất hiện trong store công khai.


Chất lượng nhận dạng tiếng Hàn trên G2 sử dụng Hermes ra sao?

Chất lượng nhận dạng tiếng Hàn trên G2 sử dụng Hermes là mức “chấp nhận được ở cấu hình thấp nếu chấp nhận whisper-tiny”, với hạn chế vật lý là số lõi CPU trên VPS. On-device ASR của G2 cho ra transcript sai lệch như “디스크 용량” → “디스쿨용량”, “코드명” → “코드념”, khiến downstream LLM phải tự sửa lại.

Tôi lần lượt loại bỏ các phương án thay thế:

  • Even SDK transcription API: bộ gõ SDK có hơn nghìn dòng type definition nhưng không có field transcri/speech/asr. SDK chỉ trả PCM thô, không có tầng dịch giọng nói.
  • WebView speech recognition (webkitSpeechRecognition): API tồn tại nhưng khi thực thi trong WKWebView, kết quả luôn not-allowed dù app đã được bật quyền Speech Recognition trong iOS Settings. WKWebView không cho web app dùng quyền giọng nói mà native app được cấp.
  • parakeet đa ngôn ngữ: backend hiện tại chỉ build cho macOS, không thể deploy trên VPS Linux.

Đo đạc thực tế với đoạn tiếng Hàn dài 1,9 giây:

Mô hình Thời gian xử lý Ước tính với phát âm 4 giây
tiny 1,84 giây khoảng 4 giây
base 3,03 giây khoảng 6 giây
small 6,22 giây khoảng 13 giây

Với UX kính, mô hình small không thể chấp nhận: cộng thêm thời gian suy luận LLM, tổng latency dễ vượt 20 giây. Nhưng điểm thú vị hơn nằm ở cách mô hình “thất bại” khi có nhiễu (SNR ~5 dB):

  • tiny sụp hoàn toàn sang câu vô nghĩa tiếng Việt.
  • base vẫn giữ cấu trúc tiếng Hàn nhưng méo nặng.
  • small tạo ra câu sai chính tả nhẹ nhưng gần với mục tiêu.

Vì LLM có thể sửa được tiếng Hàn bị méo ở mức chính tả, nhưng không thể cứu được trường hợp “ngôn ngữ bị đổi”, tiny trở thành lựa chọn duy nhất khả thi trên 1 vCPU. Cấu hình cuối cùng tôi chọn:

  • Đăng ký sẵn whisper-small trong registry để “sẵn sàng” cho khi upgrade máy.
  • Thực thi thực tế cố định về tiny thông qua environment.
  • Bật compute_type="int8" để giảm ~30% thời gian mà không đổi kết quả.

Với ASR đa ngôn ngữ trên server, “số lõi CPU” là giới hạn cứng quan trọng hơn cả version model.


Tám cái bẫy kỹ thuật dễ mắc phải khi dùng Hermes với Even G2

Tám cái bẫy kỹ thuật dễ mắc phải khi dùng Hermes với Even G2 là tổng hợp các lỗi tôi đã thực sự gặp, liệt kê theo xác suất đụng phải.

1. Nhầm HERMES_HOME với HERMES_PROFILE

Hermes chọn profile bằng cách trỏ HERMES_HOME vào thư mục profiles/<tên-profile>. Nếu chỉ set một biến “profile name” tưởng tượng, Hermes dùng config root và mọi chỉnh sửa platform_toolsets không có tác dụng. Tôi bị lỗi này ba lần trong một ngày.

2. Quên rằng pairing theo server, không theo package

Việc kính được duyệt pairing trên Mac không kéo theo trạng thái đó sang VPS, dù package_id app giống nhau. Mỗi máy chủ Hermes là một thế giới pairing độc lập.

3. Sai token nhưng không có log phía server

Khi token sai, bridge đóng WebSocket với code 1008 (policy violation) mà không ghi bất kỳ log nào. Sự im lặng hoàn toàn ở server log là bình thường trong trường hợp này. Cách duy nhất debug là dùng client mô phỏng hoặc bật log chi tiết phía app.

4. Tin CLI “unknown platform” là phán quyết cuối cùng

CLI không biết even_g2 nhưng runtime vẫn đọc được từ config.yaml. Nếu chỉ dựa vào thông báo CLI, bạn bỏ lỡ cơ chế tách toolset theo platform — cơ chế then chốt để chặn quyền G2.

5. Thêm service mới trong container làm vỡ router Traefik cũ

Khi container có nhiều service nhưng router không chỉ rõ service=, Traefik báo:

ERR Router xxx cannot be linked automatically with multiple Services

Các router cũ trả về 404 dù service vẫn sống. Cần thêm service= vào mọi router, không chỉ router mới.

6. Lầm tưởng .ehpk là zip

File .ehpk có magic bytes riêng (EHPK), không mở được như zip chuẩn và hiện không có lệnh “unpack” chính thức. Muốn kiểm tra nội dung, cách khả thi duy nhất là cài lên kính hoặc chạy self-check bằng CLI.

7. Dùng chung Telegram bot token trên hai instance

Khi Mac và VPS cùng cấu hình TELEGRAM_BOT_TOKEN cho một bot, hai luồng getUpdates sẽ xung đột:

Conflict: terminated by other getUpdates request

Sau vài lần retry, một bên dừng hẳn. Giải pháp là tắt hoàn toàn bot trên instance không còn dùng, hoặc mỗi instance có bot riêng.

8. Tin vào trường Host/Port trong dashboard Hermes

Điều tra issue #24 của plugin cho thấy adapter chỉ đọc cấu hình kết nối từ environment, trong khi UI dashboard ghi vào config.yaml. Tác giả thẳng thắn thừa nhận đây là UX tệ vì “khi người dùng sửa thì trông như đã áp dụng nhưng thực tế vô dụng”. Với plugin này, chỉ nên tin vào đường environment.


Kiến trúc hiện tại và những việc còn dang dở

Kiến trúc Hermes–G2 hiện tại dùng chung Hermes agent, chia sẻ toàn bộ memory và session với Slack/Telegram, nhưng có lớp tách quyền riêng cho G2. Luồng kết nối:

G2 ── BT ── iPhone ── HTTPS → G2 WebView App (VPS)
                         └─ wss → Hermes–EvenHub Bridge
                                     ↓
                         Hermes Agent (Docker, VPS)
                         ├─ even_g2
                         ├─ slack
                         └─ telegram

Bốn mục tiêu ban đầu đều đạt:

  • Dùng được ngoài nhà qua 4G/5G.
  • Không phụ thuộc Mac luôn bật.
  • Chia sẻ ngữ cảnh với agent vận hành.
  • Không để lộ cổng thô trên Mac — mọi thứ đi qua HTTPS/TLS.

Việc tách toolset platform còn mang lại một lợi ích phụ quan trọng: nếu token G2 bị lộ, thiệt hại bị giới hạn vào tool an toàn (web, memory, session_search, clarify). Nhưng vẫn còn vài điểm cần ghi nhận thành thật:

Cơ chế whitelist mạng của app chưa được stress test. Cấu hình app.json có whitelist host, nhưng trong chế độ dev URL tôi chưa kiểm chứng được whitelist có thực sự chặn request ra ngoài. Một bài test đơn giản với URL không nằm trong whitelist sẽ trả lời câu hỏi này trong vòng nửa phút.

Ba patch tay trong plugin chưa được tự động hóa. Mọi lần update plugin đều có nguy cơ đè lên patch. Cần script re-patch hoặc fork riêng để tránh “tự phá” production.

Giới hạn ASR tiếng Hàn vẫn bị trói vào CPU. Với 1 vCPU, whisper-tiny là lựa chọn duy nhất có latency chấp nhận được. Muốn cải thiện chất lượng, cần ít nhất 4 vCPU (tối thiểu) hoặc 8 vCPU (mượt) và 8 GB RAM.

Nếu video gốc trả lời câu hỏi “làm sao để nó chạy được?”, phần triển khai này bổ sung câu hỏi tiếp theo: sau khi chạy được rồi, hệ thống đó có thực sự an toàn và vận hành được lâu dài không?


Câu hỏi thường gặp

Q: Tại sao nên dùng Hermes thay vì OpenClaw cho Even Realities G2?

A: Nếu đã có Hermes agent vận hành sẵn trên Slack, Telegram hay VPS, việc thêm G2 như một platform mới giúp tận dụng chung memory, session và toolset hiện có. Dựng thêm một stack OpenClaw riêng cho G2 đồng nghĩa với việc duy trì hai agent song song, dữ liệu phân mảnh và khó kiểm soát quyền truy cập giữa các kênh.

Q: Làm thế nào để giới hạn quyền nguy hiểm (shell, file) chỉ riêng cho kính G2?

A: Hermes hỗ trợ cấu hình platform_toolsets trong config.yaml, cho phép gán bộ tool khác nhau cho từng platform. Khai báo một mục riêng cho even_g2 chỉ chứa các tool an toàn như web, memory, session_search, clarify — trong khi Slack/Telegram vẫn giữ full tool. Cùng một profile, tách được quyền theo kênh.

Q: Làm sao biết tách quyền đã hoạt động đúng trên G2?

A: Quan sát trường api_calls trong nhật ký Hermes. Khi một tool được gọi, sẽ có ít nhất 2 lượt model call. Nếu câu hỏi gửi từ G2 chỉ tạo 1 api_call trong log nhưng câu hỏi tương tự trên Slack tạo 2–3 api_calls, tool nguy hiểm đã bị chặn riêng cho platform G2.

Q: Vì sao ứng dụng G2 chạy được trong Wi-Fi nhưng không chạy trên 4G?

A: Developer QR thường trỏ vào dev server nội bộ như 192.168.1.x:5173 trên Mac. Khi chuyển sang 4G, điện thoại không thể truy cập IP LAN nên WebView không khởi động được UI. Cần serve app bundle từ URL public trên VPS, hoặc cài app dạng .ehpk qua Even Hub Beta Testing để app tồn tại lâu dài trên kính mà không phụ thuộc QR.

Q: 1 vCPU VPS có dùng được ASR tiếng Hàn chất lượng cao với Hermes không?

A: Không thực tế. Với câu nói 1,9 giây, whisper-small mất 6,22 giây xử lý — cộng thêm thời gian suy luận LLM, tổng latency dễ vượt 20 giây, không phù hợp với UX kính. Trên 1 vCPU, lựa chọn thực tế duy nhất là whisper-tiny. Muốn nâng chất lượng cần ít nhất 4 vCPU.

Đây là bài đầu tiên trong loạt hai bài. Quá trình thực tế — ba lần đảo ngược kết luận trong một ngày — được kể trong Gắn AI Agent Tự Host Lên Kính Thông Minh | Bài Học Thực Tế.

Bài viết này có hữu ích không?

Nhận thêm những bài viết công nghệ miễn phí.

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.








Khám phá thêm từ ProductiveTechTalk

Đăng ký để nhận các bài đăng mới nhất được gửi đến email của bạn.

Một phản hồi cho “Hermes Agent với kính Even G2: tự lưu trữ AI an toàn”

  1. Ảnh đại diện ProductiveTechTalk

    The point about the G2 token tương đương root và bắt buộc phải tách quyền bằng `platform_toolsets` really hits home. Nhiều người chỉ háo hức “đưa AI lên kính” mà quên mất là mình đang đeo một cái root shell trên mặt đi vòng vòng ngoài đường. Cách bạn xử lý bằng việc chia nhỏ toolset theo platform và dùng `api_calls` log để kiểm chứng quyền bị chặn có thực thi là cực kỳ thực tế, dễ nhân bản cho các thiết bị khác ngoài G2 nữa.

    Source: https://youtu.be/wXT1Ffi9hys

Gửi phản hồi

Khám phá thêm từ ProductiveTechTalk

Đăng ký ngay để tiếp tục đọc và truy cập kho lưu trữ đầy đủ.

Tiếp tục đọc