Technical reference
โปรโตคอลเอาต์พุตแบบสมบูรณ์
เอาต์พุตของผู้ช่วยสามารถมีชุด directive สำหรับการส่งมอบ/การเรนเดอร์ขนาดเล็กได้:
MEDIA:สำหรับการส่งมอบไฟล์แนบ[[audio_as_voice]]สำหรับคำใบ้การนำเสนอเสียง[[reply_to_current]]/[[reply_to:<id>]]สำหรับ metadata การตอบกลับ[embed ...]สำหรับการเรนเดอร์แบบ rich ของ Control UI
ไฟล์แนบ MEDIA: ระยะไกลต้องเป็น URL https: แบบสาธารณะ http: แบบธรรมดา,
loopback, link-local, โฮสต์เนมส่วนตัว และโฮสต์เนมภายในจะถูกละเว้นในฐานะ directive
ของไฟล์แนบ แต่ตัวดึงข้อมูลสื่อฝั่งเซิร์ฟเวอร์ยังคงบังคับใช้ตัวป้องกันเครือข่ายของตนเอง
ไฟล์แนบ MEDIA: ภายในเครื่องสามารถใช้พาธแบบ absolute, พาธสัมพัทธ์กับ workspace หรือ
พาธสัมพัทธ์กับ home แบบ ~/ ได้ ไฟล์เหล่านี้ยังคงผ่านนโยบายการอ่านไฟล์ของ agent และ
การตรวจสอบประเภทสื่อก่อนส่งมอบ
ไวยากรณ์รูปภาพ Markdown แบบธรรมดาจะยังคงเป็นข้อความโดยค่าเริ่มต้น Channels ที่ตั้งใจ
แมปการตอบกลับรูปภาพ Markdown เป็นไฟล์แนบสื่อจะ opt in ที่ outbound
adapter ของตน Telegram ทำเช่นนี้เพื่อให้  ยังคงกลายเป็นการตอบกลับแบบสื่อได้
directive เหล่านี้แยกจากกัน MEDIA: และแท็กการตอบกลับ/เสียงยังคงเป็น metadata การส่งมอบ; [embed ...] คือเส้นทางการเรนเดอร์แบบ rich สำหรับเว็บเท่านั้น
สื่อจากผลลัพธ์เครื่องมือที่เชื่อถือได้ใช้ parser MEDIA: / [[audio_as_voice]] เดียวกันก่อนส่งมอบ ดังนั้นเอาต์พุตเครื่องมือแบบข้อความจึงยังคงทำเครื่องหมายไฟล์แนบเสียงเป็นบันทึกเสียงได้
เมื่อเปิดใช้ block streaming แล้ว MEDIA: จะยังคงเป็น metadata แบบส่งมอบครั้งเดียวสำหรับ
หนึ่ง turn หาก URL สื่อเดียวกันถูกส่งในบล็อกที่สตรีมและถูกทำซ้ำใน payload สุดท้ายของ
ผู้ช่วย OpenClaw จะส่งไฟล์แนบหนึ่งครั้งและลบรายการซ้ำออกจาก payload สุดท้าย
[embed ...]
[embed ...] เป็นไวยากรณ์การเรนเดอร์แบบ rich เพียงรูปแบบเดียวที่ agent ใช้ได้สำหรับ Control UI
ตัวอย่างแบบ self-closing:
[embed ref="cv_123" title="Status" /]
กฎ:
[view ...]ไม่ถูกต้องสำหรับเอาต์พุตใหม่อีกต่อไป- shortcode ของ embed จะเรนเดอร์ในพื้นผิวข้อความของผู้ช่วยเท่านั้น
- เฉพาะ embed ที่อิง URL เท่านั้นที่จะถูกเรนเดอร์ ใช้
ref="..."หรือurl="..." - shortcode ของ embed แบบ inline HTML ในรูปแบบบล็อกจะไม่ถูกเรนเดอร์
- Web UI จะลบ shortcode ออกจากข้อความที่มองเห็นได้และเรนเดอร์ embed แบบ inline
MEDIA:ไม่ใช่นามแฝงของ embed และไม่ควรใช้สำหรับการเรนเดอร์ embed แบบ rich
รูปแบบการเรนเดอร์ที่จัดเก็บไว้
บล็อกเนื้อหาผู้ช่วยที่ normalized/จัดเก็บไว้คือรายการ canvas แบบมีโครงสร้าง:
{
"type": "canvas",
"preview": {
"kind": "canvas",
"surface": "assistant_message",
"render": "url",
"viewId": "cv_123",
"url": "/__openclaw__/canvas/documents/cv_123/index.html",
"title": "Status",
"preferredHeight": 320
}
}
บล็อกแบบ rich ที่จัดเก็บ/เรนเดอร์แล้วใช้รูปแบบ canvas นี้โดยตรง ระบบไม่รู้จัก present_view