docs/en/s08-skill-system.mdXem bản gốc Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.
s08: Hệ thống kỹ năng
s00 > s01 > s02 > s03 > s04 > s05 > s06 > s07 > [ s08 ] > s09 > s10 > s11 > s12 > s13 > s14 > s15 > s16 > s17 > s18 > s19 > s20 > s21 > s22 > s23 > s24 > s25 > s26 > s27
Công cụ là những khả năng được mã hóa cứng trong nguồn; kỹ năng là kinh nghiệm mà nhân viên tự quản lý.
Chương này giải quyết vấn đề gì
Bởi s07, agent có bộ nhớ phiên chéo. Nhưng trí nhớ lưu trữ kiến thức khai báo (sự kiện, sở thích, quy ước).
Có một loại kiến thức khác mà nó không thể nắm bắt được:
"Khi giải quyết loại nhiệm vụ này, tôi nên làm theo những bước nào? Tôi nên đề phòng những cạm bẫy nào?"
Ví dụ:
- Những mục cần kiểm tra trong quá trình xem xét mã
- Cách xử lý các giá trị bị thiếu trong quá trình phân tích dữ liệu
- Cấu trúc thư mục chuẩn khi xây dựng MCP server là gì
Đây là kiến thức về quy trình -- không phải một sự thật đơn lẻ mà là toàn bộ phương pháp luận.
Nếu bạn nhét chúng vào dấu nhắc hệ thống, nó sẽ nhanh chóng trở nên cồng kềnh và không thể bảo trì được. Nếu bạn không lưu chúng, agent sẽ phải tìm hiểu mọi thứ từ đầu mỗi khi gặp cùng một loại nhiệm vụ.
Đó là lý do vì sao cần có hệ thống kỹ năng:
Hãy để coding agent các phương pháp tiếp cận thành công vào tệp và tải chúng theo yêu cầu vào lần tiếp theo khi nó gặp một tác vụ tương tự.

