mcpField
S
Silica Core

Silica Core

本地服务
github.com搜索与检索691 天前更新

关于 Silica Core

Silica Core 是面向代码与研究文件的本地检索工具,供 Agent 及其运行框架使用。它为文件夹建立索引,并通过 MCP 或命令行返回定位段落、源码符号及检索依据。

主要功能

  1. 01索引 Markdown、代码、PDF 和办公文件
  2. 02用词法及可选稠密搜索排列段落
  3. 03读取文件章节或行范围
  4. 04为源码文件生成 AST 上下文包
  5. 05校验并写入结构化笔记

适用场景

  1. 01在研究文件夹中定位相关段落
  2. 02根据问题查找代码文件与符号
  3. 03搜索后读取指定章节或页面
  4. 04根据索引内容创建结构化笔记

MCP 相关

向 MCP 客户端提供文件清单、搜索、读取、代码包和笔记写入工具。同一组操作也可通过返回 JSON 的命令行命令使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kiycoh-silica-core": {
"command": "uvx",
"args": [
"silica-core"
],
"env": {
"SILICA_VAULT": "<SILICA_VAULT>"
}
}
}
}
启动命令uvx silica-core
需要配置的环境变量
SILICA_VAULTFolder to index and serve. Unset means the directory the client launched the server in.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisilica-core0.11.0

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitinteger否每页最大条目数
cursorstring否上一页返回的 `next_cursor`
folderstring否要列出的相对于根目录的文件夹;留空表示整个根目录
statusstring否仅限以下状态:indexed、changed、excluded、failed、unconverted

详细介绍

Silica Core

轻量、本地的代码与研究证据检索工具

Silica 能找到你和你的 Agent 需要的源文件、符号、页面或段落。信号最大化,机制最精简。

PyPI License

Silica 会为一个根目录下的 Markdown、代码、PDF 和 Office 文件建立索引,并将它们提供给 Claude Code、Cursor、Hermes、Codex、OpenCode 及其他所有流行的运行框架,既可作为 MCP 工具,也可作为输出相同 JSON 的 shell 命令。每条命中都包含路径、章节、行号、文本窗口,以及用于评估它的数据。循环由运行框架负责。

完整录制的快速入门流程:运行 uv tool install,silica-core init 报告已为九份文档建立索引,silica-core setup claude 注册 MCP 服务,随后 Claude Code 通过调用 silica-core 回答有关 LSM 压缩设计空间的问题,并引用 PDF 中对应的页码和行号

只需三条命令,就能像提问其他问题一样提出问题。运行框架会调用 silica_search,回答中会标明来源文件、页码和行号。

安装

在 Claude Code 中,请改为安装插件,它自带服务,也包含 dense leg。

uv tool install 'silica-core[mcp]'         # BM25 over documents and their sections (faster, lighter)
uv tool install 'silica-core[mcp,dense]'   # in addition the dense leg: numpy, a static model (still fast, more precise)

第二行会添加 dense leg:numpy 和一个静态的 model2vec 模型,不需要 torch 或 GPU。只有在指定模型并为章节生成嵌入向量后,它才会启用——这一步是快速入门的最后一段。对于与文本没有共同词语的释义式提问,可以使用它;无论如何,精确术语或标识符都由词法检索部分回答,且只有该部分会报告 terms_absent。

pipx 的用法相同。包和命令都是 silica-core,工具名称为 silica_*。

从 0.9 或更早版本升级:自 0.10.0 起,silica 命令改为 silica-core(silica 属于 silica-harness)。旧版 silica setup 注册的客户端仍会启动 silica mcp,而 uvx 获取 0.10.0 后,该命令将无法再启动。运行一次 silica-core setup <client> 即可重写该条目。

快速入门

在任意包含 Markdown、代码、PDF 或 Office 文件的文件夹中:

silica-core init                              # adopt the folder: ignore file, vault.yaml, first index; the MCP server serves adopted folders only
silica-core search "leveled compaction" -k 5  # the best located passages
silica-core setup claude                      # register the MCP server, write the guidance block into ~/.claude/CLAUDE.md

# optional, with the [dense] extra: the dense leg, a static model, nothing leaves the machine
export SILICA_EMBEDDING_MODEL=model2vec/minishlab/potion-retrieval-32M
silica-core index --embed

silica-core 在九篇 LSM 论文中搜索 "leveled compaction":命中结果包含文件、p. 5 和对应段落;旁边的 PDF 打开在该页,并高亮显示相同段落

九篇 arXiv 论文,2.1 s 即完成索引。命中结果会标明文件、页码和段落;旁边的页面可供核对。

工具

