Silica Core

io.github.kiycoh由 GitHub 帳號 kiycoh 發布v0.13.0更新於 Nov 8, 2026

Retrieval over the folder the session opened: files, search, read, code_pack, write_note.

發布方自己的服務:core.blue

概覽

AI 產生的概覽

本機 MCP 伺服器,為某個資料夾中的程式碼、Markdown、PDF 與辦公室文件建立索引,讓助理能搜尋、讀取、產生程式碼脈絡包並寫入筆記。

可以做什麼
  • 列出已索引資料夾的清單,查看每個檔案是已索引、已變更、被排除還是失敗,並可依時間只看變更
  • 在語料中檢索排序後的段落,回傳路徑、章節、行號、覆蓋率與缺失詞等訊號
  • 依行範圍或標題讀取片段,並提供大綱與可繼續傳遞的版本號
  • 為單一原始碼檔案在字元預算內產生 AST 脈絡包
  • 原子寫入一篇筆記,並檢查結構與未解析的 wikilink
適用情境
適合助理在單一程式碼倉庫或文件資料夾內工作、需要先定位正確的檔案、符號或段落再作答,而不是盲目 grep 的情境。也適合在本機對 PDF 與辦公室文件做檢索式研究。
執行需求
透過 stdio 在本機執行,以 uvx 或 uv tool install 從 PyPI 安裝(需 Python 3.11 或更新版本)。資料夾須先用 silica-core init 納入,伺服器只服務已納入的資料夾;SILICA_VAULT 或 --vault 可固定根目錄,否則使用用戶端啟動目錄。詞法檢索不需 API 金鑰或網路;可選的稠密檢索會一次性下載靜態模型。
安裝前請注意
silica_write_note 會寫入被索引資料夾中的檔案,Claude Code 外掛還可能提示助理更新文件並修正連結。建立索引會在資料夾寫入 vault.yaml 與 .silicaignore,並在主目錄下產生索引,解除安裝後仍會保留。只有在以 --allow-remote 啟用遠端嵌入端點時,文字才會離開本機。沒有復原日誌,復原依賴 git。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Silica Core,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Silica Core]

Lightweight, local evidence retrieval tools for code and research

Silica locates the source, symbol, page, or passage you and your agents need. Maximum signal, minimum machinery.

[PyPI] [License]

Silica indexes the markdown, code, PDFs and office files under one root and serves them to Claude Code, Cursor, Hermes, Codex, OpenCode and every other popular harness, as MCP tools or as shell commands that print the same JSON. A hit is a path, a section, a line, a window of text and the numbers to judge it by. The harness owns the loop.

[the quickstart recorded end to end: uv tool install, silica-core init reporting nine indexed documents, silica-core setup claude registering the MCP server, then Claude Code answering a question about the LSM compaction design space by calling silica-core and citing the PDF with its page and its line]

Three commands, then a question asked the way you would ask any other. The harness calls silica_search, and the answer carries the file, the page and the line it came from.

Install

In Claude Code, install the plugin instead: it brings its own server, dense leg included.

bash
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)

The second line adds the dense leg: numpy and a static model2vec model, no torch and no GPU. It stays inert until the model is named and the sections are embedded — the last stanza of the Quickstart. Take it when the questions are paraphrases that share no words with the text; an exact term or an identifier is answered by the lexical leg either way, and only that leg reports terms_absent.

pipx works the same. The package and the command are silica-core, the tools are silica_*.

Upgrading from 0.9 or older: the silica command is silica-core since 0.10.0 (silica belongs to silica-harness). A client registered by an older silica setup still launches silica mcp, which stops starting once uvx fetches 0.10.0. Run silica-core setup <client> once and it rewrites that entry.

Quickstart

In any folder of markdown, code, PDFs or office files:

bash
silica-core init                              # adopt the folder: ignore file, vault.yaml, first index; the MCP server serves adopted folders onlysilica-core search "leveled compaction" -k 5  # the best located passagessilica-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 machineexport SILICA_EMBEDDING_MODEL=model2vec/minishlab/potion-retrieval-32Msilica-core index --embed

[silica-core search "leveled compaction" over nine LSM papers: the hit carries the file, p. 5 and the passage; beside it the PDF is open on that page with the same passage highlighted]

