Tất cả những gì bạn cần để hiểu và tùy biến Hermes Agent: self-evolving skills, hệ thống memory 3 tầng, tối ưu hóa GEPA, và cách đi từ 1 đến 10 agent làm việc cho bạn 24/7.

Hermes Agent đã vượt mốc 90.000 sao GitHub chỉ trong hai tháng. Các developer đang âm thầm xây dựng những AI agent cá nhân có khả năng học workflow của họ, ghi nhớ ngữ cảnh và chạy 24/7.

Mọi AI agent bạn từng dùng đều có chung một vấn đề: nó quên sạch mọi thứ ngay khi session kết thúc.

Sở thích lập trình của bạn, các convention của dự án mà bạn đã phải sửa cho nó ba lần, cái lỗi nó mất 10 phút mới tìm ra cách fix hôm qua. Tất cả biến mất. Session tiếp theo, bạn lại bắt đầu từ con số không.

 

Hermes Agent của Nous Research chọn một hướng tiếp cận khác về căn bản. Nó đi kèm một learning loop có khả năng:

  • Ghi nhớ xuyên suốt các session
  • Tự viết các skill có thể tái sử dụng
  • Tự dọn dẹp (prune) chúng ở chế độ nền
  • Và kiểm chứng chúng offline thông qua một evolutionary engine tên là GEPA

Không một open-source agent nào khác kết hợp đủ cả ba. Kể cả OpenClaw.

Bài viết này sẽ giải thích learning loop hoạt động thế nào, từng lớp memory làm gì, và cách cấu hình mọi thứ từ đầu.

Đọc xong, bạn sẽ có ba agent hoàn toàn độc lập chạy trên máy của mình: một programmer (dùng Claude Code của bạn), một deep researcher và một designer — mỗi agent có personality, memory, skills và Telegram bot riêng.

Hãy xem thử:

Ba agent trong Telegram

Toàn bộ quá trình setup chỉ mất vài phút và mọi thứ đều có thể tái hiện trên phần cứng của riêng bạn.

Bắt đầu thôi!

Cách đọc bài viết này

Bài viết gồm hai nửa: lý thuyết trước, thực hành sau.

Không có nhiều thời gian? Nhảy thẳng tới phần Cài đặt và chạy. Các lệnh hoạt động độc lập.

Nhưng phần lý thuyết rất đáng giá. Hiểu cách skills tự tiến hóa, cách memory được ghép lại, và khi nào GEPA phát huy giá trị — đó là khác biệt giữa việc dùng Hermes như một chatbot có sổ ghi chú và dùng nó như một thứ tích lũy giá trị theo thời gian.

Nội dung phía trước:

  • Hermes Agent thực chất là gì — phần giới thiệu, kèm so sánh với OpenClaw.
  • Kiến trúc — gói gọn trong một sơ đồ.
  • Trước khi nói về Memory: Agent là ai? — md, lớp identity.
  • Hệ thống Memory — ba tầng, ba tốc độ.
  • Self-Evolving Skills — playbook do agent tự viết, cùng với Curator.
  • GEPA — tối ưu skill offline.
  • Cài đặt và chạy — install, Telegram, agent đầu tiên.
  • Chạy nhiều agent — profiles, ba persona, digest theo lịch.
  • Tùy biến các agent theo nhu cầu của bạn.

Hermes là gì, và điều gì khiến nó khác biệt về mặt kiến trúc

Tóm tắt trong một câu: một agent càng dùng lâu càng giỏi.

Điều biến câu đó thành sự thật là ba năng lực vốn thường tách rời nay nằm trong cùng một framework: runtime skill learning, persistent multi-layer memory, và một pipeline weight-training tùy chọn. Không open-source agent nào khác có đủ cả ba.

So sánh gần nhất trong hệ sinh thái mã nguồn mở là OpenClaw. Cả hai đều persistent, thân thiện với nền tảng nhắn tin, nhưng lựa chọn kiến trúc thì trái ngược nhau.

Blog của Kilo có một cách diễn đạt rất gọn: “Hermes đóng gói một gateway quanh một learning agent. OpenClaw đóng gói một agent quanh một messaging gateway.”

 

OpenClaw vs. Hermes

Kiến trúc của Hermes

Trước khi learning loop trở nên dễ hiểu, bạn cần một bức tranh cơ bản về cách Hermes được tổ chức.