Giải thích các thuật ngữ chính
Kỹ năng là gì
Một bảng hướng dẫn có thể tái sử dụng được sắp xếp xung quanh một loại nhiệm vụ. Được lưu trữ dưới dạng SKILL.md tập tin.
Nó thường nói với agent:
- Khi nào nên sử dụng nó
- Các bước cần thực hiện đối với loại nhiệm vụ này
- Những cạm bẫy cần chú ý
- Những mẫu hoặc ví dụ để tham khảo
Sự khác biệt giữa kỹ năng và công cụ
tool: Một khả năng được mã hóa cứng bằng Python. Được viết bởi nhà phát triển. Việc thêm một công cụ mới yêu cầu phải viết mã.skill: Một tập tin đánh dấu. agent có thể tự tạo, chỉnh sửa và xóa chúng. Không cần thay đổi mã.
Kỹ năng được thực hiện thông qua các công cụ hiện có. Ví dụ: kỹ năng "phân tích dữ liệu" có thể nói "chạy tập lệnh gấu trúc qua terminal" -- kỹ năng mô tả cách tiếp cận, công cụ cung cấp phương tiện.
Sự khác biệt giữa kỹ năng và trí nhớ
memory: Kiến thức khai báo. "Người dùng thích các tab hơn." "Dự án sử dụng pytest."skill: Kiến thức quy trình. "Khi thực hiện đánh giá mã, hãy làm theo danh sách kiểm tra này."
Một phép thử quỳ tím đơn giản:
- Một sự thật -> ký ức
- Phương pháp -> kỹ năng
Tiết lộ lũy tiến là gì
Hệ thống kỹ năng sử dụng ba lớp tiếp xúc:
- Lớp chỉ mục: Chỉ hiển thị tên và mô tả (hàng chục kỹ năng chỉ chiếm vài trăm token)
- Lớp nội dung: Mô hình tải toàn bộ nội dung SKILL.md khi nó quyết định cần thiết
- Lớp đính kèm: Tệp tham chiếu, mẫu và tập lệnh trong thư mục kỹ năng, chỉ được tải khi cần
Thông thường dấu nhắc hệ thống chỉ chứa lớp chỉ mục. Nội dung và phần đính kèm chỉ được tải vào cuộc trò chuyện thông qua lệnh gọi công cụ khi cần thiết.
Mô hình tinh thần tối thiểu
system prompt
|
+-- Skills available:
- code-review: Code review checklist
- data-analysis: CSV/DataFrame analysis workflow
- mcp-builder: Build an MCP server
When the model decides it needs a skill:
skill_view("code-review")
|
v
tool_result: full SKILL.md body
|
v
Agent follows the skill content to execute the task
Nhưng agent Hermes còn tiến thêm một bước nữa: agent không chỉ có thể đọc các kỹ năng mà còn có thể tạo và chỉnh sửa chúng.
Agent completes a data analysis task
|
v
Agent judges this approach is worth reusing
|
v
skill_manage(action="create", name="data-analysis", content="...")
|
v
~/.hermes/skills/data-analysis/SKILL.md is created
Next time a similar task comes up:
skill_view("data-analysis") -> load the approach -> follow the steps directly
Đây là điểm khác biệt giữa agent Hermes với hầu hết các hệ thống agent: không phải tất cả các kỹ năng đều được xác định trước -- một số kỹ năng được chắt lọc từ kinh nghiệm của chính agent.
Cấu trúc dữ liệu chính
1. Định dạng SKILL.md
---
name: code-review
description: Checklist for reviewing code changes
version: 1.0.0
---
# Code Review
## Steps
1. Check for obvious bugs
2. Verify test coverage
3. Review naming conventions
...
Vấn đề phía trước (giữa ---) là siêu dữ liệu có cấu trúc. Phần thân được đánh dấu ở dạng tự do.
2. Cấu trúc thư mục kỹ năng
~/.hermes/skills/
+-- code-review/
| +-- SKILL.md
+-- data-analysis/
| +-- SKILL.md
| +-- references/
| | +-- pandas-cheatsheet.md
| +-- templates/
| +-- report-template.md
+-- software-development/
+-- git-workflow/
+-- SKILL.md
Mỗi kỹ năng là một thư mục phải chứa một SKILL.md. Nó có thể có references/, templates/, scripts/và assets/ thư mục con cho các tệp đính kèm.
3. Trạng thái sẵn có của kỹ năng
available -- Can be used directly
setup_needed -- Missing dependencies (e.g. an environment variable is not set)
unsupported -- Not supported on the current platform
Các kỹ năng có thể khai báo các phần phụ thuộc (biến môi trường, công cụ dòng lệnh) và các hạn chế của nền tảng (chỉ macOS). Những kỹ năng không đáp ứng yêu cầu sẽ không xuất hiện trong chỉ mục.
Thực hiện tối thiểu
Bước 1: Quét thư mục kỹ năng
def discover_skills(skills_dir):
skills = {}
for skill_dir in skills_dir.iterdir():
skill_md = skill_dir / "SKILL.md"
if skill_md.exists():
meta, body = parse_frontmatter(skill_md.read_text())
skills[meta["name"]] = {
"name": meta["name"],
"description": meta.get("description", ""),
"body": body,
"path": skill_dir,
}
return skills
Bước 2: Đưa chỉ số kỹ năng vào dấu nhắc hệ thống
# Only names and descriptions -- not the full body
skills_index = "\n".join(
f"- {s['name']}: {s['description']}"
for s in skills.values()
)
prompt_parts.append(f"# Available Skills\n{skills_index}")
Ý tưởng chính đằng sau bước này:
Chỉ số rẻ (vài trăm token); phần thân đắt tiền (có thể là hàng nghìn token). Chỉ bao gồm chỉ mục theo mặc định.
Bước 3: Cung cấp công cụ xem
def skill_view(name, file=None):
skill = skills.get(name)
if not skill:
return f"Skill '{name}' not found"
if file:
# Load an attachment
return (skill["path"] / file).read_text()
return skill["body"]
Bước 4: Cung cấp công cụ quản lý
def skill_manage(action, name, content=None):
if action == "create":
skill_dir = skills_dir / name
skill_dir.mkdir(parents=True)
(skill_dir / "SKILL.md").write_text(content)
return f"Created skill: {name}"
if action == "edit":
(skills_dir / name / "SKILL.md").write_text(content)
return f"Updated skill: {name}"
if action == "delete":
shutil.rmtree(skills_dir / name)
return f"Deleted skill: {name}"
Bước này là điều khiến agent Hermes trở nên độc đáo: agent không chỉ là người tiêu dùng kỹ năng mà còn là người sáng tạo.
Làm thế nào nó phù hợp với vòng lặp chính
Sau chương này, dấu nhắc hệ thống không còn chỉ chứa các quy tắc nhận dạng, bộ nhớ và dự án nữa.
Nó phát triển một phần mới: chỉ số kỹ năng có sẵn.
Và luồng tin nhắn nhận được một kiểu chèn theo yêu cầu mới: toàn bộ nội dung của một kỹ năng nhất định.
Nói cách khác, đầu vào hệ thống hiện được chia thành hai tầng:
Stable tier (present every turn):
Identity, memory, project rules, tool definitions, skills index
On-demand tier (loaded only when needed):
A skill's SKILL.md body
A skill's attachment files
Sự phân chia "cấp ổn định + cấp theo yêu cầu" này rất quan trọng vì cấp ổn định xác định tốc độ truy cập bộ đệm nhanh chóng -- cấp càng ổn định thì bộ đệm càng hiệu quả. Nội dung theo yêu cầu nhập thông qua tool_result và không ảnh hưởng đến lời nhắc hệ thống.
Đây cũng là lý do tại sao không nên đưa nội dung kỹ năng vào lời nhắc hệ thống: chúng sẽ khiến cấp độ ổn định không ổn định.
Lựa chọn thiết kế độc đáo của agent Hermes tại đây
1. agent tự tạo và chỉnh sửa kỹ năng
Hầu hết các khung agent đều coi các kỹ năng là chỉ đọc (được nhà phát triển xác định trước). agent Hermes cho phép agent tạo, chỉnh sửa và xóa các kỹ năng thông qua skill_manage công cụ.
Điều này có nghĩa là nhân viên hỗ trợ có thể rút kinh nghiệm: "cách tiếp cận đó đã hoạt động tốt vào lần trước -> lưu nó dưới dạng kỹ năng -> sử dụng trực tiếp vào lần tiếp theo."
2. Quét bảo mật
Các kỹ năng do agent tạo ra sẽ trải qua quá trình quét bảo mật giống như các kỹ năng được cài đặt từ Hub. Hệ thống kiểm tra xem SKILL.md có chứa các hướng dẫn tiêm lệnh đáng ngờ hoặc độc hại hay không.
3. Kỹ năng đa nguồn
Kỹ năng đến từ nhiều nguồn:
- Kỹ năng tích hợp: Dự án riêng
skills/thư mục - Kỹ năng người dùng: Được tạo bởi agent hoặc người dùng theo
~/.hermes/skills/ - Cài đặt Hub: Được cài đặt từ Agentkills.io, GitHub và các nguồn khác
- Thư mục bên ngoài: Thư mục kỹ năng bổ sung được cấu hình trong config
Các kỹ năng được cài đặt trên GitHub là tốt nhất cho các quy trình làm việc hẹp có thể làm tăng phần cốt lõi
agent nếu chúng được tích hợp sẵn. Ví dụ: một nhóm có thể cài đặt Hermes Tweet từ
Xquik-dev/hermes-tweet khi agent cần plugin Hermes Agent X/Twitter
để tìm kiếm/tìm kiếm tweet, tìm kiếm Twitter/X, đọc phản hồi tweet, tra cứu người dùng,
theo dõi các tweet, xuất người theo dõi và các bài đăng/trả lời có kiểm soát xác nhận,
gửi DM và tự động hóa các hành động X. Mô tả chỉ mục của nó phải rõ ràng,
ví dụ: hermes-tweet: Plugin Hermes Agent X/Twitter dành cho tweet đọc đầu tiên nghiên cứu và thực hiện các hành động kiểm soát tài khoản.
Khi có xung đột tên giữa các nguồn, kỹ năng của người dùng sẽ được ưu tiên.
4. Nâng cao kỹ năng
Mỗi số lượt gọi công cụ nhất định, nhân viên được nhắc nhở "xem xét liệu có kỹ năng nào đáng để tạo hoặc cải thiện hay không". Đây là một cú huých, không phải là một hành động tự động.
5. Bộ nhớ đệm hai tầng
Đoạn nhắc hệ thống cho chỉ mục kỹ năng có hai lớp bộ đệm: bộ đệm LRU trong quá trình cộng với ảnh chụp nhanh ổ đĩa. Điều này tránh việc quét lại hệ thống tệp trong mỗi lệnh gọi API.
Ranh giới giữa kỹ năng, trí nhớ, SOUL.md và HERMES.md
| kỹ năng | trí nhớ | SOUL.md | HERMES.md | |
|---|---|---|---|---|
| Nó là gì | Phương pháp luận cho một loại nhiệm vụ | Thông tin chéo phiên | Nhân cách | Quy tắc dự án |
| Ví dụ | "Danh sách kiểm tra đánh giá mã" | "Người dùng thích các tab" | "Bạn là một trợ lý ngắn gọn" | "Chạy thử với pytest" |
| Ai viết nó | agent hoặc nhà phát triển | agent | Người dùng | Nhà phát triển |
| Ở đâu trong dấu nhắc | Chỉ mục trong dấu nhắc hệ thống; cơ thể nạp theo yêu cầu | Bị đóng băng trong dấu nhắc hệ thống | Ngay từ đầu lời nhắc hệ thống | Trong dấu nhắc hệ thống |
| Kích thước | Hàng trăm đến hàng nghìn ký tự mỗi | Giới hạn ký tự | Thường ngắn | Thay đổi theo dự án |
Những lỗi thường gặp của người mới bắt đầu
1. Nhồi vĩnh viễn tất cả các nội dung kỹ năng vào dấu nhắc hệ thống
Toàn bộ 20 kỹ năng có thể là hàng chục nghìn token. Chỉ bao gồm chỉ mục; tải cơ thể theo yêu cầu.
2. Kết hợp kỹ năng và trí nhớ
Kỹ năng là “làm thế nào để làm điều đó”; trí nhớ là "những gì bạn biết." Một cái là thủ tục, cái kia là sự thật.
3. Để các kỹ năng do agent tạo bỏ qua kiểm tra bảo mật
Các tệp SKILL.md do agent tạo có thể chứa các hướng dẫn nguy hiểm. Họ cần quét bảo mật giống như các kỹ năng được cài đặt bên ngoài.
4. Viết mục chỉ số kỹ năng yếu
Tên không có mô tả sẽ khiến mô hình không thể đánh giá khi nào tải nó. Phần mô tả phải cho mô hình biết rõ ràng "kỹ năng này áp dụng cho kịch bản nào".
5. Coi kỹ năng là quy tắc tuyệt đối
Các kỹ năng giống như “những cách thực hành được khuyến nghị”, chứ không phải những nhiệm vụ cứng nhắc cho mọi tình huống. Mô hình phải có khả năng thích ứng linh hoạt tùy theo hoàn cảnh thực tế.
Ranh giới giảng dạy
Chương này nên nắm chắc ba điều:
- Tiết lộ lũy tiến: Chỉ mục tồn tại trong lời nhắc; cơ thể được tải theo yêu cầu
- agent có thể ghi: agent không chỉ là người tiêu dùng mà còn là người sáng tạo
- Ranh giới với trí nhớ: Sự kiện và phương pháp luận
Cố ý trì hoãn: quy trình cài đặt Hub đầy đủ, hợp nhất ưu tiên nhiều nguồn, quy tắc quét bảo mật cụ thể, chiến lược vô hiệu hóa bộ đệm.
Nếu người đọc có thể yêu cầu agent "lưu cách tiếp cận thành công dưới dạng tệp kỹ năng và tải nó vào lần tiếp theo khi có nhiệm vụ tương tự", thì chương này đã đạt được mục tiêu.
Sau khi kết thúc chương này, bạn sẽ có thể trả lời
- Sự khác biệt giữa kỹ năng và công cụ là gì?
- Sự khác biệt giữa kỹ năng và trí nhớ là gì?
- Tại sao không nên đặt cố định nội dung kỹ năng trong lời nhắc hệ thống?
- Những cân nhắc bảo mật bổ sung nào áp dụng cho các kỹ năng do agent tạo ra?
- Ba lớp tiết lộ tiến bộ là gì?
Một dòng cần nhớ: Kỹ năng là bộ nhớ thủ tục của agent -- không phải "những gì nó biết" mà là "nó thực hiện mọi việc như thế nào". Trong agent Hermes, agent không chỉ sử dụng kỹ năng; nó tạo ra và cải thiện chúng từ kinh nghiệm.