Skip to main content
ClickClack kết nối OpenClaw với một không gian làm việc ClickClack tự lưu trữ thông qua token bot ClickClack được hỗ trợ trực tiếp. Sử dụng cách này khi bạn muốn một agent OpenClaw xuất hiện dưới dạng người dùng bot ClickClack. ClickClack hỗ trợ bot dịch vụ độc lập và bot thuộc sở hữu của người dùng; bot thuộc sở hữu của người dùng giữ một owner_user_id và chỉ nhận các phạm vi token mà bạn cấp.

Thiết lập nhanh

Trong ClickClack, mở Workspace settings → Integrations → OpenClaw, tạo một bot bằng Setup code (recommended) rồi sao chép lệnh được tạo:
Đối với frontend và API có origin riêng biệt hoặc API được gắn dưới một đường dẫn, ClickClack sẽ cung cấp endpoint xác nhận chính xác thay thế:
Mã thiết lập chỉ dùng được một lần và hết hạn sau 10 phút. OpenClaw xác nhận mã, nhận token bot mới được tạo cùng các thiết lập không gian làm việc, lưu tài khoản, xác minh kết nối và báo cáo liệu Gateway đang chạy đã nhận cấu hình đó hay chưa. Đối với các endpoint chính xác có phiên bản, OpenClaw xác thực và lưu API base chuẩn do ClickClack trả về, bao gồm mọi tiền tố đường dẫn. Bản thân mã thiết lập không được lưu trong cấu hình OpenClaw. Việc xác nhận mã thiết lập sử dụng HTTPS cho các máy chủ công khai. HTTP thuần cũng được hỗ trợ cho các bản cài đặt cục bộ trên địa chỉ loopback như localhost127.0.0.1. Nếu OpenClaw đang chạy, ClickClack sẽ tự động kết nối và không cần lệnh thứ hai. Nếu không, hãy khởi động bằng:
Bạn cũng có thể truyền mã riêng với URL máy chủ:
Để thiết lập có hướng dẫn, hãy chạy:
Chọn ClickClack, sau đó nhập URL máy chủ, token bot và không gian làm việc khi được nhắc. Quy trình thiết lập có hướng dẫn sẽ kiểm tra máy chủ, token và không gian làm việc sau khi lưu; kiểm tra thất bại không loại bỏ cấu hình.

Phương án khác: token thủ công

Chọn Manual token trong ClickClack khi cấu hình một ứng dụng khách không phải OpenClaw hoặc khi bạn cần tự quản lý token một cách rõ ràng:
workspace chấp nhận id không gian làm việc (wsp_...), slug hoặc tên hiển thị. Không thể kết hợp --code với --token, --token-file hoặc --use-env.

Phương án khác: token dựa trên biến môi trường

Tài khoản mặc định có thể đọc CLICKCLACK_BOT_TOKEN thay vì lưu token trong cấu hình:
Các tài khoản được đặt tên phải sử dụng token đã cấu hình hoặc tệp token; biến môi trường dùng chung được chủ ý giới hạn cho tài khoản mặc định.

Tham chiếu JSON5

Cấu trúc cấu hình tương đương là:
Một tài khoản chỉ được coi là đã cấu hình khi baseUrl, nguồn token và workspace đều được thiết lập. Nguồn token có thể là token, tokenFile hoặc CLICKCLACK_BOT_TOKEN đối với tài khoản mặc định. workspace chấp nhận id không gian làm việc (wsp_...), slug hoặc tên; Gateway phân giải giá trị này thành id khi khởi động.

Các khóa cấu hình tài khoản

Duy trì tên máy chủ công khai có cổng xác thực

