คุณเพิ่งเข้าร่วมโปรเจกต์ที่มีโค้ด 400,000 บรรทัด กระจายอยู่ใน 12,000 ไฟล์ มีคนขอให้คุณซ่อมขั้นตอนการตรวจสอบตัวตน คุณ grep -r "auth" และได้ผลลัพธ์ 847 รายการ ครึ่งหนึ่งเป็นคอมเมนต์ หนึ่งในสามเป็นไฟล์ทดสอบ ไม่มีใครบอกคุณว่า การตรวจสอบตัวตนทำงานอย่างไรจริง ๆ

นั่นคือปัญหาที่เราเจอซ้ำแล้วซ้ำเล่า และนั่นคือเหตุผลที่เราสร้าง Octocode

Octocode คือเครื่องมือเพิ่มประสิทธิภาพนักพัฒนาที่สร้างด้วย Rust — การค้นหาโค้ดเชิงความหมาย เซิร์ฟเวอร์ MCP และชุดเครื่องมือที่ขับเคลื่อนด้วย AI ในไบนารีเดียว คุณถามมันว่า "การตรวจสอบตัวตนของผู้ใช้ทำงานอย่างไร?" เป็นภาษาอังกฤษธรรมดา และมันจะส่งคืนไฟล์ 3-5 ไฟล์ที่สำคัญจริง ๆ พร้อมบริบทว่าเชื่อมต่อกันอย่างไร มันทำงานบนเครื่องของคุณ ใช้งานเป็นเครื่องมือ MCP สำหรับ Claude และ Cursor และเปลี่ยน codebase ของคุณให้เป็นกราฟความรู้ที่ค้นหาได้

เราใช้มันทุกวัน มันคือเครื่องมือที่อยู่เบื้องหลังการที่ Octomind — รันไทม์เอเจนต์ AI ของเรา — ถูกสร้างและส่งมอบอย่างรวดเร็วโดยทีมเพียงสองคน มันคืออาวุธลับของเรา และมันเป็นโอเพนซอร์ส

เราเพิ่งปล่อย v0.13.0 พร้อมการค้นหา commit, diff ที่ขับเคลื่อนด้วย AI, การปล่อยรุ่นอัตโนมัติ, การอธิบายโค้ด และการบีบอัดเวกเตอร์ด้วย RaBitQ นี่คือภาพรวมทั้งหมด

ความเจ็บปวดที่เริ่มต้นทุกอย่าง

เราสร้างซอฟต์แวร์เยอะมาก หลาย repo หลายภาษา โปรเจกต์ที่ย้อนหลังไปหลายปี ปัญหาไม่ใช่การเขียนโค้ด — แต่คือการหาโค้ด การเข้าใจว่ามีอะไรอยู่แล้วก่อนที่จะเขียนสิ่งใหม่

grep เร็วแต่โง่ มันหาสตริง ไม่ใช่ความหมาย การค้นหาของ GitHub ช้าและจำกัดเฉพาะ repo สาธารณะ ChatGPT สูญเสียบริบทหลังผ่านโทเค็น 128K ทุกครั้งที่เราเข้ามาทำโปรเจกต์เก่า เราเผาไปเป็นชั่วโมงในการอ่านไฟล์ซ้ำที่เราเคยอ่านไปเมื่อหกเดือนก่อน

คำถามนั้นง่าย: ถ้าการค้นหาโค้ดทำงานในแบบที่สมองของคุณทำงานล่ะ? คุณไม่ได้คิดว่า "หาสตริง authenticate ให้ฉัน" — คุณคิดว่า "การล็อกอินทำงานอย่างไร?" เครื่องมือควรเข้าใจความแตกต่างนั้น

เราจึงสร้างมันขึ้นมา

grep vs การค้นหา octocode

Octocode ทำอะไรบ้าง

ที่แก่นแล้ว Octocode ทำสี่อย่าง:

1. การค้นหาเชิงความหมาย — ถามคำถามเป็นภาษาอังกฤษธรรมชาติ มันแปลงคำค้นของคุณเป็น vector embedding เปรียบเทียบกับ embedding ของทุกชิ้นโค้ดในโปรเจกต์ของคุณ และส่งคืนผลลัพธ์ที่เกี่ยวข้องเชิงความหมายมากที่สุด ไม่ใช่การจับคู่คีย์เวิร์ด — แต่เป็นการจับคู่ความหมาย