工具Shell返回内容
silica_filessilica-core files文件清单,以及索引对每个文件的处理结果:indexed、changed、excluded、failed、unconverted
silica_searchsilica-core search排序后的段落:路径、章节、行号、BM25、匹配词、coverage,以及语料库中缺失的查询词
silica_readsilica-core read按行或标题截取的内容(PDF 中为页面)、大纲,以及供后续使用的 version
silica_code_packsilica-core code-pack在字符数预算内,为一个源文件生成 AST 上下文包
silica_write_notesilica-core write-note一次原子写入,并对结构和未解析的维基链接进行 lint 检查

在源代码树中,每个函数、方法、类和常量都是一个独立单元: 命中项的 section 是符号,span 是其行范围, silica_read(path, section=…) 会返回正文。对于名称 已知的符号,grep 更有效;对于未点名具体符号的问题,则应先搜索: 工具描述和 silica-core setup claude 写入的代码块都说明了这一点。 契约、响应格式和验收检查见 TOOLS.md。无需 API 密钥或网络连接。

搜索如何给出否定结果

排序列表总会有首位,即使语料库无法回答问题。三个 字段说明结果的参考价值:

  • coverage:命中项匹配词所覆盖的查询词 IDF 权重占比。接近 1 表示匹配了所有罕见词;接近 0 表示只匹配了常见词。
  • terms_absent:在语料库中任何地方都未出现的查询词。
  • matched_terms:该命中项实际包含的词。

在同一组九篇论文中搜索 "raft consensus log replication":terms_absent 列出 raft 和 consensus,coverage 降至 0.19,排名第一的命中项是关于数据复制而非 Raft 的段落

在同一组九篇论文中搜索 raft consensus log replication:其中没有任何一篇 出现 raft 和 consensus,coverage 降至 0.19,排名第一的命中项 讨论的是数据复制。在 254 篇论文中,有答案的问题的排名第一命中项 得分为 0.69 至 1.00;语料库无法覆盖的问题则为 0.44。Silica 会提供这些信号;是否停止、阅读或改写问题,则由执行框架决定。

基准测试

BEIR SciFact · NFCorpus 上的 nDCG@10;所有组使用相同的文档和查询。BEIR 公布的 BM25 基线为 0.665 · 0.325。Silica 的词法索引无需模型;其他方案则从同时存储嵌入的索引提供词法搜索。

模式Silicazvec-grep 0.2.2ck 0.7.11
词法0.662 · 0.3110.649 · 0.2970.630 · 0.289
混合,使用相同的 potion-retrieval-32M 嵌入器0.675 · 0.3280.672 · 0.330

代码检索评测使用 zvec-grep 为其自身基准发布的 20 个 SWE-QA 问题,采用相同嵌入器,k = 10,并根据参考答案所依据的文件和符号评分。

组别文件命中率@5 · @10文件 MRR符号命中率@10符号召回率返回字符数
Silica,混合0.85 · 0.900.680.750.248,266
Silica,向量0.80 · 0.850.670.650.216,225
Silica,词法0.65 · 0.750.470.450.148,194
zvec-grep 0.2.2,混合0.65 · 0.750.540.550.177,326
zvec-grep 0.2.2,向量0.60 · 0.800.610.550.186,821
zvec-grep 0.2.2,FTS0.45 · 0.600.360.450.116,690

在 BEIR 上,两种混合方案在 95% 置信区间内不分上下:相同的向量排名相同,且无需守护进程或向量存储。在代码检索上,Silica 混合方案的文件 MRR 比 zvec-grep 混合方案高 +0.135(95% 置信区间为 +0.01 至 +0.27),按问题配对比较。融合方案的 MRR 也比 Silica 的词法组高 +0.21,符号命中率高 +0.30;未使用重排序器或图扩展。

在本次评测范围内,Silica 是一款紧凑的本地检索器,性能可与 SOTA 媲美:它在 BEIR 上与 zvec-grep 持平,并在使用相同嵌入器的配对 SWE-QA 代码定位重放评测中领先。

只有在不损失答案质量的前提下让 Agent 减少工作量,检索才有意义。以下是相互独立的实验,数据未合并:

工作负载和组别运行次数质量使用搜索轮次工具调用次数秒数热启动成本
仓库,优先搜索约定20评审得分 59.717/204.7—24$0.197
仓库,同一插件但无约定20评审得分 50.60/206.5—28$0.180
文档,驻留的 Silica 工具12 项任务12/12 正确12/123.92.9—$0.20
文档,无插件12 项任务12/12 正确—5.04.0—$0.22

