AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Lightning Code Index — 次毫秒級語意程式碼搜尋,搭配 AI 助手的 MCP 伺服器。支援 13 種語言,提供 CLI、HTTP 與 Unix socket。
AI 翻譯
Lightning Code Index — sub-millisecond semantic code search with an MCP server for AI assistants. 13 languages, CLI + HTTP + Unix socket.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
lci aims to make semantic code search fast enough for interactive use and
to cut the context an AI assistant has to read compared with grep. Tree-sitter
parsing across 13 languages. An MCP server for AI assistants, plus CLI, HTTP,
and Unix-socket interfaces.
Version tracks the VERSION field of project(lci ...) in CMakeLists.txt (currently 0.10.1); check lci --version for what you have installed.檢視完整 README ↗lci aims to make semantic code search fast enough for interactive use and to cut the context an AI assistant has to read compared with grep. Tree-sitter parsing across 13 languages. An MCP server for AI assistants, plus CLI, HTTP, and Unix-socket interfaces.
Version tracks the VERSION field of project(lci ...) in CMakeLists.txt (currently 0.10.1); check lci --version for what you have installed.
Platform availability: prebuilt releases ship for Linux x86_64 (
.tar.gz,.deb,.rpm), Windows x86_64 (.tar.gz), and macOS arm64 / Apple Silicon (.tar.gz). Intel (x86_64) macs are not yet served by a prebuilt binary — build from source on those. The installers fail fast with a clear message on any unsupported platform/arch.
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/standardbeagle/lci-cpp/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/standardbeagle/lci-cpp/main/install.ps1 | iex
Both detect your OS/arch, download the matching release binary, and install
it (/usr/local/bin or ~/.local/bin on Unix; %LOCALAPPDATA%\Programs\lci
on Windows). Override with LCI_PREFIX; pin a version with LCI_VERSION=0.10.1.
lci update # self-update to the latest release
lci update --check # report current vs latest without installing
lci update --version 0.10.1 # install a specific release
lci update works regardless of how lci was installed.
# Linux: tarball or Debian package
curl -fLO https://github.com/standardbeagle/lci-cpp/releases/download/v0.10.1/lci-0.10.1-Linux.tar.gz
tar -xzf lci-0.10.1-Linux.tar.gz
sudo install lci-0.10.1-Linux/bin/lci /usr/local/bin/
# or
sudo dpkg -i lci-0.10.1-Linux.deb
lci --version # 0.10.1
lci search "myFunction"
# Toolchain: GCC 13+ or Clang 17+, CMake 3.25+, vcpkg, Ninja
cmake --preset release \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build/release --parallel
./build/release/src/lci --version
# Install + package
cd build/release
sudo cmake --install .
cpack -G TGZ # produces lci-0.10.1-Linux.tar.gz
cpack -G DEB # produces lci-0.10.1-Linux.deb
The CPack output contains only bin/lci. Tree-sitter grammars are
statically linked; the binary dynamically links libc, libstdc++, libssl
(via libcrypto), zlib, and brotli — the Debian package declares only
libc6 (>= 2.35) since the rest ship on modern Linux by default.
| Surface | Use |
|---|---|
lci search PATTERN | substring + symbol-aware ranked search across the corpus |
lci grep PATTERN | literal text search over the corpus, grep-style output |
lci tree SYMBOL | function call hierarchy with annotations |
lci def SYMBOL / lci refs SYMBOL | definition + reference lookup |
lci git-analyze | analyze working-set changes for duplicates, naming, complexity |
lci mcp | MCP (Model Context Protocol) server over stdio for AI assistants |
lci server | long-running HTTP server over a Unix socket; per-corpus daemon |
lci servers | list every index server you are running, and the root each serves |
lci shutdown [--all] | stop the server for this root, or every one of them |
lci status | index health + runtime metrics |
Full CLI reference: lci --help or lci <command> --help.
lci mcp exposes 15 tools to AI assistants: search, find_files,
get_context, context, list_symbols, inspect_symbol, browse_file,
callers, semantic_annotations, side_effects, code_insight,
git_analysis, index_stats, debug_info, and info. code_insight
emits its report in LCF (LCI Compact Format), a token-dense, agent-oriented
layout; the other tools return structured JSON.
code_insight is the session-startup workhorse: repository map, health
dashboard, entry points, complexity/coupling/cohesion statistics, module
and feature breakdowns, naming vocabulary, and git change/hotspot
analysis.
Full per-tool reference — parameters, modes, output shapes, errors — is in
docs/TOOLS.md.
Any command that needs an index auto-starts a background server for that root
and leaves it running, because re-indexing per command would dominate every
query. Left unbounded that leaks: a caller that indexes a temp directory and
deletes it strands a multi-GB server per root (175 were once found on one
host). Three policies bound it, all under a server block in .lci.kdl:
| Setting | Default | Effect |
|---|---|---|
idle_timeout_sec | 1800 | exit after this long with no real request (/ping doesn't count); the next command respawns |
max_instances | 8 | a starting server asks the least-recently-active servers beyond this cap to stop |
max_rss_mb | 4096 | self-cap; the server sheds cache and, if still over, exits rather than grow past this RSS (0 disables) |
| — | always on | exit within ~500 ms of the indexed root being deleted |
lci servers shows what is running and which root each one serves — the socket
name hashes the root, so the filesystem alone cannot tell you. lci shutdown
stops the server for the current root; lci shutdown --all stops every one of
them.
Both read the instance registry, which only standalone servers publish into.
The index server embedded in lci mcp stays out of it deliberately: it belongs
to the MCP session, and evicting it would break that session while leaving the
process alive. Stop those by ending the MCP client. Servers from before 0.8.0
predate the registry entirely — they answer neither command, and must be killed
by signal.
.claude/rules/karpathy-principles.md
for the performance discipline.13 languages via vendored tree-sitter grammars: Go, Python, JavaScript, TypeScript (incl. TSX), Rust, C, C++, Java, C#, PHP, Kotlin, Zig, and Ruby. Cross-file import resolution is supported for Go, JavaScript, Python, Rust, C#, PHP, Zig, and C/C++.
cmake --build build/release --parallel
ctest --preset release --parallel $(nproc)
The preset excludes the separately gated benchmark target. Run
./build/release/tests/lci_benchmarks explicitly for performance checks.
CI gates the synthetic suite against
tests/benchmarks/baseline/linux-x64.json via scripts/bench_gate.py
(fails on >1.5x regression); regenerate the baseline on the benchmark
runner with scripts/bench_gate.py --update when benchmarks change.
The suite covers unit tests, integration tests (bundled per-binary for in-process cache amortization), real-project tests (chi, fastapi, trpc, pocketbase), regression snapshot tests, and google-benchmark performance gates.
Real-project tests fetch corpora via tests/parity/corpora/prep_real.sh
and skip cleanly when corpora are absent.
src/ binary + library
include/lci/ public-ish headers
tests/
integration/ bundled per-process integration suite
benchmarks/ google-benchmark perf gates
cmake/ custom CMake modules
.github/workflows/ CI + release
| Surface | State |
|---|---|
| C++ binary install | TGZ / DEB / RPM via CPack |
| MCP server | 15 tools, all engine-backed |
| Performance | synthetic benchmark suite gated in CI (fails on >1.5x regression vs stored baseline); real-project benches run locally |
MIT. See LICENSE.