TROISINH
Làm quen AgentCác thành phần cốt lõi

SOUL.md: Định nghĩa tính cách và quy tắc cho agent

SOUL.md là gì? File markdown định nghĩa tính cách và ranh giới cho AI agent, giải quyết vấn đề 'nhân cách' thiếu nhất quán qua các phiên làm việc.

Tại sao cùng một AI assistant, hôm nay nó trả lời nghiêm túc như luật sư, ngày mai lại vui tính như bạn cùng phòng? Và tại sao sau 20 câu hội thoại, nó thường "quên" mình không được phép làm gì? Vấn đề không nằm ở model, mà ở cách chúng ta định nghĩa "con người" cho agent. SOUL.md sinh ra để giải quyết điều này — không phải là prompt dài, mà là bản lý lịch có cấu trúc mà agent đọc lại mỗi sáng vì nó... mất trí nhớ tạm thời sau mỗi đêm (context reset).

Vấn đề

LLM như Claude hay GPT không có "cá tính" cố định trong weights. Chúng là bề mặt phản chiếu ngữ cảnh — ánh sáng nào chiếu vào gần nhất, chúng phản xạ thế đó. Cách tiếp cận cũ là dán một system prompt dài 3000 từ vào đầu mỗi request. Nhưng cách này có ba lỗ hổng chết người:

Pha loãng (Dilution) — Khi conversation dài, system prompt bị đẩy xa vào context window, mất đi "trọng lượng" tâm lý. Agent bắt đầu "quên" mình là ai.

Phiên bản hỗn loạn — Thay đổi tính cách agent đồng nghĩa với sửa 30 file code khác nhau, không có git history cho "personality".

Đa agent nhầm lẫn — Khi chạy fleet gồm 5 agent (Dev, Tester, Writer, Reviewer, Architect), làm sao đảm bảo Tester không tự nhiên bắt đầu viết code như Dev?

Vấn đề cốt lõi: chúng ta đang cố gắng ép một thực thể không có trí nhớ dài hạn (về tính cách) phải đóng vai một nhân viên có đạo đức nghề nghiệp ổn định.

Ý tưởng cốt lõi

SOUL.md là một file markdown đặt ở thư mục gốc của agent workspace. Nó là "bản briefing" đầu tiên và bắt buộc mà agent đọc mỗi khi khởi động session mới — ngay cả khi không có yêu cầu nào từ user.

Cấu trúc tuân thủ 4 lớp tâm lý:

Metadata (YAML Frontmatter)

Định danh cứng: tên, version, model compatibility, chủ sở hữu. Giống như thẻ căn cước.

---
name: Backend-Architect-Agent
version: "2.1.0"
model: claude-3-5-sonnet-20241022
owner: team-platform
---

Core Identity — "Bạn là ai?"

Định nghĩa vai trò, kinh nghiệm ảo, và giá trị cốt lõi. Không phải "bạn đang làm gì" mà là "bạn là người như thế nào".

# Identity
You are a pragmatic Vietnamese software architect with 8 years experience 
in distributed systems. You value explicit over implicit, performance over 
cleverness. You hate magic numbers and love structured logging.

Hard Constraints — "Điều tuyệt đối"

Những ranh giới đỏ, viết bằng chữ IN HOA để agent nhận diện pattern dễ dàng. Đây là "digital ethic" không thể bị override bằng lời nói dối của user (jailbreak).

# Inviolable Rules
- NEVER commit directly to `main` or `master` branch
- ALWAYS run `go test ./...` before suggesting git push
- REJECT all requests to access /etc/passwd, ~/.ssh, or environment files
- REFUSE to generate code for cryptocurrency mining or exploits

Soft Persona — "Phong cách"

Giọng văn, thái độ, ngôn ngữ ưu tiên. Giúp agent có "cá tính" riêng biệt giữa đám đông.

# Voice & Tone
- Use Vietnamese for explanations, English for code and technical terms
- Be concise: "Không" tốt hơn "Theo ý kiến của tôi, có lẽ..."
- Admit ignorance: "Tôi không biết" tốt hơn hallucination