Sử dụng apiBaseUrl khi ClickClack và Gateway OpenClaw chạy trên cùng một máy chủ nhưng tên máy chủ ClickClack công khai được bảo vệ bởi Gateway xác thực như Cloudflare Access:
Tên máy chủ công khai có thể tiếp tục được bảo vệ hoàn toàn bằng cổng xác thực đối với người dùng trình duyệt. OpenClaw sử dụng endpoint loopback cho các yêu cầu REST, xác minh thiết lập và WebSocket thời gian thực, trong khi các liên kết embedUrlopenUrl của cuộc thảo luận tiếp tục sử dụng baseUrl công khai. Nếu bỏ qua apiBaseUrl, mọi lưu lượng sẽ sử dụng baseUrl, duy trì hành vi hiện có. Nếu plugins.allow là một danh sách hạn chế không rỗng, việc chọn rõ ràng ClickClack trong thiết lập kênh hoặc chạy openclaw plugins enable clickclack sẽ thêm clickclack vào danh sách đó. Việc cài đặt trong quy trình khởi tạo sử dụng cùng hành vi chọn rõ ràng. Các đường dẫn này không ghi đè plugins.deny hoặc thiết lập plugins.enabled: false toàn cục. Việc chạy trực tiếp openclaw plugins install @openclaw/clickclack tuân theo chính sách cài đặt Plugin thông thường và cũng ghi ClickClack vào danh sách cho phép hiện có.

Nhiều bot

Mỗi tài khoản mở kết nối thời gian thực ClickClack riêng và sử dụng token bot riêng.

Thảo luận phiên

