โหมดเอาต์พุต
codeknit รองรับโหมดเอาต์พุตสามโหมด ซึ่งควบคุมโดยแฟล็ก --output-mode โหมดแต่ละโหมดจะกำหนดวิธีการเขียนโครงสร้างโค้ดที่ดึงออกมาลงดิสก์ (หรือ stdout)
โหมดเอาต์พุตแยกจากรูปแบบเอาต์พุต โดยรูปแบบเริ่มต้นคือ .skt สามารถใช้ --format json เพื่อส่งผลลัพธ์การแยกวิเคราะห์ในรูปแบบ JSON ที่อ่านได้ด้วยเครื่อง ในโหมดไดเรกทอรี JSON จะถูกเขียนลงใน codeknit.json ในโหมด inline JSON จะถูกเขียนลงใน stdout
directory-flat (ค่าเริ่มต้น แนะนำ)
หัวข้อที่มีชื่อว่า “directory-flat (ค่าเริ่มต้น แนะนำ)”- พฤติกรรม: เขียนไฟล์
.sktที่แบ่งเป็นชิ้น เช่นmap_001.skt,map_002.sktเป็นต้น - ไดเรกทอรีเอาต์พุต:
./skeleton/โดยค่าเริ่มต้น - การแบ่ง: ไฟล์จะถูกแบ่งเมื่อเกินขีดจำกัด
--max-lines(ค่าเริ่มต้น: 500 บรรทัด) - กรณีการใช้งาน: เหมาะสำหรับโปรเจ็กต์ส่วนใหญ่ ช่วยให้เอาต์พุตเป็นระเบียบและอ่านง่ายโดยจำกัดขนาดไฟล์ คุณสามารถอ่านเฉพาะชิ้นส่วนที่เกี่ยวข้องกับงานของคุณได้
- การย่อขนาด: เมื่อเปิดใช้
--minifyจะมีการสร้างไฟล์dict.sktในไดเรกทอรีเอาต์พุตด้วย ซึ่งมีการแมปโทเค็นสำหรับค่าที่ถูกบีบอัด
ตัวอย่าง:
codeknit parse ./src# Output: ./skeleton/map_001.skt, map_002.skt, ...directory-tree
หัวข้อที่มีชื่อว่า “directory-tree”- พฤติกรรม: สะท้อนโครงสร้างไดเรกทอรีต้นทางอย่างแม่นยำ
- ไดเรกทอรีเอาต์พุต:
./skeleton/โดยค่าเริ่มต้น - การแมป: สร้างไฟล์
.sktหนึ่งไฟล์ต่อไฟล์ต้นทางในเส้นทางที่สอดคล้องกัน - กรณีการใช้งาน: เหมาะสำหรับเมื่อคุณต้องการค้นหาโครงสร้างของไฟล์ใดไฟล์หนึ่งได้อย่างรวดเร็ว มีประโยชน์สำหรับการนำทางควบคู่ไปกับโค้ดเบสต้นทาง
ตัวอย่าง:
codeknit parse ./src --output-mode directory-tree# Output: ./skeleton/src/handler.skt, ./skeleton/pkg/db.skt, etc.- พฤติกรรม: ส่งเอาต์พุตทั้งหมดไปยัง stdout
- ไดเรกทอรีเอาต์พุต: ไม่มีการสร้าง
- กรณีการใช้งาน: แนะนำสำหรับไฟล์เดียวหรือโปรเจ็กต์ขนาดเล็กมาก (น้อยกว่า 5 ไฟล์) มีประโยชน์เมื่อต้องการส่งเอาต์พุตไปยังเครื่องมืออื่นหรือตรวจสอบไฟล์เดียวแบบโต้ตอบ
ตัวอย่าง:
codeknit parse ./src/main.go --output-mode inline# Output: printed directly to terminalรูปแบบ JSON
หัวข้อที่มีชื่อว่า “รูปแบบ JSON”- พฤติกรรม: ส่งเอกสาร JSON เดียวที่มี
files,symbols,edges(ไม่บังคับ) และerrors(ไม่บังคับ) - ตำแหน่งเอาต์พุต:
codeknit.jsonในโหมดไดเรกทอรี หรือ stdout ในโหมดinline - กรณีการใช้งาน: เหมาะสำหรับสคริปต์ การผสานรวมกับเอดิเตอร์ การตรวจสอบ CI และเครื่องมือที่ต้องการข้อมูลมีโครงสร้าง
ตัวอย่าง:
codeknit parse ./src --output-mode inline --format json --edgesตัวอย่างเอาต์พุต:
{ "files": ["app.go"], "symbols": [ { "id": "app.go::User", "short_id": "S1", "name": "User", "file": "app.go", "category": "type", "kind": "struct", "signature": "type User struct", "span": [3, 3] }, { "id": "app.go::Save", "short_id": "S2", "name": "Save", "file": "app.go", "category": "callable", "kind": "function", "signature": "Save(u: S1)", "span": [5, 5] } ], "edges": [ { "from": "app.go::Save", "from_short": "S2", "to": "app.go::User", "to_short": "S1", "kind": "references" } ]}ตารางการตัดสินใจ
หัวข้อที่มีชื่อว่า “ตารางการตัดสินใจ”| โหมด | เหมาะสำหรับ | ตำแหน่งเอาต์พุต |
|---|---|---|
directory-flat |
โปรเจ็กต์ส่วนใหญ่ (ค่าเริ่มต้น แนะนำ) | ./skeleton/map_001.skt, map_002.skt, … |
directory-tree |
การนำทางเอาต์พุตควบคู่ไปกับโค้ดต้นทาง | ./skeleton/<เส้นทางที่สะท้อน>.skt |
inline |
ไฟล์เดียว การส่งไปยังเครื่องมืออื่น | stdout — ใช้สำหรับไฟล์เดียวหรือโปรเจ็กต์ขนาดเล็กมากเท่านั้น |
| รูปแบบ | เหมาะสำหรับ | เอาต์พุต |
|---|---|---|
skt |
บริบท LLM และการตรวจสอบโดยมนุษย์ | ไฟล์ .skt หรือ stdout |
json |
สคริปต์และการผสานรวมแบบมีโครงสร้าง | codeknit.json ในโหมดไดเรกทอรี หรือ stdout ในโหมด inline |
หลักการทั่วไป
หัวข้อที่มีชื่อว่า “หลักการทั่วไป”- เมื่อไม่แน่ใจ → ใช้
directory-flat(ค่าเริ่มต้น) - การตรวจสอบไฟล์เดียว →
inlineสามารถใช้ได้ - มากกว่าสองสามไฟล์ → ควรใช้
directory-flatหรือdirectory-tree - โค้ดเบสขนาดใหญ่ → เพิ่ม
--minifyเพื่อลดการใช้โทเค็น - การรันซ้ำบนเอาต์พุตเดียวกัน → ใช้
--cleanเพื่อลบไฟล์.sktที่ล้าสมัย
การย่อขนาด
หัวข้อที่มีชื่อว่า “การย่อขนาด”แฟล็ก --minify เปิดใช้การบีบอัดแบบใช้พจนานุกรมสำหรับโทเค็นที่ซ้ำกัน (เช่น คีย์พร็อพเพอร์ตี้ เช่น exported, async หรือชื่อประเภททั่วไป) เมื่อเปิดใช้งาน:
- ค่าที่ซ้ำกันจะถูกแทนที่ด้วยรหัสสั้น (
d0,d1,d2, …) - ไฟล์
dict.sktจะถูกเขียนลงในไดเรกทอรีเอาต์พุต ซึ่งแมปรหัสกับค่าเดิม - ลดขนาดเอาต์พุตลงอย่างมากสำหรับโค้ดเบสขนาดใหญ่
- ทำงานได้ทั้งในโหมด
directory-flatและdirectory-tree
ตัวอย่างเอาต์พุตที่ถูกย่อขนาด:
[dict]- d0: exported- d1: callable/function
[symbols]## src/main.pyS1 d1 L1-L5 main() {d0}รูปแบบนี้รักษาข้อมูลทั้งหมดไว้ในขณะที่ลดขนาดโทเค็น ทำให้เหมาะสำหรับการวิเคราะห์โดยใช้ LLM