2. การวิเคราะห์โครงสร้างโค้ด — แยก function signature, การกำหนด class และ interface ของ module จากไฟล์หรือ glob pattern ใด ๆ เข้าใจว่าไฟล์ทำอะไรโดยไม่ต้องอ่านทุกบรรทัด

3. กราฟความรู้ (GraphRAG) — แมปความสัมพันธ์ระหว่างไฟล์: ใคร import อะไร module ใดเป็น sibling ข้อมูลไหลผ่านระบบอย่างไร ถามว่า "ไฟล์ A เชื่อมต่อกับไฟล์ B อย่างไร?" และได้คำตอบจริง

4. เครื่องมือนักพัฒนาที่ขับเคลื่อนด้วย AI — semantic diff, การรีวิวโค้ดอัตโนมัติ, ข้อความ commit ที่ฉลาด, การอธิบาย codebase และการจัดการการปล่อยรุ่นหลายภาษา ไม่ใช่เครื่องมือแยกที่ติดมา — สร้างขึ้นบน engine การ index และค้นหาเดียวกัน

ทั้งหมดนี้เปิดเผยเป็นเซิร์ฟเวอร์ MCP — หมายความว่า Claude, Cursor, Windsurf หรือผู้ช่วย AI ที่รองรับ MCP ใด ๆ สามารถใช้ได้โดยตรง AI ของคุณหยุดเดาเกี่ยวกับ codebase ของคุณและเริ่มรู้จริง ๆ

เราใช้มันจริง ๆ อย่างไร

ก่อนเจาะลึกฟีเจอร์ — นี่ไม่ใช่เครื่องมือที่เราสร้างแล้วลืม เราใช้ Octocode ทุกวันเพื่อสร้าง Octomind รันไทม์เอเจนต์ AI ของเรา

นี่คือลักษณะของวันทั่วไปของเรา:

  • เช้า: octocode diff --staged เพื่อรีวิวสิ่งที่ Ava (ผู้ร่วมงาน AI ของเรา) ส่งมาในช่วงข้ามคืน ไม่ใช่ diff 200 บรรทัด — แต่เป็นสรุปสั้น ๆ ที่ระบุว่า "เพิ่ม retry logic ใน MCP transport layer, refactor การจัดการ error ใน 3 ไฟล์"
  • ก่อนทำ PR: octocode review --staged --focus security จับสิ่งที่เราอาจพลาด rate limiter ที่ถูกลบโดยไม่ตั้งใจ vectors ของ SQL injection unsafe unwraps ใน Rust
  • ตอน commit: octocode commit สร้างข้อความจาก diff จริง ไม่มี commit "fix stuff" อีกต่อไป
  • การปล่อยรุ่น: octocode release อ่านทุก commit ตั้งแต่ tag ล่าสุด ตัดสินใจเรื่องการเพิ่มเวอร์ชัน สร้าง changelog และอัปเดตไฟล์เวอร์ชันใน Cargo.toml, package.json หรืออะไรก็ตามที่โปรเจกต์ของคุณใช้
  • ตลอดทั้งวัน: Claude Code ใช้ Octocode เป็นเซิร์ฟเวอร์ MCP เมื่อเราถาม "ไปป์ไลน์ embedding ทำงานอย่างไร?" — Claude ค้นหาในโค้ดจริง อ่านมัน และตอบ ไม่มีการ hallucinate

นี่คือ workflow ที่ทำให้คนสองคนและ AI สามารถส่งมอบงานได้เหมือนทีมขนาดใหญ่กว่ามาก

CLI: เครื่องมือ AI สำหรับเพิ่มประสิทธิภาพนักพัฒนา

Octocode เริ่มต้นเป็นเครื่องมือ MCP แต่ยิ่งเราใช้มัน เรายิ่งตระหนักว่า: สิ่งนี้ต้องทำงานแบบสแตนด์อโลนด้วย ไม่ใช่ทุกอย่างเกิดขึ้นใน AI chat

octocode search — การค้นหาเชิงความหมายจากเทอร์มินัล