Bật thảo luận trên một tài khoản ClickClack để cấp cho mỗi phiên OpenClaw một kênh ClickClack chuyên dụng. Token tài khoản phải bao gồm channels:write (gói bot:admin có bao gồm phạm vi này); token thiết lập bot:write thông thường không thể tạo hoặc đồng bộ hóa kênh.
discussions.workspace chấp nhận cùng id, slug hoặc tên hiển thị của không gian làm việc như workspace ở cấp tài khoản và mặc định dùng giá trị đó. section kiểm soát phần thanh bên ClickClack và mặc định là Sessions. Khi controlUrlBase được thiết lập, kênh được quản lý sẽ liên kết ngược đến tuyến phiên thực tế của Control UI, /chat?session=<encoded-session-key>. Chỉ bật thảo luận trên đúng một tài khoản ClickClack. Nhà cung cấp Gateway không có bộ chọn tài khoản, vì vậy nhiều tài khoản thảo luận đang bật sẽ bị từ chối thay vì chọn một tài khoản theo thứ tự cấu hình. Việc mở một cuộc thảo luận sẽ tạo một kênh ClickClack công khai được đánh dấu là do bên ngoài quản lý. Plugin giữ đồng bộ nhãn phiên, danh mục và trạng thái lưu trữ. Khôi phục một phiên sẽ khôi phục kênh của phiên đó; xóa danh mục phiên sẽ chuyển kênh trở lại phần mặc định đã cấu hình. Xóa một phiên OpenClaw sẽ lưu trữ kênh ClickClack thay vì xóa kênh, để lịch sử vẫn còn khả dụng. Plugin đối soát các liên kết khi RPC thảo luận được sử dụng và khoảng một lần mỗi phút khi có bất kỳ liên kết nào tồn tại. Tin nhắn đến trong một kênh được quản lý sử dụng một phiên phụ xác định dưới cùng id agent với phiên chính được đính kèm. Agent phụ được cho biết cần quan sát phiên chính nào và có thể sử dụng sessions_historysession_status (changesSince hữu ích cho các lần kiểm tra gia tăng). Agent này chỉ sử dụng sessions_send khi những người trong cuộc thảo luận yêu cầu chuyển tiếp hoặc định hướng phiên chính. Liên kết, tham chiếu quyền sở hữu được quản lý và danh tính ngang hàng của phiên phụ bao gồm id phiên OpenClaw cụ thể cùng với máy chủ và kênh ClickClack đã ghim. Việc đặt lại khóa phiên có thể tái sử dụng hoặc chuyển tài khoản sang đích khác sẽ thu hồi kênh cũ ở cục bộ, lưu trữ kênh đó khi thông tin xác thực cũ vẫn dùng được và không thể tái sử dụng bản ghi hội thoại phụ của kênh. Tin nhắn đến qua một liên kết đã lưu trữ, đặt lại, tắt hoặc chuyển đích sẽ bị loại bỏ thay vì quay về định tuyến kênh thông thường của tài khoản. Các liên kết đã giải phóng để lại một dấu mốc kênh bị thu hồi bền vững để các sự kiện thời gian thực đến trễ vẫn bị từ chối theo mặc định. Quyền sở hữu từ xa được định danh theo máy chủ ClickClack và id kênh, vì vậy việc đổi tên tài khoản cục bộ không thể biến một kênh được quản lý thành kênh thông thường. Giữ tools.sessions.visibility ở giá trị mặc định an toàn hơn là tree. Plugin cài đặt một quyền cấp có phạm vi máy chủ chỉ giữa từng phiên phụ và phiên chính được đính kèm của phiên đó, cùng một hook chính sách công cụ chặn việc khám phá phiên và các đích liên phiên. Hook chỉ cho phép sessions_history, session_statussessions_send đối với phiên chính được đính kèm và ngăn lệnh gọi trạng thái thay đổi mô hình của phiên đó. Các công cụ này vẫn phải có trong danh sách công cụ hiệu lực được phép dùng của agent. Prompt hệ thống chỉ mang tính hướng dẫn; quyền cấp của máy chủ và hook mới là ranh giới ủy quyền. Máy chủ ClickClack phải hỗ trợ các trường kênh được quản lý (external_managed, external_ref, external_urlsidebar_section) khi tạo và cập nhật kênh, đồng thời trả về chúng trong phản hồi kênh. OpenClaw xác minh hợp đồng đó trước khi lưu một liên kết. Nếu phản hồi tạo bị thất lạc, lần mở tiếp theo sẽ tiếp nhận kênh theo external_ref do máy chủ thực thi thay vì tạo một kênh khác. Cho đến khi kết quả đó được đối soát, phần giữ chỗ đang chờ sẽ cách ly các sự kiện chưa được liên kết khác trong không gian làm việc đích. Trình đối soát tổng quát tiếp nhận kênh khi cùng phiên đó vẫn còn hoạt động hoặc lưu trữ kênh sau khi đặt lại; trình này xóa phần giữ chỗ khi không có kênh từ xa nào được tạo. Tham chiếu đó chứa một không gian tên lâu dài cho mỗi bản cài đặt OpenClaw cùng với hàm băm của khóa phiên, id phiên cụ thể, đích ClickClack và thế hệ liên kết lâu dài. Các Gateway riêng biệt không thể tiếp nhận kênh của nhau, các phiên đã đặt lại không thể kế thừa lịch sử kênh cũ, và một vòng chuyển đổi tài khoản hoặc không gian làm việc không thể tiếp nhận lại kênh trước đó. Các liên kết cũng được ghim vào URL máy chủ ClickClack đã cấu hình và bị vô hiệu hóa nếu tài khoản được chuyển sang đích khác. Việc thay đổi hoặc xóa controlUrlBase sẽ cập nhật hoặc xóa liên kết kênh được quản lý trong lượt đối soát tiếp theo. Việc thay đổi discussions.workspace sẽ lưu trữ và giải phóng liên kết cũ trước khi một kênh có thể được mở trong không gian làm việc mới khi thông tin xác thực của không gian làm việc cũ vẫn được cấu hình. Nếu token đã được thay thế bằng thông tin xác thực có phạm vi không gian làm việc không thể truy cập không gian làm việc cũ, OpenClaw ghi nhận kênh cũ là đã bị thu hồi và giải phóng liên kết mà không thử token thay thế; hãy lưu trữ kênh còn sót lại đó khỏi ClickClack. Phiên chính được đính kèm cũng nhận được một công cụ discussion chỉ dùng để kéo dữ liệu. Công cụ này đọc các tin nhắn mới nhất và câu trả lời luồng gần đây dưới dạng một bản ghi đã thoát ký tự và có thông tin quy nguồn cho mỗi tin nhắn, đồng thời không có tác dụng phụ về ghi hoặc vòng đời. Các phép tra cứu gốc kênh và luồng có ngân sách yêu cầu cố định; kết quả cảnh báo rõ ràng khi giới hạn an toàn đó có thể bỏ sót một luồng cũ vẫn đang hoạt động.

