Ghi nhớ xuyên suốt các cuộc hội thoại
Đối với agent cá nhân hoặc hoàn toàn đáng tin cậy, hãy bật khả năng truy hồi có giới hạn từ các cuộc hội thoại riêng tư khác của agent bằng một cài đặt cho từng agent:session.dmScope toàn cục phải
không được đặt hoặc là "main", và không binding nào được ghi đè session.dmScope. Mọi cấu hình
cô lập DM đều mặc định tắt tính năng này. Giá trị true hoặc false được đặt rõ ràng luôn được ưu tiên. Khi
được bật, OpenClaw lập chỉ mục bản chép lời phiên của agent đó và chạy một lượt truy hồi Active
Memory trước các phản hồi riêng tư đủ điều kiện. Lượt này có thể đọc
các đoạn trích bản chép lời liên quan từ những cuộc hội thoại riêng tư khác của cùng agent.
Cuộc hội thoại đang được trả lời sẽ bị loại trừ.
Ranh giới quyền riêng tư được cố định:
- các cuộc hội thoại trực tiếp riêng tư và cuộc hội thoại giao diện người dùng rõ ràng, lâu dài có thể truy hồi lẫn nhau
- nhóm và kênh không phải là nguồn truy hồi cũng không phải là đích truy hồi
- bản chép lời của agent khác không bao giờ đủ điều kiện
- bản chép lời không xác định hoặc đã lưu trữ nhưng không có đủ siêu dữ liệu cuộc hội thoại sẽ bị từ chối
tools.sessions.visibility, hay cấp quyền truy cập công cụ sessions_* rộng hơn. Bộ nhớ
không gian làm việc dùng chung (MEMORY.md và memory/*.md) giữ nguyên hành vi hiện có.
Active Memory phải luôn được bật. Quá trình truy hồi thêm một bước chặn có giới hạn vào
các phản hồi đủ điều kiện; khi hết thời gian chờ, tìm kiếm không khả dụng hoặc kết quả trống, phản hồi vẫn tiếp tục
mà không có ngữ cảnh bản chép lời được truy hồi. Trình cung cấp bộ nhớ tích hợp của OpenClaw
hỗ trợ đường dẫn truy hồi bản chép lời được bảo vệ này với cả backend tích hợp
và QMD. Các trình cung cấp bộ nhớ khác giữ nguyên hành vi truy hồi riêng nhưng
không tự động nhận quyền truy cập bản chép lời riêng tư. openclaw doctor
báo cáo trình cung cấp không được hỗ trợ hoặc thiếu công cụ memory_search.
Bắt đầu nhanh với Active Memory nâng cao
Dán vàoopenclaw.json để có cấu hình mặc định nâng cao và an toàn: bật plugin, giới hạn trong
main, chỉ các phiên tin nhắn trực tiếp, mô hình được kế thừa từ phiên.
plugins.entries.* (bao gồm active-memory.config) thuộc danh mục cấu hình
không cần khởi động lại:
Gateway tự động tải lại runtime của plugin và không cần khởi động lại
thủ công. Nếu vẫn muốn buộc khởi động lại hoàn toàn, hãy chạy:
plugins.entries.active-memory.enabled: truebật pluginconfig.agents: ["main"]chỉ chọn agentmainconfig.allowedChatTypes: ["direct"]giới hạn tính năng trong các phiên tin nhắn trực tiếp (phải chọn tham gia nhóm/kênh một cách rõ ràng)config.model(tùy chọn) ghim một mô hình truy hồi chuyên dụng; nếu không đặt thì kế thừa mô hình của phiên hiện tạiconfig.modelFallbackchỉ được dùng khi không phân giải được mô hình được chỉ định rõ ràng hoặc được kế thừaconfig.fastModetùy chọn ghi đè chế độ nhanh cho quá trình truy hồi mà không thay đổi agent chínhconfig.promptStyle: "balanced"là giá trị mặc định cho chế độrecent- Active Memory vẫn chỉ chạy cho các phiên trò chuyện tương tác, lâu dài và đủ điều kiện (xem Khi nào tính năng chạy)
Cách hoạt động
Sub-agent theo cơ chế chặn chỉ có thể gọi các công cụ truy hồi bộ nhớ đã cấu hình (xem Công cụ bộ nhớ). Nếu mối liên hệ giữa truy vấn và bộ nhớ khả dụng không chặt chẽ, nó trả vềNONE và phản hồi chính tiếp tục
mà không có ngữ cảnh bổ sung.
Active Memory là một tính năng làm phong phú hội thoại, không phải tính năng suy luận
trên toàn nền tảng:
Hãy dùng tính năng này khi phiên là lâu dài và dành cho người dùng, agent có
bộ nhớ dài hạn đáng kể để tìm kiếm, đồng thời tính liên tục/cá nhân hóa quan trọng
hơn tính xác định tuyệt đối của prompt: các tùy chọn ổn định, thói quen lặp lại,
ngữ cảnh dài hạn cần xuất hiện một cách tự nhiên. Tính năng này không phù hợp với
tự động hóa, worker nội bộ, tác vụ API một lần hoặc bất kỳ nơi nào mà khả năng
cá nhân hóa ẩn có thể gây bất ngờ.
Khi nào tính năng chạy
Active Memory có hai đường dẫn kích hoạt:- Ghi nhớ xuyên suốt các cuộc hội thoại tự động nhắm đến những agent có
cài đặt
memorySearch.rememberAcrossConversationshiệu lực được bật, nhưng chỉ dành cho cuộc hội thoại trực tiếp riêng tư hoặc cuộc hội thoại giao diện người dùng rõ ràng, lâu dài. - Active Memory nâng cao nhắm đến các ID agent được liệt kê trong
plugins.entries.active-memory.config.agentsvà áp dụng các chế độ kiểm soát loại trò chuyện cùng ID trò chuyện của plugin.
/active-memory off theo phạm vi phiên sẽ tạm dừng cả hai
đường dẫn cho cuộc hội thoại đó. Nếu bất kỳ điều kiện nào không được đáp ứng, Active Memory không chạy
ở lượt đó và phản hồi chính không bị ảnh hưởng.
Các loại phiên
config.allowedChatTypes kiểm soát những loại cuộc hội thoại nào có thể chạy
đường dẫn Active Memory nâng cao. Nó không thể mở rộng phạm vi Ghi nhớ xuyên suốt các cuộc hội thoại:
cài đặt sản phẩm đó vẫn chỉ dành cho cuộc hội thoại riêng tư ngay cả khi Active Memory nâng cao được
cho phép trong nhóm hoặc kênh. Mặc định:
direct, group, channel, explicit (các phiên kiểu cổng thông tin
có ID phiên không rõ nghĩa, ví dụ agent:main:explicit:portal-123).
Các phiên tin nhắn trực tiếp chạy theo mặc định; phiên nhóm, kênh và phiên rõ ràng
cần được chọn tham gia:
config.allowedChatIds và config.deniedChatIds:
allowedChatIdslà danh sách cho phép gồm các ID cuộc hội thoại đã phân giải. Khi không trống, Active Memory chỉ chạy cho các phiên có ID cuộc hội thoại nằm trong danh sách — điều này thu hẹp mọi loại trò chuyện được phép cùng lúc, bao gồm cả tin nhắn trực tiếp. Để giữ tất cả tin nhắn trực tiếp trong khi chỉ thu hẹp phạm vi nhóm, hãy thêm cả ID của đối tượng trực tiếp vàoallowedChatIds, hoặc giữallowedChatTypestrong phạm vi triển khai nhóm/kênh đang được kiểm thử.deniedChatIdslà danh sách từ chối luôn được ưu tiên hơnallowedChatTypesvàallowedChatIds.
chat_id/open_id, ID cuộc trò chuyện Telegram, ID kênh Slack). Việc đối sánh
không phân biệt chữ hoa chữ thường. Nếu allowedChatIds không trống và OpenClaw không thể
phân giải ID cuộc hội thoại cho phiên, Active Memory sẽ bỏ qua lượt đó
thay vì phỏng đoán.
Nút chuyển đổi phiên
Tạm dừng hoặc tiếp tục Active Memory cho phiên trò chuyện hiện tại mà không cần chỉnh sửa cấu hình:plugins.entries.active-memory.config.enabled, cài đặt
memorySearch.rememberAcrossConversations của agent hoặc cấu hình
toàn cục khác.
Để tạm dừng/tiếp tục cho tất cả phiên, hãy dùng biểu mẫu toàn cục (yêu cầu
chủ sở hữu hoặc operator.admin):
plugins.entries.active-memory.config.enabled nhưng
vẫn bật plugins.entries.active-memory.enabled, vì vậy lệnh vẫn
khả dụng để bật lại Active Memory sau này.
Cách xem tính năng
Theo mặc định, Active Memory chèn một tiền tố prompt ẩn không đáng tin cậy, không hiển thị trong phản hồi thông thường. Hãy bật các nút chuyển đổi phiên tương ứng với đầu ra mong muốn:/verbose onthêm một dòng trạng thái:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onthêm bản tóm tắt gỡ lỗi:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw, khối Model Input (User Role) được theo dõi hiển thị tiền tố
ẩn thô:
Chế độ truy vấn
config.queryMode kiểm soát lượng nội dung hội thoại mà sub-agent theo cơ chế chặn
nhìn thấy. Hãy chọn chế độ nhỏ nhất vẫn trả lời tốt các câu hỏi tiếp nối; tăng
timeoutMs khi kích thước ngữ cảnh tăng, từ message đến recent rồi đến full.
- tin nhắn
- gần đây
- đầy đủ
Chỉ tin nhắn mới nhất của người dùng được gửi.Dùng khi muốn có hành vi nhanh nhất, ưu tiên mạnh nhất cho việc truy hồi
tùy chọn ổn định và các lượt tiếp nối không cần ngữ cảnh
hội thoại. Bắt đầu khoảng
3000-5000 ms cho config.timeoutMs.Kiểu lời nhắc
config.promptStyle kiểm soát mức độ chủ động hoặc nghiêm ngặt của sub-agent khi
trả về ký ức:
Ánh xạ mặc định khi chưa đặt
config.promptStyle:
config.promptStyle được đặt rõ ràng luôn ghi đè ánh xạ.
Chính sách dự phòng mô hình
Nếu chưa đặtconfig.model, Active Memory phân giải mô hình theo thứ tự sau:
config.modelFallbackPolicy là trường tương thích đã lỗi thời được giữ lại cho
các cấu hình cũ; trường này không còn thay đổi hành vi thời gian chạy — modelFallback hoàn toàn
chỉ là phương án cuối cùng trong chuỗi trên, không phải cơ chế chuyển đổi dự phòng khi chạy để
thay bằng mô hình khác nếu mô hình đã phân giải gặp lỗi.
Khuyến nghị về tốc độ
Đểconfig.model chưa đặt (kế thừa mô hình phiên) là lựa chọn mặc định an toàn nhất:
cách này tuân theo các tùy chọn nhà cung cấp, xác thực và mô hình hiện có. Để
giảm độ trễ, hãy dùng một mô hình nhanh chuyên dụng — chất lượng truy hồi vẫn quan trọng,
nhưng độ trễ ở đây quan trọng hơn so với luồng tạo câu trả lời chính, và bề mặt công cụ
rất hẹp (chỉ có các công cụ truy hồi ký ức).
Các tùy chọn mô hình nhanh phù hợp:
cerebras/gpt-oss-120b, một mô hình truy hồi chuyên dụng có độ trễ thấpgoogle/gemini-3-flash, một mô hình dự phòng có độ trễ thấp mà không thay đổi mô hình trò chuyện chính- mô hình phiên thông thường, bằng cách để
config.modelchưa đặt
Thiết lập Cerebras
chat/completions cho mô hình đã chọn
— chỉ hiển thị /v1/models không đảm bảo điều đó.
Công cụ bộ nhớ
config.toolsAllow đặt tên cụ thể của các công cụ mà sub-agent chặn có thể
gọi cho Active Memory nâng cao. Giá trị mặc định phụ thuộc vào nhà cung cấp bộ nhớ hiện tại:
Nếu không có công cụ nào đã cấu hình khả dụng, hoặc lần chạy sub-agent thất bại,
Active Memory sẽ bỏ qua truy hồi cho lượt đó và câu trả lời chính tiếp tục
mà không có ngữ cảnh bộ nhớ. Với các công cụ truy hồi tùy chỉnh, đầu ra công cụ
không rỗng mà mô hình nhìn thấy được sẽ được tính là bằng chứng truy hồi, trừ khi các trường kết quả
có cấu trúc báo cáo rõ ràng kết quả rỗng hoặc lỗi.
toolsAllow chỉ chấp nhận tên công cụ bộ nhớ cụ thể: ký tự đại diện, mục group:*
và các công cụ agent cốt lõi (read, exec, message, web_search cùng
các công cụ tương tự) sẽ bị âm thầm lọc bỏ trước khi sub-agent ẩn khởi chạy.
Bộ nhớ tích hợp
Không cần chỉ định rõtoolsAllow:
Bộ nhớ LanceDB
Sau khi cài đặt và cấu hình LanceDB, Active Memory tự động sử dụngmemory_recall; không cần chỉ định rõ toolsAllow:
memorySearch.rememberAcrossConversations không công khai bản ghi phiên riêng tư
thông qua memory_recall. Hãy sử dụng cơ chế tự động truy hồi của LanceDB hoặc cấu hình nâng cao
ở trên khi LanceDB là nhà cung cấp bộ nhớ đang hoạt động.
Lossless Claw
Lossless Claw là một Plugin công cụ ngữ cảnh bên ngoài (openclaw plugins install @martian-engineering/lossless-claw) có các công cụ truy hồi riêng. Trước tiên, hãy thiết lập
nó làm công cụ ngữ cảnh; xem Công cụ ngữ cảnh. Sau đó
hướng Active Memory đến các công cụ của nó:
lcm_expand vào toolsAllow tại đây; Lossless Claw sử dụng nó làm
công cụ cấp thấp hơn để mở rộng được ủy quyền, không dành cho sub-agent
Active Memory cấp cao nhất. Lossless Claw thay đổi cách lắp ráp ngữ cảnh mà không
thay thế nhà cung cấp bộ nhớ hiện tại. Giữ memory_search trong toolsAllow
khi cũng sử dụng rememberAcrossConversations; danh sách công cụ chỉ có LCM vẫn
hợp lệ cho Active Memory nâng cao nhưng vô hiệu hóa luồng truy hồi bản ghi
cuộc hội thoại của sản phẩm.
Các cơ chế tùy chỉnh nâng cao
Không thuộc thiết lập được khuyến nghị.config.thinking ghi đè mức độ suy luận của sub-agent (mặc định là "off",
vì Active Memory chạy trong luồng trả lời và thời gian suy luận bổ sung trực tiếp
làm tăng độ trễ mà người dùng nhận thấy):
config.fastMode chỉ ghi đè chế độ nhanh cho sub-agent bộ nhớ chặn.
Sử dụng true, false hoặc "auto"; để chưa đặt nhằm kế thừa các giá trị mặc định thông thường
của agent, phiên và mô hình. "auto" sử dụng ngưỡng fastAutoOnSeconds đã cấu hình
của mô hình truy hồi:
config.promptAppend thêm chỉ dẫn cho người vận hành sau lời nhắc mặc định
và trước ngữ cảnh cuộc hội thoại — kết hợp nó với toolsAllow tùy chỉnh khi
một Plugin bộ nhớ không thuộc lõi cần thứ tự công cụ hoặc cách định hình truy vấn cụ thể:
config.promptOverride thay thế hoàn toàn lời nhắc mặc định (ngữ cảnh cuộc hội thoại
vẫn được nối thêm sau đó). Không khuyến nghị trừ khi chủ đích
kiểm thử một hợp đồng truy hồi khác — lời nhắc mặc định được tinh chỉnh để trả về
NONE hoặc ngữ cảnh dữ kiện người dùng cô đọng cho mô hình chính:
Lưu trữ lâu dài bản ghi cuộc hội thoại
Các lần chạy sub-agent chặn tạo một bản ghisession.jsonl thực sự trong
lời gọi. Theo mặc định, bản ghi được ghi vào thư mục tạm và bị xóa ngay
sau khi lần chạy hoàn tất.
Để giữ các bản ghi đó trên đĩa nhằm gỡ lỗi:
config.transcriptDir. Hãy sử dụng tùy chọn này
cẩn thận: bản ghi có thể tích lũy nhanh chóng trong các phiên bận, chế độ truy vấn full
sao chép rất nhiều ngữ cảnh cuộc hội thoại, và các bản ghi này chứa
ngữ cảnh lời nhắc ẩn cùng các ký ức đã truy hồi.
Cấu hình
Toàn bộ cấu hình Active Memory nằm trongplugins.entries.active-memory.
Các trường tinh chỉnh hữu ích:
Thiết lập được khuyến nghị
Bắt đầu vớirecent:
/verbose on cho dòng trạng thái và /trace on cho bản tóm tắt gỡ lỗi
trong quá trình tinh chỉnh — cả hai đều được gửi dưới dạng thông báo tiếp nối sau phản hồi chính,
không phải trước đó. Sau đó, chuyển sang message để giảm độ trễ hoặc full nếu ngữ cảnh bổ sung
xứng đáng với thời gian chạy sub-agent lâu hơn.
Khoảng đệm khởi động nguội
Trước v2026.5.2, plugin âm thầm kéo dàitimeoutMs thêm 30000
ms trong quá trình khởi động nguội, để việc làm nóng model, tải chỉ mục embedding và lần
truy hồi đầu tiên có thể dùng chung một ngân sách lớn hơn. v2026.5.2 đã chuyển khoảng đệm đó sang
cấu hình setupGraceTimeoutMs tường minh: timeoutMs hiện là ngân sách
dành cho công việc truy hồi theo mặc định, trừ khi bạn chủ động bật. Hook chặn bao bọc ngân sách đó trong
hai giai đoạn cố định: tối đa 1500 ms để kiểm tra sơ bộ phiên/cấu hình trước khi bắt đầu
truy hồi, sau đó là 1500 ms cố định riêng biệt để hoàn tất việc hủy và khôi phục bản ghi
sau khi công việc truy hồi dừng lại. Cả hai khoảng thời gian này đều không kéo dài thời gian thực thi
model hoặc công cụ.
Nếu bạn đã nâng cấp từ v2026.4.x và tinh chỉnh timeoutMs cho cơ chế
ân hạn ngầm cũ (giá trị khởi đầu được khuyến nghị timeoutMs: 15000 là một
ví dụ), hãy đặt setupGraceTimeoutMs: 30000 để khôi phục ngân sách hiệu dụng
trước v5.2:
timeoutMs + setupGraceTimeoutMs + 3000 ms (ngân sách
công việc truy hồi đã cấu hình, cộng tối đa 1500 ms cho bước kiểm tra trước,
cộng thêm mức cho phép hoàn tất sau truy hồi cố định là 1500 ms). Trình chạy
truy hồi nhúng sử dụng cùng ngân sách thời gian chờ hiệu dụng, vì vậy
setupGraceTimeoutMs bao quát cả bộ giám sát tạo prompt bên ngoài lẫn lượt truy
hồi chặn bên trong.
Đối với các Gateway có tài nguyên hạn chế, nơi độ trễ khởi động nguội là một
sự đánh đổi được chấp nhận, các giá trị thấp hơn (5000-15000 ms) cũng hoạt
động — đổi lại là khả năng lượt truy hồi đầu tiên ngay sau khi Gateway khởi
động lại trả về kết quả rỗng trong lúc quá trình khởi động hoàn tất sẽ cao hơn.
Gỡ lỗi
Nếu Active Memory không xuất hiện ở nơi bạn mong đợi:- Xác nhận Plugin được bật trong
plugins.entries.active-memory.enabled. - Đối với tính năng Remember xuyên suốt các cuộc hội thoại, hãy xác nhận cài đặt
memorySearch.rememberAcrossConversationshiệu dụng của agent đã được bật, chạyopenclaw doctorđể xác minh nhà cung cấp bộ nhớ hiện tại hỗ trợ truy hồi bản chép lời được bảo vệ và xác nhậnconfig.toolsAllowbao gồmmemory_searchkhi được cấu hình tường minh. Đối với Active Memory nâng cao, hãy xác nhận ID agent có trongconfig.agents. - Xác nhận bạn đang kiểm thử thông qua một cuộc hội thoại tương tác liên tục đủ điều kiện.
- Lưu ý rằng các nhóm và kênh không bao giờ sử dụng tính năng truy hồi bản chép lời xuyên hội thoại.
- Bật
config.logging: truevà theo dõi nhật ký Gateway. - Xác minh bản thân chức năng tìm kiếm bộ nhớ hoạt động bằng
openclaw status --deep.
maxSummaryChars. Nếu
Active Memory quá chậm, hãy giảm queryMode, giảm timeoutMs,
hoặc giảm số lượt gần đây và giới hạn ký tự trên mỗi lượt.
Vấn đề thường gặp
Active Memory nâng cao hoạt động trên pipeline truy hồi của Plugin bộ nhớ đã cấu hình, vì vậy phần lớn các vấn đề bất ngờ khi truy hồi là sự cố của nhà cung cấp embedding, không phải lỗi của Active Memory. Đường dẫnmemory-core
mặc định sử dụng memory_search và memory_get; khe
memory-lancedb sử dụng memory_recall. Nếu bạn sử dụng một Plugin bộ
nhớ khác, hãy xác nhận config.toolsAllow chỉ định các công cụ mà Plugin đó
thực sự đăng ký. Tính năng Remember xuyên suốt các cuộc hội thoại có phạm vi
hẹp hơn: nhà cung cấp bộ nhớ hiện tại phải hỗ trợ đường dẫn truy hồi phiên riêng
tư/cùng agent được bảo vệ của OpenClaw.
Nhà cung cấp embedding đã chuyển đổi hoặc ngừng hoạt động
Nhà cung cấp embedding đã chuyển đổi hoặc ngừng hoạt động
Nếu chưa đặt
memorySearch.provider, OpenClaw sử dụng embedding của OpenAI. Hãy
đặt tường minh memorySearch.provider cho embedding của Bedrock, DeepInfra,
Gemini, GitHub Copilot, LM Studio, local, Mistral, Ollama, Voyage hoặc tương
thích với OpenAI. Nếu nhà cung cấp đã cấu hình không thể chạy,
memory_search có thể hạ xuống chế độ truy hồi chỉ dựa trên từ vựng; các
lỗi trong thời gian chạy sau khi một nhà cung cấp đã được chọn sẽ không tự
động chuyển sang phương án dự phòng.Chỉ đặt memorySearch.fallback tùy chọn khi bạn chủ ý muốn có một phương án dự
phòng duy nhất. Xem Tìm kiếm bộ nhớ để biết danh
sách đầy đủ các nhà cung cấp và ví dụ.Truy hồi có vẻ chậm, rỗng hoặc không nhất quán
Truy hồi có vẻ chậm, rỗng hoặc không nhất quán
- Bật
/trace onđể hiển thị bản tóm tắt gỡ lỗi Active Memory do Plugin sở hữu trong phiên. - Bật
/verbose onđể cũng xem dòng trạng thái🧩 Active Memory: ...sau mỗi phản hồi. - Theo dõi nhật ký Gateway để tìm
active-memory: ... start|done,memory sync failed (search-bootstrap)hoặc lỗi embedding của nhà cung cấp. - Chạy
openclaw status --deepđể kiểm tra backend tìm kiếm bộ nhớ và tình trạng chỉ mục. - Nếu bạn sử dụng
ollama, hãy xác nhận mô hình embedding đã được cài đặt (ollama list).
Lượt truy hồi đầu tiên sau khi Gateway khởi động lại trả về `status=timeout`
Lượt truy hồi đầu tiên sau khi Gateway khởi động lại trả về `status=timeout`
Trên v2026.5.2 trở lên, nếu quá trình thiết lập khởi động nguội (khởi động
mô hình + tải chỉ mục embedding) chưa hoàn tất khi lượt truy hồi đầu tiên
được kích hoạt, lượt chạy có thể chạm ngân sách
timeoutMs đã cấu
hình và trả về status=timeout với đầu ra rỗng. Nhật ký Gateway hiển thị
active-memory timeout after Nms quanh phản hồi đủ điều kiện đầu tiên sau khi khởi động lại.Xem Ân hạn khởi động nguội trong phần Thiết lập được
khuyến nghị để biết giá trị setupGraceTimeoutMs được khuyến nghị.