# คำค้นเดียว
octocode search "how is user authentication implemented"

# Multi-query สำหรับผลลัพธ์ที่ครบถ้วน
octocode search "auth middleware" "JWT token validation" "session management"

# ค้นหาประเภทเนื้อหาที่เฉพาะเจาะจง
octocode search "database migration" --mode code
octocode search "why did we change the API" --mode commits

# ควบคุมรายละเอียดผลลัพธ์
octocode search "auth" --detail-level full

Multi-query คือฟีเจอร์ killer ตรงนี้ แทนที่จะใช้การค้นหาเดียวและหวังว่าจะจับได้ทุกอย่าง คุณยิง query ที่เกี่ยวข้อง 3-4 รายการและได้ผลลัพธ์ที่ครอบคลุมภาพรวม engine จะ deduplicate และ rerank ข้าม query ทั้งหมด

ระดับรายละเอียดช่วยให้คุณควบคุมว่าโค้ดกลับมาเท่าใด: signatures สำหรับการสแกนอย่างรวดเร็ว partial (ค่าเริ่มต้น) สำหรับการตัดอย่างชาญฉลาด หรือ full สำหรับทุกอย่าง

octocode view — signature โดยไม่มีเสียงรบกวน

# ดู function signature ของ Rust ทั้งหมด
octocode view "src/**/*.rs"

# ตรวจสอบ interface ของ module เฉพาะ
octocode view "src/api/*.ts" --md

# หลายภาษาพร้อมกัน
octocode view "**/*.{rs,ts,py}"

นี่คือหนึ่งในฟีเจอร์ที่ฟังดูเรียบง่ายแต่ประหยัดเวลาได้จริง คุณกำลังรีวิว PR ที่แตะ 8 ไฟล์ แทนที่จะเปิดแต่ละไฟล์และเลื่อน คุณรัน octocode view ด้วย glob และได้ทุก function signature, การกำหนด struct และการส่งออก type ใน output เดียว Markdown mode (--md) ทำให้มันเหมาะกับการ paste

เราใช้สิ่งนี้อย่างหนักในเซิร์ฟเวอร์ MCP ด้วย — เมื่อ Claude ต้องเข้าใจ interface ของ module ก่อนแก้ไข view_signatures ให้โครงสร้างแก่มันโดยไม่ต้องทิ้งโค้ด 2000 บรรทัด

octocode diff — สรุป ไม่ใช่ patch

นี่เป็นของใหม่ใน v0.13 และมันเปลี่ยนวิธีที่เรารีวิวโค้ดที่ AI สร้าง

# มีอะไรเปลี่ยนใน staging area ของฉัน?
octocode diff --staged

# มีอะไรเกิดขึ้นระหว่าง branch?
octocode diff main..feature-branch

# โฟกัสที่ประเด็นเฉพาะ
octocode diff --staged --focus security
octocode diff --staged --focus performance

นี่คือเหตุผลที่สิ่งนี้สำคัญตอนนี้มากกว่าที่เคย เครื่องมือ AI coding สร้าง diff ขนาดใหญ่ Claude session เดียวอาจแตะ 15 ไฟล์ใน 400 บรรทัด การอ่าน diff ดิบนั้นใช้เวลา 20 นาที octocode diff อ่านมันในไม่กี่วินาทีและให้สรุปแก่คุณ: อะไรเปลี่ยน ทำไมมันสำคัญ ต้องจับตาดูอะไร

แฟล็ก --focus คม ส่ง security และมันจะแฟล็กการ validate ที่ถูกลบ endpoint ที่เปิด secret ที่ hardcode ส่ง performance และมันจะไฮไลต์การจัดสรรใหม่ การเรียกที่บล็อก index ที่หายไป เรารันทั้งคู่ก่อนทุกการ merge

octocode explain — เข้าใจอะไรก็ได้

# อธิบายไฟล์เฉพาะ
octocode explain src/auth/middleware.rs

# อธิบายแนวคิดข้าม codebase
octocode explain "how does the embedding pipeline work"

