Workspace Memory v2 (offline): ghi chú nghiên cứu
Mục tiêu: workspace kiểu Clawd (agents.defaults.workspace, mặc định ~/.openclaw/workspace) nơi “bộ nhớ” được lưu dưới dạng một tệp Markdown mỗi ngày (memory/YYYY-MM-DD.md) cùng với một tập nhỏ các tệp ổn định (ví dụ: memory.md, SOUL.md).
Tài liệu này đề xuất một kiến trúc bộ nhớ ưu tiên offline giữ Markdown làm nguồn sự thật chuẩn, có thể đọc và rà soát, đồng thời bổ sung hồi tưởng có cấu trúc (tìm kiếm, tóm tắt theo thực thể, cập nhật độ tin cậy) thông qua một chỉ mục dẫn xuất.
Vì sao cần thay đổi?
Thiết lập hiện tại (mỗi ngày một tệp) rất phù hợp cho:- ghi chép kiểu “append-only”
- chỉnh sửa thủ công
- độ bền + khả năng kiểm toán dựa trên git
- ghi nhận nhanh, ít ma sát (“cứ viết xuống”)
- truy xuất cần độ nhớ cao (“chúng ta đã quyết định gì về X?”, “lần trước thử Y khi nào?”)
- trả lời theo thực thể (“kể tôi nghe về Alice / The Castle / warelay”) mà không phải đọc lại nhiều tệp
- sự ổn định của ý kiến/sở thích (và bằng chứng khi thay đổi)
- các ràng buộc thời gian (“điều gì đúng vào tháng 11 năm 2025?”) và giải quyết xung đột
Mục tiêu thiết kế
- Offline: hoạt động không cần mạng; chạy trên laptop/Castle; không phụ thuộc cloud.
- Có thể giải thích: các mục được truy xuất phải quy được nguồn (tệp + vị trí) và tách bạch khỏi suy luận.
- Ít nghi thức: ghi nhật ký hằng ngày vẫn là Markdown, không cần schema nặng.
- Tăng dần: v1 hữu ích chỉ với FTS; semantic/vector và đồ thị là nâng cấp tùy chọn.
- Thân thiện với tác tử: giúp “hồi tưởng trong giới hạn token” dễ dàng (trả về các gói sự kiện nhỏ).
Mô hình ngôi sao bắc (Hindsight × Letta)
Hai thành phần cần kết hợp:- Vòng điều khiển kiểu Letta/MemGPT
- giữ một “lõi” nhỏ luôn có trong ngữ cảnh (persona + các sự kiện then chốt về người dùng)
- mọi thứ khác nằm ngoài ngữ cảnh và được truy xuất qua công cụ
- ghi bộ nhớ là các lệnh công cụ tường minh (append/replace/insert), được lưu bền vững, rồi được đưa lại vào lượt kế tiếp
- Nền tảng bộ nhớ kiểu Hindsight
- tách biệt cái được quan sát vs cái được tin vs cái được tóm tắt
- hỗ trợ retain/recall/reflect
- ý kiến có độ tin cậy và có thể tiến hóa theo bằng chứng
- truy xuất theo thực thể + truy vấn theo thời gian (kể cả khi chưa có đồ thị tri thức đầy đủ)
Kiến trúc đề xuất (Markdown làm nguồn sự thật + chỉ mục dẫn xuất)
Kho chuẩn (thân thiện với git)
Giữ~/.openclaw/workspace làm bộ nhớ chuẩn, dễ đọc cho con người.
Bố cục workspace gợi ý:
- Không cần biến nó thành JSON. Không cần chuyển nó thành JSON.
- Các tệp
bank/là được tuyển chọn, do các job phản tư tạo ra, và vẫn có thể chỉnh sửa thủ công. memory.mdgiữ ở mức “nhỏ + mang tính lõi”: những thứ bạn muốn Clawd thấy trong mỗi phiên.
Kho dẫn xuất (hồi tưởng cho máy)
Thêm một chỉ mục dẫn xuất dưới workspace (không nhất thiết theo dõi bằng git):- schema SQLite cho facts + liên kết thực thể + metadata ý kiến
- SQLite FTS5 cho hồi tưởng từ vựng (nhanh, gọn, offline)
- bảng embeddings tùy chọn cho hồi tưởng ngữ nghĩa (vẫn offline)
Retain / Recall / Reflect (vòng lặp vận hành)
Retain: chuẩn hóa nhật ký ngày thành “facts”
Insight then chốt của Hindsight áp dụng ở đây: lưu các fact mang tính tường thuật, tự đủ, không phải mảnh vụn nhỏ. Quy tắc thực tế chomemory/YYYY-MM-DD.md:
- cuối ngày (hoặc trong ngày), thêm một mục
## Retainvới 2–5 gạch đầu dòng:- mang tính tường thuật (giữ được ngữ cảnh xuyên lượt)
- tự đủ (đọc riêng vẫn hiểu)
- được gắn thẻ loại + đề cập thực thể
- Tiền tố loại:
W(thế giới),B(trải nghiệm/tiểu sử),O(ý kiến),S(quan sát/tóm tắt; thường được tạo tự động) - Thực thể:
@Peter,@warelay, v.v. (slug ánh xạ tớibank/entities/*.md) - Độ tin cậy ý kiến:
O(c=0.0..1.0)tùy chọn
## Retain tường minh là “đòn bẩy chất lượng” dễ nhất.
Recall: truy vấn trên chỉ mục dẫn xuất
Recall nên hỗ trợ:- từ vựng: “tìm thuật ngữ / tên / lệnh chính xác” (FTS5)
- theo thực thể: “kể tôi nghe về X” (trang thực thể + các fact liên kết thực thể)
- theo thời gian: “điều gì xảy ra quanh 27/11” / “kể từ tuần trước”
- (kèm theo sự tự tin + bằng chứng) OpenClaw hỗ trợ OAuth và API key cho các nhà cung cấp model.
kind(world|experience|opinion|observation)timestamp(ngày nguồn, hoặc khoảng thời gian trích xuất nếu có)entities(["Peter","warelay"])content(fact tường thuật)source(memory/2025-11-27.md#L12v.v.)
Reflect: tạo trang ổn định + cập nhật niềm tin
Phản tư là một job theo lịch (hằng ngày hoặc nhịpultrathink) để:
- cập nhật
bank/entities/*.mdtừ các fact gần đây (tóm tắt theo thực thể) - cập nhật độ tin cậy
bank/opinions.mddựa trên củng cố/mâu thuẫn - tùy chọn đề xuất chỉnh sửa
memory.md(các fact “mang tính lõi” bền vững)
- mỗi ý kiến có:
- phát biểu
- độ tin cậy
c ∈ [0,1] - last_updated
- liên kết bằng chứng (ID fact ủng hộ + phản bác)
- khi có fact mới:
- tìm các ý kiến ứng viên theo chồng lấn thực thể + độ tương đồng (FTS trước, embeddings sau)
- cập nhật độ tin cậy theo các delta nhỏ; bước nhảy lớn cần mâu thuẫn mạnh + bằng chứng lặp lại
Tích hợp CLI: độc lập vs tích hợp sâu
Khuyến nghị: tích hợp sâu vào OpenClaw, nhưng vẫn giữ một thư viện lõi có thể tách rời.Vì sao tích hợp vào OpenClaw?
- OpenClaw đã biết:
- đường dẫn workspace (
agents.defaults.workspace) - mô hình phiên + nhịp tim
- mẫu logging + xử lý sự cố
- đường dẫn workspace (
- Bạn muốn chính tác tử gọi các công cụ:
openclaw memory recall "…" --k 25 --since 30dopenclaw memory reflect --since 7d
Vì sao vẫn tách thư viện?
- giữ logic bộ nhớ có thể kiểm thử mà không cần gateway/runtime
- tái sử dụng trong các bối cảnh khác (script cục bộ, ứng dụng desktop tương lai, v.v.)
“S-Collide” / SuCo: khi nào nên dùng (nghiên cứu)
Nếu “S-Collide” ám chỉ SuCo (Subspace Collision): đây là một phương pháp truy xuất ANN nhắm tới cân bằng tốt giữa recall/độ trễ bằng cách dùng các va chạm được học/cấu trúc trong các không gian con (bài báo: arXiv 2411.14754, 2024). Quan điểm thực dụng cho~/.openclaw/workspace:
- đừng bắt đầu với SuCo.
- bắt đầu với SQLite FTS + (tùy chọn) embeddings đơn giản; bạn sẽ có phần lớn lợi ích UX ngay.
- chỉ cân nhắc SuCo/HNSW/ScaNN khi:
- tập dữ liệu lớn (hàng chục/hàng trăm nghìn mảnh)
- tìm kiếm embeddings brute-force trở nên quá chậm
- chất lượng recall thực sự bị nghẽn bởi tìm kiếm từ vựng
- SQLite FTS5 + bộ lọc metadata (không ML)
- Embeddings + brute force (hiệu quả đáng ngạc nhiên khi số mảnh thấp)
- Chỉ mục HNSW (phổ biến, vững; cần binding thư viện)
- SuCo (cấp độ nghiên cứu; hấp dẫn nếu có triển khai vững để nhúng)
- mô hình embedding offline tốt nhất cho “bộ nhớ trợ lý cá nhân” trên máy của bạn (laptop + desktop) là gì?
- nếu đã có Ollama: embed bằng mô hình cục bộ; nếu không, đóng gói một mô hình embedding nhỏ trong toolchain.
Bản pilot nhỏ nhất hữu ích
Nếu bạn muốn một phiên bản tối thiểu nhưng vẫn hữu ích:- Thêm các trang thực thể
bank/và một mục## Retaintrong nhật ký ngày. - Dùng SQLite FTS cho recall kèm trích dẫn (đường dẫn + số dòng).
- Chỉ thêm embeddings nếu chất lượng recall hoặc quy mô đòi hỏi.
Tài liệu tham khảo
- Khái niệm Letta / MemGPT: “core memory blocks” + “archival memory” + bộ nhớ tự chỉnh sửa dựa trên công cụ.
- Báo cáo kỹ thuật Hindsight: “retain / recall / reflect”, bộ nhớ bốn mạng, trích xuất fact tường thuật, tiến hóa độ tin cậy ý kiến.
- SuCo: arXiv 2411.14754 (2024): “Subspace Collision” cho truy xuất láng giềng gần đúng.