Chuyển đến nội dung chính

Documentation Index

Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

OpenClaw đã chuyển từ một lớp tương thích ngược rộng sang một kiến trúc Plugin hiện đại với các import tập trung, có tài liệu rõ ràng. Nếu Plugin của bạn được xây dựng trước kiến trúc mới, hướng dẫn này sẽ giúp bạn di chuyển.

Điều gì đang thay đổi

Hệ thống Plugin cũ cung cấp hai bề mặt mở rộng cho phép Plugin import mọi thứ cần thiết từ một điểm vào duy nhất:
  • openclaw/plugin-sdk/compat - một import duy nhất tái xuất hàng chục trình trợ giúp. Nó được giới thiệu để giữ cho các Plugin cũ dựa trên hook tiếp tục hoạt động trong khi kiến trúc Plugin mới đang được xây dựng.
  • openclaw/plugin-sdk/infra-runtime - một barrel trình trợ giúp runtime rộng trộn lẫn sự kiện hệ thống, trạng thái Heartbeat, hàng đợi phân phối, trình trợ giúp fetch/proxy, trình trợ giúp tệp, kiểu phê duyệt và các tiện ích không liên quan.
  • openclaw/plugin-sdk/config-runtime - một barrel tương thích cấu hình rộng vẫn mang các trình trợ giúp load/write trực tiếp đã bị loại bỏ trong giai đoạn di chuyển.
  • openclaw/extension-api - một cầu nối cho phép Plugin truy cập trực tiếp vào các trình trợ giúp phía host như trình chạy agent nhúng.
  • api.registerEmbeddedExtensionFactory(...) - một hook extension đóng gói chỉ dành cho Pi đã bị gỡ bỏ, từng có thể quan sát các sự kiện embedded-runner như tool_result.
Các bề mặt import rộng hiện đã bị loại bỏ. Chúng vẫn hoạt động ở runtime, nhưng Plugin mới không được dùng chúng, và các Plugin hiện có nên di chuyển trước khi bản phát hành lớn tiếp theo gỡ bỏ chúng. API đăng ký embedded extension factory chỉ dành cho Pi đã bị gỡ bỏ; hãy dùng middleware kết quả công cụ thay thế. OpenClaw không gỡ bỏ hoặc diễn giải lại hành vi Plugin đã được tài liệu hóa trong cùng thay đổi giới thiệu phần thay thế. Các thay đổi phá vỡ hợp đồng trước hết phải đi qua adapter tương thích, chẩn đoán, tài liệu và giai đoạn loại bỏ. Điều đó áp dụng cho import SDK, trường manifest, API thiết lập, hook và hành vi đăng ký runtime.
Lớp tương thích ngược sẽ bị gỡ bỏ trong một bản phát hành lớn trong tương lai. Các Plugin vẫn import từ những bề mặt này sẽ bị hỏng khi điều đó xảy ra. Các đăng ký embedded extension factory chỉ dành cho Pi hiện đã không còn được load.

Vì sao thay đổi này được thực hiện

Cách tiếp cận cũ gây ra các vấn đề:
  • Khởi động chậm - import một trình trợ giúp đã load hàng chục mô-đun không liên quan
  • Phụ thuộc vòng - các tái xuất rộng khiến việc tạo vòng import trở nên dễ dàng
  • Bề mặt API không rõ ràng - không có cách nào biết export nào ổn định và export nào là nội bộ
SDK Plugin hiện đại khắc phục điều này: mỗi đường dẫn import (openclaw/plugin-sdk/\<subpath\>) là một mô-đun nhỏ, tự chứa, có mục đích rõ ràng và hợp đồng được tài liệu hóa. Các seam tiện ích provider cũ cho các kênh đóng gói sẵn cũng đã bị gỡ bỏ. Các seam trình trợ giúp mang thương hiệu kênh là lối tắt riêng trong mono-repo, không phải hợp đồng Plugin ổn định. Hãy dùng các subpath SDK chung hẹp thay thế. Bên trong workspace Plugin đóng gói sẵn, giữ các trình trợ giúp do provider sở hữu trong api.ts hoặc runtime-api.ts của chính Plugin đó. Ví dụ provider đóng gói sẵn hiện tại:
  • Anthropic giữ các trình trợ giúp stream dành riêng cho Claude trong seam api.ts / contract-api.ts của chính nó
  • OpenAI giữ các provider builder, trình trợ giúp mô hình mặc định và realtime provider builder trong api.ts của chính nó
  • OpenRouter giữ provider builder và trình trợ giúp onboarding/cấu hình trong chính api.ts của nó

Kế hoạch di chuyển Talk và giọng nói realtime

Mã Talk cho giọng nói realtime, điện thoại, cuộc họp và trình duyệt đang chuyển từ ghi sổ lượt cục bộ theo bề mặt sang bộ điều khiển phiên Talk dùng chung được export bởi openclaw/plugin-sdk/realtime-voice. Bộ điều khiển mới sở hữu phong bì sự kiện Talk chung, trạng thái lượt đang hoạt động, trạng thái capture, trạng thái âm thanh đầu ra, lịch sử sự kiện gần đây và từ chối lượt cũ. Plugin provider nên tiếp tục sở hữu phiên realtime đặc thù của vendor; Plugin bề mặt nên tiếp tục sở hữu capture, phát lại, điện thoại và các đặc thù cuộc họp. Đợt di chuyển Talk này có chủ ý làm sạch bằng thay đổi phá vỡ:
  1. Giữ các primitive runtime/bộ điều khiển dùng chung trong plugin-sdk/realtime-voice.
  2. Chuyển các bề mặt đóng gói sẵn sang bộ điều khiển dùng chung: relay trình duyệt, handoff phòng được quản lý, realtime cuộc gọi thoại, STT streaming cuộc gọi thoại, Google Meet realtime và native push-to-talk.
  3. Thay thế các họ RPC Talk cũ bằng API cuối cùng talk.session.*talk.client.*.
  4. Quảng bá một kênh sự kiện Talk trực tiếp trong Gateway hello-ok.features.events: talk.event.
  5. Xóa endpoint HTTP realtime cũ và mọi đường dẫn ghi đè hướng dẫn theo thời điểm yêu cầu.
Mã mới không nên gọi trực tiếp createTalkEventSequencer(...) trừ khi nó đang triển khai adapter cấp thấp hoặc fixture kiểm thử. Ưu tiên bộ điều khiển dùng chung để các sự kiện theo phạm vi lượt không thể được phát ra khi không có id lượt, các lệnh gọi turnEnd / turnCancel cũ không thể xóa một lượt đang hoạt động mới hơn, và các sự kiện vòng đời âm thanh đầu ra luôn nhất quán trên điện thoại, cuộc họp, relay trình duyệt, handoff phòng được quản lý và client Talk native. Hình dạng API công khai mục tiêu là:
// Gateway-owned Talk session API.
await gateway.request("talk.session.create", {
  mode: "realtime",
  transport: "gateway-relay",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.session.appendAudio", { sessionId, audioBase64 });
await gateway.request("talk.session.cancelOutput", { sessionId, reason: "barge-in" });
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "working" },
  options: { willContinue: true },
});
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "already_delivered" },
  options: { suppressResponse: true },
});
await gateway.request("talk.session.submitToolResult", { sessionId, callId, result });
await gateway.request("talk.session.close", { sessionId });