ชี้ไปที่ไฟล์และได้รับการวิเคราะห์ที่มีโครงสร้าง: มันทำอะไร พึ่งพาอะไร อะไรพึ่งพามัน ชี้ไปที่แนวคิด และมันค้นหาเชิงความหมาย จากนั้นสังเคราะห์ผลลัพธ์เป็นคำอธิบาย เยี่ยมสำหรับการ onboarding เข้าสู่ส่วนที่ไม่คุ้นเคยของ codebase

octocode review — จับสิ่งที่มนุษย์มองข้าม

octocode review --staged
octocode review --focus security --severity high

ไม่ใช่ตัวแทนการรีวิวของมนุษย์ แต่มันจับสิ่งที่เราอาจข้ามอย่างสม่ำเสมอ: import ที่ไม่ได้ใช้ การจัดการ error ที่ไม่สอดคล้อง race condition ที่อาจเกิดขึ้น ปัญหาความปลอดภัย ตอนนี้เรารันมันก่อนทุก PR ตัวกรอง severity ช่วยไม่ให้มันส่งเสียงดัง

octocode commit — ข้อความ commit ที่มีความหมาย

git add .
octocode commit
octocode commit --yes  # ข้ามการยืนยัน

วิเคราะห์การเปลี่ยนแปลงที่ staged สร้างข้อความ commit ที่อธิบายสิ่งที่เกิดขึ้นจริง ไม่ใช่ "update files" — แต่เป็นบางอย่างเช่น "refactor: extract embedding batch processing into standalone pipeline with retry logic" สิ่งเล็ก ๆ แต่มันสะสมเมื่อคุณทำ 20 commits ต่อวัน

octocode release — การปล่อยรุ่นหลายภาษาอัตโนมัติ

octocode release
octocode release --dry-run
octocode release --force-version "2.0.0"

อันนี้เป็น sleeper มันอ่านทุก commit ตั้งแต่ git tag ล่าสุด ใช้ LLM เพื่อกำหนดการเพิ่มเวอร์ชันที่ถูกต้อง (patch, minor หรือ major) สร้าง changelog ที่มีโครงสร้าง และอัปเดตไฟล์เวอร์ชัน

ส่วนหลายภาษาสำคัญ: มันจัดการ Cargo.toml (Rust), package.json (Node), composer.json (PHP), pyproject.toml (Python) และ go.mod (Go) ถ้าโปรเจกต์ของคุณใช้หลายภาษา มันอัปเดตทั้งหมด

เราใช้สิ่งนี้สำหรับทุกการปล่อย Octocode เอง changelog v0.13 — พร้อมฟีเจอร์ การปรับปรุง และการแก้ไขบั๊กที่จัดหมวดหมู่ — ถูกสร้างโดย octocode release

octocode stats — ตรวจชีพจรอย่างรวดเร็ว

octocode stats
octocode stats --format json

จำนวนไฟล์ตามภาษา จำนวนบรรทัด สถานะการ index มีประโยชน์สำหรับ dashboard CI หรือเพียงตอบคำถามว่า "โปรเจกต์นี้ใหญ่แค่ไหน?"

การ index ทำงานอย่างไร

Octocode indexing pipeline

เมื่อคุณรัน octocode index นี่คือสิ่งที่เกิดขึ้นเบื้องหลัง:

  1. การค้นหาไฟล์ — เดินผ่าน repo เคารพ .gitignore และ .noindex จัดการ symlink
  2. การ parse AST — Tree-sitter parse แต่ละไฟล์เป็น abstract syntax tree นี่คือวิธีที่ Octocode เข้าใจโครงสร้างโค้ด — function, class, import, export — ไม่ใช่แค่ text
  3. การทำ chunk — โค้ดถูกแบ่งเป็น chunk เชิงความหมาย (configurable ค่าเริ่มต้น 2000 ไบต์พร้อม overlap)
  4. Embedding — แต่ละ chunk ถูกแปลงเป็น vector embedding ผ่านผู้ให้บริการที่คุณเลือก
  5. การจัดเก็บ — vector ถูกใส่ใน LanceDB พร้อม RaBitQ quantization เป็นทางเลือก (บีบอัด ~32 เท่า)
  6. GraphRAG — ความสัมพันธ์ระหว่างไฟล์ถูกแยกและจัดเก็บเป็นกราฟความรู้

