Chuyển tới nội dung chính

Bộ nhớ liên tục

Đặc vụ Hermes có bộ nhớ giới hạn, được quản lý và tồn tại qua các phiên. Điều này cho phép nó ghi nhớ sở thích của bạn, dự án của bạn, môi trường của bạn và những điều nó đã học được.

Nó hoạt động như thế nào

Hai tệp tạo nên bộ nhớ của tác nhân:

Tập tinMục đíchGiới hạn Char
BỘ NHỚ.mdGhi chú cá nhân của đại lý — thông tin thực tế về môi trường, quy ước, những điều đã học được2.200 ký tự (~800 token)
USER.mdHồ sơ người dùng — sở thích, phong cách giao tiếp, kỳ vọng của bạn1.375 ký tự (~500 token)

Cả hai đều được lưu trữ trong ~/.hermes/memories/ và được đưa vào dấu nhắc hệ thống dưới dạng ảnh chụp nhanh cố định khi bắt đầu phiên. Tác nhân quản lý bộ nhớ của chính nó thông qua công cụ memory — nó có thể thêm, thay thế hoặc xóa các mục nhập.

thông tin

Giới hạn ký tự giúp tập trung vào bộ nhớ. Khi bộ nhớ đầy, tác nhân sẽ hợp nhất hoặc thay thế các mục để nhường chỗ cho thông tin mới.

Cách bộ nhớ xuất hiện trong dấu nhắc hệ thống

Khi bắt đầu mỗi phiên, các mục bộ nhớ được tải từ đĩa và được hiển thị tại dấu nhắc hệ thống dưới dạng một khối cố định:

══════════════════════════════════════════════
MEMORY (your personal notes) [67% — 1,474/2,200 chars]
══════════════════════════════════════════════
User's project is a Rust web service at ~/code/myapi using Axum + SQLx
§
This machine runs Ubuntu 22.04, has Docker and Podman installed
§
User prefers concise responses, dislikes verbose explanations

Định dạng bao gồm:

  • Tiêu đề hiển thị cửa hàng nào (BỘ NHỚ hoặc HỒ SƠ NGƯỜI DÙNG)
  • Tỷ lệ phần trăm sử dụng và số lượng ký tự để đại lý biết dung lượng
  • Các mục riêng lẻ được phân tách bằng dấu phân cách § (ký hiệu phần)
  • Bài viết có thể viết nhiều dòng

Mẫu ảnh chụp nhanh cố định: Nội dung nhắc nhở của hệ thống được ghi lại một lần khi bắt đầu phiên và không bao giờ thay đổi vào giữa phiên. Đây là cố ý — nó bảo toàn bộ nhớ đệm tiền tố của LLM để đảm bảo hiệu suất. Khi tác nhân thêm/xóa các mục nhập bộ nhớ trong một phiên, các thay đổi sẽ được lưu vào đĩa ngay lập tức nhưng sẽ không xuất hiện trong lời nhắc hệ thống cho đến khi phiên tiếp theo bắt đầu. Phản hồi của công cụ luôn hiển thị trạng thái trực tiếp.

Tác vụ của Công cụ Bộ nhớ

Tác nhân sử dụng công cụ memory với các hành động sau:

  • add — Thêm mục nhập bộ nhớ mới
  • replace — Thay thế mục hiện có bằng nội dung cập nhật (sử dụng kết hợp chuỗi con thông qua old_text )
  • remove — Xóa một mục không còn phù hợp (sử dụng kết hợp chuỗi con thông qua old_text )

Không có hành động read — nội dung bộ nhớ được tự động đưa vào lời nhắc hệ thống khi bắt đầu phiên. Tác nhân xem ký ức của mình như một phần của bối cảnh hội thoại.

So khớp chuỗi con

Hành động replaceremove sử dụng kết hợp chuỗi con ngắn duy nhất — bạn không cần văn bản nhập đầy đủ. Tham số old_text chỉ cần là một chuỗi con duy nhất xác định chính xác một mục nhập:

# If memory contains "User prefers dark mode in all editors"
memory(action="replace", target="memory",
old_text="dark mode",
content="User prefers light mode in VS Code, dark mode in terminal")

Nếu chuỗi con khớp với nhiều mục nhập thì sẽ trả về lỗi yêu cầu một kết quả khớp cụ thể hơn.

