Quản lý phiên
- OpenClaw coi một phiên chat trực tiếp cho mỗi agent là chính. 48. Chat trực tiếp được gộp thành
agent:<agentId>:<mainKey>(mặc địnhmain), trong khi chat nhóm/kênh có khóa riêng. 49.session.mainKeyđược tôn trọng.
session.dmScope để kiểm soát cách tin nhắn trực tiếp (DM) được nhóm lại:
main(mặc định): tất cả DM chia sẻ phiên chính để đảm bảo tính liên tục.per-peer: tách theo id người gửi trên các kênh.per-channel-peer: tách theo kênh + người gửi (khuyến nghị cho hộp thư nhiều người dùng).-
per-account-channel-peer: cô lập theo tài khoản + kênh + người gửi (khuyến nghị cho hộp thư đến đa tài khoản). Usesession.identityLinksto map provider-prefixed peer ids to a canonical identity so the same person shares a DM session across channels when usingper-peer,per-channel-peer, orper-account-channel-peer.
Chế độ DM an toàn (khuyến nghị cho thiết lập nhiều người dùng)
Security Warning: If your agent can receive DMs from multiple people, you should strongly consider enabling secure DM mode. Without it, all users share the same conversation context, which can leak private information between users.Ví dụ về vấn đề với thiết lập mặc định:
- Alice (
<SENDER_A>) nhắn cho tác tử của bạn về một chủ đề riêng tư (ví dụ: một cuộc hẹn y tế) - Bob (
<SENDER_B>) nhắn cho tác tử hỏi “Chúng ta đang nói về điều gì vậy?” - Vì cả hai DM dùng chung một phiên, mô hình có thể trả lời Bob dựa trên ngữ cảnh trước đó của Alice.
dmScope để tách phiên theo từng người dùng:
- Bạn có phê duyệt ghép cặp cho nhiều hơn một người gửi
- Bạn dùng danh sách cho phép DM với nhiều mục
- Bạn đặt
dmPolicy: "open" - Nhiều số điện thoại hoặc tài khoản có thể nhắn cho tác tử của bạn
- Mặc định là
dmScope: "main"để đảm bảo tính liên tục (tất cả DM dùng chung phiên chính). This is fine for single-user setups. - Với hộp thư nhiều tài khoản trên cùng một kênh, ưu tiên
per-account-channel-peer. - Nếu cùng một người liên hệ bạn trên nhiều kênh, dùng
session.identityLinksđể gộp các phiên DM của họ thành một danh tính chuẩn. - Bạn có thể kiểm tra thiết lập DM bằng
openclaw security audit(xem security).
Gateway là nguồn sự thật
All session state is owned by the gateway (the “master” OpenClaw). UI clients (macOS app, WebChat, etc.) must query the gateway for session lists and token counts instead of reading local files.- Ở chế độ từ xa, kho phiên mà bạn quan tâm nằm trên máy chủ gateway từ xa, không phải trên máy Mac của bạn.
- Token counts shown in UIs come from the gateway’s store fields (
inputTokens,outputTokens,totalTokens,contextTokens). Clients do not parse JSONL transcripts to “fix up” totals.
Trạng thái được lưu ở đâu
- Trên máy chủ gateway:
- Tệp lưu trữ:
~/.openclaw/agents/<agentId>/sessions/sessions.json(theo từng tác tử).
- Tệp lưu trữ:
- Transcript:
~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl(phiên chủ đề Telegram dùng.../<SessionId>-topic-<threadId>.jsonl). - Store là một map
sessionKey -> { sessionId, updatedAt, ...}`. Xóa các mục là an toàn; chúng sẽ được tạo lại khi cần. - Các mục nhóm có thể bao gồm
displayName,channel,subject,roomvàspaceđể gắn nhãn phiên trong UI. - Mục phiên bao gồm metadata
origin(nhãn + gợi ý định tuyến) để UI có thể giải thích nguồn gốc phiên. - OpenClaw không đọc các thư mục phiên Pi/Tau cũ.
Cắt tỉa phiên
OpenClaw trims old tool results from the in-memory context right before LLM calls by default. This does not rewrite JSONL history. Xem /concepts/session-pruning.Xả bộ nhớ trước khi nén
When a session nears auto-compaction, OpenClaw can run a silent memory flush turn that reminds the model to write durable notes to disk. This only runs when the workspace is writable. See Memory and Compaction.Ánh xạ transport → khóa phiên
- Chat trực tiếp tuân theo
session.dmScope(mặc địnhmain).main:agent:<agentId>:<mainKey>(liên tục giữa các thiết bị/kênh).- Nhiều số điện thoại và kênh có thể ánh xạ tới cùng khóa chính của tác tử; chúng hoạt động như các transport vào một cuộc hội thoại.
per-peer:agent:<agentId>:dm:<peerId>.per-channel-peer:agent:<agentId>:<channel>:dm:<peerId>.per-account-channel-peer:agent:<agentId>:<channel>:<accountId>:dm:<peerId>(accountId mặc định làdefault).- Nếu
session.identityLinkskhớp với một peer id có tiền tố nhà cung cấp (ví dụtelegram:123), khóa chuẩn sẽ thay thế<peerId>để cùng một người chia sẻ phiên trên nhiều kênh.
- Chat nhóm tách biệt trạng thái:
agent:<agentId>:<channel>:group:<id>(phòng/kênh dùngagent:<agentId>:<channel>:channel:<id>).- Chủ đề diễn đàn Telegram nối thêm
:topic:<threadId>vào id nhóm để tách biệt. - Các khóa
group:<id>cũ vẫn được nhận diện để phục vụ di chuyển.
- Chủ đề diễn đàn Telegram nối thêm
- Ngữ cảnh vào có thể vẫn dùng
group:<id>; kênh được suy ra từProvidervà chuẩn hóa về dạng chuẩnagent:<agentId>:<channel>:group:<id>. - Các nguồn khác:
- Cron job:
cron:<job.id> - Webhook:
hook:<uuid>(trừ khi được hook đặt rõ ràng) - Chạy node:
node-<nodeId>
- Cron job:
Vòng đời
- Chính sách đặt lại: phiên được tái sử dụng cho đến khi hết hạn, và việc hết hạn được đánh giá ở tin nhắn vào tiếp theo.
- Daily reset: defaults to 4:00 AM local time on the gateway host. A session is stale once its last update is earlier than the most recent daily reset time.
- Đặt lại khi nhàn rỗi (tùy chọn):
idleMinutesthêm một cửa sổ nhàn rỗi trượt. Khi cả đặt lại theo ngày và theo nhàn rỗi đều được cấu hình, cái nào hết hạn trước sẽ buộc tạo phiên mới. - Chỉ nhàn rỗi (cũ): nếu bạn đặt
session.idleMinutesmà không có bất kỳ cấu hìnhsession.reset/resetByTypenào, OpenClaw sẽ ở chế độ chỉ nhàn rỗi để tương thích ngược. - Ghi đè theo từng loại (tùy chọn):
resetByTypecho phép bạn ghi đè chính sách cho các phiêndirect,groupvàthread(thread = chuỗi thảo luận Slack/Discord, chủ đề Telegram, chuỗi Matrix khi được cung cấp bởi connector). - Ghi đè theo kênh (tùy chọn):
resetByChannelghi đè chính sách đặt lại cho một kênh (áp dụng cho mọi loại phiên của kênh đó và ưu tiên hơnreset/resetByType). - Reset triggers: exact
/newor/reset(plus any extras inresetTriggers) start a fresh session id and pass the remainder of the message through./new <model>accepts a model alias,provider/model, or provider name (fuzzy match) to set the new session model. Nếu gửi/newhoặc/resetriêng lẻ, OpenClaw sẽ chạy một lượt chào ngắn “hello” để xác nhận việc đặt lại. - Đặt lại thủ công: xóa các khóa cụ thể khỏi kho hoặc xóa transcript JSONL; tin nhắn tiếp theo sẽ tạo lại chúng.
- Cron job cô lập luôn tạo một
sessionIdmới cho mỗi lần chạy (không tái sử dụng khi nhàn rỗi).
Chính sách gửi (tùy chọn)
Chặn việc gửi cho các loại phiên cụ thể mà không cần liệt kê từng id./send on→ cho phép cho phiên này/send off→ từ chối cho phiên này/send inherit→ xóa ghi đè và dùng quy tắc cấu hình Gửi các lệnh này như các thông điệp độc lập để chúng được ghi nhận.
Cấu hình (ví dụ đổi tên tùy chọn)
Kiểm tra
openclaw status— hiển thị đường dẫn kho và các phiên gần đây.openclaw sessions --json— đổ toàn bộ mọi mục (lọc bằng--active <minutes>).openclaw gateway call sessions.list --params '{}'— lấy các phiên từ gateway đang chạy (dùng--url/--tokenđể truy cập gateway từ xa).- Gửi
/statusnhư một thông điệp độc lập trong chat để xem tác tử có thể truy cập hay không, bao nhiêu ngữ cảnh phiên đang được dùng, các bật/tắt suy nghĩ/verbose hiện tại, và thời điểm thông tin xác thực WhatsApp web của bạn được làm mới lần cuối (giúp phát hiện nhu cầu liên kết lại). - Gửi
/context listhoặc/context detailđể xem nội dung trong system prompt và các tệp workspace được chèn (và các nguồn đóng góp ngữ cảnh lớn nhất). - Gửi
/stopnhư một thông điệp độc lập để hủy lần chạy hiện tại, xóa các followup đang xếp hàng cho phiên đó, và dừng mọi lần chạy tác tử con được tạo từ đó (phản hồi bao gồm số lượng đã dừng). - Send
/compact(optional instructions) as a standalone message to summarize older context and free up window space. Xem /concepts/compaction. - Transcript JSONL có thể được mở trực tiếp để xem toàn bộ lượt.
Mẹo
- Giữ khóa chính dành riêng cho lưu lượng 1:1; để các nhóm dùng khóa riêng của họ.
- Khi tự động dọn dẹp, hãy xóa từng khóa riêng lẻ thay vì toàn bộ kho để giữ ngữ cảnh ở nơi khác.
Metadata nguồn gốc phiên
Mỗi mục phiên ghi lại nơi nó đến từ đâu (theo mức tốt nhất có thể) trongorigin:
label: nhãn cho con người (giải quyết từ nhãn cuộc trò chuyện + chủ đề nhóm/kênh)provider: id kênh đã chuẩn hóa (bao gồm các phần mở rộng)from/to: id định tuyến thô từ phong bì vàoaccountId: id tài khoản nhà cung cấp (khi nhiều tài khoản)threadId: id của luồng/chủ đề khi kênh hỗ trợ Các trường origin được điền cho tin nhắn trực tiếp, kênh và nhóm. If a connector only updates delivery routing (for example, to keep a DM main session fresh), it should still provide inbound context so the session keeps its explainer metadata. Các extension có thể làm điều này bằng cách gửiConversationLabel,GroupSubject,GroupChannel,GroupSpacevàSenderNametrong ngữ cảnh inbound và gọirecordSessionMetaFromInbound(hoặc truyền cùng ngữ cảnh đó choupdateLastRoute).