Có một vấn đề mà cả 26 bài trước trong series này không giải quyết triệt để: agent quên. Mỗi session mới, nó lại bắt đầu từ đầu. Bạn giải thích lại context. Nó mắc lại lỗi tương tự. Bạn lại fix. Vòng lặp không bao giờ kết thúc.

Không phải vì chúng ta chưa xây memory. Bài 4 đã đi qua conversation history, scratchpad, vector DB. Nhưng tất cả những cơ chế đó đều là passive: bạn thiết kế, bạn chọn ghi gì, bạn quyết định retrieve cái gì. Agent không tự học từ những gì nó làm.

Hermes Agent, ra mắt ngày 25 tháng 2 năm 2026 bởi Nous Research, thử một hướng khác: để agent tự tổng hợp kinh nghiệm thành skills tái sử dụng, tự cải thiện những skills đó theo thời gian, và nhớ lại context qua FTS5 full-text search trên SQLite. Không phải mô hình “chatbot với memory”. Mà là một agent thật sự trở nên tốt hơn khi chạy lâu hơn.

Bài này là phần tôi tự ghi chú lại sau khi đọc Hermes kỹ hơn: kiến trúc của nó có gì đáng học, phần self-evolving có thật sự mới không, persistent memory được làm ra sao, và chỗ nào dễ bị hype quá tay.

Hermes Agent là gì, nói ngắn gọn

Hermes Agent là một personal AI agent mã nguồn mở, MIT license, được thiết kế để chạy liên tục trên hạ tầng của bạn. Không phải SaaS, không phải API có giới hạn, không phải chatbot chạy trên máy tính cá nhân. Nó chạy trên VPS $5/tháng, GPU workstation, hay serverless và bạn kết nối vào từ Telegram, Discord, Slack, WhatsApp, Signal, Email, hay terminal.

Từ khi ra mắt đến giữa tháng 5 năm 2026, Hermes đạt 154.000 GitHub stars với 24.700 forks. Đây là một trong những dự án open-source phát triển nhanh nhất trong lịch sử hệ sinh thái AI agents: đạt 99.000 stars chỉ trong 8 tuần đầu. Đến ngày 10 tháng 5 năm 2026, Hermes trở thành agent được dùng nhiều nhất trên OpenRouter toàn cầu, xử lý 224 tỷ tokens trong một ngày.

Điểm khác biệt cốt lõi so với các agent framework khác (kể cả OpenClaw được phân tích trong bài 26):

Tiêu chíHermesAgent framework thông thường
SkillsTự tạo, tự cải thiệnHuman-authored hoặc hardcoded
Memory cross-sessionFTS5 SQLite, persistentKhông có hoặc vector DB external
Chạy ở đâuVPS, GPU, serverless, localThường tied to laptop session
Model200+ models qua OpenRouter, model-agnosticThường tied to một provider
Channels20+ platformsThường CLI hoặc web UI

Phần đáng chú ý nhất: self-evolving skills

Đây là phần kỹ thuật thú vị nhất của Hermes và cũng là phần dễ bị hiểu sai nhất.

Hermes tạo skill như thế nào

Hermes không tạo skill sau mỗi task. Nó chỉ trigger skill extraction khi một workflow đạt ngưỡng nhất định, thường là từ 5 tool calls trở lên trong một trajectory. Sau đó:

  1. Agent review lại toàn bộ trajectory vừa thực hiện
  2. LLM được gọi để tổng hợp: “đây là vấn đề gì, approach nào đã work, edge case nào đã gặp, và cách xử lý”
  3. Kết quả là một file Markdown lưu trong ~/.hermes/skills/

Skill là plain text Markdown. Bạn đọc được, sửa được, xóa được, commit vào git được. Không phải model weight, không phải embeddings, không phải gì đặc biệt. Ví dụ một skill đơn giản sẽ trông giống:

# skill: deploy-static-site-cloudflare

## Context
Deploy a static HTML/CSS/JS site to Cloudflare Pages via wrangler CLI.

## Steps
1. Unset conflicting env vars: CLOUDFLARE_API_KEY, CLOUDFLARE_EMAIL
2. Run: npx wrangler pages deploy <dist-dir> --project-name=<name>
3. Verify deployment at the Pages dashboard URL

## Edge cases
- If wrangler shows auth error despite login: env vars conflict, unset all three vars
- If project not found: run `wrangler pages project create <name>` first