// Client-owned provider session API.
await gateway.request("talk.client.create", {
  mode: "realtime",
  transport: "webrtc",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.client.toolCall", { sessionKey, callId, name, args });
Các phiên WebRTC/provider-websocket do trình duyệt sở hữu dùng talk.client.create, vì trình duyệt sở hữu việc thương lượng provider và truyền tải media trong khi Gateway sở hữu thông tin xác thực, hướng dẫn và chính sách công cụ. talk.session.* là bề mặt chung do Gateway quản lý cho các phiên realtime gateway-relay, phiên phiên âm gateway-relay và phiên STT/TTS native của phòng được quản lý. Các cấu hình cũ đặt bộ chọn realtime cạnh talk.provider / talk.providers nên được sửa bằng openclaw doctor --fix; Talk runtime không diễn giải lại cấu hình provider speech/TTS thành cấu hình provider realtime. Các tổ hợp talk.session.create được hỗ trợ được cố ý giữ nhỏ:
Chế độTruyền tảiBrainChủ sở hữuGhi chú
realtimegateway-relayagent-consultGatewayÂm thanh provider song công được nối qua Gateway; các lệnh gọi công cụ được định tuyến qua công cụ agent-consult.
transcriptiongateway-relaynoneGatewayChỉ streaming STT; bên gọi gửi âm thanh đầu vào và nhận sự kiện bản ghi.
stt-ttsmanaged-roomagent-consultPhòng native/clientCác phòng kiểu push-to-talk và walkie-talkie nơi client sở hữu capture/phát lại và Gateway sở hữu trạng thái lượt.
stt-ttsmanaged-roomdirect-toolsPhòng native/clientChế độ phòng chỉ dành cho admin cho các bề mặt bên thứ nhất đáng tin cậy thực thi trực tiếp hành động công cụ Gateway.
Bản đồ phương thức đã gỡ bỏ:
Mới
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput hoặc talk.session.cancelTurn
talk.realtime.relayToolResulttalk.session.submitToolResult
talk.realtime.relayStoptalk.session.close
talk.transcription.sessiontalk.session.create({ mode: "transcription" })
talk.transcription.relayAudiotalk.session.appendAudio
talk.transcription.relayCanceltalk.session.cancelTurn
talk.transcription.relayStoptalk.session.close
talk.handoff.createtalk.session.create({ transport: "managed-room" })
talk.handoff.jointalk.session.join
talk.handoff.revoketalk.session.close
Từ vựng điều khiển hợp nhất cũng được cố ý giữ hẹp:
Phương thứcÁp dụng choHợp đồng
talk.session.appendAudiorealtime/gateway-relay, transcription/gateway-relayThêm một đoạn âm thanh PCM base64 vào phiên provider do cùng kết nối Gateway sở hữu.
talk.session.startTurnstt-tts/managed-roomBắt đầu một lượt người dùng trong phòng được quản lý.
talk.session.endTurnstt-tts/managed-roomKết thúc lượt đang hoạt động sau khi xác thực lượt cũ.
talk.session.cancelTurntất cả phiên do Gateway sở hữuHủy công việc capture/provider/agent/TTS đang hoạt động cho một lượt.
talk.session.cancelOutputrealtime/gateway-relayDừng đầu ra âm thanh của trợ lý mà không nhất thiết kết thúc lượt người dùng.
talk.session.submitToolResultrealtime/gateway-relayHoàn tất một lệnh gọi công cụ provider do relay phát ra; truyền options.willContinue cho đầu ra tạm thời hoặc options.suppressResponse để đáp ứng lệnh gọi mà không có phản hồi trợ lý khác.
talk.session.closetất cả phiên hợp nhấtDừng phiên relay hoặc thu hồi trạng thái phòng được quản lý, sau đó quên id phiên hợp nhất.
Không đưa các trường hợp đặc biệt theo nhà cung cấp hoặc nền tảng vào core để làm việc này. Core sở hữu ngữ nghĩa phiên Talk. Các plugin nhà cung cấp sở hữu việc thiết lập phiên của vendor. Voice-call và Google Meet sở hữu các adapter điện thoại/cuộc họp. Trình duyệt và ứng dụng native sở hữu UX thu/phát thiết bị.

Chính sách tương thích

Đối với các plugin bên ngoài, công việc tương thích tuân theo thứ tự này:
  1. thêm contract mới
  2. giữ hành vi cũ được nối qua một adapter tương thích
  3. phát ra diagnostic hoặc cảnh báo nêu tên đường dẫn cũ và phần thay thế
  4. bao phủ cả hai đường dẫn trong kiểm thử
  5. ghi tài liệu về việc ngừng hỗ trợ và đường dẫn di trú
  6. chỉ gỡ bỏ sau cửa sổ di trú đã công bố, thường trong một bản phát hành major
Maintainer có thể kiểm tra hàng đợi di trú hiện tại bằng pnpm plugins:boundary-report. Dùng pnpm plugins:boundary-report:summary để có số đếm gọn, --owner <id> cho một plugin hoặc chủ sở hữu tương thích, và pnpm plugins:boundary-report:ci khi một cổng CI cần thất bại trên các bản ghi tương thích đã đến hạn, import SDK dự trữ xuyên chủ sở hữu, hoặc các subpath SDK dự trữ không dùng. Báo cáo nhóm các bản ghi tương thích đã ngừng hỗ trợ theo ngày gỡ bỏ, đếm tham chiếu mã/tài liệu cục bộ, hiển thị các import SDK dự trữ xuyên chủ sở hữu, và tóm tắt cầu nối SDK memory-host riêng tư để việc dọn dẹp tương thích luôn tường minh thay vì dựa vào các tìm kiếm ad hoc. Các subpath SDK dự trữ phải có mức sử dụng của chủ sở hữu được theo dõi; các export helper dự trữ không dùng nên được gỡ khỏi SDK công khai. Nếu một trường manifest vẫn được chấp nhận, tác giả plugin có thể tiếp tục dùng nó cho đến khi tài liệu và diagnostic nói khác. Mã mới nên ưu tiên phần thay thế đã được ghi tài liệu, nhưng các plugin hiện có không nên bị hỏng trong các bản phát hành minor thông thường.

Cách di trú

1

Migrate runtime config load/write helpers

Các plugin bundled nên ngừng gọi trực tiếp api.runtime.config.loadConfig()api.runtime.config.writeConfigFile(...). Ưu tiên config đã được truyền vào đường dẫn gọi đang hoạt động. Các handler tồn tại lâu cần snapshot tiến trình hiện tại có thể dùng api.runtime.config.current(). Các công cụ agent tồn tại lâu nên dùng ctx.getRuntimeConfig() của tool context bên trong execute để một công cụ được tạo trước một lần ghi config vẫn thấy runtime config đã được làm mới.Việc ghi config phải đi qua các helper giao dịch và chọn một chính sách sau ghi:
await api.runtime.config.mutateConfigFile({
  afterWrite: { mode: "auto" },
  mutate(draft) {
    draft.plugins ??= {};
  },
});
Dùng afterWrite: { mode: "restart", reason: "..." } khi caller biết thay đổi yêu cầu restart gateway sạch, và afterWrite: { mode: "none", reason: "..." } chỉ khi caller sở hữu bước tiếp theo và cố ý muốn chặn reload planner. Kết quả mutation bao gồm một tóm tắt followUp có kiểu cho kiểm thử và logging; gateway vẫn chịu trách nhiệm áp dụng hoặc lên lịch restart. loadConfigwriteConfigFile vẫn là các helper tương thích đã ngừng hỗ trợ cho plugin bên ngoài trong cửa sổ di trú và cảnh báo một lần với mã tương thích runtime-config-load-write. Plugin bundled và mã runtime của repo được bảo vệ bằng các guardrail scanner trong pnpm check:deprecated-api-usagepnpm check:no-runtime-action-load-config: việc dùng plugin production mới thất bại ngay, ghi config trực tiếp thất bại, các phương thức gateway server phải dùng request runtime snapshot, các helper gửi/hành động/client của runtime channel phải nhận config từ boundary của chúng, và các module runtime tồn tại lâu có đúng không cuộc gọi loadConfig() ambient nào được phép.Mã plugin mới cũng nên tránh import barrel tương thích rộng openclaw/plugin-sdk/config-runtime. Dùng subpath SDK hẹp khớp với công việc:
Nhu cầuImport
Kiểu config như OpenClawConfigopenclaw/plugin-sdk/config-contracts
Assertion config đã tải và tra cứu config plugin-entryopenclaw/plugin-sdk/plugin-config-runtime
Đọc snapshot runtime hiện tạiopenclaw/plugin-sdk/runtime-config-snapshot
Ghi configopenclaw/plugin-sdk/config-mutation
Helper session storeopenclaw/plugin-sdk/session-store-runtime
Config bảng Markdownopenclaw/plugin-sdk/markdown-table-runtime
Helper runtime chính sách nhómopenclaw/plugin-sdk/runtime-group-policy
Phân giải input secretopenclaw/plugin-sdk/secret-input-runtime
Override model/sessionopenclaw/plugin-sdk/model-session-runtime
Plugin bundled và các kiểm thử của chúng được scanner bảo vệ khỏi barrel rộng để các import và mock ở cục bộ với hành vi chúng cần. Barrel rộng vẫn tồn tại để tương thích bên ngoài, nhưng mã mới không nên phụ thuộc vào nó.
2

Migrate Pi tool-result extensions to middleware

Các plugin bundled phải thay thế handler tool-result api.registerEmbeddedExtensionFactory(...) chỉ dành cho Pi bằng middleware trung lập với runtime.
// Pi and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["pi", "codex"],
});
Cập nhật manifest plugin cùng lúc:
{
  "contracts": {
    "agentToolResultMiddleware": ["pi", "codex"]
  }
}
Plugin bên ngoài không thể đăng ký tool-result middleware vì nó có thể viết lại output công cụ có độ tin cậy cao trước khi model thấy nó.
3

