Một cloud agent chạy 24/7, trò chuyện qua messenger, tích luỹ memory và biến kinh nghiệm thành skill. Toàn bộ hướng dẫn: kiến trúc, cài đặt, và vòng lặp tự cải thiện.
Đang âm thầm hình thành một thể loại công cụ AI mới: những agent không sống trong một cửa sổ chat mà bạn mở ra rồi đóng lại, mà chạy liên tục trên cloud và nói chuyện với bạn qua một ứng dụng nhắn tin — giống như một đồng nghiệp không bao giờ đăng xuất.
Hermes là một trong những cách hiện thực hoá ý tưởng này thú vị nhất, và điều khiến nó khác biệt so với các agent tương đương như OpenClaw chính là một self-improving loop (vòng lặp tự cải thiện) được tích hợp sẵn — một hệ thống quan sát các cuộc trò chuyện của bạn, rút ra những pattern hữu ích từ đó, và biến những pattern ấy thành các nâng cấp vĩnh viễn cho chính bộ nhớ (memory) và bộ kỹ năng (skill set) của nó.
Bài viết này đi qua cách Hermes được lắp ráp, cách cấu hình nó, và cách vòng lặp tự cải thiện ấy thực sự vận hành ở bên dưới.
Hermes là một AI agent thường trú trên cloud (cloud-resident), về mặt cấu trúc tương tự OpenClaw: nó chạy 24/7 và bạn tương tác với nó qua một ứng dụng nhắn tin thay vì qua một terminal hay một tab trình duyệt. Những khác biệt đáng kể nằm ở ba điểm.
Hermes đi kèm một thư viện skill tích hợp sẵn lớn hơn nhiều ngay từ đầu (out of the box), nên bạn tốn ít thời gian hơn cho việc tự kết nối các integration.
Quy trình setup gọn gàng hơn đáng kể — một guided TUI (giao diện dòng lệnh có hướng dẫn) lo gần như mọi thứ.
Quan trọng nhất: Hermes được thiết kế xoay quanh continuous self-improvement — không chỉ thực thi tác vụ, mà còn tích luỹ procedural knowledge về cách thực thi chúng tốt hơn theo thời gian.
Để Hermes chạy được chỉ cần một lệnh duy nhất.
Trên Windows, bạn chạy lệnh sau trong PowerShell:
Trên Linux, macOS, hoặc WSL, lệnh tương đương là:
Sau khi cài xong, hãy khởi động lại terminal rồi chạy hermes setup để mở luồng cấu hình có hướng dẫn (guided configuration flow), lần lượt chọn model, terminal backend, messaging gateway và thiết lập tool.

git (không phải script một dòng) để tiện hermes update theo nhánh — đang ở v0.16.0.Quyết định thực sự đầu tiên trong setup là chọn nhà cung cấp LLM nào sẽ vận hành "bộ não" của agent. Việc xác thực diễn ra qua OAuth thay vì raw API key, và điều này mở rộng tới khả năng đăng nhập bằng một phiên Claude Code hoặc Codex CLI sẵn có, thay vì phải tạo một API key riêng.


