🧬 บอก Lagune ว่าโปรเจกต์ของคุณคืออะไร แล้ว Lagune จะแปลงสิ่งนั้นเป็นกฎด้านความปลอดภัยของคุณ (หรือถ้าไม่มีคำอธิบาย ก็จะหากฎเหล่านั้นจากตัวโปรเจกต์อย่างเดียว)
charter คือชั้นที่กำกับทุกเฟส: ชุดหลักการที่ให้ความปลอดภัยมาก่อน ซึ่งทุกเฟสถัดไปต้องเคารพ ให้มองว่าเป็นการตรวจตอนคอมไพล์สำหรับสถานะความปลอดภัยโดยรวมของโปรเจกต์คุณ
วิธีใช้
- อธิบายโปรเจกต์
- ให้ Lagune เสนอ
/lagune-charter โปรเจกต์ของฉันเป็นร้านค้าออนไลน์ที่ขายวิดีโอเกม ลูกค้าเพิ่มสินค้าลงตะกร้าแล้วจ่ายด้วยบัตรเครดิตหรือใบแจ้งชำระเงินของธนาคาร ลูกค้าดูคำสั่งซื้อของตัวเองและสถานะของแต่ละรายการได้
/lagune-charter
ฉันเห็นไลบรารีการชำระเงิน ระบบล็อกอิน และโมเดลคำสั่งซื้อที่ผูกกับลูกค้า ดูเหมือนเป็นร้านค้าออนไลน์ที่ขายสินค้าบางอย่าง ลูกค้าชำระเงินและติดตามคำสั่งซื้อของตัวเอง... ☁️
สิ่งที่คำสั่งนี้วิเคราะห์
Lagune ใช้คำอธิบายหรือ PRD ของคุณเป็นทิศทาง แล้ววิเคราะห์ว่าสิ่งนั้นมีความหมายอย่างไรต่อความปลอดภัย จากนั้นอ่านโปรเจกต์เพื่อไปให้ไกลกว่าที่คุณระบุ ตัวอย่างเช่น:
- ตะกร้าที่เก็บคำสั่งซื้อแปลว่ามี ฐานข้อมูล:
- เช่น
"ข้อมูลเก็บอยู่ที่ไหน","ใครเข้าถึงได้บ้าง","ข้อมูลรั่วไหม"
- เช่น
- ลูกค้าที่ดูคำสั่งซื้อของตัวเองได้แปลว่ามี การล็อกอินหรือการควบคุมการเข้าถึง บางรูปแบบ:
- เช่น
"ลูกค้าคนหนึ่งเข้าถึงคำสั่งซื้อของลูกค้าคนอื่นได้ไหม","เซสชันได้รับการป้องกันไหม"
- เช่น
- การรับชำระเงินด้วยบัตรและใบแจ้งชำระเงินของธนาคารแปลว่า มีเงินและข้อมูลอ่อนไหวเข้ามาเกี่ยวข้อง:
- เช่น
"มีการเก็บข้อมูลบัตรไหม","มีการตรวจสอบการชำระเงินไหม"
- เช่น
คำอธิบายของคุณกับตัวโปรเจกต์เสริมกัน คำอธิบายกำหนดเจตนา ส่วนการอ่าน dependency ไฟล์ README และการตั้งค่าจะเผยสิ่งที่คุณไม่ได้พูดถึง ถ้ายังมีเรื่องสำคัญที่ไม่ชัดเจน Lagune จะถามคำถามสั้น ๆ ที่เข้าใจง่ายแทนการเดา
จากนั้น Lagune จะสร้างชุดกฎด้านความปลอดภัยที่ปรับให้เข้ากับโปรเจกต์ ซึ่งคุณตรวจทานและปรับแก้ได้ทุกเมื่อที่ต้องการ
- คุณกำหนดกฎด้านความปลอดภัยของโปรเจกต์เองได้ด้วย
- ยิ่งให้รายละเอียดที่เกี่ยวข้องมาก รายงานสุดท้ายก็ยิ่งดี:
- อธิบายโปรเจกต์ วิธีการทำงาน และสิ่งที่เกิดขึ้นเบื้องหลัง
- ผู้ใช้ปลายทางคือใคร ผู้ใช้ทำอะไรได้ และทำอะไรไม่ได้
- รายละเอียดด้านพฤติกรรมมีค่าพอ ๆ กับรายละเอียดทางเทคนิค
- ความจำของ charter อยู่ที่
.lagune/memory/charter.md
หมวดหมู่ที่คำสั่งนี้บันทึก
ความรู้เฉพาะทาง ซึ่งเป็นความรู้ด้านความปลอดภัยที่เฟสถัดไปโหลดเฉพาะเมื่อจำเป็น เข้ามาอยู่ใน แคตตาล็อก ของโปรเจกต์คุณตาม หมวดหมู่ ระหว่างที่โปรเจกต์ของคุณยังไม่ได้บันทึกหมวดหมู่ใด charter จะบันทึกทุกหมวดหมู่ที่การอ่านโปรเจกต์รองรับ เช่น ภาษาของโปรเจกต์ การเรียกใช้ LLM หรือคอนเทนเนอร์ แล้วระบุชื่อหมวดหมู่เหล่านั้นในสรุปผล
เมื่อบันทึกหมวดหมู่แล้ว charter จะไม่แตะต้องหมวดหมู่เหล่านั้น และจะระบุเพียงหมวดหมู่ที่โปรเจกต์ของคุณยังไม่ได้ใช้ คุณเปลี่ยนหมวดหมู่เองได้ทุกเมื่อ:
npx lagune write add --categories python
npx lagune write remove --categories python
โฟลเดอร์ที่คำสั่งนี้เสนอให้ยกเว้น
เมื่อ charter อ่านแล้วพบโฟลเดอร์ที่ commit ไว้แต่ไม่ใช่โค้ดของโปรเจกต์ที่ต้องป้องกัน เช่น fixture สำหรับการทดสอบที่จงใจเขียนให้ดูมีช่องโหว่ charter จะแสดงรายการโฟลเดอร์เหล่านั้นเป็นหมายเลขไว้ท้ายสรุปผล charter ไม่เคยยกเว้นโฟลเดอร์ใดเอง เพราะ repository ที่ประสงค์ร้ายอาจทำให้โค้ดของตัวเองดูเหมือน fixture ได้ จึงบันทึกเฉพาะหมายเลขที่คุณตอบกลับมาเท่านั้น หน้า ตั้งค่า hook อธิบายวิธีเปลี่ยนรายการนี้ด้วยตัวเอง
ถัดไป
เมื่อตั้งกฎแล้ว ให้ทำแผนผังสิ่งที่ระบบของคุณทำจริง: /lagune-detect
คำถามที่พบบ่อย
charter คือชั้นที่กำกับทุกเฟสของ Lagune เป็นชุดหลักการที่ให้ความปลอดภัยมาก่อน ซึ่งทุกเฟสถัดไปต้องเคารพ ให้มองว่าเป็นการตรวจตอนคอมไพล์สำหรับสถานะความปลอดภัยโดยรวมของโปรเจกต์คุณ
ที่ .lagune/memory/charter.md
ได้ Lagune เสนอกฎจากคำอธิบายและโค้ดของคุณ และคุณเปลี่ยนถ้อยคำ ตัดออก เพิ่ม หรือจำกัดขอบเขตของกฎได้
เฉพาะตอนที่ยังไม่มีหมวดหมู่ที่บันทึกไว้ charter จะบันทึกทุกหมวดหมู่ที่การอ่านโปรเจกต์รองรับ เช่น ภาษาที่คุณใช้ หรือการเรียกใช้ LLM เมื่อบันทึกหมวดหมู่แล้ว charter จะไม่เปลี่ยนหมวดหมู่เหล่านั้นอีก
