Codeintel

io.github.phuongddx由 GitHub 账号 phuongddx 发布v0.4.0更新于 Oct 24, 2026

Local-first SCIP code navigation and Zoekt search over your own indexed repositories

概览

AI 生成的概览

本地优先的代码智能服务,让助手通过精确的符号引用、定义、调用层级和词法代码搜索来导航已索引的代码库。

可以做什么
jarvis 会为已索引的代码库预先构建本地代码智能层,让助手查询符号而不是用 grep 搜索。它提供十个 MCP 工具,包括用于精确定位的 findReferences、用于定义范围的 goToDefinition、用于调用与类型关系的 callHierarchy 和 typeHierarchy、用于文件符号大纲的 documentSymbols、用于 Zoekt 词法或正则搜索的 searchCode、用于跨仓库包依赖分析的 blastRadius、用于索引新鲜度的 getIndexStatus,以及用于构建索引的 indexRepo(R4、R46-R56)。索引是显式执行的,查询路径为只读(R64、R70)。
适用场景
当编码助手反复用 grep 搜索代码库,并因过滤注释、测试和同名符号而消耗上下文时适合使用(R1-R3、R6)。它适合回答某个符号在哪里被使用、在哪里定义、被谁调用等问题,答案来自预计算索引,而不是逐个打开匹配文件(R7、R18)。它只做检索,不负责重命名或重构(R63)。
运行要求
仅支持 macOS arm64/x86_64 与 Linux arm64/x86_64,不支持 Windows(R60)。安装独立的 Homebrew 二进制包,其中已内置 Python 3.12 及所需工具,无需 Python、uv、pip 或 PyPI 安装(R12、R14);Linux 需先安装 Homebrew/Linuxbrew(R11)。注册本地 stdio 服务器,例如 jarvis-server;若客户端在 PATH 中找不到它,请使用绝对路径(R17、R19、R20)。可选的语言索引器需要 Node.js/npm、JDK、Xcode 或较新的 Bash(R28-R31)。
安装前请注意
索引需要显式执行:查询前先运行 jarvis index 或 jarvis watch(R64)。运行时查询路径不写入,查询以只读方式打开已发布的快照(R70),且 jarvis 从不修改代码(R63)。索引保存在本地 ~/.jarvis,可用 JARVIS_DATA_DIR 覆盖(R84),README 称代码与索引不会离开本机(R5)。可选的语义搜索会下载约 4.3 GB 的嵌入模型到共享的 Hugging Face 缓存(R42)。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Codeintel,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

jarvis

[CI] [Platforms] [License: MIT] [MCP]

Your coding agent should not spend its context window on grep.

When your agent asks "where is AuthService used?", grep returns comments, markdown, test fixtures, and similarly named symbols in one noisy pile. The agent burns context re-reading files to filter signal from noise — and still misses call sites.

jarvis precomputes a local code-intelligence layer so your agent calls findReferences for exact occurrences, goToDefinition for the defining range, callHierarchy for call paths, and searchCode for precise lexical search — ten MCP tools for Claude Code, Cursor, or any MCP client. Your code and indexes never leave your machine.

Without jarvisGrep → comments, tests, imports mixed with real hits → opens files to filter → guesses at call sites → burns context on search instead of reasoning
With jarvisfindReferences("AuthService") → exact file-and-range occurrences → callHierarchy for the graph → searchCode("token refresh") → answers without opening every match

[grep returns noisy results vs jarvis findReferences returning 10 exact file:line:col occurrences]

Quick start · MCP tools · Dashboard · Limits · Details · Docs

Quick start

1. Install the standalone binary:

bash
brew install jarvis-intelligence/jarvis/jarvis

Linux users need Homebrew/Linuxbrew installed first. The formula supports macOS arm64/x86_64 and Linux arm64/x86_64, installs both jarvis and jarvis-server, and embeds Python 3.12, dashboard assets, tree-sitter libraries, watch, scip, zoekt-git-index, and zoekt-webserver. Homebrew supplies universal-ctags. No Python, uv, pip, or PyPI installation is required.

Upgrade with brew upgrade jarvis; recover a damaged installation with brew reinstall jarvis.

2. Index a repo (slug defaults to the directory name):

bash
jarvis index /path/to/your/repo

3. Register the MCP server:

bash
claude mcp add jarvis --scope user -- jarvis-server

Ask your agent "find all references to AuthService" — it calls findReferences instead of grepping.

Other MCP clients (Cursor, Claude Desktop, any stdio client)
json
{  "mcpServers": {    "jarvis": {      "command": "jarvis-server"    }  }}

If your client can't find jarvis-server on PATH (GUI apps often don't inherit your shell's), use the absolute path from which jarvis-server.

Claude Code plugin (registers MCP + ships agent skills)

Install the Homebrew binary first. The plugin adds jarvis skills and can register the already-installed jarvis-server.

/plugin marketplace add jarvis-intelligence/jarvis-index/plugin install jarvis@jarvis
Optional language indexers