pipeline ทั้งหมดเป็นแบบ incremental เปลี่ยนไฟล์เดียวและมีเพียงไฟล์นั้นเท่านั้นที่ re-index สลับ branch และ Octocode ติดตามสิ่งที่ต้องอัปเดต นั่นคือ branch-aware delta indexing ใหม่ใน v0.13

ผู้ให้บริการ embedding

คุณเลือกของคุณเอง:

คลาวด์ (ต้องการ API key):

  • Voyage AI — คุณภาพดีที่สุดสำหรับโค้ด 200M token ฟรี/เดือน (ค่าเริ่มต้นของเรา)
  • Jina AI — code embedding ที่แข็งแกร่ง
  • Google AI — gemini-embedding-001
  • OpenAI — text-embedding-3-small/large
  • Together AI — แบบกระจาย

บนเครื่อง (ไม่มี API ไม่มีเครือข่าย):

  • FastEmbed — เร็วที่สุด 384-dim (macOS)
  • HuggingFace — CodeBERT, sentence-transformers (macOS)

รายละเอียดหนึ่งที่สำคัญ: Octocode ใช้ asymmetric retrieval code embedding และ query embedding ถูกสร้างต่างกันเพราะ "auth ทำงานอย่างไร?" และ fn authenticate(token: &str) เกี่ยวข้องเชิงความหมายแต่แตกต่างเชิงโครงสร้าง นี่คือการปรับปรุงความแม่นยำที่สำคัญเมื่อเทียบกับเครื่องมือที่ embed ทุกอย่างแบบเดียวกัน

RaBitQ quantization (ใหม่ใน v0.13)

vector มีขนาดใหญ่ embedding float32 มิติ 1024 คือ 4KB ต่อ chunk คูณด้วยหลายพัน chunk และพื้นที่จัดเก็บก็เพิ่ม

RaBitQ บีบอัด vector ~32 เท่า โดยสูญเสียคุณภาพน้อยที่สุด สำหรับ codebase ส่วนใหญ่ คุณจะไม่สังเกตเห็นความแตกต่างในคุณภาพการค้นหา แต่ index ของคุณจะลดจาก 100MB เป็น 3MB เรื่องนี้สำคัญเมื่อคุณ index monorepo

octocode config --quantization true
octocode index --force  # re-index พร้อมการบีบอัด

Contextual retrieval: การปรับปรุง 49%

สิ่งนี้ขึ้นอยู่กับ งานวิจัย Contextual Retrieval ของ Anthropic — เทคนิคที่ลดความล้มเหลวในการ retrieve ลง 49% และ 67% เมื่อรวมกับ reranking เราใช้ทั้งสองอย่างใน Octocode

ปัญหาของ code embedding ดิบ: ฟังก์ชันชื่อ process() ไม่มีความหมายใน vector space มัน process การชำระเงิน? parse HTML? บีบอัดภาพ? โมเดล embedding ไม่สามารถบอกได้จากชื่อฟังก์ชันเพียงอย่างเดียว

Octocode แก้ปัญหานี้ในสองระดับ

ระดับ 1: บริบทโครงสร้าง (เปิดตลอด) ทุก chunk ได้รับการเพิ่ม path ไฟล์ ภาษา และชื่อ symbol นำหน้าก่อน embed ดังนั้นโมเดล embedding เห็น # File: src/api/auth.rs / # Language: Rust / # Defines: validate_token, refresh_session ก่อนโค้ดจริง สิ่งนี้เพียงอย่างเดียวก็เป็นการปรับปรุงที่ใหญ่ — embedding ตอนนี้รู้ว่าโค้ดอยู่ ที่ไหน และกำหนด อะไร

ระดับ 2: คำอธิบายที่ LLM สร้าง (ทางเลือก) เมื่อเปิดใช้งาน LLM อ่านแต่ละ chunk และเขียนคำอธิบาย 1-2 ประโยคว่ามันทำอะไร prompt ของมันเฉพาะเจาะจง: "เขียนสิ่งที่โค้ดนี้ทำในเงื่อนไขที่นักพัฒนาจะค้นหา" ดังนั้น process() กลายเป็น "validate webhook payload ที่เข้ามาจาก Stripe และส่งไปยัง handler การชำระเงินที่ถูกต้อง"