仓库结果仅进行了一次重复实验:轮次减少了 1.75(95% 置信区间:减少 0.55 至 3.05 轮),而评审得分和成本方面的结论尚不明确。文档组的数据来自一项研究,共运行 144 次,覆盖十二个问题和一个 550 万 token 的语料库。这些结果表明在该工作负载下工作量有所减少,并不能证明 Agent 在所有场景下都有此表现。

语料库、置信区间、各任务的例外情况和复现命令见基准测试。

Harnesses

silica-core setup <client> 会将注册信息写入客户端自己的配置文件,并备份原有内容;对于 claude,还会在 ~/.claude/CLAUDE.md 中加入一段指导,说明何时应先搜索再使用 grep。silica-core setup --list 会列出客户端:claude、codex、cursor、windsurf、zed、cline、roo、continue、goose、opencode、openhands、gemini、antigravity、dsh、hermes、openclaw、agent-zero、claude-desktop、lmstudio、anythingllm 和 librechat;shell、python 和 generic 会为其他客户端打印配置方案。服务会提供客户端打开的文件夹;使用 --vault DIR 或 SILICA_VAULT 可指定根目录。

每个写入的配置块以及 Claude Code 插件都会运行 silica-core mcp --retrieval local-hybrid:在服务进程中运行 potion-retrieval-32M,启动时在后台构建索引和向量;向量就绪前,搜索会使用词法检索,并显示 dense: warming。所有内容都留在本机;唯一的下载是模型,且只需下载一次。npx skills add kiycoh/silica-core 会安装这些技能(一个用于告诉 Agent 何时调用工具,另外五个用于根据已索引的文档进行讲解、总结、比较、构建纲要和绘制图表),除此之外不会安装任何内容。Shell 配置方案、Docker 和 REPL 见 public/harnesses.md。

Claude Code 插件的工作方式

在 Claude Code 中,只需使用插件:它自带服务和技能。上文的 安装 部分和 silica-core setup claude 适用于其他客户端;如果两者都配置了,就会有两个服务提供同一个文件夹。

安装

需要将 uv 添加到 PATH,它负责启动服务。

claude plugin install silica-core --marketplace kiycoh/silica-core

这一步适用于 Claude Code 2.1.275 或更高版本;在会话中运行 /plugin install silica-core --marketplace kiycoh/silica-core 也能完成同样的操作。对于较旧的客户端,请先添加 marketplace:运行 claude plugin marketplace add kiycoh/silica-core,然后运行 claude plugin install silica-core@silica-core。

首次运行
  1. 在要搜索的文件夹中启动 Claude Code。
  2. 等待首次启动完成。首次启动比之后的启动慢:uv 会安装软件包,服务会下载模型,且只需下载一次。
  3. 按提示词上方的 Index,或输入 /silica-init。在执行此操作前,不会对任何内容建立索引。
  4. 针对该文件夹提问。Claude 会使用 silica_search 搜索其中的内容。向量构建完成前,搜索会使用词法检索,回复中会显示 dense: warming。
更新

刷新 marketplace,然后更新插件。新版本会在下一个会话中加载。

claude plugin marketplace update silica-core
claude plugin update silica-core@silica-core
它运行、读取和下载的内容

该插件由一个 MCP 服务和 hooks/ 中的一个小型 mod 组成。它们都不会将你的文件、提示词或对话发送到任何地方。

  • 服务端通过 uv run --frozen --project <plugin folder> 启动。插件文件夹为 ~/.claude/plugins/cache/silica-core/silica-core/<version>,其中版本号是 claude plugin list 显示的版本。首次运行时,uv 会从 PyPI 安装 uv.lock 中锁定的软件包(如果机器上没有 Python 3.11 或更新版本,还会安装 Python 构建版本),服务端则会从 Hugging Face 下载 potion-retrieval-32M 模型。除此之外不会下载任何内容。
  • **索引。**在尚未建立索引的文件夹中,mod 会在提示词上方显示一个 Index 按钮;/silica-init 执行相同操作。两者都会在该文件夹中运行 uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core init,在该文件夹中写入 vault.yaml(如果是代码仓库,还会写入 .silicaignore),并在 ~/.silica 下构建索引。Not here 会在该文件夹中隐藏按钮。在你提出请求之前,不会建立任何索引。
  • **搜索提示。**在已建立索引的文件夹中,如果你的问题没有提到任何文件或符号,mod 会添加一行提示,让 Claude 先尝试使用 silica_search,再使用 grep。它还会将搜索指引添加到系统提示词中,除非你的 CLAUDE.md 已经包含这些内容。mod 只会读取三个环境变量 CLAUDE_CONFIG_DIR、HOME 和 USERPROFILE,用于查找该 CLAUDE.md 并跳过你的主目录。
  • **文档维护。**在已建立索引且包含 docs/ 文件夹的目录中,mod 会帮助 Claude 让文档与代码保持同步。它会发出提示;是否执行由 Claude 决定,且绝不会拒绝任何写入。
    • 写入值得记录的内容后(新文件、清单、单个回合中更改 30 行,或 ADR 列出的文件),Claude 会收到一次提醒:更新 docs/,或说明没有内容需要记录。
    • 如果某个回合写入了 docs/ 下的内容,回合结束时,mod 会检查这些文件是否存在无效链接或代码路径、是否有两个 ADR 使用相同编号,以及已接受的 ADR 的 Decision 是否发生变化。Claude 会修复它认定的缺陷,或说明原因;每个回合最多检查两次。
    • 交互会话开始时,mod 会读取 docs/adr/ 和 docs/specs/ 并运行 git,然后在提示词上方显示有多少条记录提到了不存在的内容,以及有多少条记录所关联的文件自上次以来发生了更改。/silica-docs 会列出这些记录。
    • frontmatter 含有 implementation:(implemented、partial、pending、draft、dropped 或 n/a)的记录必须符合其状态要求:implemented 和 partial 必须在 implemented_in 中注明提交或路径;pending 和 draft 不得注明任何内容;partial 和 dropped 必须填写 implementation_note。