Điều thực sự được thiết kế tốt ở đây là cách Hermes tách model dùng cho cuộc trò chuyện chính khỏi các model dùng cho tác vụ nền (background) và phụ trợ (auxiliary). Theo mặc định, cùng một model lo cả hai, nhưng mỗi tác vụ phụ trợ có thể được trỏ tới một provider khác nhau một cách độc lập. Các tác vụ hỗ trợ kiểu override này là:
vision — phân tích và mô tả hình ảnhweb_extract — tóm tắt các trang web dàicompression — nén context của cuộc trò chuyện sắp vượt giới hạn (overflowing)title_generation — sinh tiêu đề cho sessioncurator — agent nền chịu trách nhiệm cho self-improving loopkanban_decomposer — chia nhỏ các tác vụ lớn thành subtask trong chế độ Kanbangoal_judge — agent kiểm tra xem một /goal đã thực sự đạt được hay chưaViệc này được cấu hình trực tiếp trong config.yaml, ví dụ:
Kiểu routing tường minh này giải quyết một vấn đề thực sự khi chọn OpenRouter làm lựa chọn mặc định: cùng một model trên danh nghĩa thường được triển khai bởi nhiều provider khác nhau, thường ở các mức quantization khác nhau, và OpenRouter sẽ âm thầm phân phối mỗi request mới cho một trong khoảng hai mươi provider đó.
Hệ quả thực tế là trong cùng một session, bạn không nói chuyện với một model nhất quán — bạn đang nói chuyện với một nhóm phiên bản được cấu hình khác nhau của cùng model đó, thay nhau xử lý request, trong đó một số xử lý tool call và prompt template đáng tin cậy hơn số khác. Định tuyến thủ công bên trong Hermes loại bỏ hoàn toàn điều này.
Cũng đáng lưu ý: nếu bạn muốn tiết kiệm tiền cho model hội thoại mà không hy sinh chất lượng code, Hermes hỗ trợ các lệnh /claude_code và /codex để ủy thác (delegate) các tác vụ coding trực tiếp cho những CLI tool đó thay vì để model chat đã cấu hình tự xử lý.
Thay vì trả tiền API theo token, Hermes có thể đăng nhập OAuth vào gói ChatGPT có sẵn của bạn qua provider openai-codex — và lấy được model tốt nhất (gpt-5.5) qua backend Codex. Đây chính là cách máy production đang chạy.
Đặt agent.reasoning_effort = low / medium / high. high cho reasoning sâu (kế hoạch, debug); low cho việc nhẹ, nhanh, ít "suy nghĩ". Dành brain đắt tiền cho chat, trỏ các tác vụ auxiliary sang model rẻ hơn để tiết kiệm.
refresh tự động. Nếu hết hạn: chạy lại hermes login --provider openai-codex. Provider cũng hỗ trợ nous và xai-oauth.Một mảnh cốt lõi của kiến trúc là Terminal Backend Environment, thứ quyết định các lệnh shell và script Python được thực thi ở đâu, theo cách nào, và cách agent chạm vào filesystem của bạn. Hermes hỗ trợ năm loại.
Local là mặc định. Lệnh chạy trực tiếp trên máy của bạn với cùng quyền hạn như tài khoản người dùng của bạn — không có cách ly (no isolation). Đây là lựa chọn đúng cho phát triển cục bộ và việc dùng cá nhân tin cậy, khi bạn muốn agent chỉnh sửa trực tiếp các file dự án thật của mình.
Sự an toàn ở đây hoàn toàn dựa vào một hệ thống approvals (phê duyệt) tích hợp sẵn, vốn chặn các lệnh phá huỷ (một rm -rf /, một DROP TABLE) và hỏi xin phép tường minh trước khi chạy.
Docker chạy agent bên trong một sandbox cách ly để nó không thể chạm vào host system của bạn.
SSH cho phép agent thực thi lệnh và làm việc với file trên máy chủ từ xa qua kết nối remote.
Modal chạy mọi thứ trong các serverless cloud sandbox — về cơ bản bạn thuê compute theo từng giây, chỉ trả tiền cho đúng số giây code của bạn thực sự chạy.
Daytona là một lớp quản lý container (container-management layer) được xây dựng riêng cho các AI coding agent; nó nhanh hơn so với chạy Docker trực tiếp và tự động lo việc thiết lập môi trường cũng như cài đặt dependency.

Sau terminal backend, setup chuyển sang chọn nơi bạn sẽ thực sự nói chuyện với agent — Telegram là lựa chọn hoàn thiện nhất. Chọn Telegram sẽ cho bạn một đường link để tạo trực tiếp bot đã được cấu hình sẵn; không có bước thiết lập bot-token thủ công nào cả.


