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 ทำเช่นนี้เพื่อให้ ![alt](url) ยังคงกลายเป็นการตอบกลับแบบสื่อได้

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

ที่เกี่ยวข้อง