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

Hội nhanh chóng

Hermes cố tình tách ra:

  • trạng thái nhắc hệ thống được lưu trong bộ nhớ cache
  • bổ sung thời gian gọi API tạm thời

Đây là một trong những lựa chọn thiết kế quan trọng nhất trong dự án vì nó ảnh hưởng đến:

  • sử dụng mã thông báo
  • hiệu quả bộ nhớ đệm nhanh chóng
  • tính liên tục của phiên
  • độ chính xác của bộ nhớ

Các tập tin chính:

  • run_agent.py
  • agent/prompt_builder.py
  • tools/memory_tool.py

Lớp nhắc hệ thống được lưu trong bộ nhớ đệm

Lời nhắc hệ thống được lưu trong bộ nhớ đệm được tập hợp theo thứ tự sau:

  1. danh tính tác nhân — SOUL.md từ HERMES_HOME khi khả dụng, nếu không thì quay lại DEFAULT_AGENT_IDENTITY trong prompt_builder.py
  2. hướng dẫn hành vi nhận biết công cụ
  3. Khối tĩnh Honcho (khi hoạt động)
  4. thông báo hệ thống tùy chọn
  5. ảnh chụp nhanh BỘ NHỚ bị đóng băng
  6. ảnh chụp nhanh hồ sơ NGƯỜI DÙNG bị đóng băng
  7. chỉ số kỹ năng
  8. tệp ngữ cảnh ( AGENTS.md , .cursorrules , .cursor/rules/*.mdc ) — SOUL.md không được bao gồm ở đây khi nó đã được tải làm danh tính ở bước 1
  9. dấu thời gian / ID phiên tùy chọn
  10. gợi ý nền tảng

Khi skip_context_files được đặt (ví dụ: ủy quyền đại lý phụ), SOUL.md không được tải và thay vào đó, DEFAULT_AGENT_IDENTITY mã hóa cứng sẽ được sử dụng.

Ví dụ cụ thể: dấu nhắc hệ thống đã được lắp ráp

Dưới đây là cái nhìn đơn giản về lời nhắc hệ thống cuối cùng trông như thế nào khi có tất cả các lớp (các nhận xét hiển thị nguồn của từng phần):

# Layer 1: Agent Identity (from ~/.hermes/SOUL.md)
You are Hermes, an AI assistant created by Nous Research.
You are an expert software engineer and researcher.
You value correctness, clarity, and efficiency.
...

# Layer 2: Tool-aware behavior guidance
You have persistent memory across sessions. Save durable facts using
the memory tool: user preferences, environment details, tool quirks,
and stable conventions. Memory is injected into every turn, so keep
it compact and focused on facts that will still matter later.
...
When the user references something from a past conversation or you
suspect relevant cross-session context exists, use session_search
to recall it before asking them to repeat themselves.

# Tool-use enforcement (for GPT/Codex models only)
You MUST use your tools to take action — do not describe what you
would do or plan to do without actually doing it.
...

# Layer 3: Honcho static block (when active)
[Honcho personality/context data]

# Layer 4: Optional system message (from config or API)
[User-configured system message override]

# Layer 5: Frozen MEMORY snapshot
#

# Persistent Memory
- User prefers Python 3.12, uses pyproject.toml
- Default editor is nvim
- Working on project "atlas" in ~/code/atlas
- Timezone: US/Pacific

# Layer 6: Frozen USER profile snapshot
#

# User Profile
- Name: Alice
- GitHub: alice-dev

# Layer 7: Skills index
#

# Skills (mandatory)
Before replying, scan the skills below. If one clearly matches
your task, load it with skill_view(name) and follow its instructions.
...
<available_skills>
software-development:
- code-review: Structured code review workflow
- test-driven-development: TDD methodology
research:
- arxiv: Search and summarize arXiv papers
</available_skills>

# Layer 8: Context files (from project directory)
# Project Context
The following project context files have been loaded and should be followed:

#

# AGENTS.md
This is the atlas project. Use pytest for testing. The main
entry point is src/atlas/main.py. Always run `make lint` before
committing.

# Layer 9: Timestamp + session
Current time: 2026-03-30T14:30:00-07:00
Session: abc123

# Layer 10: Platform hint
You are a CLI AI Agent. Try not to use markdown but simple text
renderable inside a terminal.

Cách SOUL.md xuất hiện trong lời nhắc

SOUL.md tồn tại tại ~/.hermes/SOUL.md và đóng vai trò là danh tính của tổng đài viên — phần đầu tiên của lời nhắc hệ thống. Logic tải trong prompt_builder.py hoạt động như sau:

# From agent/prompt_builder.py (simplified)
def load_soul_md() -> Optional[str]:
soul_path = get_hermes_home() / "SOUL.md"
if not soul_path.exists():
return None
content = soul_path.read_text(encoding="utf-8").strip()
content = _scan_context_content(content, "SOUL.md")

# Security scan
content = _truncate_content(content, "SOUL.md")

# Cap at 20k chars
return content

Khi load_soul_md() trả về nội dung, nó sẽ thay thế DEFAULT_AGENT_IDENTITY được mã hóa cứng. Sau đó, hàm build_context_files_prompt() được gọi với skip_soul=True để ngăn SOUL.md xuất hiện hai lần (một lần dưới dạng danh tính, một lần dưới dạng tệp ngữ cảnh).

Nếu SOUL.md không tồn tại, hệ thống sẽ quay lại:

You are Hermes Agent, an intelligent AI assistant created by Nous Research.
You are helpful, knowledgeable, and direct. You assist users with a wide
range of tasks including answering questions, writing and editing code,
analyzing information, creative work, and executing actions via your tools.
You communicate clearly, admit uncertainty when appropriate, and prioritize
being genuinely useful over being verbose unless otherwise directed below.
Be targeted and efficient in your exploration and investigations.

Cách chèn tệp ngữ cảnh

build_context_files_prompt() sử dụng hệ thống ưu tiên — chỉ tải một loại ngữ cảnh dự án (trận đấu đầu tiên thắng):

# From agent/prompt_builder.py (simplified)
def build_context_files_prompt(cwd=None, skip_soul=False):
cwd_path = Path(cwd).resolve()



# Priority: first match wins — only ONE project context loaded
project_context = (
_load_hermes_md(cwd_path)

# 1. .hermes.md / HERMES.md (walks to git root)
or _load_agents_md(cwd_path)

# 2. AGENTS.md (cwd only)
or _load_claude_md(cwd_path)

# 3. CLAUDE.md (cwd only)
or _load_cursorrules(cwd_path)

# 4. .cursorrules / .cursor/rules/*.mdc
)

sections = []
if project_context:
sections.append(project_context)



# SOUL.md from HERMES_HOME (independent of project context)
if not skip_soul:
soul_content = load_soul_md()
if soul_content:
sections.append(soul_content)

if not sections:
return ""

return (
"

# Project Context\n\n"
"The following project context files have been loaded "
"and should be followed:\n\n"
+ "\n".join(sections)
)

Chi tiết khám phá tệp ngữ cảnh

Ưu tiênTập tinPhạm vi tìm kiếmGhi chú
1.hermes.md , HERMES.mdCWD lên đến git rootCấu hình dự án gốc Hermes
2AGENTS.mdChỉ CWDFile hướng dẫn tác nhân thông thường
3CLAUDE.mdChỉ CWDKhả năng tương thích mã Claude
4.cursorrules , .cursor/rules/*.mdcChỉ CWDKhả năng tương thích con trỏ

Tất cả các tệp ngữ cảnh là:

  • Quét bảo mật — đã kiểm tra các mẫu chèn nhanh (unicode vô hình, "bỏ qua các hướng dẫn trước", các nỗ lực lọc thông tin xác thực)
  • Cắt ngắn — giới hạn ở 20.000 ký tự sử dụng tỷ lệ đầu/đuôi 70/20 với điểm đánh dấu cắt ngắn
  • Vấn đề phía trước YAML bị loại bỏ.hermes.md vấn đề phía trước đã bị xóa (dành riêng cho việc ghi đè cấu hình trong tương lai)

Lớp chỉ có thời gian gọi API

Những điều này được cố tình không tồn tại như một phần của lời nhắc hệ thống được lưu trong bộ nhớ đệm:- ephemeral_system_prompt

  • tin nhắn điền trước
  • lớp phủ bối cảnh phiên có nguồn gốc từ cổng
  • Việc thu hồi Honcho ở lượt sau được đưa vào tin nhắn của người dùng ở lượt hiện tại

Sự tách biệt này giữ cho tiền tố ổn định ổn định cho bộ nhớ đệm.

Ảnh chụp nhanh bộ nhớ

Bộ nhớ cục bộ và dữ liệu hồ sơ người dùng được đưa vào dưới dạng ảnh chụp nhanh cố định khi bắt đầu phiên. Giữa phiên ghi trạng thái đĩa cập nhật nhưng không thay đổi lời nhắc hệ thống đã được tạo sẵn cho đến khi xảy ra phiên mới hoặc quá trình xây dựng lại bắt buộc.

Tệp ngữ cảnh

agent/prompt_builder.py quét và dọn dẹp các tệp ngữ cảnh của dự án bằng cách sử dụng hệ thống ưu tiên — chỉ một loại được tải (trận đầu tiên thắng):

  1. .hermes.md / HERMES.md (đi tới git root)
  2. AGENTS.md (CWD khi khởi động; các thư mục con được phát hiện dần dần trong phiên thông qua agent/subdirectory_hints.py )
  3. CLAUDE.md (chỉ CWD)
  4. .cursorrules / .cursor/rules/*.mdc (chỉ CWD)

SOUL.md được tải riêng thông qua load_soul_md() cho khe nhận dạng. Khi tải thành công, build_context_files_prompt(skip_soul=True) sẽ ngăn nó xuất hiện hai lần.

Các tập tin dài được cắt ngắn trước khi tiêm.

Chỉ số kỹ năng

Hệ thống kỹ năng đóng góp một chỉ số kỹ năng nhỏ gọn vào lời nhắc khi có sẵn công cụ kỹ năng.

Tại sao hệ thống nhắc nhở lại được chia theo cách này

Kiến trúc được tối ưu hóa có chủ ý để:

  • duy trì bộ nhớ đệm nhanh chóng phía nhà cung cấp
  • tránh thay đổi lịch sử một cách không cần thiết
  • giữ cho ngữ nghĩa bộ nhớ dễ hiểu
  • để cổng/ACP/CLI thêm ngữ cảnh mà không làm nhiễm độc trạng thái nhắc nhở liên tục

Tài liệu liên quan