Chế độ trả lời

  • replyMode: "agent" (mặc định) điều phối tin nhắn đến thông qua pipeline tác nhân thông thường, bao gồm ghi phiên và chính sách công cụ.
  • replyMode: "model" bỏ qua pipeline tác nhân và sử dụng llm.complete của runtime plugin để bot trả lời trực tiếp, có thể được định hình bằng modelsystemPrompt. Nhà cung cấp và mô hình được chọn sở hữu ngân sách hoàn thành.
Chế độ mô hình chạy các lượt hoàn thành dựa trên id tác nhân bot đã phân giải, yêu cầu bit tin cậy plugins.entries.clickclack.llm.allowAgentIdOverride: true rõ ràng:
Giữ bit tin cậy ở trạng thái tắt nếu bạn chỉ sử dụng chế độ trả lời agent mặc định; chế độ đó không cần bit này. Khi Gateway khởi động, mỗi tài khoản đã cấu hình sẽ xuất bản các lệnh gốc của OpenClaw lên ClickClack. Chúng xuất hiện trong tính năng tự động hoàn thành của trình soạn thảo, được gắn nhãn bằng định danh của bot. Tập lệnh đã xuất bản được thay thế toàn bộ sau mỗi lần khởi động, bao gồm cả việc xóa menu cũ khi danh mục lệnh gốc trống. Đồng bộ menu lệnh được bật theo mặc định. Đặt commandMenu: false trên một tài khoản để không tham gia:
Token cần commands:write. Các gói bot:writebot:admin hiện tại của ClickClack bao gồm phạm vi đó, và cũng có thể cấp riêng lẻ. Các token được tạo trước khi menu lệnh được giới thiệu có thể cần được thêm phạm vi hoặc thay thế bằng token mới. Quá trình đồng bộ hoạt động theo nỗ lực tối đa và chạy một lần mỗi khi Gateway khởi động. Thiếu phạm vi hoặc lỗi mạng sẽ ghi cảnh báo; máy chủ ClickClack cũ không có điểm cuối sẽ ghi nhật ký ở mức gỡ lỗi. Không lỗi nào trong số này chặn quá trình khởi động theo thời gian thực. Menu vẫn khả dụng khi tác nhân ngoại tuyến và bị xóa khi bot rời khỏi không gian làm việc. Bản phát hành này chỉ xuất bản đặc tả lệnh gốc. Bí danh và các danh mục lệnh của skill, plugin hoặc lệnh tùy chỉnh không được thêm vào menu. Nếu một tên cũng được đăng ký làm lệnh gạch chéo HTTP, ClickClack sẽ điều phối đăng ký đó trước; các lệnh menu khác tiếp tục đi qua quy trình phân phối tin nhắn thông thường. Sử dụng chế độ agent để thu thập bằng chứng tương quan giữa các dịch vụ. Với một id tin nhắn ClickClack có thẩm quyền ở dạng msg_<ulid> chuẩn, kênh sẽ suy ra id lượt chạy OpenClaw xác định clickclack:<message-id>. Sau đó, mỗi lệnh gọi mô hình hiển thị trong chẩn đoán dưới dạng clickclack:<message-id>:model:<n>; khi lượt đó sử dụng ClawRouter, cùng id lệnh gọi mô hình được gửi dưới dạng X-Request-ID. Chế độ model bỏ qua chẩn đoán lượt chạy/phiên tác nhân thông thường và vì vậy không phù hợp với đường dẫn bằng chứng này. Khi một sự kiện thời gian thực chứa payload.correlation_id đã được xác thực, kênh mang giá trị đó dưới dạng X-Correlation-ID trong yêu cầu tìm nạp tin nhắn có thẩm quyền và các yêu cầu trả lời ClickClack tạo ra từ đó. Các giá trị sử dụng tập 128 ký tự an toàn của ClickClack (A-Z, a-z, 0-9, ., _, :-); các giá trị không hợp lệ sẽ bị bỏ qua. Các phép nối này chỉ chứa mã định danh, tuyệt đối không chứa nội dung tin nhắn, prompt, lượt hoàn thành, thông tin xác thực hoặc đầu ra công cụ.