Nine arXiv papers, indexed in 2.1 s. The hit names the file, the page and the passage; the page beside it is the check.

Tools

ToolShellReturns
silica_filessilica-core filesthe inventory and what the index did with each file: indexed, changed, excluded, failed, unconverted; with since, only what changed after a time
silica_searchsilica-core searchranked passages: path, section, line, BM25, matched terms, coverage, the query terms absent from the corpus and the corpus's closest spellings of them, what the search could not read, how many as strong matches it did not show (pass the read ones as exclude for the next), and on a converted note whether its original changed since
silica_readsilica-core reada slice by lines or by heading (a page, in a PDF), the outline, and a version to carry forward
silica_code_packsilica-core code-packan AST context pack for one source file inside a character budget
silica_write_notesilica-core write-noteone atomic write, linted for structure and unresolved wikilinks

In a source tree every function, method, class and constant is its own unit: a hit's section is the symbol, span its lines, and silica_read(path, section=…) serves the body. For a symbol whose name is known, grep wins; for a question that names none, the search comes first: the tool description and the block silica-core setup claude writes say so. The contract, the reply shapes and the acceptance checks are in TOOLS.md. Nothing needs an API key or a network.

How search says no

A ranked list always has a top, even when the corpus does not answer. Three fields say how much the result is worth:

  • coverage: the share of the query's idf mass the hit's matched terms carry. Near 1, every rare term matched; near 0, only common words did.
  • terms_absent: query terms that occur nowhere in the corpus.
  • matched_terms: the words this hit actually contains.

[silica-core search "raft consensus log replication" over the same nine papers: terms_absent lists raft and consensus, coverage falls to 0.19, and the top hit is a passage about data replication rather than Raft]

raft consensus log replication over the same nine papers: raft and consensus occur in none of them, coverage falls to 0.19, and the top hit is about data replication. On 254 papers the top hit of an answered question carries 0.69 to 1.00; a question the corpus does not cover, 0.44. Silica exposes the signals; the harness decides whether to stop, read or rephrase.

What a reply also says (0.12)

Asked in November 2026, nine models named what they need from a knowledge layer; each of these was kept only where a probe on a production model showed the failure it fixes (TOOLS.md has the numbers):

  • scope counts every file the search could not read, an office file with no extracted .md beside it included, so a folder of .docx no longer reads as silent.
  • A hit from a converted note carries source_state: stale when its PDF was replaced after the conversion, before the passage is quoted.
  • terms_near offers the corpus's closest spelling of an absent word (quitanllu → quitanlu) instead of leaving a misspelt name to read as absent.
  • unseen counts the ranked documents as strong as the weakest shown that were not shown; exclude takes the paths already read and serves the next ones, so a long list is paged instead of re-fetched.
  • silica_files(since=…) lists only what changed after a time, dated: what changed since the last session.

Benchmarks

nDCG@10 on BEIR SciFact · NFCorpus, the same documents and queries for every arm. BEIR's published BM25 baselines are 0.665 · 0.325. Silica's lexical index needs no model; the others serve lexical search from an index that also holds embeddings.

ModeSilicazvec-grep 0.2.2ck 0.7.11
Lexical0.662 · 0.3110.649 · 0.2970.630 · 0.289
Hybrid, same potion-retrieval-32M embedder0.675 · 0.3280.672 · 0.330

Code, on the twenty SWE-QA questions zvec-grep publishes for its own benchmark, same embedder, k = 10, scored on the files and symbols the reference answer rests on.

Armfile hit@5 · @10file MRRsymbol hit@10symbol recallchars returned
Silica, hybrid0.85 · 0.900.680.750.248,266
Silica, vectors0.80 · 0.850.670.650.216,225
Silica, lexical0.65 · 0.750.470.450.148,194
zvec-grep 0.2.2, hybrid0.65 · 0.750.540.550.177,326
zvec-grep 0.2.2, vector0.60 · 0.800.610.550.186,821
zvec-grep 0.2.2, FTS0.45 · 0.600.360.450.116,690

On BEIR the two hybrids tie at the 95% interval: the same vectors rank the same, with no daemon and no vector store. On code, Silica's hybrid file MRR is +0.135 over zvec-grep's hybrid (95% interval +0.01 to +0.27), paired per question. The fusion also gains +0.21 MRR and +0.30 symbol hit over Silica's lexical arm; no reranker or graph expansion is involved.