Giải thích hai mục tiêu

memory — Ghi chú cá nhân của Đại lý

Để biết thông tin, tổng đài viên cần ghi nhớ về môi trường, quy trình làm việc và bài học kinh nghiệm:- Thông tin về môi trường (OS, công cụ, cấu trúc dự án)

  • Quy ước và cấu hình dự án
  • Các vấn đề về công cụ và cách giải quyết được phát hiện
  • Hoàn thành mục nhật ký nhiệm vụ
  • Các kỹ năng và kỹ thuật đã áp dụng

user — Hồ sơ người dùng

Để biết thông tin về danh tính, sở thích và phong cách giao tiếp của người dùng:

  • Tên, vai trò, múi giờ
  • Tùy chọn giao tiếp (súc tích so với chi tiết, tùy chọn định dạng)
  • Thú cưng ăn trộm và những điều cần tránh
  • Thói quen làm việc
  • Trình độ kỹ thuật

Lưu gì và bỏ qua

Lưu những thứ này (Chủ động)

Nhân viên sẽ tự động lưu — bạn không cần phải hỏi. Nó lưu khi học:

  • Tùy chọn người dùng: "Tôi thích TypeScript hơn JavaScript" → lưu vào user
  • Thông tin thực tế về môi trường: "Máy chủ này chạy Debian 12 với PostgreSQL 16" → lưu vào memory
  • Sửa: "Không sử dụng sudo cho các lệnh Docker, người dùng thuộc nhóm docker" → lưu vào memory
  • Quy ước: "Dự án sử dụng các tab, độ rộng dòng 120 ký tự, chuỗi tài liệu kiểu Google" → lưu vào memory
  • Công việc đã hoàn thành: "Đã di chuyển cơ sở dữ liệu từ MySQL sang PostgreSQL vào ngày 15-01-2026" → lưu vào memory
  • Yêu cầu rõ ràng: "Hãy nhớ rằng việc xoay vòng khóa API của tôi diễn ra hàng tháng" → lưu vào memory

Bỏ qua những điều này

  • Thông tin tầm thường/rõ ràng: "Người dùng đã hỏi về Python" — quá mơ hồ nên không hữu ích
  • Dễ dàng khám phá lại thông tin thực tế: "Python 3.12 hỗ trợ lồng chuỗi f" — có thể tìm kiếm trên web thông tin này
  • Kết xuất dữ liệu thô: Khối mã lớn, tệp nhật ký, bảng dữ liệu — quá lớn cho bộ nhớ
  • Dữ liệu dành riêng cho phiên: Đường dẫn tệp tạm thời, ngữ cảnh gỡ lỗi một lần
  • Thông tin đã có trong tệp ngữ cảnh: Nội dung SOUL.md và AGENTS.md

Quản lý năng lực

Bộ nhớ có giới hạn ký tự nghiêm ngặt để giữ cho các lời nhắc của hệ thống bị giới hạn:

Cửa hàngGiới hạnMục điển hình
trí nhớ2.200 ký tự8-15 mục
người dùng1.375 ký tự5-10 mục

Điều gì xảy ra khi bộ nhớ đầy

Khi bạn cố thêm một mục vượt quá giới hạn, công cụ sẽ trả về lỗi:

{
"success": false,
"error": "Memory at 2,100/2,200 chars. Adding this entry (250 chars) would exceed the limit. Replace or remove existing entries first.",
"current_entries": ["..."],
"usage": "2,100/2,200"
}

Sau đó, đại lý nên:

  1. Đọc các mục hiện tại (hiển thị trong phản hồi lỗi)
  2. Xác định các mục có thể bị loại bỏ hoặc hợp nhất
  3. Sử dụng replace để hợp nhất các mục liên quan thành các phiên bản ngắn hơn
  4. Sau đó add mục mới

Phương pháp tốt nhất: Khi bộ nhớ vượt quá 80% dung lượng (hiển thị trong tiêu đề lời nhắc của hệ thống), hãy hợp nhất các mục trước khi thêm mục mới. Ví dụ: hợp nhất ba mục nhập "dự án sử dụng X" riêng biệt thành một mục mô tả dự án toàn diện.

Ví dụ thực tế về các mục ghi nhớ tốt

Các mục nhỏ gọn, giàu thông tin hoạt động tốt nhất:

# Good: Packs multiple related facts
User runs macOS 14 Sonoma, uses Homebrew, has Docker Desktop and Podman. Shell: zsh with oh-my-zsh. Editor: VS Code with Vim keybindings.

# Good: Specific, actionable convention
Project ~/code/api uses Go 1.22, sqlc for DB queries, chi router. Run tests with 'make test'. CI via GitHub Actions.

# Good: Lesson learned with context
The staging server (10.0.1.50) needs SSH port 2222, not 22. Key is at ~/.ssh/staging_ed25519.

# Bad: Too vague
User has a project.

# Bad: Too verbose
On January 5th, 2026, the user asked me to look at their project which is
located at ~/code/api. I discovered it uses Go version 1.22 and...

Ngăn chặn trùng lặp

Hệ thống bộ nhớ tự động từ chối các mục trùng lặp chính xác. Nếu bạn cố gắng thêm nội dung đã tồn tại, nó sẽ trả về thành công kèm theo thông báo "không thêm nội dung trùng lặp".

Quét bảo mậtCác mục nhập bộ nhớ được quét để tìm các kiểu chèn và trích xuất trước khi được chấp nhận vì chúng được đưa vào dấu nhắc hệ thống. Nội dung phù hợp với các mẫu mối đe dọa (chèn nhắc nhở, lọc thông tin xác thực, cửa sau SSH) hoặc chứa các ký tự Unicode vô hình sẽ bị chặn.

Tìm kiếm phiên

Ngoài MEMORY.md và USER.md, tổng đài viên có thể tìm kiếm các cuộc hội thoại trước đây của mình bằng công cụ session_search:

  • Tất cả các phiên nhắn tin và CLI được lưu trữ trong SQLite ( ~/.hermes/state.db ) với tính năng tìm kiếm toàn văn bản FTS5
  • Truy vấn tìm kiếm trả về các cuộc hội thoại có liên quan trong quá khứ với tính năng tóm tắt của Gemini Flash
  • Tác nhân có thể tìm thấy những điều nó đã thảo luận cách đây nhiều tuần, ngay cả khi chúng không có trong bộ nhớ hoạt động của nó
hermes sessions list    

# Browse past sessions

session_search so với bộ nhớ

Tính năngBộ nhớ liên tụcTìm kiếm phiên
Công suất~ Tổng cộng 1.300 tokenKhông giới hạn (tất cả các buổi)
Tốc độTức thì (trong dấu nhắc hệ thống)Yêu cầu tìm kiếm + tóm tắt LLM
Trường hợp sử dụngThông tin chính luôn có sẵnTìm các cuộc trò chuyện cụ thể trong quá khứ
Quản lýĐược quản lý thủ công bởi đại lýTự động — tất cả các phiên được lưu trữ
Chi phí mã thông báoĐã sửa lỗi mỗi phiên (~1.300 mã thông báo)Theo yêu cầu (tìm kiếm khi cần)

Bộ nhớ dành cho những thông tin quan trọng phải luôn nằm trong ngữ cảnh. Tìm kiếm trong phiên dành cho "chúng ta đã thảo luận về X tuần trước phải không?" các truy vấn trong đó nhân viên cần nhớ lại các chi tiết cụ thể từ các cuộc hội thoại trong quá khứ.

Cấu hình

# In ~/.hermes/config.yaml
memory:
memory_enabled: true
user_profile_enabled: true
memory_char_limit: 2200

# ~800 tokens
user_char_limit: 1375

# ~500 tokens

Nhà cung cấp bộ nhớ ngoài

Để có bộ nhớ sâu hơn, bền bỉ hơn MEMORY.md và USER.md, Hermes cung cấp 8 plugin nhà cung cấp bộ nhớ ngoài — bao gồm Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover và Supermemory.

Các nhà cung cấp bên ngoài chạy bên cạnh bộ nhớ tích hợp (không bao giờ thay thế nó) và thêm các khả năng như biểu đồ tri thức, tìm kiếm ngữ nghĩa, trích xuất dữ kiện tự động và lập mô hình người dùng giữa các phiên.

hermes memory setup      

# pick a provider and configure it
hermes memory status

# check what's active

Xem hướng dẫn Nhà cung cấp bộ nhớ để biết chi tiết đầy đủ về từng nhà cung cấp, hướng dẫn thiết lập và so sánh.