Mọi thứ đều chạy qua một class AIAgent duy nhất trong script run_agent.py. CLI, messaging gateway, batch runner, tích hợp IDE: tất cả chỉ là các entry point đi vào cùng một core agent.

Đây chính là điều khiến câu chuyện “platform-agnostic” thực sự khả thi.

Cấu trúc của Hermes agent

Core loop theo kiểu ReAct và chạy synchronous: build system prompt, kiểm tra xem có cần compression không, gọi API (có thể ngắt được), thực thi các tool call, rồi lặp lại.

Vài chi tiết sẽ hữu ích về sau:

  • Agent có thể chạy lệnh ở sáu môi trường khác nhau: local terminal, Docker, SSH, Modal, Daytona hoặc Singularity. Cùng một code, chỉ cần đổi config. Bạn có thể chuyển việc thực thi từ laptop sang một GPU server trên cloud mà không phải chỉnh gì khác.
  • Nó hoạt động với gần như mọi model. Một translation layer định tuyến mọi provider qua một trong ba định dạng API. Vì vậy bạn có thể đổi từ Claude sang GPT, Gemini hay Ollama local chỉ với một lệnh mà không hỏng gì.
  • Agent có giới hạn cứng 90 turn cho mỗi task. Không có giới hạn này, một agent kẹt trong vòng lặp (retry một API đang lỗi, đọc đi đọc lại cùng một file) sẽ âm thầm đốt hết credit của bạn. Subagent dùng chung budget này, nên một chuỗi delegation mất kiểm soát cũng không thể lách qua.

Phần scaffolding như vậy là đủ. Giờ đến phần thú vị.

Trước khi nói về Memory: Agent là ai?

Trước khi đi vào memory và self-evolving skills, có một lớp nằm trên cả hai: identity.

Memory là những gì agent biết. Skills là cách nó làm việc. Nhưng cả hai đều không cho bạn biết nó là ai khi xuất hiện. Thiếu lớp identity, mọi agent đều giống như cùng một agent đội những chiếc mũ khác nhau.

Hermes giải quyết bằng một file duy nhất: SOUL.md.

File này nằm ở ~/.hermes/SOUL.md và chiếm vị trí #1 trong system prompt, trước mọi thứ khác. Nó định nghĩa personality, giọng điệu, phong cách giao tiếp và các giới hạn cứng của agent.

# SOUL.md

You are a pragmatic senior engineer with strong taste.

You optimize for truth, clarity, and usefulness

over politeness theater.

SOUL.md được viết tay và tĩnh. Bạn viết một lần, chỉnh dần theo thời gian, và nó giữ nguyên nhất quán qua mọi project, mọi session. Nếu file này không tồn tại, Hermes dùng identity mặc định có sẵn.

Vì sao điều này quan trọng với câu chuyện self-improving? Vì mọi thứ phía sau (memory agent ghi lại, skills nó tạo ra, cách nó consolidate kiến thức) đều diễn ra qua lăng kính của identity này.

SOUL.md là khung cố định. Memory và skills là các bộ phận chuyển động bên trong.

Hệ thống Memory: ba tầng, ba tốc độ

Hermes không có một “memory” duy nhất. Nó có ba lớp, mỗi lớp được thiết kế cho một mục đích khác nhau.

Tầng 1: Hai file Markdown nhỏ gọn

Lõi của hệ thống là hai file lưu trên đĩa:

  • md(tối đa 2.200 ký tự) chứa ghi chú của agent về môi trường của bạn, convention của dự án, các điểm khó chịu của tool và những bài học rút ra.
  • md(tối đa 1.375 ký tự) chứa profile của bạn: tên, sở thích giao tiếp, trình độ kỹ năng và những điều cần tránh.

Cả hai được inject vào system prompt như một snapshot “đóng băng” khi session bắt đầu. Nếu agent ghi một memory mới giữa session, thay đổi đó được lưu xuống đĩa ngay lập tức nhưng sẽ không xuất hiện trong system prompt cho đến session kế tiếp.

Khi memory đầy (~80% dung lượng, hiển thị dưới dạng phần trăm ở header của system prompt), agent buộc phải consolidate.

Nó gộp các mục liên quan thành những phiên bản cô đọng, giàu thông tin hơn, để chỉ những thông tin hữu ích còn tồn tại.

Tầng 2: Full-text search trên session