## Last used: 2026-05-12
## Success rate: 4/4

Skill được tổ chức theo categories và có thể được search, enable, hoặc disable theo platform.

Curator mới là phần làm tôi thấy hợp lý

Từ phiên bản v0.12.0, Hermes thêm Curator: một background agent chạy theo chu kỳ 7 ngày để grade, consolidate, và prune skill library. Curator đánh giá mỗi skill theo success rate, relevance, và overlap với skills khác. Skills kém chất lượng bị archive, skills tốt được merge nếu trùng nội dung.

Đây là phần quan trọng nhất của “self-evolving”: không chỉ tạo skill, mà còn dọn dẹp skill. Không có Curator, skill library sẽ phình ra vô tới hạn.

Repo research đi kèm

Nous Research còn duy trì một repo riêng, hermes-agent-self-evolution, là research pipeline dùng DSPy và GEPA (Genetic Evolution of Prompt Architectures) để optimize chính các prompts và behaviors của Hermes. Đây là tầng nghiên cứu, không phải production code, nhưng nó cho thấy hướng dài hạn: agent tự tối ưu không chỉ ở tầng skill content mà còn ở tầng prompt design.

Memory của Hermes không chỉ là vector DB

Hermes dùng bốn lớp memory khác nhau, mỗi lớp có vai trò riêng:

Core memory

Hai file cố định: MEMORY.md (facts về thế giới, context dự án) và USER.md (preferences, cách làm việc của user). Tổng cộng khoảng 1.300 tokens, frozen mỗi session. Đây là “sổ tay ghi chép có mục đích” mà agent chủ động update sau khi học được điều gì mới về bạn.

Khác với scratchpad trong bài 4, persistent core memory không phải per-session. Nó persist qua mọi session và được load vào system prompt mỗi lần agent khởi động.

Session history với FTS5

Đây là lớp kỹ thuật thú vị nhất. Mỗi session được lưu vào SQLite database tại ~/.hermes/state.db, với FTS5 (Full-Text Search 5) indexing toàn bộ nội dung.

Tại sao FTS5 thay vì vector DB? Vì đối với session retrieval, exact lexical matching thường tốt hơn semantic similarity. Khi bạn muốn tìm lại “lần trước tôi fix cái lỗi CORS trên Cloudflare Workers”, FTS5 search theo từ “CORS Cloudflare Workers” sẽ tìm chính xác session đó. Vector search có thể trả về những session về “API error handling” vì semantically similar, nhưng không phải cái bạn cần.

FTS5 cũng nhanh hơn đáng kể so với vector search cho workload này: không cần embedding call, không cần vector similarity computation, chỉ là B-tree index trên SQLite. Latency thấp hơn nhiều khi agent cần lookup context giữa một task đang chạy.

Giới hạn của FTS5 cũng rõ ràng: nếu session trước dùng từ “deployment” và session này dùng “launch”, FTS5 sẽ không kết nối được. Vector search sẽ tìm được. Với use case memory cross-session, trade-off này chấp nhận được vì developer thường dùng consistent terminology trong một domain.

Procedural memory

Đây là phần skills ở trên. Nó không encode facts như “project này dùng Cloudflare”, mà encode procedures: lần trước deploy kiểu này thì cần chạy bước nào, lỗi nào hay gặp, workaround nào đã work.

User modeling

Layer tùy chọn từ Honcho project: track preferences và behavior patterns của user theo thời gian, build một representation về cách bạn làm việc. Đây là layer cao nhất, hữu ích nhất cho long-term personalization.

Chạy ở đâu và nói chuyện qua kênh nào

Nhiều channel, một agent

Hermes hỗ trợ 20 platforms tính đến v0.13.0, bao gồm Telegram, Discord, Slack, WhatsApp, Signal, Email, Google Chat, Mattermost, Matrix, DingTalk, và CLI. Tất cả từ một codebase duy nhất, qua Gateway layer.

Ý nghĩa thực tế: bạn deploy Hermes một lần trên VPS, rồi kết nối từ bất kỳ đâu. Đang trên điện thoại? Telegram. Đang làm việc? Slack. Đang debug? Terminal. Agent là một, context là một, memory là một.

Deploy trên VPS rẻ

# Cài đặt
pip install hermes-agent

# Khởi tạo
hermes init

# Chọn model (ví dụ qua OpenRouter)
hermes model

