Technical reference
สถาปัตยกรรมรันไทม์ของเอเจนต์
OpenClaw เป็นเจ้าของรันไทม์เอเจนต์ในตัวโดยตรง โค้ดรันไทม์อยู่ภายใต้ src/agents/, ตัวช่วยโมเดล/ผู้ให้บริการอยู่ภายใต้ src/llm/, และสัญญาที่เปิดให้ Plugin ใช้งานถูกเปิดเผยผ่าน barrel ของ openclaw/plugin-sdk/*
โครงสร้างรันไทม์
src/agents/embedded-agent-runner/: ลูปความพยายามของเอเจนต์ในตัว, อะแดปเตอร์สตรีมผู้ให้บริการ, Compaction, การเลือกโมเดล, และการเชื่อมต่อเซสชันsrc/agents/sessions/: การคงอยู่ของเซสชัน, การโหลด Plugin, การค้นพบทรัพยากร, Skills, พรอมต์, ธีม, และตัวเรนเดอร์เครื่องมือที่รองรับด้วย TUIpackages/agent-core/: คอร์เอเจนต์ที่ใช้ซ้ำได้, ชนิด harness ระดับล่าง, ข้อความ, ตัวช่วย Compaction, เทมเพลตพรอมต์, และสัญญาเครื่องมือ/เซสชันsrc/agents/runtime/: facade ของ OpenClaw สำหรับ@openclaw/agent-coreพร้อมยูทิลิตีพร็อกซีภายในเครื่องsrc/agents/agent-tools*.ts: นิยามเครื่องมือ, สคีมา, นโยบาย, อะแดปเตอร์ hook ก่อน/หลัง, และการรองรับการแก้ไขโฮสต์ที่ OpenClaw เป็นเจ้าของsrc/agents/agent-hooks/: hook รันไทม์ในตัว เช่น ตัวป้องกัน Compaction และการตัดแต่งบริบทsrc/llm/: registry โมเดล/ผู้ให้บริการ, ตัวช่วยทรานสปอร์ต, และการใช้งานสตรีมเฉพาะผู้ให้บริการ
ขอบเขต
โค้ดคอร์เรียกรันไทม์ในตัวผ่านโมดูล OpenClaw และ barrel ของ SDK ไม่ใช่ผ่านแพ็กเกจเอเจนต์ภายนอกแบบเก่า Plugin ใช้ entrypoint openclaw/plugin-sdk/* ที่มีเอกสารกำกับ และไม่ import ส่วนภายในของ src/**
@earendil-works/pi-tui ยังคงเป็น dependency TUI ภายนอก ใช้เป็นชุดเครื่องมือคอมโพเนนต์เทอร์มินัลโดย TUI ภายในเครื่องและตัวเรนเดอร์เซสชัน; การทำให้เป็นภายในจะเป็นงาน vendoring แยกต่างหาก
Manifest
แพ็กเกจทรัพยากรประกาศทรัพยากร OpenClaw ใน metadata ของแพ็กเกจ:
{ "openclaw": { "extensions": ["extensions/index.ts"], "skills": ["skills/*.md"], "prompts": ["prompts/*.md"], "themes": ["themes/*.json"] }}ตัวจัดการแพ็กเกจยังค้นพบไดเรกทอรีตามแบบแผน extensions/, skills/, prompts/, และ themes/ ด้วย
การเลือกรันไทม์
id รันไทม์ในตัวเริ่มต้นคือ openclaw harness ของ Plugin สามารถลงทะเบียน id รันไทม์เพิ่มเติมได้ auto จะเลือก harness ของ Plugin ที่รองรับเมื่อมีอยู่ มิฉะนั้นจะใช้รันไทม์ OpenClaw ในตัว