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 có sẵn, nếu không thì quay trở 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à DEFAULT_AGENT_IDENTITY mã hóa cứng được sử dụng thay thế.

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ác nhâ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ẽ chuyển về:

`
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ỉ một loại ngữ cảnh dự án được tải (trận đầu tiên thắng):

``` python

# 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ên | Tập tin | Phạm vi tìm kiếm | Ghi chú |
|----------|-------|-------------|-------|
| 1 |

.Hermes.md

,
`Hermes.md
` | CWD lên đến git root | Cấu hình dự án gốc Hermes |
| 2 |

AGENTS.md
` | Chỉ CWD | File hướng dẫn tác nhân thông thường |
| 3 |

Claude.md
` | Chỉ CWD | Khả năng tương thích mã Claude |
| 4 |

.Cursorrules

,

.Cursor/rules/*.mdc
` | Chỉ CWD | Khả 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
- **Loại bỏ vật chất phía trước YAML** — Vật chất phía trước

.Hermes.md
` bị loại bỏ (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.

## Bề mặt tùy chỉnh nhanh chóng được hỗ trợHầu hết người dùng nên coi
`agent/prompt_builder.py
` là mã triển khai chứ không phải là bề mặt cấu hình. Đường dẫn tùy chỉnh được hỗ trợ là thay đổi các đầu vào nhắc nhở mà Hermes đã tải, thay vì chỉnh sửa các mẫu Python tại chỗ.

### Hãy sử dụng những bề mặt này trước
-

~/.Hermes/SOUL.md

- thay thế khối nhận dạng mặc định tích hợp bằng tính cách đặc vụ và hành vi thường trực của riêng bạn.
-

~/.Hermes/MEMORY.md
` và

~/.Hermes/USER.md

- cung cấp dữ liệu bền vững giữa các phiên và dữ liệu hồ sơ người dùng cần được chụp nhanh trong các phiên mới.
- Các tệp ngữ cảnh dự án như

.Hermes.md

,
`Hermes.md

,
`AGENTS.md

,
`Claude.md
` hoặc

.Cursorrules
` — đưa vào các quy tắc làm việc dành riêng cho kho lưu trữ.
- Kỹ năng - đóng gói các quy trình công việc và tài liệu tham khảo có thể tái sử dụng mà không cần chỉnh sửa mã nhắc nhở cốt lõi.
- Ghi đè cấu hình/API lời nhắc hệ thống tùy chọn — thêm văn bản hướng dẫn dành riêng cho việc triển khai mà không cần chuyển đổi Hermes.
- Các lớp phủ tạm thời như
`Hermes_EPHEMERAL_SYSTEM_PROMPT
` hoặc thông báo điền trước — thêm hướng dẫn theo phạm vi theo lượt không được trở thành một phần của tiền tố lời nhắc được lưu trong bộ nhớ đệm.

### Khi nào cần chỉnh sửa mã

Chỉ chỉnh sửa
`agent/prompt_builder.py
` nếu bạn cố tình duy trì một nhánh hoặc góp phần thay đổi hành vi ngược dòng. Tệp đó tập hợp hệ thống ống nước nhanh chóng, ranh giới bộ đệm và thứ tự chèn cho mỗi phiên. Chỉnh sửa trực tiếp là những thay đổi về sản phẩm toàn cầu, không phải tùy chỉnh theo lời nhắc của mỗi người dùng.

Nói cách khác:
- nếu bạn muốn một danh tính trợ lý khác, hãy chỉnh sửa
`SOUL.md

- nếu bạn muốn các quy tắc repo khác nhau, hãy chỉnh sửa tệp ngữ cảnh dự án
- nếu bạn muốn các quy trình vận hành có thể tái sử dụng, hãy thêm hoặc sửa đổi các kỹ năng
- nếu bạn muốn thay đổi cách Hermes tập hợp lời nhắc cho mọi người, hãy thay đổi Python và coi đó là một đóng góp mã

## 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
- [Context Compression & Prompt Caching](./context-compression-and-caching.md)
- [Session Storage](./session-storage.md)
- [Gateway Internals](./gateway-internals.md)