# Chạy Telegram gateway
hermes gateway telegram

# Hoặc chạy CLI interactive
hermes

VPS $5/tháng (DigitalOcean Droplet, Hetzner CX11, Vultr) đủ để chạy Hermes kết nối với cloud model (OpenRouter, Anthropic API, OpenAI API). Chi phí model là separate. Hermes bản thân chỉ cần Python runtime và SQLite, không cần GPU.

Nếu muốn chạy local model

Nếu bạn muốn chạy local model thay vì cloud API, NVIDIA đã partnership với Nous Research để tối ưu Hermes cho RTX PCs và DGX Spark. DGX Spark với 128GB unified memory và 1 petaflop AI performance có thể chạy Qwen 3.6 (35B đến 120B parameters) hoàn toàn local.

Thực tế của partnership này: NVIDIA Tensor Cores cho phép Hermes xử lý một task phức tạp hoặc refine một skill trong vài giây thay vì vài phút. Với Qwen 3.6 35B chạy trên RTX 4090 (cần khoảng 20GB VRAM), bạn có một agent persistent memory, self-evolving, completely offline.

Runtimes được hỗ trợ cho local model: llama.cpp, Ollama, LM Studio (có native Hermes support), vLLM.

Sandboxing vẫn là bắt buộc

Hermes implement “five-layer defense-in-depth”: user authorization, approval checks, container isolation (Docker hoặc e2b), credential filtering, và context scanning. Khi agent cần chạy code, nó chạy trong sandbox, không phải bare host.

Những điều tôi rút ra khi đọc Hermes

Self-improvement chỉ work khi base quality đủ tốt

Pitfall quan trọng nhất của Hermes, và của bất kỳ self-improving agent nào: garbage in, garbage out. Skill được tạo từ một LLM call review trajectory. Nếu LLM tự quan sát kém, skill sẽ kém. Nếu trajectory có edge case không được capture, skill sẽ thiếu.

Hermes ship kèm 118 bundled skills, tất cả được human review kỹ lưỡng. Skills tự tạo bởi user’s agent thì không được review đó. Theo thực tế sử dụng: bạn sẽ tích lũy một số skills excellent, một đống skills trung bình, và ít nhất một skill “confidently wrong”, tức là codify sai approach nhưng lại được lưu như đúng vì lần đó nó seem to work.

Cursor đối với code completion: model tốt thì autocomplete tốt, model kém thì autocomplete gây hại hơn gợi ý thủ công. Self-evolving agent cũng vậy.

Skill poisoning là attack vector mới

Đây là pitfall bảo mật ít được thảo luận. Traditional prompt injection ảnh hưởng một session. Với Hermes, nếu attacker inject được vào một session và session đó trigger skill extraction, injection được lưu vào disk như một Markdown file, được load vào mọi session tiếp theo.

Skill là “trusted” bởi agent vì nó đến từ chính experience của agent. Không có signal nào để distinguish giữa legitimate skill và poisoned skill trong skill file nếu không đọc content thủ công.

Hermes v0.13.0 đã thêm prompt-injection scanning trên assembled skill content. Nhưng đây là vấn đề về nguyên tắc: khi bạn cho agent write to persistent knowledge store, store đó trở thành attack surface. Bài bài 24 của series đã cover prompt injection ở level session, nhưng self-evolving agent mở ra một dimension mới: persistent injection.

Meta-cognition có chi phí

Mỗi lần Hermes tạo skill, nó chạy thêm một LLM call để review trajectory. Curator chạy 7 ngày một lần nhưng grade toàn bộ skill library. Memory nudge update MEMORY.md sau các session phù hợp.

Chi phí tích lũy này, “meta-cognition cost”, có thể vượt chi phí của actual work. Với model rẻ (Qwen 3.6 qua OpenRouter hay local) thì không đáng kể. Với Claude Opus 4.7 hay GPT-4o, meta-cognition cost có thể là 30-50% total bill.

Thiết kế đúng: chạy meta-cognition (skill extraction, memory update) với model nhỏ hơn, nhanh hơn, rẻ hơn. Dùng model mạnh chỉ cho actual task. Hermes hỗ trợ cấu hình model khác nhau cho các loại operation khác nhau.

FTS5 không thay vector search trong mọi việc

FTS5 choice của Hermes là kỹ thuật hợp lý cho session retrieval, nhưng không phải câu trả lời universal. Nếu bạn build agent cần semantic similarity (ví dụ “tìm documentation liên quan đến vấn đề này”), vector search vẫn tốt hơn.