Migrate approval-native handlers to capability facts

Các plugin channel có khả năng approval giờ đây phơi bày hành vi approval native thông qua approvalCapability.nativeRuntime cộng với registry runtime-context dùng chung.Thay đổi chính:
  • Thay approvalCapability.handler.loadRuntime(...) bằng approvalCapability.nativeRuntime
  • Chuyển auth/delivery dành riêng cho approval khỏi wiring plugin.auth / plugin.approvals legacy và sang approvalCapability
  • ChannelPlugin.approvals đã bị gỡ khỏi contract channel-plugin công khai; chuyển các trường delivery/native/render sang approvalCapability
  • plugin.auth chỉ còn cho luồng đăng nhập/đăng xuất channel; các hook auth approval ở đó không còn được core đọc
  • Đăng ký các đối tượng runtime do channel sở hữu như client, token, hoặc app Bolt thông qua openclaw/plugin-sdk/channel-runtime-context
  • Không gửi thông báo reroute do plugin sở hữu từ các handler approval native; core giờ sở hữu thông báo routed-elsewhere từ kết quả delivery thực tế
  • Khi truyền channelRuntime vào createChannelManager(...), hãy cung cấp một surface createPluginRuntime().channel thật. Stub một phần bị từ chối.
Xem /plugins/sdk-channel-plugins để biết layout approval capability hiện tại.
4

Audit Windows wrapper fallback behavior

Nếu plugin của bạn dùng openclaw/plugin-sdk/windows-spawn, các wrapper Windows .cmd/.bat chưa phân giải giờ đây fail-closed trừ khi bạn truyền rõ allowShellFallback: true.
// Before
const program = applyWindowsSpawnProgramPolicy({ candidate });

// After
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Only set this for trusted compatibility callers that intentionally
  // accept shell-mediated fallback.
  allowShellFallback: true,
});
Nếu caller của bạn không cố ý dựa vào shell fallback, đừng đặt allowShellFallback và thay vào đó xử lý lỗi được ném ra.
5

Find deprecated imports

Tìm trong plugin của bạn các import từ một trong hai surface đã ngừng hỗ trợ:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "plugin-sdk/infra-runtime" my-plugin/
grep -r "plugin-sdk/config-runtime" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
6

Replace with focused imports

Mỗi export từ surface cũ ánh xạ tới một đường dẫn import hiện đại cụ thể:
// Before (deprecated backwards-compatibility layer)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// After (modern focused imports)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
Đối với helper phía host, dùng plugin runtime được inject thay vì import trực tiếp:
// Before (deprecated extension-api bridge)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });

// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
Mẫu tương tự áp dụng cho các helper bridge legacy khác:
Import cũTương đương hiện đại
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
helper session storeapi.runtime.agent.session.*
7

Replace broad infra-runtime imports

openclaw/plugin-sdk/infra-runtime vẫn tồn tại để tương thích bên ngoài, nhưng mã mới nên import surface helper tập trung mà nó thực sự cần:
Nhu cầuImport
Helper hàng đợi sự kiện hệ thốngopenclaw/plugin-sdk/system-event-runtime
Helper đánh thức Heartbeat, sự kiện, và khả năng hiển thịopenclaw/plugin-sdk/heartbeat-runtime
Xả hàng đợi delivery đang chờopenclaw/plugin-sdk/delivery-queue-runtime
Telemetry hoạt động channelopenclaw/plugin-sdk/channel-activity-runtime
Cache dedupe trong bộ nhớopenclaw/plugin-sdk/dedupe-runtime
Helper đường dẫn tệp/media cục bộ an toànopenclaw/plugin-sdk/file-access-runtime
Fetch nhận biết dispatcheropenclaw/plugin-sdk/runtime-fetch
Helper proxy và fetch được bảo vệopenclaw/plugin-sdk/fetch-runtime
Kiểu chính sách dispatcher SSRFopenclaw/plugin-sdk/ssrf-dispatcher
Kiểu yêu cầu/phân giải approvalopenclaw/plugin-sdk/approval-runtime
Helper payload reply approval và lệnhopenclaw/plugin-sdk/approval-reply-runtime
Helper định dạng lỗiopenclaw/plugin-sdk/error-runtime
Chờ trạng thái sẵn sàng transportopenclaw/plugin-sdk/transport-ready-runtime
Helper token an toànopenclaw/plugin-sdk/secure-random-runtime
Đồng thời tác vụ async có giới hạnopenclaw/plugin-sdk/concurrency-runtime
Ép kiểu sốopenclaw/plugin-sdk/number-runtime
Khóa async cục bộ theo tiến trìnhopenclaw/plugin-sdk/async-lock-runtime
Khóa tệpopenclaw/plugin-sdk/file-lock
Các plugin bundled được scanner bảo vệ khỏi infra-runtime, nên mã repo không thể thoái lui về barrel rộng.
8

Migrate channel route helpers

