Hướng dẫn này trình bày cách xây dựng một Plugin kênh kết nối OpenClaw với một nền tảng nhắn tin. Đến cuối hướng dẫn, bạn sẽ có một kênh hoạt động với bảo mật DM, ghép đôi, phân luồng trả lời và nhắn tin gửi đi.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Nếu bạn chưa từng xây dựng Plugin OpenClaw nào, hãy đọc
Bắt đầu trước để nắm cấu trúc gói cơ bản
và cách thiết lập manifest.
Cách Plugin kênh hoạt động
Plugin kênh không cần các công cụ gửi/chỉnh sửa/phản ứng riêng. OpenClaw giữ một công cụmessage dùng chung trong lõi. Plugin của bạn sở hữu:
- Cấu hình — phân giải tài khoản và trình hướng dẫn thiết lập
- Bảo mật — chính sách DM và danh sách cho phép
- Ghép đôi — luồng phê duyệt DM
- Ngữ pháp phiên — cách các id cuộc trò chuyện riêng của nhà cung cấp ánh xạ tới cuộc trò chuyện cơ sở, id luồng và các phương án cha dự phòng
- Gửi đi — gửi văn bản, phương tiện và bình chọn tới nền tảng
- Phân luồng — cách các trả lời được phân luồng
- Heartbeat đang nhập — tín hiệu đang nhập/bận tùy chọn cho các đích phân phối Heartbeat
:thread: chung và điều phối.
Nếu kênh của bạn hỗ trợ chỉ báo đang nhập ngoài các trả lời đến, hãy cung cấp
heartbeat.sendTyping(...) trên Plugin kênh. Lõi gọi hàm này với
đích phân phối Heartbeat đã được phân giải trước khi lượt chạy mô hình Heartbeat bắt đầu và
dùng vòng đời giữ sống/dọn dẹp đang nhập dùng chung. Thêm heartbeat.clearTyping(...)
khi nền tảng cần tín hiệu dừng rõ ràng.
Nếu kênh của bạn thêm tham số công cụ tin nhắn mang nguồn phương tiện, hãy cung cấp các
tên tham số đó qua describeMessageTool(...).mediaSourceParams. Lõi dùng
danh sách rõ ràng đó để chuẩn hóa đường dẫn sandbox và chính sách truy cập phương tiện gửi đi,
nên Plugin không cần các trường hợp đặc biệt trong lõi dùng chung cho tham số
ảnh đại diện, tệp đính kèm hoặc ảnh bìa riêng của nhà cung cấp.
Nên trả về một map theo khóa hành động, chẳng hạn
{ "set-profile": ["avatarUrl", "avatarPath"] }, để các hành động không liên quan không
kế thừa đối số phương tiện của hành động khác. Một mảng phẳng vẫn hoạt động cho các tham số
được chủ đích dùng chung trên mọi hành động được cung cấp.
Nếu nền tảng của bạn lưu phạm vi bổ sung bên trong id cuộc trò chuyện, hãy giữ phần phân tích đó
trong Plugin với messaging.resolveSessionConversation(...). Đây là hook
chuẩn để ánh xạ rawId tới id cuộc trò chuyện cơ sở, id luồng tùy chọn,
baseConversationId rõ ràng và mọi parentConversationCandidates.
Khi bạn trả về parentConversationCandidates, hãy giữ chúng được sắp xếp từ cha
hẹp nhất tới cuộc trò chuyện rộng nhất/cơ sở.
Dùng openclaw/plugin-sdk/channel-route khi mã Plugin cần chuẩn hóa
các trường giống tuyến, so sánh luồng con với tuyến cha của nó, hoặc xây dựng
khóa chống trùng lặp ổn định từ { channel, to, accountId, threadId }. Helper
chuẩn hóa id luồng dạng số giống như lõi, nên Plugin nên ưu tiên
nó thay vì so sánh tùy biến kiểu String(threadId).
Plugin có ngữ pháp đích riêng của nhà cung cấp có thể đưa parser của mình vào
resolveChannelRouteTargetWithParser(...) mà vẫn nhận được cùng dạng đích tuyến
và ngữ nghĩa dự phòng luồng mà lõi dùng.
Các Plugin đi kèm cần cùng phần phân tích trước khi registry kênh khởi động
cũng có thể cung cấp tệp session-key-api.ts cấp cao nhất với export
resolveSessionConversation(...) tương ứng. Lõi chỉ dùng bề mặt an toàn cho bootstrap này
khi registry Plugin runtime chưa khả dụng.
messaging.resolveParentConversationCandidates(...) vẫn khả dụng như một
phương án tương thích cũ khi Plugin chỉ cần phương án cha dự phòng dựa trên
id chung/thô. Nếu cả hai hook tồn tại, lõi dùng
resolveSessionConversation(...).parentConversationCandidates trước và chỉ
quay về resolveParentConversationCandidates(...) khi hook chuẩn
không cung cấp chúng.
Phê duyệt và năng lực kênh
Hầu hết Plugin kênh không cần mã riêng cho phê duyệt.- Lõi sở hữu
/approvetrong cùng cuộc trò chuyện, payload nút phê duyệt dùng chung và phân phối dự phòng chung. - Ưu tiên một đối tượng
approvalCapabilitytrên Plugin kênh khi kênh cần hành vi riêng cho phê duyệt. ChannelPlugin.approvalsđã bị loại bỏ. Đặt các thông tin phân phối/native/render/auth phê duyệt trênapprovalCapability.plugin.authchỉ dành cho đăng nhập/đăng xuất; lõi không còn đọc hook auth phê duyệt từ đối tượng đó.approvalCapability.authorizeActorActionvàapprovalCapability.getActionAvailabilityStatelà seam auth phê duyệt chuẩn.- Dùng
approvalCapability.getActionAvailabilityStatecho khả năng auth phê duyệt trong cùng cuộc trò chuyện. - Nếu kênh của bạn cung cấp phê duyệt exec native, dùng
approvalCapability.getExecInitiatingSurfaceStatecho trạng thái bề mặt khởi tạo/client native khi nó khác với auth phê duyệt trong cùng cuộc trò chuyện. Lõi dùng hook riêng cho exec đó để phân biệtenabledvớidisabled, quyết định kênh khởi tạo có hỗ trợ phê duyệt exec native hay không, và đưa kênh vào hướng dẫn dự phòng client native.createApproverRestrictedNativeApprovalCapability(...)điền phần này cho trường hợp phổ biến. - Dùng
outbound.shouldSuppressLocalPayloadPrompthoặcoutbound.beforeDeliverPayloadcho hành vi vòng đời payload riêng theo kênh, chẳng hạn ẩn prompt phê duyệt cục bộ trùng lặp hoặc gửi chỉ báo đang nhập trước khi phân phối. - Chỉ dùng
approvalCapability.deliverycho định tuyến phê duyệt native hoặc chặn dự phòng. - Dùng
approvalCapability.nativeRuntimecho các thông tin phê duyệt native do kênh sở hữu. Giữ nó lazy trên các điểm vào kênh nóng bằngcreateLazyChannelApprovalNativeRuntimeAdapter(...), có thể import module runtime của bạn khi cần trong khi vẫn cho phép lõi lắp ráp vòng đời phê duyệt. - Chỉ dùng
approvalCapability.renderkhi kênh thật sự cần payload phê duyệt tùy chỉnh thay vì renderer dùng chung. - Dùng
approvalCapability.describeExecApprovalSetupkhi kênh muốn trả lời ở nhánh disabled giải thích chính xác các núm cấu hình cần thiết để bật phê duyệt exec native. Hook nhận{ channel, channelLabel, accountId }; các kênh có tài khoản được đặt tên nên render các đường dẫn theo phạm vi tài khoản nhưchannels.<channel>.accounts.<id>.execApprovals.*thay vì mặc định cấp cao nhất. - Nếu kênh có thể suy ra các danh tính DM giống chủ sở hữu ổn định từ cấu hình hiện có, dùng
createResolvedApproverActionAuthAdaptertừopenclaw/plugin-sdk/approval-runtimeđể giới hạn/approvetrong cùng cuộc trò chuyện mà không thêm logic lõi riêng cho phê duyệt. - Nếu kênh cần phân phối phê duyệt native, hãy giữ mã kênh tập trung vào chuẩn hóa đích cộng với thông tin transport/presentation. Dùng
createChannelExecApprovalProfile,createChannelNativeOriginTargetResolver,createChannelApproverDmTargetResolvervàcreateApproverRestrictedNativeApprovalCapabilitytừopenclaw/plugin-sdk/approval-runtime. Đặt các thông tin riêng của kênh phía sauapprovalCapability.nativeRuntime, lý tưởng là quacreateChannelApprovalNativeRuntimeAdapter(...)hoặccreateLazyChannelApprovalNativeRuntimeAdapter(...), để lõi có thể lắp ráp handler và sở hữu lọc yêu cầu, định tuyến, chống trùng lặp, hết hạn, đăng ký Gateway và thông báo đã định tuyến nơi khác.nativeRuntimeđược chia thành một vài seam nhỏ hơn: createChannelNativeOriginTargetResolvermặc định dùng bộ so khớp channel-route dùng chung cho các đích{ to, accountId, threadId }. Chỉ truyềntargetsMatchkhi kênh có quy tắc tương đương riêng của nhà cung cấp, chẳng hạn so khớp tiền tố timestamp của Slack.- Truyền
normalizeTargetForMatchvàocreateChannelNativeOriginTargetResolverkhi kênh cần chuẩn hóa id nhà cung cấp trước khi bộ so khớp tuyến mặc định hoặc callbacktargetsMatchtùy chỉnh chạy, trong khi vẫn giữ đích gốc để phân phối. Chỉ dùngnormalizeTargetkhi chính đích phân phối đã phân giải cần được chuẩn hóa. availability— tài khoản đã được cấu hình hay chưa và yêu cầu có nên được xử lý hay khôngpresentation— ánh xạ view model phê duyệt dùng chung thành payload native đang chờ/đã phân giải/đã hết hạn hoặc hành động cuốitransport— chuẩn bị đích cùng với gửi/cập nhật/xóa tin nhắn phê duyệt nativeinteractions— các hook bind/unbind/clear-action tùy chọn cho nút hoặc phản ứng nativeobserve— các hook chẩn đoán phân phối tùy chọn- Nếu kênh cần các đối tượng do runtime sở hữu như client, token, ứng dụng Bolt hoặc webhook receiver, hãy đăng ký chúng qua
openclaw/plugin-sdk/channel-runtime-context. Registry runtime-context chung cho phép lõi bootstrap các handler dựa trên capability từ trạng thái khởi động kênh mà không cần thêm lớp keo wrapper riêng cho phê duyệt. - Chỉ dùng
createChannelApprovalHandlerhoặccreateChannelNativeApprovalRuntimecấp thấp hơn khi seam dựa trên capability chưa đủ biểu đạt. - Các kênh phê duyệt native phải định tuyến cả
accountIdvàapprovalKindqua các helper đó.accountIdgiữ chính sách phê duyệt đa tài khoản được giới hạn vào đúng tài khoản bot, cònapprovalKindgiữ cho hành vi phê duyệt exec so với Plugin khả dụng với kênh mà không cần nhánh hardcode trong lõi. - Lõi hiện cũng sở hữu thông báo định tuyến lại phê duyệt. Plugin kênh không nên gửi tin nhắn tiếp nối riêng kiểu “phê duyệt đã chuyển tới DM / kênh khác” từ
createChannelNativeApprovalRuntime; thay vào đó, cung cấp định tuyến origin + DM người phê duyệt chính xác qua các helper capability phê duyệt dùng chung và để lõi tổng hợp các lần phân phối thực tế trước khi đăng bất kỳ thông báo nào trở lại cuộc trò chuyện khởi tạo. - Giữ nguyên loại id phê duyệt đã phân phối từ đầu đến cuối. Client native không nên đoán hoặc viết lại định tuyến phê duyệt exec so với Plugin từ trạng thái cục bộ của kênh.
- Các loại phê duyệt khác nhau có thể chủ đích cung cấp các bề mặt native khác nhau.
Các ví dụ đi kèm hiện tại:
- Slack giữ định tuyến phê duyệt native khả dụng cho cả id exec và Plugin.
- Matrix giữ cùng định tuyến DM/kênh native và UX phản ứng cho phê duyệt exec và Plugin, đồng thời vẫn cho phép auth khác nhau theo loại phê duyệt.
createApproverRestrictedNativeApprovalAdaptervẫn tồn tại như một wrapper tương thích, nhưng mã mới nên ưu tiên builder capability và cung cấpapprovalCapabilitytrên Plugin.
openclaw/plugin-sdk/approval-auth-runtimeopenclaw/plugin-sdk/approval-client-runtimeopenclaw/plugin-sdk/approval-delivery-runtimeopenclaw/plugin-sdk/approval-gateway-runtimeopenclaw/plugin-sdk/approval-handler-adapter-runtimeopenclaw/plugin-sdk/approval-handler-runtimeopenclaw/plugin-sdk/approval-native-runtimeopenclaw/plugin-sdk/approval-reply-runtimeopenclaw/plugin-sdk/channel-runtime-context
openclaw/plugin-sdk/setup-runtime,
openclaw/plugin-sdk/setup-adapter-runtime,
openclaw/plugin-sdk/reply-runtime,
openclaw/plugin-sdk/reply-dispatch-runtime,
openclaw/plugin-sdk/reply-reference và
openclaw/plugin-sdk/reply-chunking khi bạn không cần bề mặt ô lớn hơn.
Riêng với thiết lập:
openclaw/plugin-sdk/setup-runtimebao phủ các helper thiết lập an toàn cho runtime: adapter vá thiết lập an toàn khi import (createPatchedAccountSetupAdapter,createEnvPatchedAccountSetupAdapter,createSetupInputPresenceValidator), đầu ra ghi chú tra cứu,promptResolvedAllowFrom,splitSetupEntriesvà các builder setup-proxy được ủy quyềnopenclaw/plugin-sdk/setup-adapter-runtimelà seam adapter hẹp có nhận biết env chocreateEnvPatchedAccountSetupAdapteropenclaw/plugin-sdk/channel-setupbao phủ các builder thiết lập cài đặt tùy chọn cùng một vài primitive an toàn cho thiết lập:createOptionalChannelSetupSurface,createOptionalChannelSetupAdapter,
channelEnvVars. Giữ envVars runtime của kênh hoặc các
hằng cục bộ chỉ cho phần nội dung hướng tới người vận hành.
Nếu kênh của bạn có thể xuất hiện trong status, channels list, channels status, hoặc các lần quét SecretRef trước khi runtime của plugin khởi động, hãy thêm openclaw.setupEntry trong package.json. Entry point đó phải an toàn để import trong các đường dẫn lệnh chỉ đọc và phải trả về siêu dữ liệu kênh, adapter cấu hình an toàn cho thiết lập, adapter trạng thái và siêu dữ liệu mục tiêu bí mật của kênh cần thiết cho các bản tóm tắt đó. Không khởi động client, listener hoặc runtime truyền tải từ setup entry.
Giữ đường dẫn import của entry kênh chính cũng hẹp. Discovery có thể đánh giá entry và module plugin kênh để đăng ký capability mà không kích hoạt kênh. Các tệp như channel-plugin-api.ts nên export đối tượng plugin kênh mà không import wizard thiết lập, client truyền tải, socket listener, trình khởi chạy subprocess hoặc module khởi động dịch vụ. Đặt các phần runtime đó trong các module được tải từ registerFull(...), runtime setter hoặc adapter capability lazy.
createOptionalChannelSetupWizard, DEFAULT_ACCOUNT_ID,
createTopLevelChannelDmPolicy, setSetupChannelEnabled, và
splitSetupEntries
- chỉ dùng seam
openclaw/plugin-sdk/setuprộng hơn khi bạn cũng cần các helper thiết lập/cấu hình dùng chung nặng hơn nhưmoveSingleAccountChannelSectionToDefaultAccount(...)
createOptionalChannelSetupSurface(...). Adapter/wizard được tạo sẽ fail closed khi ghi cấu hình và finalize, đồng thời dùng lại cùng một thông báo yêu cầu cài đặt trên validation, finalize và nội dung liên kết tài liệu.
Với các đường dẫn kênh nóng khác, hãy ưu tiên các helper hẹp thay vì các bề mặt legacy rộng hơn:
openclaw/plugin-sdk/account-core,openclaw/plugin-sdk/account-id,openclaw/plugin-sdk/account-resolution, vàopenclaw/plugin-sdk/account-helperscho cấu hình nhiều tài khoản và fallback tài khoản mặc địnhopenclaw/plugin-sdk/inbound-envelopevàopenclaw/plugin-sdk/inbound-reply-dispatchcho route/envelope inbound và wiring ghi rồi dispatchopenclaw/plugin-sdk/messaging-targetscho phân tích/matching mục tiêuopenclaw/plugin-sdk/outbound-mediavàopenclaw/plugin-sdk/outbound-runtimecho tải media cùng các delegate danh tính/gửi outbound và lập kế hoạch payloadbuildThreadAwareOutboundSessionRoute(...)từopenclaw/plugin-sdk/channel-corekhi một route outbound cần giữ nguyênreplyToId/threadIdrõ ràng hoặc khôi phục session:thread:hiện tại sau khi khóa session cơ sở vẫn khớp. Provider plugin có thể ghi đè độ ưu tiên, hành vi hậu tố và chuẩn hóa thread id khi nền tảng của chúng có ngữ nghĩa phân phối thread gốc.openclaw/plugin-sdk/thread-bindings-runtimecho vòng đời thread-binding và đăng ký adapteropenclaw/plugin-sdk/agent-media-payloadchỉ khi vẫn cần layout trường payload agent/media legacyopenclaw/plugin-sdk/telegram-command-configcho việc chuẩn hóa lệnh tùy chỉnh Telegram, validation trùng lặp/xung đột và contract cấu hình lệnh ổn định khi fallback
Chính sách mention inbound
Giữ việc xử lý mention inbound tách thành hai lớp:- thu thập bằng chứng do plugin sở hữu
- đánh giá chính sách dùng chung
openclaw/plugin-sdk/channel-mention-gating cho các quyết định chính sách mention.
Chỉ dùng openclaw/plugin-sdk/channel-inbound khi bạn cần barrel helper inbound rộng hơn.
Phù hợp với logic cục bộ của plugin:
- phát hiện reply-to-bot
- phát hiện quoted-bot
- kiểm tra thread-participation
- loại trừ service/system-message
- cache native của nền tảng cần thiết để chứng minh bot participation
requireMention- kết quả mention rõ ràng
- allowlist mention ngầm định
- command bypass
- quyết định skip cuối cùng
- Tính toán các fact mention cục bộ.
- Truyền các fact đó vào
resolveInboundMentionDecision({ facts, policy }). - Dùng
decision.effectiveWasMentioned,decision.shouldBypassMentionvàdecision.shouldSkiptrong cổng inbound của bạn.
api.runtime.channel.mentions expose cùng các helper mention dùng chung cho các plugin kênh bundled đã phụ thuộc vào runtime injection:
buildMentionRegexesmatchesMentionPatternsmatchesMentionWithExplicitimplicitMentionKindWhenresolveInboundMentionDecision
implicitMentionKindWhen và resolveInboundMentionDecision, hãy import từ openclaw/plugin-sdk/channel-mention-gating để tránh tải các helper runtime inbound không liên quan.
Các helper resolveMentionGating* cũ hơn vẫn nằm trên openclaw/plugin-sdk/channel-inbound chỉ dưới dạng export tương thích. Code mới nên dùng resolveInboundMentionDecision({ facts, policy }).
Hướng dẫn từng bước
Package and manifest
Tạo các tệp plugin chuẩn. Trường
channel trong package.json là thứ khiến đây trở thành plugin kênh. Để xem toàn bộ bề mặt siêu dữ liệu package, hãy xem Thiết lập và cấu hình Plugin:configSchema validate plugins.entries.acme-chat.config. Dùng nó cho các thiết lập do plugin sở hữu mà không phải cấu hình tài khoản kênh. channelConfigs validate channels.acme-chat và là nguồn cold-path được schema cấu hình, thiết lập và các bề mặt UI dùng trước khi runtime plugin tải.Build the channel plugin object
Interface Với các kênh chấp nhận cả khóa DM cấp cao nhất canonical và khóa lồng legacy, hãy dùng các helper từ
ChannelPlugin có nhiều bề mặt adapter tùy chọn. Bắt đầu với mức tối thiểu — id và setup — rồi thêm adapter khi bạn cần.Tạo src/channel.ts:src/channel.ts
plugin-sdk/channel-config-helpers: resolveChannelDmAccess, resolveChannelDmPolicy, resolveChannelDmAllowFrom và normalizeChannelDmPolicy giữ các giá trị cục bộ theo tài khoản đi trước các giá trị root kế thừa. Ghép cùng resolver đó với sửa chữa doctor thông qua normalizeLegacyDmAliases để runtime và migration đọc cùng một contract.What createChatChannelPlugin does for you
What createChatChannelPlugin does for you
Thay vì triển khai thủ công các interface adapter cấp thấp, bạn truyền các tùy chọn khai báo và builder sẽ kết hợp chúng:
Bạn cũng có thể truyền trực tiếp các đối tượng adapter thô thay vì các tùy chọn khai báo nếu cần toàn quyền kiểm soát.Bộ điều hợp gửi đi thô có thể định nghĩa một hàm
| Tùy chọn | Nó nối gì |
|---|---|
security.dm | Resolver bảo mật DM có phạm vi từ các trường cấu hình |
pairing.text | Luồng ghép đôi DM dựa trên văn bản với trao đổi mã |
threading | Resolver chế độ reply-to (cố định, theo phạm vi tài khoản hoặc tùy chỉnh) |
outbound.attachedResults | Các hàm gửi trả về siêu dữ liệu kết quả (ID tin nhắn) |
chunker(text, limit, ctx).
ctx.formatting tùy chọn mang các quyết định định dạng tại thời điểm phân phối
như maxLinesPerMessage; áp dụng nó trước khi gửi để luồng trả lời
và ranh giới phân đoạn được xử lý một lần bởi cơ chế phân phối gửi đi dùng chung.
Ngữ cảnh gửi cũng bao gồm replyToIdSource (implicit hoặc explicit)
khi một mục tiêu trả lời gốc đã được xử lý, để các trình trợ giúp payload có thể giữ nguyên
thẻ trả lời tường minh mà không tiêu thụ một ô trả lời dùng một lần ngầm định.Nối điểm vào
Tạo Đặt các bộ mô tả CLI do kênh sở hữu trong
index.ts:index.ts
registerCliMetadata(...) để OpenClaw
có thể hiển thị chúng trong trợ giúp gốc mà không kích hoạt toàn bộ runtime của kênh,
trong khi các lần tải đầy đủ thông thường vẫn lấy cùng các bộ mô tả đó để đăng ký lệnh thực sự.
Giữ registerFull(...) cho công việc chỉ thuộc runtime.
Nếu registerFull(...) đăng ký các phương thức RPC của Gateway, hãy dùng một
tiền tố dành riêng cho Plugin. Các không gian tên quản trị lõi (config.*,
exec.approvals.*, wizard.*, update.*) vẫn được dành riêng và luôn
phân giải tới operator.admin.
defineChannelPluginEntry tự động xử lý việc tách chế độ đăng ký. Xem
Điểm vào để biết tất cả
tùy chọn.Thêm một mục thiết lập
Tạo OpenClaw tải mục này thay cho mục đầy đủ khi kênh bị tắt
hoặc chưa được cấu hình. Điều này tránh kéo mã runtime nặng vào trong các luồng thiết lập.
Xem Thiết lập và cấu hình để biết chi tiết.Các kênh workspace được đóng gói tách các export an toàn cho thiết lập vào các mô-đun phụ
có thể dùng
setup-entry.ts để tải nhẹ trong quá trình hướng dẫn thiết lập:setup-entry.ts
defineBundledChannelSetupEntry(...) từ
openclaw/plugin-sdk/channel-entry-contract khi chúng cũng cần một
trình đặt runtime tường minh tại thời điểm thiết lập.Xử lý tin nhắn đến
Plugin của bạn cần nhận tin nhắn từ nền tảng và chuyển tiếp chúng tới
OpenClaw. Mẫu điển hình là một Webhook xác minh yêu cầu và
điều phối yêu cầu đó qua trình xử lý tin nhắn đến của kênh:
Việc xử lý tin nhắn đến phụ thuộc vào từng kênh. Mỗi Plugin kênh sở hữu
pipeline tin nhắn đến riêng của nó. Hãy xem các Plugin kênh được đóng gói
(ví dụ gói Plugin Microsoft Teams hoặc Google Chat) để thấy các mẫu thực tế.
Kiểm thử
Viết các bài kiểm thử đặt cùng chỗ trong Để biết các trình trợ giúp kiểm thử dùng chung, xem Kiểm thử.
src/channel.test.ts:src/channel.test.ts
Cấu trúc tệp
Chủ đề nâng cao
Tùy chọn luồng
Chế độ trả lời cố định, theo phạm vi tài khoản, hoặc tùy chỉnh
Tích hợp công cụ tin nhắn
describeMessageTool và khám phá hành động
Phân giải mục tiêu
inferTargetChatType, looksLikeId, resolveTarget
Trình trợ giúp runtime
TTS, STT, phương tiện, tác tử phụ qua api.runtime
Một số ranh giới trợ giúp được đóng gói vẫn tồn tại để bảo trì Plugin được đóng gói và
khả năng tương thích. Chúng không phải là mẫu được khuyến nghị cho Plugin kênh mới;
hãy ưu tiên các đường dẫn con kênh/thiết lập/trả lời/runtime chung từ bề mặt SDK
chung, trừ khi bạn đang trực tiếp bảo trì họ Plugin được đóng gói đó.
Bước tiếp theo
- Plugin nhà cung cấp — nếu Plugin của bạn cũng cung cấp mô hình
- Tổng quan SDK — tham chiếu import đường dẫn con đầy đủ
- Kiểm thử SDK — tiện ích kiểm thử và kiểm thử hợp đồng
- Manifest Plugin — schema manifest đầy đủ