ontomics
ontomics
ontomics 为 Claude Code 提供代码库的即时知识。只需一次工具调用,而非 19 次。Token 消耗减少约 20 倍。
基准测试
使用 Claude Sonnet 进行测试 —— 在使用和不使用 ontomics 的情况下回答相同的问题。
在 voxelmorph 上询问“此代码库中的 'transform' 是什么意思?”(完整记录):
使用 ontomics | 不使用 | |
工具调用 | 1 | 19 |
Token | ~3.7k | ~76k |
时间 | 5s | 1m 15s |
回答质量 | 完整 | 完整 |
在 ScribblePrompt 上询问“此代码库中的主要领域概念是什么?”(完整记录):
使用 ontomics | 不使用 | |
工具调用 | 1 | 26 |
Token | ~3.7k | ~61.6k |
时间 | ~5s | 56s |
回答质量 | 完整 | 完整 |
两种情况下都产生了完整、正确的答案。ontomics 只需一次调用即可完成。
Related MCP server: Code-Index-MCP
它能做搜索做不到的事
搜索只能告诉你字符串出现在哪里。LSP 可以告诉你符号在哪里定义和引用。但两者都无法回答:此代码库中的领域概念是什么?它们之间有什么联系?出现了哪些命名规范?自上次发布以来领域词汇发生了什么变化?哪些函数行为相似,无论它们叫什么名字?
ontomics 构建了项目领域的语义索引 —— 将相关符号聚类为概念,从使用频率中检测命名规范,解析缩写,按行为相似性对函数进行分组,并跟踪词汇随时间的演变。该索引可以导出为便携式工件,以便在其他仓库中引导规范。
行为相似性
除了命名和概念之外,ontomics 还使用 CodeRankEmbed(768 维,对比代码检索)嵌入原始函数体,并按行为相似性对它们进行聚类。这揭示了命名和调用图都无法暴露的关系:
❯ What functions behave like spatial_transform()?
random_transform() nn/functional.py:352 0.80
spatial_transform() functional.py:596 0.69
random_transform() functional.py:1399 0.67
random_disp() nn/functional.py:275 0.65
integrate_disp() functional.py:764 0.65
compose() nn/functional.py:216 0.63
disp_to_trf() functional.py:343 0.62结果还显示 random_transform 出现在两个位置,且具有不同的相似度分数 —— 这是概念级搜索完全无法发现的实现重复的迹象。
安装
安装一次,即可在每个项目中使用。无需配置 —— ontomics 会自动检测仓库并在首次运行时进行索引。
ontomics 需要一个 git 仓库(.git/ 目录)。它将拒绝索引主目录、根目录或临时目录。要索引非 git 目录,请传入 --force。
1. 安装二进制文件
npm (macOS/Linux):
npm install -g @ontomics/ontomicsmacOS (Homebrew):
brew install EtienneChollet/tap/ontomicsShell 安装程序 (macOS/Linux):
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/EtienneChollet/ontomics/releases/latest/download/ontomics-installer.sh | sh从源码安装:
git clone https://github.com/EtienneChollet/ontomics.git
cd ontomics
cargo build --release2. 在你的工具中注册
Claude Code:
claude mcp add -s user ontomics -- ontomicsCodex:
codex mcp add ontomics -- ontomicsOpenClaw:
openclaw mcp set ontomics '{"command":"ontomics"}'pi-coding-agent:
pi install npm:@ontomics/ontomics与团队共享 —— 在你的仓库根目录放入一个 .mcp.json:
{
"mcpServers": {
"ontomics": {
"command": "npx",
"args": ["-y", "@ontomics/ontomics", "--repo", "."]
}
}
}支持的语言
Python, TypeScript, JavaScript, Rust。通过文件扩展名自动检测。
工具
概念和词汇
工具 | 功能 |
| 查找术语的所有变体、相关概念和出现位置 |
| 查找概念的关键签名、类和文件 |
| 获取函数或类的签名、文档字符串和关系 |
| 通过调用链追踪概念如何在代码库中流动 |
| 按频率列出顶级领域概念 |
| 列出所有检测到的命名模式(前缀、后缀、转换) |
| 按概念、角色或类型过滤列出代码实体(类、函数) |
| 根据项目规范检查标识符;建议规范形式 |
| 生成符合项目词汇表的标识符名称 |
| 衡量规范覆盖率、命名一致性和聚类内聚性 |
| 显示自 git 引用以来新增、更改或删除的领域概念 |
| 将领域知识导出为便携式 YAML,供其他仓库使用 |
行为相似性
工具 | 功能 |
| 查找行为相似的函数实现,按嵌入相似度排序 |
| 获取函数的行为描述、主体文本和逻辑聚类成员资格 |
| 为符号组装分层上下文(概念 + 逻辑),针对 LLM 消耗进行优化 |
代码库结构
工具 | 功能 |
| 文件实体、概念和关系的概览 |
| 显示哪些模块包含哪些领域概念 |
| 显示主导类型以及数据如何在代码库中流动 |
| 追踪特定类型如何在文件和调用点之间传播 |
资源
资源 | 功能 |
| 会话简报:顶级规范、缩写、关键概念、对比对和词汇警告。也可通过 |
工作原理
ontomics 完全在你的机器上运行多阶段流水线 —— 无需 API 密钥:
解析 (Parse) — tree-sitter 从你的源文件中提取每个标识符、签名和调用点
分析 (Analyze) — TF-IDF 评分识别领域特定概念并检测命名规范
嵌入 (Embed - 概念) — BGE-small (384 维) 按语义相似度对相关概念进行聚类
嵌入 (Embed - 逻辑) — CodeRankEmbed (768 维) 嵌入原始函数体并按行为相似度对它们进行聚类
中心度 (Centrality) — PageRank 根据结构重要性对实体进行评分
两种嵌入模型均在首次运行时下载并缓存在本地。索引位于 <repo>/.ontomics/index.db —— 后续启动将从缓存加载并监视文件更改。
通过仓库根目录下的 .ontomics/config.toml 进行配置。所有字段都有合理的默认值。请参阅 SPEC.md 获取完整的设计契约。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/EtienneChollet/ontomics'
If you have feedback or need assistance with the MCP directory API, please join our Discord server