Mã route channel mới nên dùng openclaw/plugin-sdk/channel-route. Các tên route-key và comparable-target cũ hơn vẫn là alias tương thích trong cửa sổ di trú, nhưng plugin mới nên dùng các tên route mô tả trực tiếp hành vi:
Hàm trợ giúp cũHàm trợ giúp hiện đại
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
resolveComparableTargetForChannel(...)resolveRouteTargetForChannel(...)
resolveComparableTargetForLoadedChannel(...)resolveRouteTargetForLoadedChannel(...)
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
Các hàm trợ giúp định tuyến hiện đại chuẩn hóa { channel, to, accountId, threadId } nhất quán trên các phê duyệt gốc, chặn phản hồi, khử trùng lặp đầu vào, gửi Cron và định tuyến phiên. Nếu plugin của bạn sở hữu ngữ pháp đích tùy chỉnh, hãy dùng resolveChannelRouteTargetWithParser(...) để điều chỉnh parser đó vào cùng hợp đồng đích định tuyến.
9

Xây dựng và kiểm thử

pnpm build
pnpm test -- my-plugin/

Tham chiếu đường dẫn import

Đường dẫn importMục đíchCác export chính
plugin-sdk/plugin-entryTrình trợ giúp điểm vào Plugin chuẩn tắcdefinePluginEntry
plugin-sdk/coreRe-export bao quát cũ cho các định nghĩa/trình dựng điểm vào kênhdefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExport lược đồ cấu hình gốcOpenClawSchema
plugin-sdk/provider-entryTrình trợ giúp điểm vào một nhà cung cấpdefineSingleProviderPluginEntry
plugin-sdk/channel-coreCác định nghĩa và trình dựng điểm vào kênh chuyên biệtdefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupTrình trợ giúp trình hướng dẫn thiết lập dùng chungLời nhắc danh sách cho phép, trình dựng trạng thái thiết lập
plugin-sdk/setup-runtimeTrình trợ giúp runtime trong lúc thiết lậpBộ chuyển đổi bản vá thiết lập an toàn khi import, trình trợ giúp ghi chú tra cứu, promptResolvedAllowFrom, splitSetupEntries, proxy thiết lập được ủy quyền
plugin-sdk/setup-adapter-runtimeBí danh bộ chuyển đổi thiết lập đã ngừng dùngDùng plugin-sdk/setup-runtime
plugin-sdk/setup-toolsTrình trợ giúp công cụ thiết lậpformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreTrình trợ giúp nhiều tài khoảnTrình trợ giúp danh sách tài khoản/cấu hình/cổng hành động
plugin-sdk/account-idTrình trợ giúp ID tài khoảnDEFAULT_ACCOUNT_ID, chuẩn hóa ID tài khoản
plugin-sdk/account-resolutionTrình trợ giúp tra cứu tài khoảnTrình trợ giúp tra cứu tài khoản + dự phòng mặc định
plugin-sdk/account-helpersTrình trợ giúp tài khoản phạm vi hẹpTrình trợ giúp danh sách tài khoản/hành động tài khoản
plugin-sdk/channel-setupBộ chuyển đổi trình hướng dẫn thiết lậpcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, cùng với DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingThành phần cơ bản ghép cặp DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelineTiền tố trả lời, trạng thái đang nhập và nối dây phân phối nguồncreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersFactory bộ chuyển đổi cấu hình và trình trợ giúp truy cập DMcreateHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
plugin-sdk/channel-config-schemaTrình dựng lược đồ cấu hìnhChỉ các thành phần cơ bản của lược đồ cấu hình kênh dùng chung và trình dựng chung
plugin-sdk/bundled-channel-config-schemaLược đồ cấu hình đi kèmChỉ các Plugin đi kèm do OpenClaw duy trì; Plugin mới phải định nghĩa lược đồ cục bộ của Plugin
plugin-sdk/channel-config-schema-legacyLược đồ cấu hình đi kèm đã ngừng dùngChỉ là bí danh tương thích; dùng plugin-sdk/bundled-channel-config-schema cho các Plugin đi kèm được duy trì
plugin-sdk/telegram-command-configTrình trợ giúp cấu hình lệnh TelegramChuẩn hóa tên lệnh, cắt gọn mô tả, xác thực trùng lặp/xung đột
plugin-sdk/channel-policyPhân giải chính sách nhóm/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleTrình trợ giúp trạng thái tài khoản và vòng đời luồng bản nhápcreateAccountStatusSink, trình trợ giúp hoàn tất xem trước bản nháp
plugin-sdk/inbound-envelopeTrình trợ giúp phong bì đầu vàoTrình trợ giúp tuyến dùng chung + trình dựng phong bì
plugin-sdk/inbound-reply-dispatchTrình trợ giúp trả lời đầu vàoTrình trợ giúp ghi lại và điều phối dùng chung
plugin-sdk/messaging-targetsPhân tích mục tiêu nhắn tinTrình trợ giúp phân tích/khớp mục tiêu
plugin-sdk/outbound-mediaTrình trợ giúp media đầu raTải media đầu ra dùng chung
plugin-sdk/outbound-send-depsTrình trợ giúp phụ thuộc gửi đầu raTra cứu resolveOutboundSendDep gọn nhẹ mà không import toàn bộ runtime đầu ra
plugin-sdk/outbound-runtimeTrình trợ giúp runtime đầu raTrình trợ giúp phân phối đầu ra, ủy quyền danh tính/gửi, phiên, định dạng và lập kế hoạch payload
plugin-sdk/thread-bindings-runtimeTrình trợ giúp liên kết luồngVòng đời liên kết luồng và trình trợ giúp bộ chuyển đổi
plugin-sdk/agent-media-payloadTrình trợ giúp payload media cũTrình dựng payload media tác tử cho bố cục trường cũ
plugin-sdk/channel-runtimeShim tương thích đã ngừng dùngChỉ tiện ích runtime kênh cũ
plugin-sdk/channel-send-resultKiểu kết quả gửiKiểu kết quả trả lời
plugin-sdk/runtime-storeLưu trữ Plugin bền vữngcreatePluginRuntimeStore
plugin-sdk/runtimeTrình trợ giúp runtime phạm vi rộngTrình trợ giúp runtime/ghi log/sao lưu/cài đặt Plugin
plugin-sdk/runtime-envTrình trợ giúp môi trường runtime phạm vi hẹpTrình trợ giúp logger/môi trường runtime, timeout, thử lại và backoff
plugin-sdk/plugin-runtimeTrình trợ giúp runtime Plugin dùng chungTrình trợ giúp lệnh/hook/http/tương tác của Plugin
plugin-sdk/hook-runtimeTrình trợ giúp pipeline hookTrình trợ giúp pipeline Webhook/hook nội bộ dùng chung
plugin-sdk/lazy-runtimeTrình trợ giúp runtime lazycreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeTrình trợ giúp tiến trìnhTrình trợ giúp exec dùng chung
plugin-sdk/cli-runtimeTrình trợ giúp runtime CLIĐịnh dạng lệnh, chờ, trình trợ giúp phiên bản
plugin-sdk/gateway-runtimeTrình trợ giúp GatewayClient Gateway, trình trợ giúp khởi động khi vòng lặp sự kiện sẵn sàng và trình trợ giúp vá trạng thái kênh
plugin-sdk/config-runtimeShim tương thích cấu hình đã ngừng dùngƯu tiên config-contracts, plugin-config-runtime, runtime-config-snapshotconfig-mutation
plugin-sdk/telegram-command-configTrình trợ giúp lệnh TelegramTrình trợ giúp xác thực lệnh Telegram ổn định khi dự phòng nếu bề mặt hợp đồng Telegram đi kèm không khả dụng
plugin-sdk/approval-runtimeTrình trợ giúp lời nhắc phê duyệtPayload phê duyệt exec/Plugin, trình trợ giúp capability/hồ sơ phê duyệt, trình trợ giúp định tuyến/runtime phê duyệt gốc và định dạng đường dẫn hiển thị phê duyệt có cấu trúc
plugin-sdk/approval-auth-runtimeTrình trợ giúp xác thực phê duyệtPhân giải người phê duyệt, xác thực hành động cùng cuộc trò chuyện
plugin-sdk/approval-client-runtimeTrình trợ giúp client phê duyệtTrình trợ giúp hồ sơ/bộ lọc phê duyệt exec gốc
plugin-sdk/approval-delivery-runtimeTrình trợ giúp phân phối phê duyệtBộ chuyển đổi capability/phân phối phê duyệt gốc
plugin-sdk/approval-gateway-runtimeTrình trợ giúp Gateway phê duyệtTrình trợ giúp phân giải Gateway phê duyệt dùng chung
plugin-sdk/approval-handler-adapter-runtimeTrình trợ giúp bộ chuyển đổi phê duyệtTrình trợ giúp tải bộ chuyển đổi phê duyệt gốc gọn nhẹ cho điểm vào kênh hot
plugin-sdk/approval-handler-runtimeTrình trợ giúp trình xử lý phê duyệtTrình trợ giúp runtime trình xử lý phê duyệt rộng hơn; ưu tiên các seam bộ chuyển đổi/Gateway hẹp hơn khi đủ dùng
plugin-sdk/approval-native-runtimeTrình trợ giúp mục tiêu phê duyệtTrình trợ giúp liên kết mục tiêu/tài khoản phê duyệt gốc
plugin-sdk/approval-reply-runtimeTrình trợ giúp trả lời phê duyệtTrình trợ giúp payload trả lời phê duyệt exec/Plugin
plugin-sdk/channel-runtime-contextTrình trợ giúp ngữ cảnh runtime kênhTrình trợ giúp đăng ký/lấy/theo dõi ngữ cảnh runtime kênh chung
plugin-sdk/security-runtimeTrình trợ giúp bảo mậtTrình trợ giúp tin cậy, cổng DM, tệp/đường dẫn giới hạn theo gốc, nội dung bên ngoài và thu thập secret dùng chung
plugin-sdk/ssrf-policyTrình trợ giúp chính sách SSRFTrình trợ giúp danh sách cho phép host và chính sách mạng riêng
plugin-sdk/ssrf-runtimeTrình trợ giúp runtime SSRFDispatcher ghim cố định, fetch được bảo vệ, trình trợ giúp chính sách SSRF
plugin-sdk/system-event-runtimeTrình trợ giúp sự kiện hệ thốngenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeTrình trợ giúp HeartbeatTrình trợ giúp đánh thức Heartbeat, sự kiện và khả năng hiển thị
plugin-sdk/delivery-queue-runtimeTrình trợ giúp hàng đợi phân phốidrainPendingDeliveries
plugin-sdk/channel-activity-runtimeTrình trợ giúp hoạt động kênhrecordChannelActivity
plugin-sdk/dedupe-runtimeTrình trợ giúp khử trùng lặpCache khử trùng lặp trong bộ nhớ
plugin-sdk/file-access-runtimeTrình trợ giúp truy cập tệpTrình trợ giúp đường dẫn tệp/media cục bộ an toàn
plugin-sdk/transport-ready-runtimeTrình trợ giúp mức sẵn sàng của transportwaitForTransportReady
plugin-sdk/collection-runtimeTrình trợ giúp cache có giới hạnpruneMapToMaxSize
plugin-sdk/diagnostic-runtimeTrình trợ giúp cổng chẩn đoánisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeTrình trợ giúp định dạng lỗiformatUncaughtError, isApprovalNotFoundError, trình trợ giúp đồ thị lỗi
plugin-sdk/fetch-runtimeTrình trợ giúp fetch/proxy được bọcresolveFetch, trình trợ giúp proxy, trình trợ giúp tùy chọn EnvHttpProxyAgent
plugin-sdk/host-runtimeTrình trợ giúp chuẩn hóa hostnormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeTrình trợ giúp thử lạiRetryConfig, retryAsync, trình chạy chính sách
plugin-sdk/allow-fromĐịnh dạng danh sách cho phépformatAllowFromLowercase
plugin-sdk/allowlist-resolutionÁnh xạ đầu vào danh sách cho phépmapAllowlistResolutionInputs
plugin-sdk/command-authTrình trợ giúp cổng lệnh và bề mặt lệnhresolveControlCommandGate, trình trợ giúp ủy quyền người gửi, trình trợ giúp sổ đăng ký lệnh bao gồm định dạng menu đối số động
plugin-sdk/command-statusTrình render trạng thái/trợ giúp lệnhbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputPhân tích đầu vào secretTrình trợ giúp đầu vào secret
plugin-sdk/webhook-ingressTrình trợ giúp yêu cầu WebhookTiện ích mục tiêu Webhook
plugin-sdk/webhook-request-guardsTrình trợ giúp bảo vệ nội dung WebhookTrình trợ giúp đọc/giới hạn nội dung yêu cầu
plugin-sdk/reply-runtimeRuntime trả lời dùng chungĐiều phối đầu vào, Heartbeat, bộ lập kế hoạch trả lời, chia đoạn
plugin-sdk/reply-dispatch-runtimeTrình trợ giúp điều phối trả lời phạm vi hẹpHoàn tất, điều phối nhà cung cấp và trình trợ giúp nhãn hội thoại
plugin-sdk/reply-historyTrình trợ giúp lịch sử trả lờibuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referenceLập kế hoạch tham chiếu trả lờicreateReplyReferencePlanner
plugin-sdk/reply-chunkingTrình trợ giúp chia đoạn trả lờiTrình trợ giúp chia đoạn văn bản/markdown
plugin-sdk/session-store-runtimeTrình trợ giúp kho phiênĐường dẫn kho + trình trợ giúp updated-at
plugin-sdk/state-pathsTrình trợ giúp đường dẫn trạng tháiTrình trợ giúp thư mục trạng thái và OAuth
plugin-sdk/routingTrình trợ giúp định tuyến/khóa phiênresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, trình trợ giúp chuẩn hóa khóa phiên
plugin-sdk/status-helpersTrình trợ giúp trạng thái kênhTrình dựng tóm tắt trạng thái kênh/tài khoản, giá trị mặc định trạng thái runtime, trình trợ giúp siêu dữ liệu vấn đề
plugin-sdk/target-resolver-runtimeTrình trợ giúp phân giải mục tiêuTrình trợ giúp phân giải mục tiêu dùng chung
plugin-sdk/string-normalization-runtimeTrình trợ giúp chuẩn hóa chuỗiTrình trợ giúp chuẩn hóa slug/chuỗi
plugin-sdk/request-urlTrình trợ giúp URL yêu cầuTrích xuất URL chuỗi từ đầu vào giống yêu cầu
plugin-sdk/run-commandTrình trợ giúp lệnh có tính thời gianTrình chạy lệnh có tính thời gian với stdout/stderr đã chuẩn hóa
plugin-sdk/param-readersBộ đọc tham sốBộ đọc tham số công cụ/CLI thông dụng
plugin-sdk/tool-payloadTrích xuất payload công cụTrích xuất các payload đã chuẩn hóa từ đối tượng kết quả công cụ
plugin-sdk/tool-sendTrích xuất gửi công cụTrích xuất các trường đích gửi chuẩn từ đối số công cụ
plugin-sdk/temp-pathTrình trợ giúp đường dẫn tạmTrình trợ giúp đường dẫn tải xuống tạm dùng chung
plugin-sdk/logging-coreTrình trợ giúp ghi logTrình trợ giúp logger hệ con và biên tập che thông tin nhạy cảm
plugin-sdk/markdown-table-runtimeTrình trợ giúp bảng MarkdownTrình trợ giúp chế độ bảng Markdown
plugin-sdk/reply-payloadKiểu trả lời tin nhắnKiểu payload trả lời
plugin-sdk/provider-setupTrình trợ giúp thiết lập nhà cung cấp cục bộ/tự lưu trữ được tuyển chọnTrình trợ giúp khám phá/cấu hình nhà cung cấp tự lưu trữ
plugin-sdk/self-hosted-provider-setupTrình trợ giúp thiết lập nhà cung cấp tự lưu trữ tương thích OpenAI có trọng tâmCùng các trình trợ giúp khám phá/cấu hình nhà cung cấp tự lưu trữ
plugin-sdk/provider-auth-runtimeTrình trợ giúp xác thực runtime của nhà cung cấpTrình trợ giúp phân giải khóa API runtime
plugin-sdk/provider-auth-api-keyTrình trợ giúp thiết lập khóa API của nhà cung cấpTrình trợ giúp onboarding/ghi hồ sơ khóa API
plugin-sdk/provider-auth-resultTrình trợ giúp kết quả xác thực nhà cung cấpBộ dựng kết quả xác thực OAuth chuẩn
plugin-sdk/provider-selection-runtimeTrình trợ giúp chọn nhà cung cấpChọn nhà cung cấp đã cấu hình hoặc tự động và hợp nhất cấu hình nhà cung cấp thô
plugin-sdk/provider-env-varsTrình trợ giúp biến môi trường nhà cung cấpTrình trợ giúp tra cứu biến môi trường xác thực nhà cung cấp
plugin-sdk/provider-model-sharedTrình trợ giúp mô hình/phát lại nhà cung cấp dùng chungProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, các bộ dựng chính sách phát lại dùng chung, trình trợ giúp endpoint nhà cung cấp và trình trợ giúp chuẩn hóa model-id
plugin-sdk/provider-catalog-sharedTrình trợ giúp danh mục nhà cung cấp dùng chungfindCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardBản vá onboarding nhà cung cấpTrình trợ giúp cấu hình onboarding
plugin-sdk/provider-httpTrình trợ giúp HTTP của nhà cung cấpTrình trợ giúp năng lực HTTP/endpoint nhà cung cấp tổng quát, bao gồm trình trợ giúp biểu mẫu multipart cho phiên âm âm thanh
plugin-sdk/provider-web-fetchTrình trợ giúp web-fetch của nhà cung cấpTrình trợ giúp đăng ký/bộ nhớ đệm nhà cung cấp web-fetch
plugin-sdk/provider-web-search-config-contractTrình trợ giúp cấu hình web-search của nhà cung cấpTrình trợ giúp cấu hình/thông tin xác thực web-search hẹp cho nhà cung cấp không cần đấu nối bật Plugin
plugin-sdk/provider-web-search-contractTrình trợ giúp hợp đồng web-search của nhà cung cấpTrình trợ giúp hợp đồng cấu hình/thông tin xác thực web-search hẹp như createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig và setter/getter thông tin xác thực có phạm vi
plugin-sdk/provider-web-searchTrình trợ giúp web-search của nhà cung cấpTrình trợ giúp đăng ký/bộ nhớ đệm/runtime nhà cung cấp web-search
plugin-sdk/provider-toolsTrình trợ giúp tương thích công cụ/schema của nhà cung cấpProviderToolCompatFamily, buildProviderToolCompatFamilyHooks và dọn dẹp schema Gemini + chẩn đoán
plugin-sdk/provider-usageTrình trợ giúp mức sử dụng của nhà cung cấpfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage và các trình trợ giúp mức sử dụng nhà cung cấp khác
plugin-sdk/provider-streamTrình trợ giúp bộ bọc stream của nhà cung cấpProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, kiểu bộ bọc stream và trình trợ giúp bộ bọc Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot dùng chung
plugin-sdk/provider-transport-runtimeTrình trợ giúp transport của nhà cung cấpTrình trợ giúp transport gốc của nhà cung cấp như fetch có bảo vệ, biến đổi tin nhắn transport và stream sự kiện transport có thể ghi
plugin-sdk/keyed-async-queueHàng đợi bất đồng bộ có thứ tựKeyedAsyncQueue
plugin-sdk/media-runtimeTrình trợ giúp media dùng chungTrình trợ giúp fetch/biến đổi/lưu trữ media, thăm dò kích thước video dựa trên ffprobe và bộ dựng payload media
plugin-sdk/media-generation-runtimeTrình trợ giúp tạo media dùng chungTrình trợ giúp failover dùng chung, chọn ứng viên và thông báo thiếu mô hình cho tạo hình ảnh/video/nhạc
plugin-sdk/media-understandingTrình trợ giúp hiểu mediaKiểu nhà cung cấp hiểu media cùng các export trình trợ giúp hình ảnh/âm thanh hướng đến nhà cung cấp
plugin-sdk/text-runtimeExport tương thích văn bản rộng đã lỗi thờiDùng string-coerce-runtime, text-chunking, text-utility-runtimelogging-core
plugin-sdk/text-chunkingTrình trợ giúp chia đoạn văn bảnTrình trợ giúp chia đoạn văn bản gửi đi
plugin-sdk/speechTrình trợ giúp giọng nóiKiểu nhà cung cấp giọng nói cùng trình trợ giúp chỉ thị, registry, xác thực hướng đến nhà cung cấp và bộ dựng TTS tương thích OpenAI
plugin-sdk/speech-coreLõi giọng nói dùng chungKiểu nhà cung cấp giọng nói, registry, chỉ thị, chuẩn hóa
plugin-sdk/realtime-transcriptionTrình trợ giúp phiên âm thời gian thựcKiểu nhà cung cấp, trình trợ giúp registry và trình trợ giúp phiên WebSocket dùng chung
plugin-sdk/realtime-voiceTrình trợ giúp giọng nói thời gian thựcKiểu nhà cung cấp, trình trợ giúp registry/phân giải, trình trợ giúp phiên cầu nối, hàng đợi phản hồi giọng nói tác nhân dùng chung, sức khỏe bản chép lời/sự kiện, triệt vọng âm và trình trợ giúp tham vấn ngữ cảnh nhanh
plugin-sdk/image-generationTrình trợ giúp tạo hình ảnhKiểu nhà cung cấp tạo hình ảnh cùng trình trợ giúp URL tài sản/dữ liệu hình ảnh và bộ dựng nhà cung cấp hình ảnh tương thích OpenAI
plugin-sdk/image-generation-coreLõi tạo hình ảnh dùng chungKiểu tạo hình ảnh, failover, xác thực và trình trợ giúp registry
plugin-sdk/music-generationTrình trợ giúp tạo nhạcKiểu nhà cung cấp/yêu cầu/kết quả tạo nhạc
plugin-sdk/music-generation-coreLõi tạo nhạc dùng chungKiểu tạo nhạc, trình trợ giúp failover, tra cứu nhà cung cấp và phân tích model-ref
plugin-sdk/video-generationTrình trợ giúp tạo videoKiểu nhà cung cấp/yêu cầu/kết quả tạo video
plugin-sdk/video-generation-coreLõi tạo video dùng chungKiểu tạo video, trình trợ giúp failover, tra cứu nhà cung cấp và phân tích model-ref
plugin-sdk/interactive-runtimeTrình trợ giúp trả lời tương tácChuẩn hóa/thu gọn payload trả lời tương tác
plugin-sdk/channel-config-primitivesPrimitive cấu hình kênhPrimitive schema cấu hình kênh hẹp
plugin-sdk/channel-config-writesTrình trợ giúp ghi cấu hình kênhTrình trợ giúp ủy quyền ghi cấu hình kênh
plugin-sdk/channel-plugin-commonPhần mở đầu kênh dùng chungExport phần mở đầu Plugin kênh dùng chung
plugin-sdk/channel-statusTrình trợ giúp trạng thái kênhTrình trợ giúp ảnh chụp/tóm tắt trạng thái kênh dùng chung
plugin-sdk/allowlist-config-editTrình trợ giúp cấu hình allowlistTrình trợ giúp sửa/đọc cấu hình allowlist
plugin-sdk/group-accessTrình trợ giúp truy cập nhómTrình trợ giúp quyết định truy cập nhóm dùng chung
plugin-sdk/direct-dmTrình trợ giúp DM trực tiếpTrình trợ giúp xác thực/bảo vệ DM trực tiếp dùng chung
plugin-sdk/extension-sharedTrình trợ giúp extension dùng chungPrimitive trình trợ giúp trạng thái/kênh thụ động và proxy môi trường
plugin-sdk/webhook-targetsTrình trợ giúp đích WebhookRegistry đích Webhook và trình trợ giúp cài đặt route
plugin-sdk/webhook-pathBí danh đường dẫn webhook đã lỗi thờiDùng plugin-sdk/webhook-ingress
plugin-sdk/web-mediaTrình trợ giúp media web dùng chungTrình trợ giúp tải media từ xa/cục bộ
plugin-sdk/zodRe-export tương thích Zod đã lỗi thờiImport zod từ zod trực tiếp
plugin-sdk/memory-coreTrình trợ giúp memory-core đóng góiBề mặt trình trợ giúp trình quản lý/cấu hình/tệp/CLI bộ nhớ
plugin-sdk/memory-core-engine-runtimeFacade runtime engine bộ nhớFacade runtime lập chỉ mục/tìm kiếm bộ nhớ
plugin-sdk/memory-core-host-engine-foundationEngine nền tảng host bộ nhớExport engine nền tảng host bộ nhớ
plugin-sdk/memory-core-host-engine-embeddingsEngine embedding host bộ nhớHợp đồng embedding bộ nhớ, truy cập registry, nhà cung cấp cục bộ và trình trợ giúp batch/từ xa tổng quát; nhà cung cấp từ xa cụ thể nằm trong Plugin sở hữu chúng
plugin-sdk/memory-core-host-engine-qmdEngine QMD host bộ nhớExport engine QMD host bộ nhớ
plugin-sdk/memory-core-host-engine-storageEngine lưu trữ host bộ nhớExport engine lưu trữ host bộ nhớ
plugin-sdk/memory-core-host-multimodalTrình trợ giúp đa phương thức host bộ nhớTrình trợ giúp đa phương thức host bộ nhớ
plugin-sdk/memory-core-host-queryTrình trợ giúp truy vấn host bộ nhớTrình trợ giúp truy vấn host bộ nhớ
plugin-sdk/memory-core-host-secretTrình trợ giúp bí mật host bộ nhớTrình trợ giúp bí mật host bộ nhớ
plugin-sdk/memory-core-host-eventsBí danh sự kiện bộ nhớ đã lỗi thờiDùng plugin-sdk/memory-host-events
plugin-sdk/memory-core-host-statusTrình trợ giúp trạng thái host bộ nhớTrình trợ giúp trạng thái host bộ nhớ
plugin-sdk/memory-core-host-runtime-cliRuntime CLI host bộ nhớTrình trợ giúp runtime CLI host bộ nhớ
plugin-sdk/memory-core-host-runtime-coreRuntime lõi host bộ nhớTrình trợ giúp runtime lõi host bộ nhớ
plugin-sdk/memory-core-host-runtime-filesTrình trợ giúp tệp/runtime host bộ nhớTrình trợ giúp tệp/runtime host bộ nhớ
plugin-sdk/memory-host-coreBí danh runtime lõi host bộ nhớBí danh trung lập với nhà cung cấp cho trình trợ giúp runtime lõi host bộ nhớ
plugin-sdk/memory-host-eventsBí danh nhật ký sự kiện host bộ nhớBí danh trung lập với nhà cung cấp cho trình trợ giúp nhật ký sự kiện host bộ nhớ
plugin-sdk/memory-host-filesBí danh tệp/runtime bộ nhớ đã lỗi thờiDùng plugin-sdk/memory-core-host-runtime-files
plugin-sdk/memory-host-markdownTrình trợ giúp markdown được quản lýTrình trợ giúp markdown được quản lý dùng chung cho các Plugin liền kề bộ nhớ
plugin-sdk/memory-host-searchFacade tìm kiếm active memoryFacade runtime trình quản lý tìm kiếm active-memory lazy
plugin-sdk/memory-host-statusBí danh trạng thái host bộ nhớ đã lỗi thờiDùng plugin-sdk/memory-core-host-status
plugin-sdk/testingTiện ích kiểm thửBarrel tương thích đã lỗi thời cục bộ trong repo; dùng các subpath kiểm thử cục bộ trong repo có trọng tâm như plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-envplugin-sdk/test-fixtures
Bảng này cố ý chỉ là tập con di chuyển chung, không phải toàn bộ bề mặt SDK. Danh mục entrypoint của trình biên dịch nằm trong scripts/lib/plugin-sdk-entrypoints.json; package exports được tạo từ tập con công khai. Các seam trợ giúp Plugin đi kèm đã dành riêng đã được loại khỏi export map SDK công khai, ngoại trừ các facade tương thích được ghi tài liệu rõ ràng như shim plugin-sdk/discord đã lỗi thời nhưng được giữ lại cho gói đã phát hành @openclaw/discord@2026.3.13. Các helper dành riêng cho chủ sở hữu nằm bên trong gói Plugin sở hữu chúng; hành vi host dùng chung nên đi qua các hợp đồng SDK chung như plugin-sdk/gateway-runtime, plugin-sdk/security-runtime, và plugin-sdk/plugin-config-runtime. Hãy dùng import hẹp nhất khớp với công việc. Nếu bạn không tìm thấy một export, hãy kiểm tra mã nguồn tại src/plugin-sdk/ hoặc hỏi maintainer hợp đồng chung nào nên sở hữu nó.