Mọi cuộc hội thoại (CLI lẫn messaging) đều được lưu trong SQLite với full-text search. Agent có thể tìm lại các cuộc trò chuyện từ nhiều tuần trước nhờ đó.

Sự đánh đổi rất rõ ràng: Tầng 1 luôn nằm trong context nhưng rất nhỏ. Tầng 2 dung lượng không giới hạn nhưng cần chủ động search cộng thêm bước LLM summarization.

Các fact quan trọng sống trong memory. Mọi thứ khác có thể search khi cần.

Tầng 3: External memory providers (8 plugin)

Với nhu cầu persistent memory sâu hơn, Hermes đi kèm 8 provider dạng plugin chạy song song với memory tích hợp (không bao giờ thay thế). Mỗi thời điểm chỉ một provider được kích hoạt.

Khi có external provider hoạt động, Hermes tự động prefetch các memory liên quan trước mỗi turn, sync các lượt hội thoại sau mỗi phản hồi, và trích xuất memory khi session kết thúc.

So sánh các external provider.

Self-Evolving Skills: Agent tự viết playbook cho chính mình

Memory lo phần fact. Skills lo phần quy trình (procedure).

Skills là các file Markdown với YAML frontmatter, đóng vai trò procedural memory của agent: không phải nó biết gì, mà là nó làm việc như thế nào.

Đây là cấu trúc giải phẫu của một skill:

name: k8s-pod-debug

description: >

Activate for crashing pods, CrashLoopBackOff,

“why is my pod restarting”, container failures.

version: 1.2.0

author: agent

platforms: [linux, macos]

## Procedure

  1. Get pod status → check events → pull logs
  2. Look for OOMKilled, ImagePullBackOff, config errors

## Pitfalls

– Forgetting –previous flag on restarted containers

## Verification

– Pod stays Running with 0 restarts for 5+ minutes

 

Để giữ chi phí token thấp, skills dùng cơ chế progressive disclosure:

Progressive disclosure trong Skills

  • Level 0: Agent chỉ thấy tên + mô tả (~3k token cho toàn bộ catalog)
  • Level 1: Nó load toàn bộ nội dung skill khi thực sự cần
  • Level 2: Nó có thể đào sâu vào các file reference cụ thể bên trong một skill

Vòng lặp self-improvement

Đây là điểm khác biệt cốt lõi. Agent tự tạo skill một cách tự chủ bằng tool skill_manage. Việc tạo skill được kích hoạt khi:

  • Agent hoàn thành một task phức tạp (5+ tool call)
  • Nó gặp lỗi hoặc ngõ cụt rồi tìm ra hướng đi đúng
  • Người dùng sửa cách tiếp cận của nó
  • Nó phát hiện một workflow không tầm thường

Vòng lặp hoạt động như sau: agent gặp một vấn đề → giải quyết qua thử-sai → lưu cách làm thành công vào file SKILL.md → lần sau gặp vấn đề tương tự, nó load skill và làm theo quy trình đã được kiểm chứng thay vì mò lại từ đầu.

Tool này hỗ trợ sáu action: create, patch (sửa có chủ đích, được ưu tiên vì tiết kiệm token), edit (viết lại toàn bộ), delete, write_file và remove_file.

Curator: garbage collection cho skills

Không được bảo trì, skills do agent tạo sẽ chất đống. Bạn sẽ có hàng chục playbook hẹp, chồng chéo, lãng phí token và làm bẩn catalog.

Curator là hệ thống bảo trì chạy nền xử lý việc này. Nó chạy theo cơ chế kiểm tra trạng thái nhàn rỗi (không phải cron daemon): nếu đã 7 ngày kể từ lần chạy gần nhất và agent đã idle 2+ giờ, một bản fork chạy nền của agent được khởi động với prompt cache riêng, không bao giờ đụng vào cuộc hội thoại đang hoạt động.

Nó vận hành theo hai giai đoạn:

  1. Chuyển trạng thái tự động (deterministic, không cần LLM): Skill không dùng 30 ngày trở thành stale. Skill không dùng 90 ngày bị archive.
  2. LLM review (tối đa 8 vòng lặp): Một agent được fork sẽ rà soát toàn bộ skill do agent tạo và quyết định cho từng skill: giữ, patch, gộp (consolidate) hay archive.

