ข้ามไปยังเนื้อหา

โหมดเอาต์พุต

codeknit รองรับโหมดเอาต์พุตสามโหมด ซึ่งควบคุมโดยแฟล็ก --output-mode โหมดแต่ละโหมดจะกำหนดวิธีการเขียนโครงสร้างโค้ดที่ดึงออกมาลงดิสก์ (หรือ stdout)

โหมดเอาต์พุตแยกจากรูปแบบเอาต์พุต โดยรูปแบบเริ่มต้นคือ .skt สามารถใช้ --format json เพื่อส่งผลลัพธ์การแยกวิเคราะห์ในรูปแบบ JSON ที่อ่านได้ด้วยเครื่อง ในโหมดไดเรกทอรี JSON จะถูกเขียนลงใน codeknit.json ในโหมด inline JSON จะถูกเขียนลงใน stdout

  • พฤติกรรม: เขียนไฟล์ .skt ที่แบ่งเป็นชิ้น เช่น map_001.skt, map_002.skt เป็นต้น
  • ไดเรกทอรีเอาต์พุต: ./skeleton/ โดยค่าเริ่มต้น
  • การแบ่ง: ไฟล์จะถูกแบ่งเมื่อเกินขีดจำกัด --max-lines (ค่าเริ่มต้น: 500 บรรทัด)
  • กรณีการใช้งาน: เหมาะสำหรับโปรเจ็กต์ส่วนใหญ่ ช่วยให้เอาต์พุตเป็นระเบียบและอ่านง่ายโดยจำกัดขนาดไฟล์ คุณสามารถอ่านเฉพาะชิ้นส่วนที่เกี่ยวข้องกับงานของคุณได้
  • การย่อขนาด: เมื่อเปิดใช้ --minify จะมีการสร้างไฟล์ dict.skt ในไดเรกทอรีเอาต์พุตด้วย ซึ่งมีการแมปโทเค็นสำหรับค่าที่ถูกบีบอัด

ตัวอย่าง:

Terminal window
codeknit parse ./src
# Output: ./skeleton/map_001.skt, map_002.skt, ...
  • พฤติกรรม: สะท้อนโครงสร้างไดเรกทอรีต้นทางอย่างแม่นยำ
  • ไดเรกทอรีเอาต์พุต: ./skeleton/ โดยค่าเริ่มต้น
  • การแมป: สร้างไฟล์ .skt หนึ่งไฟล์ต่อไฟล์ต้นทางในเส้นทางที่สอดคล้องกัน
  • กรณีการใช้งาน: เหมาะสำหรับเมื่อคุณต้องการค้นหาโครงสร้างของไฟล์ใดไฟล์หนึ่งได้อย่างรวดเร็ว มีประโยชน์สำหรับการนำทางควบคู่ไปกับโค้ดเบสต้นทาง

ตัวอย่าง:

Terminal window
codeknit parse ./src --output-mode directory-tree
# Output: ./skeleton/src/handler.skt, ./skeleton/pkg/db.skt, etc.
  • พฤติกรรม: ส่งเอาต์พุตทั้งหมดไปยัง stdout
  • ไดเรกทอรีเอาต์พุต: ไม่มีการสร้าง
  • กรณีการใช้งาน: แนะนำสำหรับไฟล์เดียวหรือโปรเจ็กต์ขนาดเล็กมาก (น้อยกว่า 5 ไฟล์) มีประโยชน์เมื่อต้องการส่งเอาต์พุตไปยังเครื่องมืออื่นหรือตรวจสอบไฟล์เดียวแบบโต้ตอบ

ตัวอย่าง:

Terminal window
codeknit parse ./src/main.go --output-mode inline
# Output: printed directly to terminal
  • พฤติกรรม: ส่งเอกสาร JSON เดียวที่มี files, symbols, edges (ไม่บังคับ) และ errors (ไม่บังคับ)
  • ตำแหน่งเอาต์พุต: codeknit.json ในโหมดไดเรกทอรี หรือ stdout ในโหมด inline
  • กรณีการใช้งาน: เหมาะสำหรับสคริปต์ การผสานรวมกับเอดิเตอร์ การตรวจสอบ CI และเครื่องมือที่ต้องการข้อมูลมีโครงสร้าง

ตัวอย่าง:

Terminal window
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.py
S1 d1 L1-L5 main() {d0}

รูปแบบนี้รักษาข้อมูลทั้งหมดไว้ในขณะที่ลดขนาดโทเค็น ทำให้เหมาะสำหรับการวิเคราะห์โดยใช้ LLM