On this measured scope, Silica is a compact, local, SOTA-competitive retriever: it matches zvec-grep on BEIR and leads the paired SWE-QA code-localization replay with the same embedder.

Retrieval matters only if the agent does less work without losing the answer. These are separate experiments and are not pooled:

Workload and armRunsQualitySearch usedTurnsTool callsSecondsWarm cost
Repository, search-first contract20Judge 59.717/204.7—24$0.197
Repository, same plugin without contract20Judge 50.60/206.5—28$0.180
Documents, resident Silica tools12 tasks12/12 correct12/123.92.9—$0.20
Documents, no plugin12 tasks12/12 correct—5.04.0—$0.22

The repository result is one repetition: turns improve by 1.75 (95% interval 0.55 to 3.05 fewer), while Judge and cost remain inconclusive. The document rows belong to a 144-run study over twelve questions and a 5.5M-token corpus. They establish less work on that workload, not a universal agent claim.

Corpora, intervals, per-task exceptions and reproduction commands are in benchmarks.

Harnesses

silica-core setup <client> writes the registration into the client's own config and backs up what was there; for claude it also puts a guidance block, when to search before grep, into ~/.claude/CLAUDE.md. silica-core setup --list names the clients: claude, codex, cursor, windsurf, zed, cline, roo, continue, goose, opencode, openhands, gemini, antigravity, dsh, hermes, openclaw, agent-zero, claude-desktop, lmstudio, anythingllm and librechat; shell, python and generic print recipes for anything else. The server serves the folder the client opens in; --vault DIR or SILICA_VAULT fixes the root.

Every written block, and the Claude Code plugin, run silica-core mcp --retrieval local-hybrid: potion-retrieval-32M in the server process, index and vectors built in the background at start, the search lexical and dense: warming until they land. Nothing leaves the machine; the one download is the model, once. npx skills add kiycoh/silica-core installs the skills (the one that tells an agent when to reach for the tools, and five that explain, summarize, compare, schematize and diagram from the indexed documents), and nothing else. Shell recipes, Docker and the REPL are in public/harnesses.md.

How the Claude Code plugin works

In Claude Code the plugin is all you need: it brings its own server and the skills. The Install section above and silica-core setup claude are for other clients; with both, two servers serve the same folder.

Install

It needs uv on PATH, which starts the server.

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

That one step works on Claude Code 2.1.275 or later, and /plugin install silica-core --marketplace kiycoh/silica-core does the same inside a session. On an older client, add the marketplace first: claude plugin marketplace add kiycoh/silica-core, then claude plugin install silica-core@silica-core.

First run

  1. Start Claude Code in the folder you want to search.
  2. Wait for the first start. It is slower than the next ones: uv installs the packages and the server downloads its model, once.
  3. Press Index above the prompt, or type /silica-init. Nothing is indexed until you do.
  4. Ask a question about the folder. Claude searches it with silica_search. Until the vectors are built the search is lexical, and its replies say dense: warming.

Update

Refresh the marketplace, then the plugin. The new version loads in the next session.

bash
claude plugin marketplace update silica-coreclaude plugin update silica-core@silica-core

What it runs, reads and downloads

