ข้อมูลอ้างอิงสำหรับอ็อบเจกต์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.
api.runtime ที่ถูกฉีดเข้าไปในทุก Plugin ระหว่างการลงทะเบียน ใช้ตัวช่วยเหล่านี้แทนการนำเข้าภายในของโฮสต์โดยตรง
Plugin ช่องทาง
คู่มือทีละขั้นตอนที่ใช้ตัวช่วยเหล่านี้ในบริบทสำหรับ Plugin ช่องทาง
Plugin ผู้ให้บริการ
คู่มือทีละขั้นตอนที่ใช้ตัวช่วยเหล่านี้ในบริบทสำหรับ Plugin ผู้ให้บริการ
การโหลดและเขียน Config
ให้ใช้ Config ที่ถูกส่งเข้ามาในเส้นทางการเรียกที่ใช้งานอยู่แล้วเป็นหลัก เช่นapi.config ระหว่างการลงทะเบียน หรืออาร์กิวเมนต์ cfg ใน callback ของช่องทาง/ผู้ให้บริการ วิธีนี้ทำให้สแนปช็อตของกระบวนการเดียวไหลผ่านงาน แทนการแยกวิเคราะห์ Config ซ้ำใน hot path
ใช้ api.runtime.config.current() เฉพาะเมื่อ handler ที่มีอายุยาวต้องใช้สแนปช็อตของกระบวนการปัจจุบันและไม่มี Config ถูกส่งให้ฟังก์ชันนั้น ค่าที่ส่งกลับเป็นแบบอ่านอย่างเดียว ให้ clone หรือใช้ตัวช่วย mutation ก่อนแก้ไข
Tool factory จะได้รับ ctx.runtimeConfig พร้อมกับ ctx.getRuntimeConfig() ใช้ getter ภายใน callback execute ของ tool ที่มีอายุยาวเมื่อ Config อาจเปลี่ยนหลังจากสร้างคำนิยาม tool แล้ว
บันทึกการเปลี่ยนแปลงด้วย api.runtime.config.mutateConfigFile(...) หรือ api.runtime.config.replaceConfigFile(...) การเขียนแต่ละครั้งต้องเลือกนโยบาย afterWrite อย่างชัดเจน:
afterWrite: { mode: "auto" }ให้ตัวตัดสินการ reload ของ Gateway เป็นผู้ตัดสินใจafterWrite: { mode: "restart", reason: "..." }บังคับ restart อย่างสะอาดเมื่อผู้เขียนรู้ว่า hot reload ไม่ปลอดภัยafterWrite: { mode: "none", reason: "..." }ระงับการ reload/restart อัตโนมัติเฉพาะเมื่อผู้เรียกเป็นเจ้าของการดำเนินการต่อ
afterWrite พร้อมสรุป followUp ที่มี type เพื่อให้ผู้เรียก log หรือ test ได้ว่ามีการร้องขอ restart หรือไม่ Gateway ยังคงเป็นเจ้าของว่า restart นั้นจะเกิดขึ้นจริงเมื่อใด
api.runtime.config.loadConfig() และ api.runtime.config.writeConfigFile(...) เป็นตัวช่วยความเข้ากันได้ที่เลิกใช้แล้วภายใต้ runtime-config-load-write ตัวช่วยเหล่านี้เตือนหนึ่งครั้งใน runtime และยังคงพร้อมใช้งานสำหรับ Plugin ภายนอกเก่าระหว่างช่วง migration Plugin ที่ bundled ต้องไม่ใช้ตัวช่วยเหล่านี้; ตัว guard ขอบเขต Config จะล้มเหลวถ้าโค้ด Plugin เรียกใช้ตัวช่วยเหล่านี้หรือนำเข้าตัวช่วยจาก subpath ของ Plugin SDK
สำหรับการนำเข้า SDK โดยตรง ให้ใช้ subpath Config แบบเจาะจงแทน compatibility barrel กว้าง
openclaw/plugin-sdk/config-runtime: ใช้ config-contracts สำหรับ
type, plugin-config-runtime สำหรับ assertion ของ Config ที่โหลดแล้วและการค้นหารายการ Plugin,
runtime-config-snapshot สำหรับสแนปช็อตกระบวนการปัจจุบัน และ
config-mutation สำหรับการเขียน test ของ Plugin ที่ bundled ควร mock subpath แบบเจาะจงเหล่านี้โดยตรง แทนการ mock compatibility barrel กว้าง
โค้ด runtime ภายในของ OpenClaw มีทิศทางเดียวกัน: โหลด Config หนึ่งครั้งที่ขอบเขต CLI, Gateway หรือกระบวนการ แล้วส่งค่านั้นต่อไป การเขียน mutation ที่สำเร็จจะ refresh สแนปช็อต runtime ของกระบวนการและเพิ่ม revision ภายใน cache ที่มีอายุยาวควร key จาก cache key ที่ runtime เป็นเจ้าของ แทนการ serialize Config เองในเครื่อง โมดูล runtime ที่มีอายุยาวมี scanner แบบไม่ยอมรับการเรียก loadConfig() แวดล้อมโดยเด็ดขาด; ใช้ cfg ที่ถูกส่งมา, context.getRuntimeConfig() ของคำขอ หรือ getRuntimeConfig() ที่ขอบเขตกระบวนการอย่างชัดเจน
เส้นทางการทำงานของผู้ให้บริการและช่องทางต้องใช้สแนปช็อต Config ของ runtime ที่ใช้งานอยู่ ไม่ใช่สแนปช็อตไฟล์ที่ส่งคืนมาเพื่ออ่านกลับหรือแก้ไข Config สแนปช็อตไฟล์จะคงค่าต้นทาง เช่น marker SecretRef สำหรับ UI และการเขียน; callback ของผู้ให้บริการต้องใช้มุมมอง runtime ที่ resolve แล้ว เมื่อตัวช่วยอาจถูกเรียกด้วยสแนปช็อตต้นทางที่ใช้งานอยู่หรือสแนปช็อต runtime ที่ใช้งานอยู่ ให้ route ผ่าน selectApplicableRuntimeConfig() ก่อนอ่าน credential
Namespace ของ runtime
api.runtime.agent
api.runtime.agent
ตัวตนของ agent, ไดเรกทอรี และการจัดการ sessionให้ใช้
runEmbeddedAgent(...) เป็นตัวช่วยกลางสำหรับเริ่มรอบ agent ปกติของ OpenClaw จากโค้ด Plugin โดยใช้การ resolve ผู้ให้บริการ/โมเดลและการเลือก agent harness เดียวกับการตอบกลับที่ถูกกระตุ้นจากช่องทางrunEmbeddedPiAgent(...) ยังคงอยู่ในฐานะ alias เพื่อความเข้ากันได้resolveThinkingPolicy(...) ส่งคืนระดับ thinking ที่ผู้ให้บริการ/โมเดลรองรับและค่า default แบบ optional ผู้ให้บริการ Plugin เป็นเจ้าของ profile เฉพาะโมเดลผ่าน hook thinking ของตน ดังนั้น tool Plugin ควรเรียกตัวช่วย runtime นี้แทนการนำเข้าหรือทำซ้ำรายการผู้ให้บริการnormalizeThinkingLevel(...) แปลงข้อความผู้ใช้ เช่น on, x-high หรือ extra high เป็นระดับที่จัดเก็บตาม canonical ก่อนตรวจสอบกับ policy ที่ resolve แล้วตัวช่วย session store อยู่ภายใต้ api.runtime.agent.session:updateSessionStore(...) หรือ updateSessionStoreEntry(...) เป็นหลักสำหรับการเขียน runtime ตัวช่วยเหล่านี้ route ผ่านตัวเขียน session-store ที่ Gateway เป็นเจ้าของ, รักษาการอัปเดตพร้อมกัน และใช้ hot cache ซ้ำ saveSessionStore(...) ยังคงพร้อมใช้งานเพื่อความเข้ากันได้และการเขียนซ้ำแบบบำรุงรักษา offlineapi.runtime.agent.defaults
api.runtime.agent.defaults
ค่าคงที่โมเดลและผู้ให้บริการ default:
api.runtime.llm
api.runtime.llm
เรียกใช้ text completion ที่โฮสต์เป็นเจ้าของโดยไม่ต้องนำเข้าภายในของผู้ให้บริการหรือ
ทำซ้ำการเตรียมโมเดล/auth/base URL ของ OpenClawตัวช่วยนี้ใช้เส้นทางการเตรียม simple-completion เดียวกับ runtime built-in ของ OpenClaw
และสแนปช็อต Config runtime ที่โฮสต์เป็นเจ้าของ context engine
จะได้รับ capability
llm.complete ที่ผูกกับ session ดังนั้นการเรียกโมเดลจะใช้
agent ของ session ที่ใช้งานอยู่ และไม่ fallback ไปยัง agent default อย่างเงียบ ๆ
ผลลัพธ์มี attribution ของผู้ให้บริการ/โมเดล/agent รวมถึงการใช้งาน token,
cache และค่าใช้จ่ายโดยประมาณที่ถูก normalize เมื่อมีข้อมูลapi.runtime.subagent
api.runtime.subagent
เปิดและจัดการการรัน subagent เบื้องหลัง
deleteSession(...) สามารถลบ session ที่สร้างโดย Plugin เดียวกันผ่าน api.runtime.subagent.run(...) การลบ session ของผู้ใช้หรือ operator ใด ๆ ยังคงต้องใช้คำขอ Gateway ที่มี scope adminapi.runtime.nodes
api.runtime.nodes
แสดงรายการ Node ที่เชื่อมต่อและเรียกคำสั่งที่โฮสต์บน Node จากโค้ด Plugin ที่โหลดโดย Gateway หรือจากคำสั่ง CLI ของ Plugin ใช้สิ่งนี้เมื่อ Plugin เป็นเจ้าของงาน local บนอุปกรณ์ที่จับคู่ไว้ เช่น browser หรือ audio bridge บน Mac เครื่องอื่นภายใน Gateway runtime นี้เป็นแบบ in-process ในคำสั่ง CLI ของ Plugin จะเรียก Gateway ที่กำหนดค่าไว้ผ่าน RPC ดังนั้นคำสั่งเช่น
openclaw googlemeet recover-tab สามารถตรวจสอบ Node ที่จับคู่ไว้จาก terminal ได้ คำสั่ง Node ยังคงผ่านการจับคู่ Node ของ Gateway ตามปกติ, allowlist คำสั่ง, policy node-invoke ของ Plugin และการจัดการคำสั่งแบบ node-localPlugin ที่เปิดเผยคำสั่ง node-host ที่อันตรายควรลงทะเบียน policy node-invoke ด้วย api.registerNodeInvokePolicy(...) policy จะรันใน Gateway หลังการตรวจสอบ allowlist คำสั่งและก่อนส่งต่อคำสั่งไปยัง Node ดังนั้นการเรียก node.invoke โดยตรงและ tool ระดับสูงของ Plugin จะใช้เส้นทาง enforcement เดียวกันapi.runtime.tasks.managedFlows
api.runtime.tasks.managedFlows
ผูก runtime ของ Task Flow เข้ากับ session key ของ OpenClaw ที่มีอยู่หรือ context ของ tool ที่เชื่อถือได้ จากนั้นสร้างและจัดการ Task Flow โดยไม่ต้องส่ง owner ในทุกการเรียกTask Flow ติดตามสถานะ workflow หลายขั้นตอนแบบ durable ไม่ใช่ scheduler:
ใช้ Cron หรือ ใช้
api.session.workflow.scheduleSessionTurn(...) สำหรับการปลุกในอนาคต
จากนั้นใช้ managedFlows จากรอบที่ถูก schedule เมื่อการทำงานนั้น
ต้องการสถานะ flow, งานลูก, การรอ หรือการยกเลิกbindSession({ sessionKey, requesterOrigin }) เมื่อคุณมีคีย์เซสชัน OpenClaw ที่เชื่อถือได้จากเลเยอร์การผูกของคุณเองอยู่แล้ว อย่าผูกจากข้อมูลดิบที่ผู้ใช้ป้อนapi.runtime.tts
api.runtime.tts
การสังเคราะห์ข้อความเป็นเสียงพูดใช้การกำหนดค่า
messages.tts ของแกนหลักและการเลือก provider คืนค่าบัฟเฟอร์เสียง PCM + อัตราตัวอย่างapi.runtime.mediaUnderstanding
api.runtime.mediaUnderstanding
การวิเคราะห์รูปภาพ เสียง และวิดีโอคืนค่า
{ text: undefined } เมื่อไม่มีเอาต์พุตถูกสร้างขึ้น (เช่น ข้อมูลอินพุตถูกข้าม)api.runtime.stt.transcribeAudioFile(...) ยังคงเป็น alias เพื่อความเข้ากันได้สำหรับ api.runtime.mediaUnderstanding.transcribeAudioFile(...)api.runtime.imageGeneration
api.runtime.imageGeneration
การสร้างรูปภาพ
api.runtime.webSearch
api.runtime.webSearch
การค้นหาเว็บ
api.runtime.media
api.runtime.media
ยูทิลิตีสื่อระดับต่ำ
api.runtime.config
api.runtime.config
สแนปช็อตการกำหนดค่า runtime ปัจจุบันและการเขียนการกำหนดค่าแบบทรานแซกชัน ควรใช้
การกำหนดค่าที่ถูกส่งเข้าสู่เส้นทางการเรียกที่กำลังใช้งานอยู่แล้ว ใช้
current() เฉพาะเมื่อ handler ต้องการสแนปช็อตของ process โดยตรงmutateConfigFile(...) และ replaceConfigFile(...) คืนค่า followUp
เช่น { mode: "restart", requiresRestart: true, reason }
ซึ่งบันทึกเจตนาของตัวเขียนโดยไม่ดึงการควบคุมการรีสตาร์ตออกจาก
Gatewayapi.runtime.system
api.runtime.system
ยูทิลิตีระดับระบบ
api.runtime.events
api.runtime.events
การสมัครรับเหตุการณ์
api.runtime.logging
api.runtime.logging
การบันทึกล็อก
api.runtime.modelAuth
api.runtime.modelAuth
การแก้ไข auth ของโมเดลและ provider
api.runtime.state
api.runtime.state
การแก้ไขไดเรกทอรีสถานะและที่เก็บแบบ keyed ที่สำรองด้วย SQLiteที่เก็บแบบ keyed อยู่รอดหลังรีสตาร์ตและถูกแยกตาม id ของ Plugin ที่ผูกกับ runtime ใช้
registerIfAbsent(...) สำหรับการอ้างสิทธิ์ dedupe แบบอะตอมิก: คืนค่า true เมื่อคีย์หายไปหรือหมดอายุและถูกลงทะเบียนแล้ว หรือ false เมื่อมีค่าสดอยู่แล้วโดยไม่เขียนทับค่า เวลาในการสร้าง หรือ TTL ข้อจำกัด: maxEntries ต่อ namespace, แถวสด 1,000 แถวต่อ Plugin, ค่า JSON ต่ำกว่า 64KB และการหมดอายุ TTL แบบไม่บังคับapi.runtime.tools
api.runtime.tools
factory ของเครื่องมือหน่วยความจำและ CLI
api.runtime.channel
api.runtime.channel
helper ของ runtime เฉพาะ channel (พร้อมใช้งานเมื่อโหลด channel Plugin แล้ว)helper สำหรับ mention ที่พร้อมใช้งาน:
api.runtime.channel.mentions คือพื้นผิวนโยบายการ mention ขาเข้าที่ใช้ร่วมกันสำหรับ channel Plugin ที่บันเดิลมาและใช้การฉีด runtime:buildMentionRegexesmatchesMentionPatternsmatchesMentionWithExplicitimplicitMentionKindWhenresolveInboundMentionDecision
api.runtime.channel.mentions ตั้งใจไม่เปิดเผย helper ความเข้ากันได้ resolveMentionGating* รุ่นเก่า ควรใช้เส้นทาง { facts, policy } ที่ normalize แล้วการจัดเก็บข้อมูลอ้างอิง runtime
ใช้createPluginRuntimeStore เพื่อจัดเก็บข้อมูลอ้างอิง runtime สำหรับใช้นอก callback register:
ควรใช้
pluginId สำหรับ identity ของ runtime-store รูปแบบ key ระดับต่ำกว่ามีไว้สำหรับกรณีที่ไม่พบบ่อย ซึ่ง Plugin หนึ่งตั้งใจต้องการ runtime slot มากกว่าหนึ่งช่องฟิลด์ api ระดับบนสุดอื่น ๆ
นอกเหนือจาก api.runtime แล้ว อ็อบเจกต์ API ยังมี:
id ของ Plugin
ชื่อที่แสดงของ Plugin
สแนปช็อต config ปัจจุบัน (สแนปช็อต runtime ในหน่วยความจำที่ใช้งานอยู่เมื่อมี)
config เฉพาะ Plugin จาก
plugins.entries.<id>.configlogger แบบกำหนดขอบเขต (
debug, info, warn, error)โหมดการโหลดปัจจุบัน;
"setup-runtime" คือช่วงเริ่มต้น/ตั้งค่าขนาดเบาก่อนเข้า entry แบบเต็มแปลง path โดยอิงจาก root ของ plugin
ที่เกี่ยวข้อง
- ภายในของ Plugin — โมเดล capability และ registry
- จุดเข้าใช้งาน SDK — ตัวเลือก
definePluginEntry - ภาพรวม SDK — ข้อมูลอ้างอิง subpath