Phần còn lại của setup đi qua việc bật từng tool riêng lẻ và các provider tương ứng của chúng — browser automation, image generation, text-to-speech, và web search. Riêng với web search, Firecrawl tự host hoặc Exa nổi bật như những lựa chọn mạnh cho việc scraping và truy hồi (retrieval) dành cho agent.

X search yêu cầu một thuê bao Grok (Grok subscription) mới bật được — điều đáng biết trước khi bạn đi tìm nó trong menu.

Khi đến phần Telegram trong hermes setup, đây là toàn bộ quy trình thiết lập thủ công (Manual) — bạn tự tạo bot và tự giữ token, toàn quyền kiểm soát.
Ở câu hỏi «How would you like to create your Telegram bot?», gõ 2 rồi Enter để chọn Manual — Create a bot via @BotFather yourself and paste the token. (Tuỳ chọn [1] Automatic dùng QR code cũng được, nhưng Manual cho phép bạn giữ token để tái sử dụng.)

Setup sẽ hỏi bot token. Để có token, mở Telegram và làm việc với @BotFather — tài khoản chính thức để tạo bot:
/newbot.TheAnh Buddy.bot, ví dụ TheAnhBuddyBot.123456789:AAE… → copy và dán vào Hermes setup khi được hỏi token.
/newbot → tên → username → token để dán vào setup.Tiếp theo setup hỏi user id (để giới hạn ai được phép nói chuyện với agent) — hãy điền Telegram user id của chính bạn. Lấy id bằng cách:
/start — bot trả về dòng Id: 123456789 (đó là user id của bạn).Id đó vào Hermes setup.
Id — chính là Telegram user id cần điền.Hermes đi kèm một danh sách dài các slash command, hầu hết tự giải thích qua tên gọi, nhưng một số ít đáng được nêu cụ thể.
/background <prompt> chạy một tác vụ ở chế độ nền mà không làm gián đoạn session chính của bạn./goal đặt ra một mục tiêu dài hạn mà agent kiên trì hướng tới, với các subcommand để tạm dừng, tiếp tục, xoá, hoặc kiểm tra trạng thái./subgoal quản lý các mục tiêu nhỏ hơn lồng dưới một goal đang hoạt động./kanban điều phối công việc bất đồng bộ, dài hơi trên nhiều agent độc lập — hoạt động như một bảng Kanban thực thụ, nơi một pool các tác vụ được phân phối cho các worker agent và di chuyển qua các cột to-do, in-progress, và done khi được chuyển giao giữa chúng.Về mặt phát triển (development):
/github_pr_workflow lo trọn chu trình từ branch tới merge, bao gồm cả CI./github_code_review review các pull request./codebase_inspection phân tích phân bố ngôn ngữ và số dòng code của một repository./dogfood là một chế độ QA chuyên dụng, săn lỗi (bug) trong một web app và tạo ra một báo cáo có bằng chứng (evidence-backed)./spike chạy một thử nghiệm nhanh, dùng một lần rồi bỏ để kiểm chứng một ý tưởng trước khi cam kết phát triển đầy đủ./systematic_debugging xử lý bug qua bốn pha, hiểu rõ nguyên nhân gốc (root cause) trước khi cố sửa.Ngoài ra còn có một nhóm lệnh dành riêng cho từng integration — mỗi lệnh bọc một dịch vụ ngoài hoặc một workflow cụ thể, cộng thêm /bundles, gom nhiều skill sẵn có lại dưới một slash command thông qua các file cấu hình YAML nhỏ.
Có hai cơ chế tự động hoá nền tảng (automation primitive) đặc biệt đáng chú ý.
Cron jobs cho phép bạn lên lịch chạy một script theo định kỳ; nếu bạn truyền -no-agent khi tạo, Hermes sẽ thực thi một script Python hoặc bash thuần và chỉ chuyển tiếp output của nó tới messenger của bạn, mà không tiêu tốn một LLM token nào cả.
Webhooks là cơ chế mạnh hơn: chúng cho phép agent phản ứng với các sự kiện bên ngoài thay vì chỉ theo timer. Bạn có thể cấu hình một webhook sao cho, chẳng hạn, một GitHub pull request mới tự động kích hoạt một agent với một prompt và bộ skill cụ thể — về cơ bản dựng lên một agent reviewer thường trực (on-call) mà không cần can thiệp thủ công gì cho mỗi PR.
Context engine chi phối cách Hermes nén và quản lý lịch sử trò chuyện một khi nó tiến gần đến giới hạn token (token limit) của model, và có hai lựa chọn.
Lựa chọn mặc định, Compressor, áp dụng phương pháp tóm tắt có mất mát (lossy summarization) cho phần giữa của cuộc trò chuyện dài.
Lựa chọn thay thế, LCM (Lossless Context Management), áp dụng một cách tiếp cận khác về cấu trúc: thay vì sinh ra một bản tóm tắt dạng văn bản, nó dựng nên một đồ thị có hướng không chu trình (directed acyclic graph — DAG) của các điểm chính trong cuộc trò chuyện, cho phép agent điều hướng từ một góc nhìn tổng quan, được nén mạnh, xuống tới chính những thông điệp gốc cụ thể làm cơ sở cho nó.