Các mục ngừng hỗ trợ đang hoạt động

Các mục ngừng hỗ trợ hẹp hơn áp dụng trên toàn bộ SDK Plugin, hợp đồng provider, bề mặt runtime và manifest. Mỗi mục vẫn hoạt động hôm nay nhưng sẽ bị gỡ bỏ trong một bản phát hành major trong tương lai. Dòng bên dưới mỗi mục ánh xạ API cũ sang phần thay thế chuẩn của nó.
Cũ (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.Mới (openclaw/plugin-sdk/command-status): cùng chữ ký, cùng exports - chỉ được import từ subpath hẹp hơn. command-auth re-export chúng dưới dạng stub tương thích.
// Before
import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";

// After
import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
: resolveInboundMentionRequirement({ facts, policy })shouldDropInboundForMention(...) từ openclaw/plugin-sdk/channel-inbound hoặc openclaw/plugin-sdk/channel-mention-gating.Mới: resolveInboundMentionDecision({ facts, policy }) - trả về một đối tượng quyết định duy nhất thay vì hai lệnh gọi tách rời.Các Plugin kênh downstream (Slack, Discord, Matrix, MS Teams) đã chuyển đổi.
openclaw/plugin-sdk/channel-runtime là một shim tương thích cho các Plugin kênh cũ hơn. Không import nó từ mã mới; hãy dùng openclaw/plugin-sdk/channel-runtime-context để đăng ký các đối tượng runtime.Các helper channelActions* trong openclaw/plugin-sdk/channel-actions bị ngừng hỗ trợ cùng với các export kênh “actions” thô. Thay vào đó, hãy phơi bày capability thông qua bề mặt presentation có ngữ nghĩa - các Plugin kênh khai báo những gì chúng render (thẻ, nút, lựa chọn) thay vì tên hành động thô nào chúng chấp nhận.
: factory tool() từ openclaw/plugin-sdk/provider-web-search.Mới: triển khai trực tiếp createTool(...) trên Plugin provider. OpenClaw không còn cần helper SDK để đăng ký wrapper công cụ.
: formatInboundEnvelope(...) (và ChannelMessageForAgent.channelEnvelope) để dựng envelope prompt văn bản thuần phẳng từ các thông điệp kênh inbound.Mới: BodyForAgent cộng với các khối ngữ cảnh người dùng có cấu trúc. Các Plugin kênh gắn metadata định tuyến (luồng, chủ đề, trả lời, phản ứng) dưới dạng các trường có kiểu thay vì nối chúng vào chuỗi prompt. Helper formatAgentEnvelope(...) vẫn được hỗ trợ cho các envelope được tổng hợp hướng tới assistant, nhưng các envelope inbound dạng văn bản thuần đang dần bị loại bỏ.Khu vực bị ảnh hưởng: inbound_claim, message_received, và mọi Plugin kênh tùy chỉnh từng hậu xử lý văn bản channelEnvelope.
Bốn alias kiểu khám phá hiện là các wrapper mỏng trên các kiểu thời kỳ danh mục:
Alias cũKiểu mới
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
Cộng với túi tĩnh ProviderCapabilities kế thừa - các Plugin provider nên dùng các hook provider rõ ràng như buildReplayPolicy, normalizeToolSchemas, và wrapStreamFn thay vì một đối tượng tĩnh.
(ba hook riêng biệt trên ProviderThinkingPolicy): isBinaryThinking(ctx), supportsXHighThinking(ctx), và resolveDefaultThinkingLevel(ctx).Mới: một resolveThinkingProfile(ctx) duy nhất trả về ProviderThinkingProfile với id chuẩn, label tùy chọn, và danh sách mức được xếp hạng. OpenClaw tự động hạ cấp các giá trị đã lưu lỗi thời theo thứ hạng profile.Triển khai một hook thay vì ba. Các hook kế thừa vẫn hoạt động trong khoảng thời gian ngừng hỗ trợ nhưng không được hợp thành với kết quả profile.
: triển khai resolveExternalOAuthProfiles(...) mà không khai báo provider trong manifest Plugin.Mới: khai báo contracts.externalAuthProviders trong manifest Plugin triển khai resolveExternalAuthProfiles(...). Đường dẫn “auth fallback” cũ phát cảnh báo khi runtime và sẽ bị gỡ bỏ.
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
Trường manifest : providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.Mới: phản chiếu cùng tra cứu env-var vào setup.providers[].envVars trên manifest. Điều này hợp nhất metadata env cho thiết lập/trạng thái vào một nơi và tránh khởi động runtime Plugin chỉ để trả lời các tra cứu env-var.providerAuthEnvVars vẫn được hỗ trợ thông qua adapter tương thích cho đến khi khoảng thời gian ngừng hỗ trợ kết thúc.
: ba lệnh gọi riêng biệt - api.registerMemoryPromptSection(...), api.registerMemoryFlushPlan(...), api.registerMemoryRuntime(...).Mới: một lệnh gọi trên API memory-state - registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).Cùng slot, một lệnh gọi đăng ký duy nhất. Các helper bộ nhớ bổ sung (registerMemoryPromptSupplement, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider) không bị ảnh hưởng.
Hai alias kiểu kế thừa vẫn được export từ src/plugins/runtime/types.ts:
Mới
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
Phương thức runtime readSession bị ngừng hỗ trợ để thay bằng getSessionMessages. Cùng chữ ký; phương thức cũ gọi chuyển tiếp đến phương thức mới.
: runtime.tasks.flow (số ít) trả về một accessor task-flow trực tiếp.Mới: runtime.tasks.managedFlows giữ runtime đột biến TaskFlow được quản lý cho các Plugin tạo, cập nhật, hủy, hoặc chạy tác vụ con từ một flow. Dùng runtime.tasks.flows khi Plugin chỉ cần đọc dựa trên DTO.
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
Được trình bày trong “Cách di chuyển → Di chuyển extension kết quả công cụ Pi sang middleware” ở trên. Đưa vào đây để đầy đủ: đường dẫn chỉ dành cho Pi đã bị gỡ bỏ api.registerEmbeddedExtensionFactory(...) được thay bằng api.registerAgentToolResultMiddleware(...) với danh sách runtime rõ ràng trong contracts.agentToolResultMiddleware.
OpenClawSchemaType được re-export từ openclaw/plugin-sdk hiện là một alias một dòng cho OpenClawConfig. Hãy ưu tiên tên chuẩn.
// Before
import type { OpenClawSchemaType } from "openclaw/plugin-sdk";
// After
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";
Các mục ngừng hỗ trợ cấp extension (bên trong các Plugin kênh/provider đi kèm dưới extensions/) được theo dõi trong các barrel api.tsruntime-api.ts riêng của chúng. Chúng không ảnh hưởng đến hợp đồng Plugin bên thứ ba và không được liệt kê ở đây. Nếu bạn dùng trực tiếp barrel cục bộ của một Plugin đi kèm, hãy đọc các bình luận ngừng hỗ trợ trong barrel đó trước khi nâng cấp.

Lịch trình gỡ bỏ

Khi nàoĐiều gì xảy ra
Bây giờCác bề mặt bị ngừng hỗ trợ phát cảnh báo runtime
Bản phát hành major tiếp theoCác bề mặt bị ngừng hỗ trợ sẽ bị gỡ bỏ; các Plugin vẫn dùng chúng sẽ thất bại
Tất cả Plugin lõi đã được di chuyển. Plugin bên ngoài nên di chuyển trước bản phát hành major tiếp theo.

Tạm thời chặn các cảnh báo

Đặt các biến môi trường này trong khi bạn thực hiện di chuyển:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Đây là lối thoát tạm thời, không phải giải pháp lâu dài.

Liên quan