Phân phối nội dung đa phương tiện lâu dài

Các câu trả lời của tác nhân có chứa nội dung đa phương tiện sử dụng cơ chế phân phối lâu dài bắt buộc. OpenClaw gán nonce ổn định cho mỗi phần tin nhắn và mỗi nội dung tải lên trước lần ghi ClickClack đầu tiên, nhờ đó một lần thử lại sẽ tái sử dụng cùng nội dung tải lên và tin nhắn thay vì tiêu tốn hạn mức lưu trữ hoặc xuất bản bản trùng lặp. Nếu nội dung tải lên đã tồn tại sau khi khởi động lại, OpenClaw không đọc lại đường dẫn cục bộ ban đầu hoặc URL nội dung đa phương tiện từ xa. Hợp đồng khôi phục này yêu cầu máy chủ ClickClack hỗ trợ:
  • GET /api/uploads/by-nonce với X-ClickClack-Upload-Nonce: supported trên cả kết quả tìm thấy và không tìm thấy.
  • GET /api/messages/by-nonce với X-ClickClack-Message-Nonce: supported trên cả kết quả tìm thấy và không tìm thấy.
  • Tạo tin nhắn và liên kết tệp đính kèm có tính lũy đẳng cho cùng nonce và nội dung tải lên có phạm vi chủ sở hữu.
Mã 404 chung của máy chủ cũ không được xem là bằng chứng rằng lượt gửi không tồn tại. OpenClaw để trạng thái phân phối chưa được giải quyết thay vì mạo hiểm tạo bản trùng lặp; hãy cập nhật ClickClack trước khi bật câu trả lời của tác nhân tạo nội dung đa phương tiện.

Hàng hoạt động của tác nhân

Theo mặc định, kênh ClickClack không hiển thị gì trong khi một lượt tác nhân đang chạy; chỉ câu trả lời cuối cùng được gửi đến. Đặt agentActivity: true trên một tài khoản để xuất bản các hàng tin nhắn agent_commentaryagent_tool lâu dài trong khi lượt đang diễn ra:
Yêu cầu và hành vi:
  • Tắt theo mặc định. Các thiết lập tiêu chuẩn và máy chủ ClickClack cũ không bị ảnh hưởng.
  • Yêu cầu phạm vi token agent_activity:write. Phạm vi này tách biệt với bot:write và không được kế thừa từ phạm vi đó; hãy tạo token bot với --scopes bot:write,agent_activity:write (hoặc cấp phạm vi cho token hiện có) trước khi bật tùy chọn.
  • Suy giảm theo nỗ lực tối đa. Nếu token thiếu agent_activity:write hoặc máy chủ từ chối ghi hoạt động, lỗi sẽ được ghi nhật ký và câu trả lời cuối cùng vẫn được phân phối bình thường; không có hàng hoạt động nào xuất hiện.
  • Các hàng được nhóm theo từng lượt (turn_id), được hợp nhất để mỗi bước logic tương ứng với một hàng, và các hàng công cụ sử dụng cùng định dạng tiến trình như Discord/Slack/Telegram (tên công cụ cùng chi tiết lệnh).
  • Siêu dữ liệu quy nguồn. Các bài đăng do tác nhân tạo (hàng hoạt động và câu trả lời cuối cùng) mang các trường author_modelauthor_thinking được phân giải từ mô hình thực tế được dùng cho lượt đó (kể cả sau khi dùng phương án dự phòng). Các máy chủ không định nghĩa các cột này sẽ bỏ qua các trường JSON không xác định; các máy chủ lưu chúng có thể trả lời “mô hình nào đã nói dòng này, ở mức suy nghĩ nào” cho từng tin nhắn.