The plugin is an MCP server plus a small mod in hooks/. Neither one sends your files, prompts or conversation anywhere.

  • The server starts with uv run --frozen --project <plugin folder>. The plugin folder is ~/.claude/plugins/cache/silica-core/silica-core/<version>, with the version claude plugin list shows. The first time, uv installs the packages pinned in uv.lock from PyPI (and a Python build if the machine has no Python 3.11 or newer), and the server downloads the potion-retrieval-32M model from Hugging Face. Nothing else is downloaded.
  • Indexing. In a folder that isn't indexed yet, the mod shows an Index button above the prompt; /silica-init does the same. Either one runs uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core init in that folder, which writes vault.yaml there (plus .silicaignore in a code repository) and builds the index under ~/.silica. Not here hides the button for that folder. Nothing is indexed until you ask.
  • Search hints. In an indexed folder, when you ask a question that names no file or symbol, the mod adds one line asking Claude to try silica_search before grep. It also adds the search guidance to the system prompt, unless your CLAUDE.md already has it. The mod reads three environment variables, CLAUDE_CONFIG_DIR, HOME and USERPROFILE, only to find that CLAUDE.md and to skip your home folder.
  • Docs upkeep. In an indexed folder with a docs/ folder, the mod helps Claude keep the docs in step with the code. It asks; Claude decides, and no write is ever refused.
    • After a write worth recording (a new file, a manifest, 30 changed lines in a turn, or a file an ADR lists), Claude gets one reminder: bring docs/ up to date, or say there is nothing to record.
    • When a turn that wrote under docs/ ends, the mod checks those files for links and code paths that lead nowhere, two ADRs with one number, and an accepted ADR whose Decision changed. Claude fixes what it agrees is a defect or says why it is not; the check asks at most twice a turn.
    • At the start of an interactive session it reads docs/adr/ and docs/specs/ and runs git, then shows above the prompt how many records name what is not there and how many have files that changed since. /silica-docs lists them.
    • A record whose frontmatter has implementation: (implemented, partial, pending, draft, dropped or n/a) is held to it: implemented and partial name a commit or a path in implemented_in, pending and draft name none, partial and dropped carry an implementation_note.

On an older Claude Code

The Index button, /silica-init, the search hints and the docs upkeep come from the mod, which needs Claude Code 2.1.293 or later. An older client still runs the server and the skills. Index a folder from a terminal opened in it instead:

bash
uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core init

When it does not work

  • The silica tools are missing, or Claude Code says it could not connect to plugin:silica-core:silica-core. The server did not start; /mcp shows its state. The usual causes are uv missing from PATH and a first install that failed. Start the server by hand in the folder to read the error:

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

    When all is well it prints serving 5 tools on stdio, waiting for a client; Ctrl+C ends it.

  • No Index button. It never shows in your home folder or in /, which are too large to index whole. After Not here it stays hidden in that folder, and /silica-init still indexes it. On a client older than 2.1.293, see above.

  • What this machine can read. silica-core doctor checks the install and the folder:

    bash
    uv run --frozen --project <plugin folder> --extra mcp --extra dense silica-core doctor

Uninstall

bash
claude plugin uninstall silica-core@silica-core

The plugin leaves two things behind:

  • vault.yaml, and .silicaignore in a code repository, in each folder you indexed;
  • the indexes in ~/.silica/index/, one folder each.

Delete them by hand. An index deleted while the plugin is still installed is rebuilt the next time its folder is searched.

Notes

  • What it reads: markdown, .txt, .rst and PDFs with a text layer directly, one PDF page per section; DOCX, EPUB, FB2, RTF, XLS and ODF converted with no extra; scanned PDFs, images, PPTX and XLSX through silica-core import with MinerU; audio and video with ffmpeg plus SILICA_STT_BASE_URL; CSV readable by line, excluded from search. In a source tree the code lane adds source files and their json, yaml, toml, cfg and ini. silica-core doctor says which lanes this machine has.
  • The dense leg: section embeddings that catch a paraphrase sharing no rare word with the answer. uv tool install stays lexical until silica-core index --embed, with the [dense] extra's local model or any OpenAI-compatible /v1/embeddings endpoint. Text leaves the machine only for a remote endpoint, and only after silica-core index --embed --allow-remote grants that host once. Variables and reply states in TOOLS.md, the ollama recipe in public/harnesses.md.
  • More surfaces: silica-core mcp --extended adds the wikilink tools; silica-core connect (extra [connect]) hosts the bridge the Obsidian plugin dials into, so writes land through the vault API while the app is open; silica-core repl runs a small reference agent over the same tools, the one surface that needs a model (SILICA_MODEL).
  • Not in the core: no memory lane, prompt injection, summaries or undo journal. Undo is git.

License

MIT. See LICENSE.

來源:README.md,提交 367d8f2

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:伺服器未能啟動。

版本歷史

6
  1. v0.12.0Nov 5, 2026
  2. v0.11.0Oct 14, 2026
  3. v0.10.2Oct 11, 2026
  4. v0.10.1Oct 8, 2026
  5. v0.9.0Sep 18, 2026
  6. v0.8.3Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Core 整合