Các nhà cung cấp memory ngoài (external memory provider) chạy song song với các file memory cục bộ tích hợp sẵn của Hermes — MEMORY.md và USER.md — bổ sung các năng lực như semantic search và knowledge graph. Một số có thể được cấu hình trực tiếp qua setup TUI.
Honcho được xây dựng quanh việc mô hình hoá một hồ sơ người dùng chi tiết, dùng các lệnh gọi LLM nền để tổng hợp các quan sát qua hai tầng: một tầng nền gồm các bản tóm tắt và hồ sơ phiên (session summaries and profiles), và một tầng biện chứng (dialectical layer) phân tích nhu cầu hiện tại của người dùng.
OpenViking là một cơ sở dữ liệu context tổ chức tri thức theo cấu trúc cây (knowledge hierarchy) kiểu filesystem, hỗ trợ truy hồi context theo tầng (tiered context retrieval) và tự động sắp xếp các fact rút ra vào sáu hạng mục — events, patterns, preferences, v.v. — ở cuối mỗi session.
Mem0 là một dịch vụ memory cloud được quản lý hoàn toàn (fully managed); việc rút trích fact diễn ra phía server qua LLM, và nó bao gồm semantic search, rerank kết quả và tự động khử trùng lặp (deduplication) — tuy vậy do là cloud-hosted nên đây cũng là lựa chọn duy nhất ở đây có chi phí định kỳ (recurring cost).
Hindsight là một hệ thống bộ nhớ dài hạn tiên tiến hơn, xây trên một knowledge graph, theo phong cách GraphRAG. Nó rút trích các entity từ các session, dựng các quan hệ giữa chúng, và bảo toàn đầy đủ các lượt hội thoại (conversational turns) bao gồm cả các tool call, với memory chia làm bốn hạng mục: facts về thế giới, trải nghiệm của chính agent, opinions, và observations.
Holographic là một kho fact cục bộ dựa trên SQLite không có dependency bên ngoài, bao gồm một hệ thống chấm điểm độ tin cậy (trust-scoring) cho các fact lưu trữ và việc dùng Holographic Reduced Representations để hỗ trợ các truy vấn đại số, có tính kết hợp (algebraic, compositional queries), với khả năng tự động phát hiện mâu thuẫn (contradictions) bên trong cơ sở tri thức của nó.
RetainDB là một cloud API cho memory đội nhóm (team memory), cung cấp hybrid search trên các phương pháp vector, BM25, và rerank, với memory chia làm bảy loại riêng biệt và delta compression để giữ cho việc lưu trữ hiệu quả.
ByteRover là một hệ thống memory cục bộ, di động (portable), truy cập qua một CLI, dựng nên một cây tri thức phân cấp (hierarchical knowledge tree) và rút trích các fact quan trọng trước khi lossy compression loại chúng khỏi context.
Supermemory cung cấp bộ nhớ dài hạn ngữ nghĩa (semantic long-term memory) với một graph API: nó nạp toàn bộ session log sau khi một cuộc trò chuyện kết thúc để dựng knowledge graph của mình, định kỳ dọn dẹp các fact được truy hồi để tránh ô nhiễm từ các lượt hiện tại, và có thể cô lập memory vào các container riêng cho từng agent profile.
Đây là tính năng phân biệt Hermes rõ nhất với một agent thông thường: một tập hợp các tiến trình nền bất đồng bộ (asynchronous background processes) liên tục phân tích các cuộc trò chuyện của bạn, rút trích các pattern hữu ích từ đó, và viết những pattern ấy vào long-term memory và procedural memory (skills) — rồi duy trì khối tri thức tích luỹ đó để nó không bị mục rữa (decay) theo thời gian.
Toàn bộ hệ thống chạy song song với cuộc chat chính của bạn và được xây từ ba thành phần: một trigger system, một background review agent, và một curator.
đếm prompt & tool-call
ghi memory · skill
dọn dẹp · merge
Hermes không phân tích mọi thông điệp theo thời gian thực, vì điều đó sẽ đốt token mà chẳng được lợi gì. Thay vào đó, nó dựa vào hai bộ đếm (counter) để kích hoạt một lượt phản tư (reflection pass) một khi chúng vượt ngưỡng.
Một memory trigger kích hoạt sau mỗi mười user prompt, kiểm tra xem có fact mới đáng lưu nào vừa xuất hiện trong cuộc trò chuyện hay không.
Một skill trigger kích hoạt sau mỗi mười tool-call iteration trong cùng một lượt (turn), dựa trên giả định rằng nếu agent vừa tốn ngần ấy bước để vật lộn giải quyết một vấn đề bằng cách thử và sai (trial and error), thì trải nghiệm đó đáng được phân tích và có thể biến thành một skill tái sử dụng được.
Một khi bộ đếm nào chạm giới hạn của nó, một hàm nội bộ sẽ kích hoạt, chuyển giao một ảnh chụp (snapshot) của cuộc trò chuyện hiện tại cho một tiến trình review nền.
Snapshot này được gửi tới một tiến trình agent hoàn toàn riêng biệt, được cách ly (isolated), chạy song song mà không làm gián đoạn session chính của bạn. Nó làm việc theo hai hướng.
Ở phía declarative (khai báo), nếu nó nhận thấy các preference mới của người dùng hoặc chi tiết môi trường — chẳng hạn như thích Supabase hoặc một dự án được cố định ở Python 3.12 — nó sẽ cập nhật MEMORY.md hoặc USER.md, tuỳ theo fact đó thuộc về file nào.
Ở phía procedural (thủ tục), nếu nó phát hiện agent vừa giải xong một vấn đề không tầm thường hoặc tìm ra một quy trình phức tạp, nó có thể tạo một skill mới, sửa một skill sẵn có, áp dụng một patch có mục tiêu rõ ràng (targeted patch), hoặc xoá hẳn một skill. Bất kỳ skill nào nó tạo ra đều được gắn nhãn tường minh là agent-generated, để nguồn gốc luôn có thể truy vết.
Để curator về sau có thể phán xét xem những skill tự sinh nào thực sự đáng giữ, Hermes duy trì một usage log ẩn theo dõi, với mỗi skill:
Nếu không được kiểm soát, tiến trình này rốt cuộc có thể sinh ra hàng trăm skill, một số trùng lặp, một số lỗi thời.
Curator tồn tại để giữ cho cơ sở tri thức ấy khỏi suy thoái. Nó chỉ bắt đầu khi hai điều kiện đồng thời thoả mãn: đã trôi qua đủ thời gian kể từ lần chạy cuối (mặc định bảy ngày), và agent chính đã rảnh rỗi (idle) đủ lâu (mặc định hai giờ) để một lượt bảo trì nặng không can thiệp vào công việc đang diễn ra.
Trước khi thực hiện bất kỳ thay đổi nào, nó tự động sao lưu (back up) toàn bộ thư mục skills, để mọi kết quả không ưng ý đều có thể được hoàn tác (roll back) qua một lệnh terminal duy nhất.
Công việc của curator diễn ra theo hai pha:
Pha thứ nhất thuần cơ học và hoàn toàn không có lệnh gọi LLM nào: nó kiểm tra các chỉ số usage, đánh dấu bất kỳ skill agent-generated nào không dùng quá 30 ngày là deprecated (lỗi thời), và chuyển bất kỳ thứ gì không dùng quá 90 ngày vào một thư mục archive. Các skill quan trọng có thể được ghim (pin) tường minh để được bảo vệ khỏi tiến trình này.
Pha thứ hai là một lượt review LLM thực thụ, chạy qua một instance agent riêng biệt được cách ly, dùng bất kỳ model nào được cấu hình cho tác vụ phụ trợ của curator — mặc định là cùng model với cuộc trò chuyện chính, dù nó có thể được trỏ tới thứ gì đó rẻ hơn. Không nên chọn model quá rẻ cho tác vụ này, vì chất lượng của những quyết định này thực sự ảnh hưởng đến các khâu downstream của thư viện skill. Với mỗi skill, curator quyết định:
Ở cuối chu trình, nó tạo ra một báo cáo chi tiết bao gồm một rename map cho thấy chính xác các tên skill cũ đã ánh xạ sang tên mới ra sao sau bất kỳ lần merge nào, nên lập luận đằng sau mỗi quyết định đều hoàn toàn có thể kiểm toán (auditable).
Mỗi profile là một instance Hermes hoàn toàn cách ly: riêng HERMES_HOME (~/.hermes/profiles/<name>) chứa config, .env, memory, sessions, skills, và gateway riêng với token lock để hai bot không bao giờ dùng chung một credential. Máy production đang chạy 6 profile trên cùng một subscription gpt-5.5.
Các cloud agent như thế này thực sự có giá trị cho bất kỳ quy trình nào bạn có thể chạy 24/7 — ngoại trừ công việc coding — với điều kiện bạn đã thực sự số hoá quy trình đó một cách cẩn thận và xây một skill vững chắc quanh nó, bao gồm cả các evaluation (eval). Workflow thường cho kết quả tốt trông như thế này:
Nhìn rộng hơn: phạm vi những thứ bạn có thể giao cho một agent kiểu này bị giới hạn chủ yếu bởi việc bạn có thể đặc tả (specify) công việc tốt đến đâu, chứ không phải bởi năng lực thô của agent.
Ba nguyên tắc vẫn đúng trong nhiều tình huống sử dụng:
Đừng đem việc coding giao cho một cloud agent 24/7 không có giám sát.
Luôn giữ một con người trong vòng lặp (human in the loop) để review những gì agent thực sự tạo ra.
Coi việc tinh chỉnh skill là công việc liên tục chứ không phải thứ bạn làm xong một lần rồi bỏ đi.
"Nếu bài này hữu ích — hãy bookmark lại. Bạn sẽ muốn quay lại với nó."
Để xem thêm những phân tích kiểu này, theo dõi @ScottyBeamIO. Không màu mè, chỉ những gì thực sự hiệu quả.
Số liệu lấy trực tiếp từ một cài đặt Hermes production thật (~/.hermes) — host & credential được ẩn đi.
Giờ tới lượt bạn: cài đặt Hermes, đăng nhập bằng gói ChatGPT để chạy gpt-5.5, tạo profile riêng và để vòng lặp tự cải thiện xử lý phần còn lại. Hãy giữ một con người trong vòng lặp — và bắt đầu từ việc nhỏ.
"Không màu mè, chỉ những gì thực sự hiệu quả."