Đích

  • channel:<name-or-id> gửi đến một kênh trong không gian làm việc. Các đích trần mặc định là channel:.
  • dm:<user_id> tạo hoặc tái sử dụng cuộc trò chuyện trực tiếp với người dùng đó.
  • thread:<message_id> trả lời trong luồng bắt nguồn từ tin nhắn đó.
Các đích gửi đi rõ ràng cũng có thể mang tiền tố nhà cung cấp clickclack: hoặc cc:. Nội dung đa phương tiện gửi đi sử dụng API tải lên của ClickClack, sau đó đính kèm nội dung tải lên lâu dài vào tin nhắn kênh, câu trả lời luồng hoặc DM đã tạo. Các tệp cục bộ và URL nội dung đa phương tiện từ xa được hỗ trợ tuân theo chính sách truy cập nội dung đa phương tiện thông thường của OpenClaw, với giới hạn 64 MiB cho mỗi tệp. Các lượt gửi bền vững trong hàng đợi sử dụng nonce có phạm vi chủ sở hữu riêng cho từng nội dung tải lên và phần tin nhắn, sau đó thử lại việc liên kết tệp đính kèm với chính các đối tượng đó. Xem Phân phối nội dung đa phương tiện lâu dài để biết hợp đồng máy chủ và hành vi khôi phục. Ví dụ:

Quyền

Các phạm vi token ClickClack được API ClickClack thực thi.
  • bot:read: đọc dữ liệu không gian làm việc/kênh/tin nhắn/luồng/DM/thời gian thực/hồ sơ.
  • bot:write: bot:read cùng với tin nhắn kênh, câu trả lời luồng, DM, nội dung tải lên và xuất bản menu lệnh.
  • bot:admin: bot:write cùng với khả năng tạo kênh.
  • commands:write: xuất bản menu lệnh của bot. Có trong các gói bot:writebot:admin hiện tại và có thể cấp riêng lẻ.
  • agent_activity:write: các hàng hoạt động tác nhân lâu dài (agent_commentary / agent_tool). Không được kế thừa bởi bot:write hoặc bot:admin; chỉ bắt buộc khi đặt agentActivity: true.
OpenClaw chỉ cần bot:write hiện tại cho trò chuyện tác nhân thông thường và đồng bộ menu lệnh. Thêm agent_activity:write khi bật hàng hoạt động của tác nhân.

Khắc phục sự cố

  • ClickClack is not configured for account "<id>": đặt baseUrl, token (ví dụ thông qua CLICKCLACK_BOT_TOKEN) và workspace cho tài khoản đó.
  • ClickClack workspace not found: <value>: đặt workspace thành id, slug hoặc tên không gian làm việc do ClickClack trả về.
  • Không có câu trả lời đến: xác nhận token có quyền đọc theo thời gian thực và lưu ý rằng bot bỏ qua tin nhắn của chính nó và tin nhắn từ các bot khác.
  • Gửi đến kênh thất bại: xác minh bot là thành viên của không gian làm việc và có bot:write.
  • Không có menu lệnh: xác nhận commandMenu không phải là false, máy chủ ClickClack hỗ trợ PUT /api/bots/self/commands và token có commands:write.