Hai ràng buộc quan trọng:

  • Curator không bao giờ đụng vào các skill bundled hoặc cài từ hub. Chỉ những skill do agent tự viết.
  • Nó không bao giờ tự động xóa. Kết quả tệ nhất là bị archive vào ~/.hermes/skills/.archive/, có thể khôi phục bằng một lệnh.

Trước mỗi lượt chạy Curator, Hermes tạo snapshot tar.gz của toàn bộ thư mục skills. Rollback chỉ cần một lệnh, và bản thân rollback cũng có thể đảo ngược.

Bạn cũng có thể pin các skill quan trọng bằng hermes curator pin <skill> để bảo vệ chúng khỏi bị archive hay xóa. Patch và edit vẫn được phép, nên agent vẫn cải thiện được skill đã pin mà bạn không phải unpin trước.

GEPA: tiến hóa skill offline bằng execution traces

Đến đây mới là phần thú vị.

Learning loop bên trong agent (tạo skill + Curator) có một điểm yếu đã được biết đến:

  • Agent có xu hướng tự khen mình. Nó hầu như luôn nghĩ là mình làm tốt, kể cả khi không phải vậy. Phản hồi từ cộng đồng đã xác nhận điều này.
  • Chính hệ thống tự sinh skill cũng có thể ghi đè các tùy chỉnh thủ công của bạn bằng những phiên bản tệ hơn.

Đây là lúc GEPA xuất hiện.

GEPA (Genetic-Pareto Prompt Evolution) không được tích hợp sẵn trong Hermes runtime. Nó nằm trong một repository đồng hành (NousResearch/hermes-agent-self-evolution) và hoạt động như một pipeline tối ưu hóa offline. Được công bố dưới dạng bài Oral tại ICLR 2026, giấy phép MIT.

Ý tưởng cốt lõi: thay vì hỏi agent “bạn làm tốt chứ?”, GEPA đọc các execution trace để hiểu vì sao mọi thứ thất bại, rồi đề xuất các cải tiến có mục tiêu thông qua evolutionary search.

Pipeline gồm:

  1. Đọc skill hiện tại từ repo Hermes
  2. Sinh evaluation dataset (test case tổng hợp qua Claude Opus, lịch sử session thực từ SQLite, hoặc golden set tuyển chọn thủ công)
  3. Chạy GEPA optimizer: đọc execution traces → hiểu các điểm thất bại → sinh các biến thể ứng viên
  4. Đánh giá ứng viên bằng LLM-as-judge với rubric (không phải pass/fail nhị phân)
  5. Áp dụng các constraint gate: toàn bộ test suite phải pass 100%, skill giữ dưới 15KB, bảo toàn tương thích caching, mục đích ngữ nghĩa không bị trôi dạt
  6. Biến thể tốt nhất được gửi dưới dạng PR vào repo Hermes. Không bao giờ commit trực tiếp.

Không cần GPU. Mọi thứ chạy qua API call. Chi phí: khoảng $2–10 mỗi lần chạy tối ưu.

Phần này có thể bỏ qua lúc đầu, nhưng cực kỳ hiệu quả khi bạn chạm trần và không muốn tốn thời gian, tiền bạc cho finetuning (RL/GRPO).

Link repo: https://github.com/NousResearch/hermes-agent-self-evolution

GEPA là gì tôi sẽ có bài viết chi tiết ở bài sau.

Đây là một lựa chọn rất đáng thử trước khi chuyển sang full fine-tuning hoặc fine-tuning dựa trên RL.

OK, tóm tắt lại:

SOUL.md thiết lập identity. Runtime loop thu nhận kinh nghiệm. Curator giữ thư viện sạch sẽ. GEPA đảm bảo những gì trong thư viện thực sự hoạt động.

Đó là toàn bộ phần lý thuyết. Giờ hãy chạy nó trên máy của bạn.

Cài đặt và chạy

Linux, macOS hoặc WSL2. Python 3.11+ đi kèm installer. 8GB RAM là đủ cho việc dùng qua API.

Cài bằng một dòng lệnh:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

source ~/.bashrc   # or ~/.zshrc

Chạy setup wizard. Nó dẫn bạn qua các bước chọn provider, API key, model và tools:

hermes setup

Bắt đầu chat trong terminal:

hermes

Kết nối với Telegram:

