- Hầu hết agent framework có một loop: prompt → response → repeat.
- Hermes chạy 8 loops song song từ milliseconds đến weeks - và mỗi loop feed vào loop khác theo cách khiến agent tốt hơn theo thời gian.
TL;DR
Hầu hết agent framework chỉ có một loop: prompt → response → repeat. Hermes Agent chạy 8 loops song song ở các timescale khác nhau - từ milliseconds đến weeks. Mỗi loop phục vụ một mục đích riêng, và điều đặc biệt là chúng compound: output của loop chậm hơn cải thiện context cho loop nhanh hơn. Đây là lý do Hermes "thông minh hơn" theo thời gian thay vì chỉ thực thi.
Vấn đề với một loop duy nhất
Hầu hết agent framework thiết kế theo mô hình phẳng: nhận input, gọi LLM, trả output, xong. Lần sau bắt đầu lại từ đầu. Model không nhớ gì cả ngoài những gì bạn nhét vào system prompt.
Vấn đề không phải là "thiếu memory" - mà là không có cơ chế để knowledge compound. Mỗi vòng chạy ngang bằng với vòng trước. Không có tích lũy, không có cải thiện cấu trúc, không có feedback loop thực sự.
Hermes Agent giải quyết điều này bằng cách thiết kế 8 loops độc lập chạy ở các tầng thời gian khác nhau, mỗi tầng feed vào tầng kia.
Loop 1 - Milliseconds: Tool execution
Tầng thấp nhất. Trong một bước agent, khi model trả về nhiều tool call cùng lúc, Hermes thực thi chúng đồng thời qua ThreadPoolExecutor thay vì tuần tự.
Kết quả được chèn lại đúng thứ tự ban đầu bất kể completion order. Tools được đánh dấu interactive (như clarify) là ngoại lệ - chạy tuần tự để tránh race condition với user input.
Đây là loop vô hình nhất, nhưng tác động lớn nhất lên latency khi agent làm nhiều việc song song.
Loop 2 - Seconds: Agent iteration
Loop chính trong run_conversation(). Cấu trúc đơn giản:
Gọi LLM với message history + tool schemas
Nếu response có tool calls → dispatch qua
handle_function_call()→ append results → loop tiếpNếu response là text → persist session → return
Loop này có double gate: api_call_count < max_iterations AND iteration_budget.remaining > 0. Budget được chia sẻ giữa parent agent và subagents - tổng không vượt quá giới hạn dù spawn nhiều child.
Default 90 iterations. Khi hết budget, agent tóm tắt những gì đã làm và return thay vì crash.
Loop 3 - Minutes: Context compression
Chạy ngầm trong cùng session. Khi conversation vượt 50% context window (preflight) hoặc 85% (gateway auto-compression), một auxiliary model kích hoạt.
Thứ tự ưu tiên khi compress:
Flush memory ra disk trước (không mất data)
Tóm tắt các turns ở giữa thành compact summary
Giữ nguyên 20 messages cuối (
compression.protect_last_n)Tool call và result luôn được giữ cùng nhau, không tách ra
Tạo lineage ID mới - compression tạo ra "child session" trong SQLite
Iterative compression quan trọng: thay vì tóm tắt lại từ đầu mỗi lần, mỗi pass build trên summary trước đó. Tránh "summary of summary of summary" làm mất signal.
Loop 4 - Minutes: Periodic nudge
Tại các khoảng thời gian đặt trước trong session, agent nhận internal system-level prompt — không phải từ user - hỏi: "Có gì vừa xảy ra đáng ghi nhớ không?"
Agent tự scan activity gần đây và quyết định có nên persist vào memory file không. Nếu có, nó ghi vào ~/.hermes/memories/ với giới hạn 3,575 ký tự - đủ chặt để buộc curation thay vì dump tất cả.
Một điểm tinh tế: thay đổi memory không có hiệu lực ngay trong session hiện tại. Chúng được đọc lần kế tiếp khi build system prompt. Điều này ngăn mid-session context drift.
Loop 5 - Per task: Skill creation
Sau khi hoàn thành một task phức tạp, agent check: có đáng viết lại không? Triggers cụ thể:
5+ tool calls trong một task
Recover từ lỗi
User correction
Non-obvious workflow đã work
Nếu pass, agent gọi skill_manage tool để create skill mới hoặc patch skill cũ. Default là patch - chỉ thay đúng phần thay đổi thay vì rewrite toàn bộ. Vừa chính xác hơn, vừa token-efficient hơn.
Skill file theo chuẩn agentskills.io - portable, YAML frontmatter + Markdown body, lưu tại ~/.hermes/skills/.
Loop 6 - Hours: Session accumulation
Mỗi session là một vòng lặp dài hơn. Khi session mới bắt đầu, agent:
Load
MEMORY.md+USER.mdvào system prompt (always-on layer)Load skill summaries (chỉ tên và description, không phải full content)
Query SQLite archive nếu cần context từ sessions cũ qua FTS5
Skill loading dùng progressive disclosure: chỉ load full content khi agent xác định skill đó relevant với task hiện tại. 200 skills hay 40 skills - chi phí token gần như nhau.
Session search khác với prompt memory: prompt memory luôn on, session search là deliberate retrieval khi cần. Agent tự quyết định đâu là episodic (session archive) và đâu là permanent (MEMORY.md).
Loop 7 - Daily: Scheduled tasks
Cron loop chạy theo clock tick thay vì user message. Khi giờ đặt trước đến, gateway ticking kích hoạt cùng pipeline như một interactive session - đầy đủ memory, skills, tools.
Hermes hỗ trợ đa dạng schedule: "30m", "every monday 9am", "0 9 * * *", ISO timestamp. Output route về đúng platform đã cấu hình (Telegram, Discord, v.v.).
Điểm khác biệt với cron thông thường: job này là agent, không phải script. Nó có thể tìm kiếm web, đọc GitHub, phân tích data, và tự quyết định có cần gửi notification hay không ([SILENT] nếu không có gì đáng báo).
Loop 8 - Weekly: Skill curator
Loop chậm nhất và ít được chú ý nhất. Curator chạy mỗi 7 ngày (sau khi agent idle ít nhất 2 tiếng) để review toàn bộ agent-created skills.
State machine của từng skill:
active → stale (sau 30 ngày không dùng)
stale → archived (sau 90 ngày không dùng)
Mỗi run, Curator track view count, use count, patch count của từng skill, rồi LLM review quyết định: keep, patch, consolidate, hoặc archive. Kết quả ghi vào machine-readable log và human-readable report.
Quan trọng: Curator chỉ touch agent-created skills, không bao giờ đụng bundled hoặc hub-installed skills. Scoping rõ ràng này ngăn nó vô tình archive các skill cốt lõi.
Tại sao chúng compound?
8 loops không chỉ chạy song song - chúng feed lẫn nhau theo chiều dọc:
Tool execution (ms) → giảm latency cho Agent iteration (s)
Agent iteration (s) → trigger Skill creation (per-task)
Periodic nudge (minutes) → ghi vào memory mà Session loop (hours) đọc
Skill creation (per-task) → build thư viện mà Session loop load
Session loop (hours) → tích lũy data cho Skill curator (weekly) review
Skill curator (weekly) → tỉa bớt noise, làm Session load chính xác hơn
Cron loop (daily) → tạo thêm sessions, thêm data cho toàn bộ system
Kết quả: agent chạy tuần sau có skill tốt hơn tuần trước. Memory phản ánh đúng preference hơn. Skill library không bị bloat. Và tất cả điều này xảy ra mà không cần user làm gì - chỉ cần dùng.
Đây là điểm khác biệt thực sự của Hermes so với agent framework thông thường: không phải feature list, mà là kiến trúc loop tự cải thiện theo thời gian.
Đạo hữu là phàm nhân, tu tiên giả
... hay AI cào nội dung?
Tất cả nội dung tại đạo quán đều miễn phí. Đạo hữu chỉ cần nhập email của mình để đọc tiếp. Nói KHÔNG với Spam. Huỷ subcribe lúc nào đạo hữu thích.
nếu không muốn nhận newsletter thì có thể nhập mail phụ