คำอธิบายนี้ถูกเพิ่มก่อน chunk ก่อนการ embed โมเดล embedding ตอนนี้มีทั้งโค้ดและสะพานภาษาธรรมชาติไปยังมัน สะพานนั้นคือสิ่งที่ปิดช่องว่างระหว่างวิธีที่นักพัฒนาค้นหา ("webhook ทำงานอย่างไร?") และวิธีที่โค้ดถูกเขียน (fn process(payload: &[u8]))

octocode config --contextual-descriptions true
octocode config --contextual-model "openrouter:openai/gpt-4o-mini"
octocode index --force

มีค่าใช้จ่ายไม่กี่เซนต์ต่อพัน chunk ด้วย gpt-4o-mini สำหรับการก้าวกระโดดของคุณภาพการค้นหา มันเป็นเรื่องง่าย

Reranking: ความแม่นยำหลังการ recall

การค้นหาแบบ vector ดีในเรื่อง recall — การหาเอกสารที่ถูกต้องในกองหญ้า แต่การจัดอันดับผลลัพธ์เหล่านั้นอย่างแม่นยำ? นั่นคือที่ที่มันเริ่มคลุมเครือ ผลลัพธ์สองรายการที่ความคล้ายคลึง 0.82 และ 0.79 อาจอยู่ในลำดับที่ผิด

Octocode ใช้ pipeline การ retrieve สองขั้นตอน อันดับแรก การค้นหา vector ดึงผู้สมัครอันดับต้น (ตาข่ายกว้าง recall สูง) จากนั้น cross-encoder reranker rescore แต่ละผลลัพธ์โดยดูที่คู่ query-document เต็มร่วมกัน ไม่ใช่ embedding แยก — แต่เป็นความสัมพันธ์จริงระหว่างคำถามของคุณและแต่ละ chunk ของโค้ด

งานวิจัยแสดงให้เห็น cross-encoder reranking ปรับปรุงความแม่นยำ RAG ได้สูงสุด 40% ในการทดสอบของเรา มันผลักผลลัพธ์ที่เกี่ยวข้องที่สุดไปยังตำแหน่ง #1 แทนที่จะเป็นตำแหน่ง #3 หรือ #4 อย่างสม่ำเสมอ ความแตกต่างระหว่าง "มีประโยชน์" และ "ตรงกับสิ่งที่คุณต้องการ"

reranker ทำงานผ่าน octolib และรองรับผู้ให้บริการหลายราย มันเพิ่มมิลลิวินาทีไม่กี่ตัวให้กับ latency การค้นหา มองไม่เห็นสำหรับมนุษย์ มองไม่เห็นสำหรับไคลเอนต์ MCP

# Reranking เปิดใช้งานโดยค่าเริ่มต้นเมื่อมีการกำหนดค่าผู้ให้บริการ
octocode config --show  # ตรวจสอบการตั้งค่า reranker

รวมกับคำอธิบายเชิงบริบท สิ่งนี้ทำให้ Octocode มี pipeline การ retrieve ที่ใกล้เคียงกับระบบ RAG ระดับ state-of-the-art มากกว่าเครื่องมือค้นหาโค้ดแบบดั้งเดิม

GraphRAG: กราฟความรู้

นี่คือฟีเจอร์ที่แยก Octocode ออกจาก "semantic grep"

เมื่อคุณเปิดใช้ GraphRAG Octocode สร้างกราฟที่แต่ละไฟล์เป็น node และแต่ละความสัมพันธ์เป็น edge ความสัมพันธ์รวมถึง:

  • imports — ไฟล์ A import จากไฟล์ B
  • sibling_module — ไฟล์ใน directory เดียวกัน
  • parent/child_module — ลำดับชั้น directory

แต่ละ node เก็บ: path ไฟล์ คำอธิบายที่ AI สร้าง symbol ที่แยก รายการ import/export และ vector embedding

คุณทำอะไรกับสิ่งนี้ได้บ้าง?

# หาไฟล์ทั้งหมดที่เกี่ยวข้องกับการตรวจสอบตัวตน
octocode graphrag search --query "authentication system"

# ติดตามว่าไฟล์สองไฟล์เชื่อมต่อกันอย่างไร
octocode graphrag find-path --source-id src/api/auth.rs --target-id src/db/users.rs