Nếu muốn nói chuyện với agent từ điện thoại thay vì terminal, hãy trỏ nó vào một Telegram bot.

Lấy bot token từ @BotFather (chạy /newbot), rồi lấy Telegram user ID của bạn từ @userinfobot.

Vậy là xong. Bạn đã có một agent hoạt động.

Bên trong ~/.hermes/ có gì

Ngay sau khi cài đặt, thư mục home của bạn sẽ có một folder mới.

Rất đáng để hiểu cấu trúc này, vì mọi thao tác với Hermes đều chạm tới một trong các đường dẫn sau.

~/.hermes/

├── config.yaml           # Main configuration

├── .env                  # API keys and secrets

├── auth.json             # OAuth provider credentials

├── SOUL.md               # Agent identity (slot #1 in system prompt)

├── memories/

│   ├── MEMORY.md         # Persistent agent facts

│   └── USER.md           # User model

├── skills/               # All skills (bundled, hub, agent-created)

│   ├── mlops/

│   │   ├── axolotl/

│   │   │   ├── SKILL.md

│   │   │   ├── references/

│   │   │   └── scripts/

│   │   └── vllm/

│   ├── devops/

│   └── .hub/             # Skills Hub state

├── sessions/             # Per-platform session metadata

├── state.db              # SQLite session store with FTS5

├── cron/

│   ├── jobs.json         # Scheduled jobs

│   └── output/           # Cron run outputs

├── plugins/              # Custom plugins

├── hooks/                # Lifecycle hooks

├── skins/                # CLI themes

└── logs/                 # agent.log, gateway.log, errors.log

Một vài file đáng xem kỹ hơn.

  • yaml là source of truth cho mọi thứ không phải bí mật. Lựa chọn model, terminal backend, bật/tắt tool, các MCP server đều nằm ở đây. Sửa bằng hermes config edit hoặc set từng giá trị với hermes config set <key> <value>.
  • .env chứa các bí mật của bạn: API key, bot token, mật khẩu. Hermes tự động định tuyến các giá trị “trông giống secret” về đây.
  • md là slot #1 trong system prompt, đứng trước mọi thứ. Lớp identity, đã đề cập ở trên.
  • skills/ là nơi toàn bộ learning loop tồn tại. Mọi skill agent tạo ra, cộng với mọi thứ bạn cài, đều nằm ở đây.
  • db là database SQLite phục vụ session search. An toàn với WAL-mode, đánh index FTS5. Đây là thứ làm cho câu hỏi “ba tuần trước chúng ta bàn gì nhỉ?” thực sự trả lời được.

Bạn sẽ không tự tay sửa phần lớn những thứ này. Nhưng nắm được layout sẽ giúp mọi thứ khác trở nên dễ hiểu.

Thêm Skills mới

Hermes vận hành Skills Hub chính thức của riêng mình với 687 skill thuộc 18 danh mục. Cụ thể:

  • 87 skill built-in đi kèm agent
  • 79 skill tùy chọn có thể bật khi cần
  • 16 skill từ Anthropic (frontend-design, pdf, pptx, docx, mcp-builder, v.v.)
  • 505 skill từ LobeHub (đóng góp rộng hơn từ cộng đồng)

Bạn cũng có thể thêm bất kỳ GitHub repo nào làm custom tap:

hermes skills tap add yourname/your-skills-repo

hermes skills install yourname/your-skills-repo/<skill-name>

Đây là cách bạn chia sẻ skill trong team hoặc duy trì bộ sưu tập riêng của mình.

Đi từ 1 đến 10 agent

Một agent là ổn. Nhiều agent chuyên biệt mới là lúc Hermes trở nên thú vị.

Hermes có tính năng hạng nhất cho việc này: profiles. Mỗi profile là một instance Hermes cô lập hoàn toàn với config, memory, skills, sessions và SOUL.md riêng. Mặc định chúng không chia sẻ gì với nhau.

Chúng ta sẽ dựng ba agent: một designer, một programmer và một researcher.

Tạo một team

hermes profile create designer –clone

hermes profile create programmer –clone

hermes profile create researcher –clone

hermes profile list

“–clone sao chép config và .env của profile mặc định làm điểm khởi đầu.”

 

— Hết Bài 1. Bài 2 tiếp tục với: Telegram bot riêng cho từng agent, SOUL.md, Claude Code delegation, dạy phong cách thiết kế và cron. —

Guest