Những tính năng bổ sung so với công cụ tích hợp sẵn
- Xếp hạng lại và mở rộng truy vấn để cải thiện khả năng tìm thấy kết quả.
- Lập chỉ mục các thư mục bổ sung - tài liệu dự án, ghi chú của nhóm, mọi nội dung trên ổ đĩa.
- Lập chỉ mục bản chép lời phiên - tìm lại các cuộc trò chuyện trước đó.
- Hoàn toàn cục bộ - chạy với plugin nhà cung cấp llama.cpp chính thức và tự động tải xuống các mô hình GGUF.
- Tự động dự phòng - nếu QMD không khả dụng, OpenClaw chuyển sang công cụ tích hợp sẵn một cách liền mạch.
Bắt đầu
Điều kiện tiên quyết
- Cài đặt QMD:
npm install -g @tobilu/qmdhoặcbun install -g @tobilu/qmd - Bản dựng SQLite cho phép phần mở rộng (
brew install sqlitetrên macOS). - QMD phải nằm trong
PATHcủa Gateway. - macOS và Linux hoạt động ngay khi cài đặt. Windows được hỗ trợ tốt nhất qua WSL2.
Bật
~/.openclaw/agents/<agentId>/qmd/ và tự động quản lý vòng đời
của sidecar - các bộ sưu tập, bản cập nhật và lượt chạy nhúng đều được xử lý cho bạn.
OpenClaw ưu tiên các dạng truy vấn bộ sưu tập QMD và MCP hiện tại, nhưng chuyển sang
các cờ mẫu bộ sưu tập thay thế và tên công cụ MCP cũ hơn khi cần.
Quá trình đối soát khi khởi động cũng tạo lại các bộ sưu tập được quản lý đã lỗi thời về
mẫu chuẩn khi vẫn còn một bộ sưu tập QMD cũ có cùng tên.
Cách sidecar hoạt động
- OpenClaw tạo các bộ sưu tập từ những tệp bộ nhớ trong không gian làm việc và mọi
memory.qmd.pathsđã cấu hình, sau đó chạyqmd updatekhi trình quản lý QMD mở và chạy lại định kỳ sau đó (memory.qmd.update.interval, mặc định5m). Các lần làm mới chạy qua tiến trình con QMD, không phải quy trình quét hệ thống tệp trong tiến trình. Các chế độ tìm kiếm ngữ nghĩa cũng chạyqmd embed(memory.qmd.update.embedInterval, mặc định60m). - QMD tiếp tục sở hữu
index.sqlite, cấu hình bộ sưu tập YAML và các mô hình đã tải xuống trong thư mục chính QMD riêng của từng tác tử; đây là các tạo tác của công cụ bên ngoài, không phải bảng trạng thái của OpenClaw. Hoạt động điều phối thuộc sở hữu của OpenClaw chỉ nằm trong SQLite: một hợp đồng thuê dùng chung giới hạn công việc nhúng giữa các tác tử, còn một hợp đồng thuê trong mỗi cơ sở dữ liệu tác tử tuần tự hóa các thao tác ghi bộ sưu tập, cập nhật và nhúng của tác tử đó. Runtime không còn tạo các sidecar tệp khóa QMD.openclaw doctor --fixchỉ xóa các sidecar đã ngừng sử dụng sau khi chứng minh chủ sở hữu tiến trình cũ của chúng đã lỗi thời. Việc nâng cấp là một lần chuyển đổi dứt điểm: dừng và khởi động lại mọi tiến trình OpenClaw dùng chung thư mục trạng thái trước khi sử dụng phiên bản mới. Không hỗ trợ các trình ghi QMD cũ/mới chạy lẫn nhau; runtime chủ ý không khóa kép các sidecar đã ngừng sử dụng. - Bộ sưu tập không gian làm việc mặc định theo dõi
MEMORY.mdcùng câymemory/.memory.mdviết thường không được lập chỉ mục dưới dạng tệp bộ nhớ gốc. - Trình quét riêng của QMD bỏ qua các đường dẫn ẩn và những thư mục phụ thuộc/bản dựng
phổ biến như
.git,.cache,node_modules,vendor,distvàbuild. Theo mặc định, quá trình khởi động Gateway không khởi tạo QMD (memory.qmd.update.startupmặc định làoff), vì vậy quá trình khởi động nguội tránh nhập runtime bộ nhớ hoặc tạo trình theo dõi tồn tại lâu dài trước khi bộ nhớ được sử dụng lần đầu. - Đặt
memory.qmd.update.startupthànhidlehoặcimmediateđể vẫn khởi tạo QMD khi Gateway khởi động.memory.qmd.update.onBootmặc định làtruevà chạy lần làm mới ban đầu khi khởi động; đặt thànhfalseđể bỏ qua lần làm mới tức thì đó (trình quản lý tồn tại lâu dài vẫn mở khi đã cấu hình khoảng thời gian cập nhật hoặc nhúng, vì vậy QMD tiếp tục sở hữu trình theo dõi/bộ hẹn giờ định kỳ của mình). - Các lượt tìm kiếm sử dụng
searchModeđã cấu hình (mặc định:search; cũng hỗ trợvsearchvàquery).searchchỉ dùng BM25, vì vậy OpenClaw bỏ qua các bước kiểm tra mức độ sẵn sàng của vectơ ngữ nghĩa và bảo trì dữ liệu nhúng trong chế độ đó. Nếu một chế độ thất bại, OpenClaw thử lại bằngqmd query. - Khi
searchModelàquery, hãy đặtmemory.qmd.rerankthànhfalseđể sử dụng đường dẫn truy vấn kết hợp của QMD mà không dùng trình xếp hạng lại (yêu cầu QMD 2.1 trở lên). OpenClaw truyền--no-rerankđến đường dẫn CLI trực tiếp của QMD vàrerank: falseđến công cụ truy vấn MCP của QMD. - Với các bản phát hành QMD công bố hỗ trợ bộ lọc nhiều bộ sưu tập, OpenClaw nhóm các bộ sưu tập cùng nguồn vào một lần gọi tìm kiếm QMD. Các bản phát hành QMD cũ hơn vẫn dùng phương án dự phòng tương thích theo từng bộ sưu tập.
- Nếu QMD thất bại hoàn toàn, OpenClaw chuyển sang công cụ SQLite tích hợp sẵn.
Các lần thử lặp lại trong lượt trò chuyện sẽ tạm lùi lại sau khi mở thất bại để
tệp nhị phân bị thiếu hoặc phụ thuộc sidecar bị hỏng không tạo ra một cơn bão thử lại;
openclaw memory statusvà các bước kiểm tra CLI một lần vẫn kiểm tra lại QMD trực tiếp.
Lần tìm kiếm đầu tiên có thể chậm - QMD tự động tải xuống các mô hình GGUF (~2 GB) để
xếp hạng lại và mở rộng truy vấn trong lần chạy
qmd query đầu tiên.Hiệu năng và khả năng tương thích của tìm kiếm
OpenClaw duy trì đường dẫn tìm kiếm QMD tương thích với cả các bản cài đặt QMD hiện tại và cũ hơn. Khi khởi động, OpenClaw kiểm tra văn bản trợ giúp của QMD đã cài đặt một lần cho mỗi trình quản lý. Nếu tệp nhị phân công bố hỗ trợ nhiều bộ lọc bộ sưu tập, OpenClaw tìm kiếm tất cả bộ sưu tập cùng nguồn bằng một lệnh:memory + sessions vẫn cung cấp dữ liệu đầu vào từ cả hai nguồn
cho bộ đa dạng hóa kết quả.
Các bản dựng QMD cũ hơn chỉ chấp nhận một bộ lọc bộ sưu tập. Khi OpenClaw phát hiện
một trong những bản dựng đó, OpenClaw giữ lại đường dẫn tương thích và tìm kiếm riêng từng bộ sưu tập
trước khi hợp nhất và loại bỏ kết quả trùng lặp.
Để kiểm tra thủ công hợp đồng đã cài đặt, hãy chạy:
Ghi đè mô hình
Các biến môi trường mô hình QMD được truyền nguyên trạng từ tiến trình Gateway, vì vậy bạn có thể điều chỉnh QMD trên toàn cục mà không cần thêm cấu hình OpenClaw mới:Lập chỉ mục các đường dẫn bổ sung
Trỏ QMD đến các thư mục bổ sung để có thể tìm kiếm chúng:qmd/<collection>/<relative-path> trong
kết quả tìm kiếm. memory_get hiểu tiền tố này và đọc từ thư mục gốc
chính xác của bộ sưu tập.
Lập chỉ mục bản chép lời phiên
Bật tính năng lập chỉ mục phiên để nhớ lại các cuộc trò chuyện trước đó. QMD cần cả nguồn phiênmemorySearch chung và trình xuất bản chép lời QMD:
~/.openclaw/agents/<id>/qmd/sessions/. Chỉ đặt
memorySearch.experimental.sessionMemory sẽ không xuất bản chép lời vào
QMD.
Các kết quả khớp từ phiên vẫn được lọc bởi
tools.sessions.visibility. Khả năng hiển thị
tree mặc định bao gồm phiên hiện tại, các phiên do phiên đó tạo ra
và các phiên nhóm của cùng agent được theo dõi thông qua nhận biết nhóm xung quanh. Với
session.dmScope: "main", người dùng trong thiết lập DM nhiều người dùng chia sẻ phiên
chính và có thể nhớ lại nội dung từ các nhóm mà phiên đó theo dõi. Sử dụng
dmScope riêng cho từng peer để cô lập DM, hoặc đặt khả năng hiển thị thành
"self" để không đọc các phiên được theo dõi xung quanh. Các phiên cùng agent
không liên quan khác vẫn yêu cầu khả năng hiển thị "agent".
Phạm vi tìm kiếm
Theo mặc định, kết quả tìm kiếm QMD chỉ hiển thị trong các phiên trực tiếp (không hiển thị trong cuộc trò chuyện nhóm hoặc kênh). Cấu hìnhmemory.qmd.scope để thay đổi điều này:
Trích dẫn
Khimemory.citations là auto hoặc on, các đoạn trích tìm kiếm
được nối thêm phần chân trang Source: <path>#L<line> (hoặc #L<start>-L<end>). Trong chế độ
auto, phần chân trang chỉ được thêm cho các phiên trò chuyện trực tiếp. Đặt
memory.citations = "off" để bỏ phần chân trang trong khi vẫn truyền đường dẫn nội bộ
cho agent.
Khi nào nên dùng
Chọn QMD khi bạn cần:- Xếp hạng lại để có kết quả chất lượng cao hơn.
- Tìm kiếm tài liệu dự án hoặc ghi chú bên ngoài workspace.
- Nhớ lại các cuộc trò chuyện trong phiên trước đây.
- Tìm kiếm hoàn toàn cục bộ mà không cần khóa API.
Khắc phục sự cố
Không tìm thấy QMD? Đảm bảo tệp nhị phân nằm trongPATH của Gateway. Nếu OpenClaw
chạy dưới dạng dịch vụ, hãy tạo liên kết tượng trưng:
sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd.
Nếu qmd --version hoạt động trong shell của bạn nhưng OpenClaw vẫn báo
spawn qmd ENOENT, tiến trình Gateway có thể có PATH khác với
shell tương tác của bạn. Chỉ định rõ tệp nhị phân:
command -v qmd trong môi trường đã cài đặt QMD, sau đó kiểm tra lại
bằng openclaw memory status --deep.
Lần tìm kiếm đầu tiên rất chậm? QMD tải xuống các mô hình GGUF trong lần sử dụng đầu tiên. Hãy làm nóng trước
bằng qmd query "test", sử dụng cùng các thư mục XDG mà OpenClaw sử dụng.
Có nhiều tiến trình con QMD trong khi tìm kiếm? Hãy cập nhật QMD nếu có thể. OpenClaw
chỉ sử dụng một tiến trình cho các tìm kiếm nhiều bộ sưu tập có cùng nguồn khi
QMD đã cài đặt công bố hỗ trợ nhiều bộ lọc -c; nếu không,
hệ thống giữ cơ chế dự phòng cũ, mỗi bộ sưu tập một tiến trình, để đảm bảo tính chính xác.
QMD chỉ dùng BM25 vẫn cố gắng xây dựng llama.cpp? Đặt
memory.qmd.searchMode = "search". OpenClaw coi chế độ đó là
chỉ dùng tìm kiếm từ vựng, bỏ qua các phép thăm dò trạng thái vector QMD và việc bảo trì embedding,
đồng thời để các bước kiểm tra mức độ sẵn sàng ngữ nghĩa cho thiết lập vsearch hoặc query.
Tìm kiếm hết thời gian chờ? Tăng memory.qmd.limits.timeoutMs (mặc định: 4000ms).
Đặt giá trị cao hơn, ví dụ 120000, cho phần cứng chậm hơn. Giới hạn này áp dụng cho
các lệnh tìm kiếm riêng của QMD trong những lần gọi memory_search của agent; công việc thiết lập,
đồng bộ, dự phòng tích hợp sẵn và kho dữ liệu bổ sung vẫn giữ thời hạn ngắn hơn riêng.
Kết quả trống trong cuộc trò chuyện nhóm hoặc kênh? Đây là hành vi dự kiến với
memory.qmd.scope mặc định, vốn chỉ cho phép các phiên trực tiếp. Thêm quy tắc
allow cho loại trò chuyện group hoặc channel nếu bạn muốn có kết quả QMD
ở đó.
Tìm kiếm bộ nhớ gốc đột nhiên trở nên quá rộng? Khởi động lại Gateway hoặc đợi
đợt đối chiếu tiếp theo khi khởi động. OpenClaw tạo lại các bộ sưu tập được quản lý
đã lỗi thời theo các mẫu MEMORY.md và memory/ chuẩn khi
phát hiện xung đột trùng tên.
Các kho lưu trữ tạm thời hiển thị trong không gian làm việc gây ra ENAMETOOLONG hoặc làm hỏng việc lập chỉ mục?
Quá trình duyệt của QMD tuân theo trình quét QMD nền tảng thay vì các quy tắc
liên kết tượng trưng tích hợp của OpenClaw. Hãy giữ các bản checkout monorepo tạm thời trong các
thư mục ẩn như .tmp/ hoặc bên ngoài các thư mục gốc QMD được lập chỉ mục cho đến khi QMD cung cấp
cơ chế duyệt an toàn trước chu trình hoặc các tùy chọn kiểm soát loại trừ rõ ràng.
Cấu hình
Để biết toàn bộ phạm vi cấu hình (memory.qmd.*), các chế độ tìm kiếm, khoảng thời gian cập nhật,
quy tắc phạm vi và tất cả tùy chọn khác, hãy xem
Tham chiếu cấu hình bộ nhớ.