# รับรายละเอียดเต็มของบทบาทของไฟล์
octocode graphrag get-node --node-id src/api/auth.rs

# ดู dependencies ทั้งหมดของไฟล์
octocode graphrag get-relationships --node-id src/api/auth.rs

# ภาพรวมระดับสูงของ codebase
octocode graphrag overview

คำสั่ง find-path ได้รับการประเมินค่าต่ำเกินไป "module auth เชื่อมต่อกับฐานข้อมูลอย่างไร?" ในโปรเจกต์ใหญ่ path นั้นอาจไปผ่าน 4-5 module ตัวกลางที่คุณไม่รู้ว่ามีอยู่ GraphRAG หาเจอ

การ resolve import ทำงานข้ามภาษาด้วย — Rust use, Python import, TypeScript import/require, Go package, PHP use — ทั้งหมดถูกแมปไปยัง path ไฟล์จริง

เครื่องมือ MCP: ให้ตา AI มองเข้าไปในโค้ดของคุณ

นี่คือที่ที่ Octocode เปลี่ยนวิธีการทำงานของคุณกับผู้ช่วย AI

Claude, Cursor และ Windsurf รองรับ MCP ทั้งหมด เมื่อคุณเชื่อมต่อ Octocode เป็นเซิร์ฟเวอร์ MCP ผู้ช่วย AI ของคุณได้รับเครื่องมือสามอย่าง:

เครื่องมือ มันทำอะไร
semantic_search ค้นหาโค้ด เอกสาร text หรือ commit ตามความหมาย
view_signatures แยกโครงสร้างจากไฟล์ที่ตรงกับ glob pattern
graphrag query กราฟความรู้สำหรับความสัมพันธ์และ dependencies

การติดตั้ง

เพิ่มในการกำหนดค่า Claude Desktop หรือ Cursor ของคุณ:

{
	"mcpServers": {
		"octocode": {
			"command": "octocode",
			"args": ["mcp", "--path", "/your/project"]
		}
	}
}

แค่นั้นเอง ตอนนี้เมื่อคุณถาม Claude ว่า "การชำระเงินทำงานอย่างไร?" — มันไม่ hallucinate มันเรียก semantic_search อ่านโค้ดจริง และให้คำตอบที่อิงตาม codebase ของคุณ

ด้วยการรวม LSP

octocode mcp --with-lsp "rust-analyzer"

สิ่งนี้เพิ่มเครื่องมืออีก 6 อย่าง: goto_definition, hover, find_references, completion, document_symbols, workspace_symbols AI ของคุณสามารถเคลื่อนที่ผ่านโค้ดในแบบที่ IDE ของคุณทำ — แต่แบบโปรแกรม

Multi-repo proxy

ทำงานข้าม repo หลายตัว? MCP proxy ค้นพบ git repository ใน directory โดยอัตโนมัติและให้บริการผ่าน HTTP endpoint เดียว:

octocode mcp-proxy --bind 127.0.0.1:8080 --path /workspace

ประสิทธิภาพ

ตัวเลขสำคัญกว่าคำกล่าวอ้าง นี่คือสิ่งที่เราเห็นในโปรเจกต์จริง:

Metric เล็ก (<1K ไฟล์) กลาง (1-10K) ใหญ่ (10K+)
ความเร็วการ index 500+ ไฟล์/วินาที 200-400/วินาที 100-200/วินาที
latency การค้นหา <50ms <100ms <200ms
หน่วยความจำ 50-100MB 100-500MB 500MB-2GB
พื้นที่จัดเก็บ (RaBitQ) ~300KB ~3MB ~30MB

latency การค้นหาคือสิ่งที่สำคัญสำหรับ MCP เมื่อ Claude เรียก semantic_search คุณไม่อยากรอ 5 วินาที ต่ำกว่า 100ms หมายความว่า AI รู้สึกทันที

การ index เป็นครั้งเดียว (บวกการอัปเดตแบบ incremental) แม้แต่โปรเจกต์ 10K ไฟล์ก็ index ในเวลาน้อยกว่าหนึ่งนาที

14 ภาษา หนึ่งเครื่องมือ

