Gateway
ประวัติการตรวจสอบ
ประวัติการตรวจสอบ
Gateway เก็บบัญชีแยกประเภทการตรวจสอบที่มีขอบเขตจำกัดและมีเฉพาะข้อมูลเมตาไว้ในฐานข้อมูลสถานะที่ใช้ร่วมกันของ OpenClaw บัญชีนี้ใช้ตอบคำถามด้านการปฏิบัติงาน เช่น "เอเจนต์ใดทำงาน เมื่อใด และสิ้นสุดอย่างไร" "การทำงานหนึ่งครั้งเรียกใช้การดำเนินการของเครื่องมือใดบ้าง" และเมื่อเปิดใช้การตรวจสอบข้อความ "ข้อความขาเข้าที่ได้รับการยอมรับไปถึงขั้นตอนการส่งต่อหรือไม่" และ "ข้อความขาออกไปถึงสถานะสิ้นสุดของการนำส่งหรือไม่"
บัญชีแยกประเภทจัดเก็บข้อมูลประจำตัว ลำดับ แหล่งที่มา การดำเนินการ สถานะ และรหัสผลลัพธ์ที่ปรับให้อยู่ในรูปแบบมาตรฐาน โดยจะไม่จัดเก็บพรอมต์ เนื้อหาข้อความ อาร์กิวเมนต์ของเครื่องมือ ผลลัพธ์จากเครื่องมือ ไฟล์แนบ ชื่อไฟล์ URL เอาต์พุตคำสั่ง หรือข้อความข้อผิดพลาดดิบ
กลุ่มระเบียน
ระบบจะบันทึกเหตุการณ์การทำงานและเหตุการณ์เครื่องมือทุกครั้งที่เปิดใช้การตรวจสอบ (ค่าเริ่มต้น) ส่วนเหตุการณ์วงจรชีวิตของข้อความต้องเลือกเปิดใช้และปิดอยู่โดยค่าเริ่มต้น
| กลุ่ม | การดำเนินการ | ค่าเริ่มต้น |
|---|---|---|
| การทำงานของเอเจนต์ | agent.run.started, agent.run.finished |
เปิด |
| การดำเนินการของเครื่องมือ | tool.action.started, tool.action.finished |
เปิด |
| ข้อความ | message.inbound.processed, message.outbound.finished |
ปิด |
ทุกระเบียนมีรหัสเหตุการณ์ที่คงที่ ลำดับบัญชีแยกประเภทที่เพิ่มขึ้นอย่างต่อเนื่อง เวลาประทับของวงจรชีวิต ผู้ดำเนินการ การดำเนินการ สถานะ schemaVersion: 1 และ redaction: "metadata_only" ดูข้อมูลอ้างอิงฟิลด์และตัวกรองการค้นหาทั้งหมดที่ ระเบียนการตรวจสอบ
เหตุการณ์วงจรชีวิตของข้อความ
ตั้งค่า audit.messages เพื่อเลือกสิ่งที่จะบันทึก แล้วรีสตาร์ท Gateway:
off(ค่าเริ่มต้น): ไม่มีระเบียนข้อความdirect: เฉพาะข้อความในการสนทนาโดยตรงall: ข้อความโดยตรง ข้อความกลุ่ม และข้อความในช่อง
ขอบเขตที่เป็นแหล่งข้อมูลหลักสองจุดสร้างระเบียนข้อความ:
- แถว ขาเข้า จะถูกเขียนเมื่อข้อความที่ได้รับการยอมรับไปถึงขั้นตอนการส่งต่อของแกนหลัก รวมถึงผลลัพธ์จากการประมวลผลข้อความซ้ำและผลลัพธ์สิ้นสุด
- แถว ขาออก จะถูกเขียนเมื่อการนำส่งแบบคงทนที่ใช้ร่วมกันไปถึงผลลัพธ์สิ้นสุด ได้แก่ ส่งแล้ว ระงับ ล้มเหลว หรือ
unknownที่ระบุอย่างชัดเจนสำหรับการส่งซึ่งกำกวมเนื่องจากการหยุดทำงาน รวมถึงผลลัพธ์จากการกู้คืนคิวและจดหมายที่นำส่งไม่ได้ เพย์โหลดการตอบกลับเชิงตรรกะต้นฉบับแต่ละรายการจะมีแถวสิ้นสุดหนึ่งแถว ส่วนการแบ่งเป็นส่วนย่อยและการกระจายไปยังอะแดปเตอร์จะถูกรวมเป็นresultCount
การจำแนกประเภทการสนทนา
โหมด direct เป็นขอบเขตด้านความเป็นส่วนตัว ดังนั้นข้อความจะถูกจำแนกเป็นการสนทนาโดยตรงก็ต่อเมื่อข้อเท็จจริงของปลายทางพิสูจน์ได้เท่านั้น กล่าวคือ เส้นทางการส่งได้ประกาศประเภทการสนทนาของปลายทาง หรือเส้นทางเซสชันการนำส่งระบุชื่อช่องและเพียร์ที่กำลังนำส่งถึงอย่างตรงกันทุกประการ สัญญาณที่อ่อนกว่า เช่น สถานะนโยบายหรือการสนทนาต้นทาง สามารถจำแนกข้อความเป็น group (ซึ่งทำให้ไม่รวมอยู่ในการเก็บรวบรวม direct) แต่ไม่สามารถอ้างว่าเป็น direct ได้ ข้อความที่พิสูจน์ไม่ได้ว่าเป็นข้อความโดยตรงจะถูกจำแนกเป็น unknown และจะไม่ถูกบันทึกในโหมด direct ดังนั้นช่องที่ไม่ประกาศประเภทแชตอาจบันทึกแถวในโหมด direct ได้น้อยกว่าในโหมด all
โมเดลความเป็นส่วนตัว
แถวข้อความจะไม่จัดเก็บตัวระบุแพลตฟอร์มดิบ ตัวระบุบัญชี การสนทนา ข้อความ และเป้าหมาย เมื่อสามารถเชื่อมโยงความสัมพันธ์ได้ จะถูกส่งออกเฉพาะในรูปนามแฝงแบบใช้คีย์ซึ่งใช้ภายในแต่ละการติดตั้ง (hmac-sha256:v1:<keyId>:<digest>):
- คีย์ HMAC จะถูกสร้างขึ้นเมื่อใช้งานครั้งแรก แยกโดเมนตามประเภทตัวระบุ และอยู่ในฐานข้อมูลสถานะเดียวกับบัญชีแยกประเภท
- นามแฝงจะคงที่ภายในการติดตั้งหนึ่งรายการ จึงสามารถเชื่อมโยงแถวที่เกี่ยวกับการสนทนาเดียวกันได้โดยไม่เปิดเผยตัวระบุแพลตฟอร์ม
- นี่คือ การเชื่อมโยงความสัมพันธ์ ไม่ใช่การทำให้ไม่สามารถระบุตัวตนได้: ผู้ที่มีสิทธิ์อ่านฐานข้อมูลสถานะย่อมเข้าถึงคีย์ได้ด้วย และสามารถทดสอบตัวระบุดิบที่คาดไว้กับนามแฝงได้ การส่งออกผ่าน RPC และ CLI จะไม่รวมคีย์
- หากข้อมูลคีย์สูญหายหรือเสียหายขณะที่ยังเก็บแถวข้อความไว้ Gateway จะปฏิเสธการทำงานอย่างปลอดภัยและทิ้งระเบียนข้อความใหม่ แทนที่จะหมุนเวียนไปใช้คีย์ใหม่โดยไม่แจ้งให้ทราบ ซึ่งจะทำให้การเชื่อมโยงความสัมพันธ์แยกออกจากกัน
ระเบียนการทำงานและเครื่องมือยังคงเก็บ sessionKey และ sessionId ไว้เพื่อการเชื่อมโยงความสัมพันธ์ โดยคีย์เซสชันแบบมาตรฐานอาจมีรหัสบัญชีแพลตฟอร์มหรือรหัสเพียร์อยู่ภายใน ส่วนระเบียนข้อความตั้งใจละเว้นทั้งสองรายการ
การส่งออกข้อมูลการตรวจสอบยังคงเป็นข้อมูลเมตาด้านการปฏิบัติงานที่ละเอียดอ่อนแม้ไม่มีเนื้อหา เนื่องจากเวลา ช่อง ผลลัพธ์ และนามแฝงที่คงที่สามารถนำไปเชื่อมโยงกิจกรรมได้ โปรดปกป้องข้อมูลที่ส่งออกด้วยการควบคุมการเข้าถึงและแนวทางการเก็บรักษาเช่นเดียวกับระเบียนอื่นของผู้ปฏิบัติงาน
ขอบเขตความครอบคลุมและข้อจำกัดของหลักฐาน
บัญชีแยกประเภททำงานแบบพยายามให้ดีที่สุดและมีขอบเขตจำกัดโดยตั้งใจ ให้ถือว่าเป็นหลักฐานของสิ่งที่ถูกบันทึก ไม่ใช่หลักฐานของสิ่งที่เกิดขึ้น:
- การไม่มีแถวไม่ได้พิสูจน์สิ่งใด การทิ้งข้อความขาเข้าก่อนรับเข้าสู่ระบบ การส่งจากกระบวนการ CLI ที่ไม่มีตัวบันทึกของ Gateway ทำงานอยู่ และเส้นทางภายใน Plugin หรือเส้นทางการส่งโดยตรงที่ข้ามการนำส่งแบบคงทนที่ใช้ร่วมกัน จะไม่ทิ้งระเบียนไว้
- การเขียนข้อมูลดำเนินการผ่านเวิร์กเกอร์เบื้องหลังที่มีขอบเขตจำกัด หากเวิร์กเกอร์ล้มเหลวหรือคิวอิ่มตัว ระบบจะทิ้งระเบียนและบันทึกคำเตือนด้านการปฏิบัติงานหนึ่งรายการ
- การส่งขาออกที่กำกวมเนื่องจากการหยุดทำงานจะถูกบันทึกเป็น
unknownแทนการสร้างผลลัพธ์ที่ไม่ได้เกิดขึ้นจริง
บัญชีแยกประเภทนี้รองรับการดีบักและการตรวจสอบด้านการปฏิบัติงาน แต่ไม่ใช่คลังข้อมูลการปฏิบัติตามข้อกำหนดที่เก็บข้อมูลได้ครบถ้วน หากต้องการระบบดังกล่าว ให้ใช้ระบบภายนอกที่รับข้อมูลจาก OpenTelemetry หรือเครื่องมือระดับช่อง
การจัดเก็บ การเก็บรักษา และการย้ายข้อมูล
ระเบียนอยู่ในฐานข้อมูลสถานะที่ใช้ร่วมกัน (state/openclaw.sqlite) และถูกเขียนนอกเส้นทางสำคัญของการนำส่ง การค้นหาจะไม่คืนระเบียนที่มีอายุเกิน 30 วัน และบัญชีแยกประเภทจำกัดไว้ที่ 100,000 แถว โดยแถวที่หมดอายุจะถูกล้างระหว่างการเริ่มต้นระบบ การบำรุงรักษารายชั่วโมง และการเขียนครั้งถัดไป การบำรุงรักษาระยะเวลาเก็บข้อมูลยังคงทำงานแม้ปิดใช้งานการเก็บรวบรวม
การอัปเกรดจาก Gateway ที่ใช้บัญชีแยกประเภทเวอร์ชันก่อนหน้าซึ่งเก็บเฉพาะการทำงานและเครื่องมือ จะย้ายสคีมาโดยอัตโนมัติเมื่อเริ่มต้นระบบ (หรือผ่าน openclaw doctor --fix) โดยยังคงรักษาแถวที่มีอยู่และลำดับบัญชีแยกประเภทไว้
การค้นหา
- CLI:
openclaw auditพร้อมตัวกรองสำหรับเอเจนต์ เซสชัน การทำงาน ประเภท สถานะ ทิศทาง ช่อง ขอบเขตเวลา และการแบ่งหน้าด้วยเคอร์เซอร์ - RPC ของ Gateway:
audit.activity.list(ต้องใช้operator.read) คืนค่ายูเนียนเหตุการณ์กิจกรรม V1 ที่มีการกำหนดเวอร์ชัน ส่วน RPCaudit.listที่เผยแพร่แล้วจะไม่เปลี่ยนแปลงสำหรับไคลเอนต์การทำงาน/เครื่องมือรุ่นเก่า ดู โปรโตคอล Gateway