سازندهٔ Lantern Lattice این ابزار را برای پاسخ به چند پرسش معرفی کرده است: چه چیزی یک function را فراخوانی میکند، آن function چه چیزهایی را فراخوانی میکند و چه بخشهایی از یک type یا field استفاده میکنند؟ مبنای پاسخ، دادههای compiler است، نه صرفاً جستوجوی متن. این ابزار با Rust نوشته شده و مجوز MIT دارد.
در Rust، ابزار از SCIP index تولیدشده توسط rust-analyzer استفاده میکند و برای فایلهایی که تغییر میکنند، به rust-analyzer در حال اجرا متکی است. بنابراین در عبارتی مانند x.get()، فراخوانی به get مربوط به type متغیر x وصل میشود. TypeScript، JavaScript، Python، Go، C و C++ نیز از طریق ابزارهای مختص خود پشتیبانی میشوند.
مخاطب اصلی Lantern Lattice، coding agentها هستند. از طریق MCP، هر agent به trace، ویرایش بر اساس symbol و قابلیت impact دسترسی دارد؛ impact نشان میدهد تغییرات commitنشده چه بخشهایی را درگیر میکنند و چه چیزهایی به آنها وابستهاند. ابزارهایی هم جایگزین روند grep، خواندن و ویرایش میشوند تا call graph هنگام کار بهروز بماند. به گفتهٔ سازنده، پشتیبانی زبانهای پس از Rust عمدتاً با استفاده از plugin خود ابزار برای Claude Code ساخته شده است.
سازنده برای تغییر نام در کد خود پروژه نمونهای ارائه میکند: یک درخواست trace، سه فراخواننده را همراه فایل و شمارهٔ خط در ۵۵۰ بایت مشخص میکند؛ سپس یک replace_text با ۳۷۵ بایت، هر چهار فایل را همزمان تغییر میدهد. در مقایسهٔ ارائهشده، مسیر grep -w و خواندن فایلها پیش از ویرایش، شامل ۲۶ خط در ۲۳ فایل و ۵۱ کیلوبایت دادهٔ خواندهشده است.
طبق گزارش سازنده، روی یک پروژهٔ Rust با ۲۰ هزار symbol، هر پرسوجو ۰٫۰۱ تا ۰٫۰۲ ثانیه طول میکشد و نخستین پاسخ پس از ویرایش حدود یک ثانیه زمان میبرد. همچنین در کد خود ابزار، هر ۱۳۲۶ فراخوانی با rust-analyzer مطابقت داشتهاند. فراخوانی نامطمئن حذف میشود، نه اینکه حدس زده شود؛ فراخوانیهای trait نیز با برچسب «possible» مشخص میشوند.
هزینهٔ اولیه هم مطرح است: ساخت نخستین index برای یک workspace بزرگ چند دقیقه زمان و چند گیگابایت فضا میخواهد. دستور latt view نیز call graph را با WebGPU در مرورگر نمایش میدهد.