在较旧版本的 Claude Code 上

Index 按钮、/silica-init、搜索提示和文档维护均由 mod 提供,需要 Claude Code 2.1.293 或更高版本。较旧的客户端仍可运行服务和技能。在该文件夹中打开终端,然后从终端为文件夹建立索引:

uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core init
无法正常工作时
  • **找不到 silica 工具,或 Claude Code 提示无法连接到 plugin:silica-core:silica-core。**服务端未能启动;/mcp 会显示其状态。常见原因是 PATH 中找不到 uv,或首次安装失败。在该文件夹中手动启动服务端以查看错误:

    uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core mcp --retrieval local-hybrid
    

    一切正常时,会打印 serving 5 tools on stdio, waiting for a client;按 Ctrl+C 可结束运行。

  • **没有 Index 按钮。**它不会在你的主目录或 / 中显示,因为这些位置太大,不适合整体建立索引。点击 Not here 后,该按钮会在该文件夹中保持隐藏,但 /silica-init 仍会为其建立索引。若客户端版本低于 2.1.293,请参阅上文。

  • 此机器可读取的内容。silica-core doctor 会检查安装情况和文件夹:

    uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core doctor
    
卸载
claude plugin uninstall silica-core@silica-core

插件会留下两样东西:

  • 代码仓库中的 vault.yaml 和 .silicaignore,每个已建立索引的文件夹各一份;
  • ~/.silica/index/ 中的索引,每个索引各占一个文件夹。

请手动删除。若插件仍处于安装状态时删除索引,那么下次搜索对应文件夹时会重新建立索引。

说明

  • 读取内容: 直接读取 markdown、.txt、.rst 和带文本层的 PDF,每个 PDF 页面作为一个分区;DOCX、EPUB、FB2、RTF、XLS 和 ODF 可通过 no extra 转换;扫描版 PDF、图像、PPTX 和 XLSX 通过带有 MinerU 的 silica-core import 处理;音频和视频通过 ffmpeg 与 SILICA_STT_BASE_URL 处理;CSV 可按行读取,但不会纳入搜索。在源代码树中,代码通道还会添加源文件,以及 json、yaml、toml、cfg 和 ini 文件。silica-core doctor 会说明这台机器支持哪些通道。
  • 密集检索: 分区嵌入能够捕捉与答案没有共同罕见词汇的释义。uv tool install 仅启用词法检索,直到运行 silica-core index --embed;可使用 [dense] extra 中的本地模型,或任何兼容 OpenAI 的 /v1/embeddings 端点。只有使用远程端点时,文本才会离开本机;并且只有在运行 silica-core index --embed --allow-remote 授权该主机一次后才会离开。变量和回复状态见 TOOLS.md,ollama 配置示例见 public/harnesses.md。
  • 更多接口: silica-core mcp --extended 会添加维基链接工具;silica-core connect(extra [connect])会托管 Obsidian 插件所连接的桥接服务,因此应用打开时,写入操作会通过知识库 API 执行;silica-core repl 会通过同一组工具运行一个小型参考 Agent,这是唯一需要模型(SILICA_MODEL)的接口。
  • 核心不包含: 没有记忆通道、提示词注入、摘要或撤销日志。撤销请使用 git。

许可证

MIT。详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。