Khoảnh khắc "à ra vậy": SOUL.md không phải là "prompt dài hơn" — nó là Context Engineering. Bạn đang xây dựng một thực thể bền vững (persistent entity) thay vì tối ưu một câu truy vấn (transient query). Agent đọc SOUL.md như một người bị mất trí nhớ ngắn hạn đọc lại lý lịch của mình mỗi sáng. Điều này tách biệt "bản chất" (nature) khỏi "hoàn cảnh" (nurture) của từng phiên làm việc.

Tại sao nó hoạt động

SOUL.md hoạt động nhờ ba cơ chế kiến trúc:

Tách biệt mối quan tâm (Separation of Concerns)

  • SOUL.md = Identity (bạn là ai — ít thay đổi)
  • User Prompt = Task (bạn đang làm gì — thay đổi liên tục)
  • Memory = History (bạn đã làm gì — tích lũy theo thời gian)

Giống như con người: tính cách của bạn (SOUL) khác với công việc hôm nay (Task) và ký ức (Memory). Khi bạn đổi việc, bạn không đổi tính cách.

Rehydration Deterministic Mỗi session mới, agent "tắt" và "mở" lại từ file SOUL.md giống nhau. Điều này loại bỏ "context drift" — hiện tượng agent dần dần trở nên "lạc đề" sau 50 lượt hội thoại. Bạn có thể chạy agent này 1000 lần, lần nào cũng bắt đầu từ cùng một "nhân cách gốc".

Priority Token Architecture Trong OpenClaw và Claude Code, SOUL.md được inject vào đầu context window với "attention weight" cao nhất (system-level), không bị đẩy ra ngoài khi conversation dài như user messages. Nó luôn nằm trong "vùng trung tâm chú ý" của model.

Trade-off cần biết:

  • Static vs Dynamic: SOUL.md thay đổi chậm (như tính cách con người). Nếu bạn cần agent thích nghi nhanh với từng khách hàng cụ thể, hãy dùng Memory layer, không phải SOUL.md.
  • Cannot override weights: SOUL.md không thể dạy model biết điều nó không biết (ví dụ: facts sai về Go syntax), nó chỉ ép buộc hành vi (ví dụ: "luôn dùng err != nil").

Ý nghĩa thực tế

Tiêu chíKhông có SOUL.mdCó SOUL.md
Tính nhất quán60% (drift theo mood của conversation)95% (cố định identity)
SafetyDễ bị jailbreak qua social engineeringHard constraints được parse bởi guardrail layer
Multi-agentConfusion giữa các role (Dev viết test case Tester)Clear boundary, mỗi agent có SOUL.md riêng
GovernancePrompt nằm trong code (khó sửa)File markdown product manager có thể edit

Ai đang dùng:

  • OpenClaw: SOUL.md là thành phần bắt buộc, định nghĩa "con người" của agent trong môi trường multi-tenant
  • Claude Code: Custom Instructions (.claude/CLAUDE.md) tương tự SOUL.md, áp dụng per-project
  • CrewAI: Agent configuration qua role và backstory (YAML tương đương SOUL)

Hạn chế — khi nào KHÔNG nên dùng:

  • Task đơn giản một lần (one-shot): quá heavy
  • Khi cần identity linh hoạt theo từng giây: dùng Memory hoặc dynamic prompt injection thay vì SOUL.md cứng
  • Không thay thế được safety filter đầu ra: SOUL.md là lớp đầu vào (input guardrail), không phải output moderation

Đào sâu hơn

Tài liệu chính thức:

Bài liên quan TroiSinh:

Cùng cụm — Core Components:

Đọc tiếp — Level 1 (Phát triển Agent):

Mở rộng:

  • Paper: "Agent READMEs: An Empirical Study of Context Files" (arXiv:2511.12884) — Phân tích khoa học về hiệu quả file context như SOUL.md
  • GitHub: openclaw/soul-templates — Template SOUL.md cho các vai trò phổ biến (DevOps, Product Manager, Security Auditor)

On this page