The standalone package includes the SCIP converter and both Zoekt binaries. The Homebrew formula does not install setup.sh; from a jarvis source checkout, install the optional per-language indexer for your repo:

LanguageInstallerToolchain
TypeScript/TSXsh setup.sh --only scip-typescriptNode.js/npm
Pythonsh setup.sh --only scip-pythonNode.js/npm
Java/Kotlinsh setup.sh --only scip-javaJDK; Kotlin repos require Kotlin 2.2.0 exactly
Swiftsh setup.sh --only scip-swiftXcode on macOS arm64

For Maven-built Java repositories on macOS, also install a modern Bash with brew install bash, then run sh setup.sh --only bash-shim from that same source checkout. Reindex after adding an indexer. Without the matching indexer, documentSymbols and goToDefinition still work via Tree-sitter where coverage exists; findReferences, callHierarchy, and typeHierarchy return recovery guidance.

Not included

semanticSearch is registered for MCP compatibility but is excluded from the standalone distribution. It returns a Homebrew-specific unavailability error that points to the source-build steps below; lexical search and symbol search remain available.

Source-build semantic search

The standalone Homebrew package excludes semantic dependencies. In a source checkout, install them with:

bash
uv run jarvis install-semantic

Then index explicitly:

bash
uv run jarvis index /path/to/repo --semantic

install-semantic also pre-downloads the embedding model (BAAI/bge-m3, ~4.3 GB, one time) into the shared Hugging Face cache (~/.cache/huggingface/); every indexed repo reuses it. If the download is interrupted, the next jarvis index retries it automatically.

MCP tools

ToolWhat it does
goToDefinitionResolve a symbol to its defining file and range
findReferencesEvery occurrence of a symbol across the indexed repo
callHierarchyIncoming/outgoing calls for a symbol
typeHierarchySupertypes/subtypes
documentSymbolsOutline of every symbol defined in one file
searchCodeZoekt lexical/regex search, optionally filtered to one repo
semanticSearchReturns the Homebrew distribution's semantic-unavailability error
blastRadiusWhich other indexed repos depend on a package, up to 2 hops
getIndexStatusPublished commit, freshness, staleness vs. working tree
indexRepoBuild an index for a git repo at path

Dashboard

bash
jarvis dashboard          # serves http://127.0.0.1:6080 and opens a browser

A localhost web console over the same ~/.jarvis data the CLI and MCP server read:

[Repositories view]   [Tool playground]

Requirements and limits

  • macOS arm64/x86_64 and Linux arm64/x86_64 only. Windows is not supported.
  • Semantic search is unavailable in the Homebrew distribution.
  • One language per repo — detected by extension plurality across git-tracked files; override with --language.
  • jarvis never edits code. It is the retrieval half — Serena complements it for renames/refactors.
  • Indexing is explicit — run jarvis index (or jarvis watch) before querying.

Details

How it works

One indexing CLI writes precomputed indexes into ~/.jarvis; one stdio runtime reads them down. The two share no other contract.

[jarvis architecture]

  • Publishing is atomic — a reindex writes a new snapshot, then flips the current pointer via os.replace. A query reading the old snapshot keeps working; no downtime window.
  • The runtime path never writes — every query opens the published snapshot read-only (mode=ro&immutable=1).
  • The package graph is rebuilt, not accumulated — each reindex clears that repo's outgoing edges before recomputing.

Full detail: docs/system-architecture.md

Indexing CLI reference
bash
jarvis index /path/to/your/repo            # slug defaults to the directory namejarvis index /path/to/your/repo --slug foo # or pick one explicitlyjarvis index /path/to/your/repo --scheme MyScheme # Swift repo with an ambiguous Xcode schemejarvis index /path/to/your/repo --language python # force the language instead of detecting itjarvis index /path/to/your/repo --no-scip   # skip optional SCIP enrichment; syntax baseline + Zoekt still publishjarvis index /path/to/your/repo --scip      # re-enable SCIP enrichment (both flags persist per repo)jarvis listjarvis status foojarvis reindex foojarvis forget foojarvis watch /path/to/your/repo [--debounce 5.0]  # debounced auto-reindex on file changes (foreground)
Known upstream limitations
  • scip-java can't index Android/Gradle repos — its Gradle plugin keys off standard source sets that AGP replaces (scip-java#177). Detected automatically; degrades to search-only.
  • Kotlin indexing requires an exact Kotlin version match — scip-kotlinc is compiled against one pinned release (currently 2.2.0). Detected automatically.
  • Maven-built Java repos need bash ≥ 4.4 on macOS — brew install bash fixes it.
  • Swift indexing requires scip >= v0.9.0 — older converters silently drop occurrence ranges. jarvis index refuses an older scip rather than publishing a broken index.
Configuration
VariablePurpose
JARVIS_DATA_DIROverride default ~/.jarvis for all indexes and registry

The source-development semantic path has additional model-prefix overrides; they have no effect in the standalone distribution.

Documentation

License

MIT

来源:README.md,提交 4cf9176

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.4.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分