Octocode ใช้ Tree-sitter ในการ parse ซึ่งหมายถึงการวิเคราะห์ AST จริง — ไม่ใช่ regex hacks ปัจจุบันรองรับ:

Rust, Python, TypeScript, JavaScript, Go, PHP, C++, Ruby, Java, Bash, CSS/SCSS, Lua, Svelte, JSON, Markdown

แต่ละภาษาได้รับการ resolve import ที่เหมาะสม การแยก symbol และการแมปความสัมพันธ์ parser Go เข้าใจการ import package parser Rust รู้เกี่ยวกับ use และ mod parser TypeScript จัดการ import และ require นี่ไม่ใช่ขนาดเดียวสำหรับทุกอย่าง — parser ของแต่ละภาษาถูก tune

มีอะไรเปลี่ยนใน v0.13

นี่คือการปล่อยรุ่นที่ใหญ่ที่สุดของเรา 35 commits นี่คือสิ่งใหม่:

  • การค้นหา commit — ค้นหาประวัติ git ตามความหมาย พร้อมการ index แบบ lazy-load
  • คำสั่ง AI CLIdiff, explain, stats, review, commit, release
  • การเสริมบริบทของ chunk — เทคนิค Contextual Retrieval ของ Anthropic
  • RaBitQ quantization — บีบอัด vector ~32 เท่า
  • ผู้ให้บริการ embedding OctoHub และ Together AI
  • Delta indexing แบบ branch-aware — การอัปเดต incremental ที่ฉลาดขึ้น
  • ย้ายไปยัง rmcp SDK — การนำไปใช้ Rust MCP อย่างเป็นทางการเพื่อความเสถียร
  • GraphRAG ที่ปรับปรุง — การ resolve node และการหา path ที่ดีขึ้น
  • แก้ไขบั๊ก 7 รายการ — git root commit, embedding type, reranking, การนับความสัมพันธ์

เราใช้ Octocode เพื่อสร้าง Octocode ดังนั้นทุกขอบที่ขรุขระจะถูกจับได้อย่างรวดเร็ว

เริ่มต้นใช้งาน

macOS (Homebrew)

brew install muvon/tap/octocode

Universal install script

curl -fsSL https://raw.githubusercontent.com/Muvon/octocode/master/install.sh | sh

ทำงานบน macOS (Intel + Apple Silicon), Linux (x86_64 + ARM64) และ Windows

จาก source

cargo install octocode

การรันครั้งแรก

ตั้งค่าผู้ให้บริการ embedding (Voyage AI ให้ 200M token ฟรี/เดือน):

export VOYAGE_API_KEY="your-key"

Index และค้นหา:

cd your-project
octocode index
octocode search "how does authentication work"

เปิดใช้ GraphRAG:

octocode config --graphrag-enabled true
octocode index --force

เชื่อมต่อกับผู้ช่วย AI ของคุณเป็นเซิร์ฟเวอร์ MCP — ดู คู่มือการรวม MCP สำหรับการกำหนดค่า Claude, Cursor และ Windsurf

ประเด็นที่แท้จริง

เราสร้าง Octocode เพราะ grep ไม่เข้าใจโค้ด ไม่ใช่ว่ามีอะไรผิดกับ grep — มันทำสิ่งที่มันบอกไว้พอดี แต่ "หาสตริง auth" และ "แสดงให้ฉันดูว่าการตรวจสอบตัวตนทำงานอย่างไร" เป็นคำถามที่แตกต่างกันโดยพื้นฐาน

การเปลี่ยนจากการค้นหาด้วยคีย์เวิร์ดเป็นการค้นหาเชิงความหมายไม่ใช่ฟีเจอร์ มันเป็นการเปลี่ยนหมวดหมู่ และด้วย MCP มันไม่ใช่แค่สำหรับมนุษย์อีกต่อไป — มันคือวิธีที่ผู้ช่วย AI เข้าใจโค้ดของคุณด้วย

เราใช้มันสร้างทุกอย่างที่ Muvon มันคือเครื่องมือที่ทำให้ทีมสองคนเป็นไปได้ และมันฟรี โอเพนซอร์ส Apache 2.0

GitHub stars 260+ 14 ภาษา หนึ่ง Rust binary ลองใช้ดู