Pattern đúng: dùng FTS5 cho “tìm lại session cụ thể đã làm gì”, dùng vector search cho “tìm knowledge liên quan đến concept này”. Hermes kết hợp cả hai: FTS5 cho session history, optional vector layer cho knowledge retrieval nếu user setup.

So sánh với cách bài 4 phân tích các loại memory: Hermes thêm một layer mà bài 4 chỉ đề cập ngắn, đó là procedural memory dưới dạng skills có lifecycle riêng.

Persistent agent không phải laptop chạy 24/7

Phần lớn agent demo chạy trên laptop của developer. Laptop tắt thì agent tắt. Hermes giải quyết vấn đề này bằng cách tách agent runtime khỏi client interface.

Architecture đúng cho persistent agent:

VPS/server (agent runtime)
  └── Hermes process (chạy 24/7)
        ├── state.db (SQLite với FTS5)
        ├── skills/
        └── MEMORY.md, USER.md

Client (bất kỳ đâu)
  ├── Telegram app trên phone
  ├── Discord trên laptop
  └── Terminal qua SSH

Agent không phụ thuộc vào client availability. Bạn tắt máy, agent vẫn có thể complete scheduled tasks. Bạn mở máy lại, reconnect vào same context. Pattern này là architectural choice quan trọng mà nhiều agent framework bỏ qua.

Bảng tóm tắt để nhớ nhanh

AspectChi tiết
Nguồn gốcNous Research, ra mắt 25/02/2026, MIT license
GitHub154.000 stars, 24.700 forks (tháng 5/2026)
OpenRouterAgent số 1 toàn cầu, 224B tokens/ngày
Self-evolvingSkills từ trajectory, Curator 7 ngày, DSPy research pipeline
MemoryCore (1.3K tokens), FTS5 session history, procedural (skills), Honcho
Channels20+ platforms: Telegram, Discord, Slack, WhatsApp, Signal, Email, CLI
Model200+ models, OpenRouter, Anthropic, OpenAI, NVIDIA NIM, local
DeployVPS $5, Docker, SSH, serverless (Modal/Daytona), GPU local
NVIDIARTX PCs + DGX Spark, local model qua Ollama/llama.cpp/LM Studio
Security5-layer defense: authorization, approval, sandbox, redaction, scanning
PitfallsSkill quality, skill poisoning, meta-cognition cost

Tôi sẽ nhớ gì từ Hermes

Bài 27 là bài cuối cùng của series “AI Agents từ zero”. Đây là bonus post, không có bài tiếp theo.

Series đã đi 26 bài core cộng 2 bonus (bài 26 về OpenClaw, bài 27 về Hermes). Từ agent là gì (bài 1) đến tool design, memory, planning, multi-agent, production monitoring, đến hai framework open-source đang định hình hướng đi của 2026.

Hermes Agent đại diện cho một hypothesis mạnh: agent tốt nhất không phải là agent được engineer tốt nhất ngay từ đầu, mà là agent có khả năng cải thiện bản thân theo thời gian khi chạy. Đây là hướng nghiên cứu lớn, và kết quả thực tế của Hermes (154K stars, 224B tokens/ngày, partnership với NVIDIA) cho thấy hypothesis này đang được thị trường validate.

Nhưng “self-improving” không phải magic. Chất lượng self-improvement phụ thuộc vào chất lượng base model, thiết kế của learning loop, và cơ chế curation. Nếu không có Curator dọn dẹp skill library, nếu không có security layer bảo vệ khỏi skill poisoning, và nếu không có meta-cognition cost management, agent “self-improving” có thể trở thành agent “self-degrading”.

Điểm tôi thích ở Hermes là nó không chỉ hỏi “agent làm được gì trong một session”, mà hỏi “agent có tốt hơn sau nhiều session không”. Đó là câu hỏi đúng. Nhưng câu trả lời vẫn là engineering trade-off, không phải magic. Framework giỏi nhất vẫn là cái mà bạn hiểu đủ sâu để biết khi nào nó sẽ fail.

Nếu bạn chỉ lấy một ý từ Hermes, tôi nghĩ là ý này: self-improvement cần curator, guardrail, và cost budget. Không có ba thứ đó, “agent tự học” rất dễ thành một vòng lặp tự tích lũy lỗi.