Plugin guides
Plugin พาธ OC
Plugin oc-path ที่มาพร้อมระบบจะเพิ่ม CLI openclaw path สำหรับรูปแบบการระบุตำแหน่งไฟล์ในพื้นที่ทำงานด้วย oc:// โดยจัดส่งอยู่ใน repo ของ OpenClaw ภายใต้ extensions/oc-path/ แต่เป็นแบบเลือกเปิดใช้: หลังติดตั้ง/บิลด์ Plugin จะยังไม่ทำงานจนกว่าคุณจะเปิดใช้
ที่อยู่ oc:// ชี้ไปยังโหนดปลายทางหนึ่งรายการ (หรือชุดโหนดปลายทางที่ตรงกับไวลด์การ์ด) ภายในไฟล์พื้นที่ทำงาน Plugin รองรับไฟล์สี่ประเภท:
- markdown (
.md): frontmatter, ส่วน, รายการ, ฟิลด์ - jsonc (
.jsonc,.json): คงความคิดเห็นและการจัดรูปแบบไว้ - jsonl (
.jsonl,.ndjson): ระเบียนแบบแยกตามบรรทัด - yaml (
.yaml,.yml,.lobster): โหนดแมป/ลำดับ/สเกลาร์ผ่าน APIDocumentของแพ็กเกจyaml
ผู้ดูแลระบบที่โฮสต์เองและส่วนขยายของเอดิเตอร์ใช้ CLI เพื่ออ่านหรือเขียนโหนดปลายทางเพียงรายการเดียวโดยไม่ต้องเขียนสคริปต์เรียก SDK โดยตรง ส่วนเอเจนต์และฮุกใช้เป็นชั้นรองรับที่ให้ผลลัพธ์แน่นอน เพื่อให้การไป-กลับที่รักษาไบต์อย่างเที่ยงตรงและการป้องกันด้วยค่าระบุการปกปิดข้อมูลใช้ได้อย่างสม่ำเสมอกับไฟล์ทุกประเภท โปรดดู เอกสารอ้างอิง CLI สำหรับไวยากรณ์ทั้งหมด รายการแฟล็กแยกตามคำสั่ง และตัวอย่างการใช้งานของไฟล์แต่ละประเภท หน้านี้อธิบายเหตุผลและวิธีเปิดใช้ Plugin
เหตุผลที่ควรเปิดใช้
เปิดใช้ oc-path เมื่อสคริปต์ ฮุก หรือเครื่องมือเอเจนต์ภายในเครื่องต้องชี้ไปยังส่วนที่เจาะจงของสถานะพื้นที่ทำงาน โดยไม่ต้องมีตัวแยกวิเคราะห์เฉพาะสำหรับรูปแบบไฟล์แต่ละแบบ ที่อยู่ oc:// เดียวสามารถระบุคีย์ frontmatter ของ markdown, รายการในส่วน, โหนดปลายทางของการกำหนดค่า JSONC, ฟิลด์เหตุการณ์ JSONL หรือขั้นตอนเวิร์กโฟลว์ YAML ได้
สิ่งนี้สำคัญสำหรับเวิร์กโฟลว์ของผู้ดูแลที่ต้องการให้การเปลี่ยนแปลงมีขนาดเล็ก ตรวจสอบย้อนหลังได้ และทำซ้ำได้: ตรวจสอบค่าหนึ่งค่า ค้นหาระเบียนที่ตรงกัน ทดลองเขียนแบบไม่เปลี่ยนแปลงจริง แล้วจึงใช้การเปลี่ยนแปลงเฉพาะกับโหนดปลายทางนั้น โดยไม่กระทบความคิดเห็น อักขระขึ้นบรรทัดใหม่ และการจัดรูปแบบบริเวณใกล้เคียง
เหตุผลทั่วไปที่ควรเปิดใช้:
- ระบบอัตโนมัติภายในเครื่อง: สคริปต์เชลล์ค้นหาหรืออัปเดตค่าหนึ่งค่าในพื้นที่ทำงานด้วย
openclaw path … --jsonแทนการมีโค้ดแยกวิเคราะห์ markdown, JSONC, JSONL และ YAML แยกกัน - การแก้ไขที่เอเจนต์มองเห็นได้: เอเจนต์แสดง diff จากการทดลองสำหรับโหนดปลายทางที่ระบุหนึ่งรายการก่อนเขียน ซึ่งตรวจสอบได้ง่ายกว่าการเขียนไฟล์ใหม่แบบอิสระ
- การผสานรวมกับเอดิเตอร์: เอดิเตอร์แมป
oc://AGENTS.md/tools/ghไปยังโหนด markdown และหมายเลขบรรทัดที่แน่นอน โดยไม่ต้องคาดเดาจากข้อความหัวข้อ - การวินิจฉัย:
emitส่งไฟล์ผ่านตัวแยกวิเคราะห์และตัวสร้างผลลัพธ์แบบไป-กลับ เพื่อให้คุณตรวจสอบได้ว่าไฟล์ประเภทนั้นคงไบต์เดิมได้หรือไม่ ก่อนพึ่งพาการแก้ไขอัตโนมัติ
# Is the GitHub plugin enabled in this config?openclaw path resolve 'oc://config.jsonc/plugins/github/enabled' --json # Which tool-call names appear in this session log?openclaw path find 'oc://session.jsonl/[event=tool_call]/name' --json # What bytes would this tiny config edit write?openclaw path set 'oc://config.jsonc/plugins/github/enabled' 'true' --dry-runoc-path ตั้งใจไม่เป็นเจ้าของความหมายเชิงระดับสูง Plugin หน่วยความจำยังคงเป็นเจ้าของการเขียนหน่วยความจำ คำสั่งการกำหนดค่ายังคงเป็นเจ้าของการจัดการการกำหนดค่าทั้งหมด และการกู้คืนการกำหนดค่าที่ใช้งานได้ล่าสุด (LKG) ยังคงเป็นเจ้าของการคืนค่า/เลื่อนสถานะ oc-path เป็นชั้นการระบุตำแหน่งแบบเจาะจงและการดำเนินการกับไฟล์โดยรักษาไบต์ ซึ่งเครื่องมือระดับสูงเหล่านั้นสามารถสร้างการทำงานครอบไว้ได้
ตำแหน่งที่ทำงาน
Plugin ทำงาน ภายในโปรเซสของ CLI openclaw บนโฮสต์ที่คุณเรียกใช้คำสั่ง ไม่จำเป็นต้องมี Gateway ที่กำลังทำงานและไม่เปิดซ็อกเก็ตเครือข่าย คำสั่งทุกคำสั่งเป็นการแปลงไฟล์ที่คุณระบุโดยไม่มีผลข้างเคียงอื่น
ข้อมูลเมตาของ Plugin อยู่ใน extensions/oc-path/openclaw.plugin.json:
{ "id": "oc-path", "name": "OC Path", "activation": { "onStartup": false, "onCommands": ["path"] }, "commandAliases": [{ "name": "path", "kind": "cli" }]}onStartup: false ทำให้ Plugin ไม่อยู่ในเส้นทางเริ่มต้นของ Gateway ส่วน commandAliases และ activation.onCommands กำหนดให้ CLI โหลด Plugin แบบหน่วงเวลาเมื่อคุณเรียกใช้ openclaw path … ครั้งแรก ดังนั้นการติดตั้งที่ไม่เคยใช้คำสั่งนี้จึงไม่มีต้นทุนเพิ่ม
การเปิดใช้
openclaw plugins enable oc-pathเริ่ม Gateway ใหม่ (หากคุณใช้งานอยู่) เพื่อให้สแนปช็อตของแมนิเฟสต์รับสถานะใหม่ การเรียก openclaw path โดยตรงจะทำงานทันทีบนโฮสต์เดียวกัน โดย CLI จะโหลด Plugin เมื่อต้องการ
ปิดใช้ด้วย:
openclaw plugins disable oc-pathการขึ้นต่อกัน
การขึ้นต่อกันของตัวแยกวิเคราะห์ทั้งหมดอยู่ภายใน Plugin การเปิดใช้ oc-path จะไม่ดึงแพ็กเกจใหม่เข้าสู่รันไทม์หลัก:
| การขึ้นต่อกัน | วัตถุประสงค์ |
|---|---|
commander |
เชื่อมโยงคำสั่งย่อยสำหรับ resolve, find, set, validate, emit |
jsonc-parser |
แยกวิเคราะห์ JSONC และแก้ไขโหนดปลายทางโดยคงความคิดเห็นและจุลภาคท้ายไว้ |
markdown-it |
แบ่ง markdown เป็นโทเค็นสำหรับโมเดลส่วน / รายการ / ฟิลด์ |
yaml |
แยกวิเคราะห์ / สร้างผลลัพธ์ / แก้ไข Document ของ YAML โดยคงความคิดเห็นและรูปแบบโฟลว์ไว้ |
JSONL ยังคงใช้การเขียนขึ้นเอง: การแยกวิเคราะห์ตามบรรทัดเรียบง่ายกว่าการใช้การขึ้นต่อกันใด ๆ และการแยกวิเคราะห์แต่ละบรรทัดก็ผ่าน jsonc-parser อยู่แล้ว
สิ่งที่มีให้
| พื้นผิว | จัดเตรียมโดย |
|---|---|
CLI openclaw path |
extensions/oc-path/cli-registration.ts |
ตัวแยกวิเคราะห์ / ตัวจัดรูปแบบ oc:// |
extensions/oc-path/src/oc-path/oc-path.ts |
| การแยกวิเคราะห์ / สร้างผลลัพธ์ / แก้ไขแยกตามประเภท | extensions/oc-path/src/oc-path/{md,jsonc,jsonl,yaml} |
| การค้นหาตำแหน่ง / ค้นหา / ตั้งค่าแบบสากล | extensions/oc-path/src/oc-path/{resolve,find,edit}.ts |
| การป้องกันด้วยค่าระบุการปกปิดข้อมูล | extensions/oc-path/src/oc-path/sentinel.ts |
ปัจจุบัน CLI เป็นพื้นผิวสาธารณะเพียงอย่างเดียว คำสั่งของชั้นรองรับเป็นส่วนตัวภายใน Plugin ผู้ใช้บริการใช้ CLI (หรือสร้าง Plugin ของตนเองโดยอิง SDK)
ความสัมพันธ์กับ Plugin อื่น
memory-*: การเขียนหน่วยความจำดำเนินการผ่าน Plugin หน่วยความจำ ไม่ใช่oc-pathโดยoc-pathเป็นชั้นรองรับไฟล์ทั่วไป ส่วน Plugin หน่วยความจำจะเพิ่มความหมายเฉพาะของตนไว้ด้านบน- LKG:
pathไม่รับรู้การคืนค่าการกำหนดค่าที่ใช้งานได้ล่าสุด หากไฟล์ที่คุณแก้ไขผ่านpathถูกติดตามโดย LKG ด้วย รอบสังเกตการกำหนดค่าครั้งถัดไปจะตัดสินใจว่าจะเลื่อนสถานะหรือกู้คืนไฟล์นั้น ให้ถือว่าการแก้ไขด้วยpathเหมือนกับการเขียนไฟล์นั้นโดยตรงด้วยวิธีอื่น
ความปลอดภัย
set เขียนไบต์ดิบผ่านเส้นทางสร้างผลลัพธ์ของชั้นรองรับ ซึ่งใช้การป้องกันด้วยค่าระบุการปกปิดข้อมูลโดยอัตโนมัติ โหนดปลายทางที่มี __OPENCLAW_REDACTED__ (ตรงตามตัวอักษรหรือเป็นส่วนหนึ่งของข้อความ) จะถูกปฏิเสธขณะเขียนด้วย OC_EMIT_SENTINEL นอกจากนี้ CLI ยังล้างค่าระบุดังกล่าวออกจากผลลัพธ์สำหรับมนุษย์หรือ JSON ทุกชนิดที่แสดง โดยแทนที่ด้วย [REDACTED] เพื่อไม่ให้การบันทึกเทอร์มินัลและไปป์ไลน์เปิดเผยเครื่องหมายนี้