stellavault 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -6
- package/dist/stellavault.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Stellavault
|
|
2
2
|
|
|
3
|
-
[](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml) [](https://www.npmjs.com/package/stellavault) [](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml) [](https://www.npmjs.com/package/stellavault) []() []() [](LICENSE)
|
|
4
4
|
|
|
5
5
|
> **Drop anything. It compiles itself into knowledge.** Claude remembers everything you know.
|
|
6
6
|
|
|
@@ -11,6 +11,10 @@ Self-compiling knowledge base with a full-featured editor, 3D neural graph, AI-p
|
|
|
11
11
|
<br><em>Your vault as a neural network. Local-first, no cloud required.</em>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
|
+
## Contents
|
|
15
|
+
|
|
16
|
+
[Install](#install) · [Editor](#editor) · [Pipeline](#the-pipeline) · [Intelligence](#intelligence-what-makes-stellavault-unique) · [Search & Ranking](#search--ranking) · [MCP Integration](#mcp-integration-21-tools) · [3D Visualization](#3d-visualization) · [Configuration](#configuration) · [Performance](#performance) · [Tech Stack](#tech-stack) · [Security](#security) · [Troubleshooting](#troubleshooting)
|
|
17
|
+
|
|
14
18
|
## Install
|
|
15
19
|
|
|
16
20
|
### Desktop App (Recommended — one click)
|
|
@@ -120,6 +124,24 @@ These features do **not exist** in Obsidian — even with plugins.
|
|
|
120
124
|
|
|
121
125
|
---
|
|
122
126
|
|
|
127
|
+
## Search & Ranking
|
|
128
|
+
|
|
129
|
+
Hybrid retrieval that fuses multiple signals with **weighted Reciprocal Rank Fusion (RRF)** — tuned for a personal knowledge vault, fully local, zero API keys:
|
|
130
|
+
|
|
131
|
+
| Signal | What it captures | Default weight |
|
|
132
|
+
|--------|------------------|---------------:|
|
|
133
|
+
| **Semantic** (dense) | meaning; multilingual (50+ languages) | `1.0` |
|
|
134
|
+
| **BM25** (keyword) | exact terms, code, names | `1.0` |
|
|
135
|
+
| **Entity-linking** | your `[[wikilinks]]`, `#tags`, headings, titles — the curated graph | `1.5` |
|
|
136
|
+
| **FSRS recency** | gently surfaces notes you're actively using / forgetting | `±10%` |
|
|
137
|
+
|
|
138
|
+
- **Entity matching** resolves natural-language queries via fuzzy substring + punctuation-normalized matching (Korean / CJK friendly), with a **per-document diversity cap** so one large note can't flood the top results.
|
|
139
|
+
- **Recency** reuses the same FSRS memory model as the decay engine (not raw file mtime) — a note you're forgetting resurfaces; a mastered evergreen note isn't buried just for being old.
|
|
140
|
+
- **Adaptive rerank** (long-running MCP server) further boosts results by your current session context (recent tags / paths).
|
|
141
|
+
- Every weight is **tunable** per vault or via env vars — see [Configuration](#configuration).
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
123
145
|
## MCP Integration (21 Tools)
|
|
124
146
|
|
|
125
147
|
```bash
|
|
@@ -128,13 +150,13 @@ stellavault setup # one command → Claude Code, Claude Desktop, Curs
|
|
|
128
150
|
claude mcp add stellavault -- stellavault serve
|
|
129
151
|
```
|
|
130
152
|
|
|
131
|
-
Claude can search, ask, draft, lint, and analyze your vault directly. Search
|
|
132
|
-
|
|
133
|
-
|
|
153
|
+
Claude can search, ask, draft, lint, and analyze your vault directly. Search runs
|
|
154
|
+
the full hybrid pipeline — **weighted RRF** over semantic + BM25 + entity-linking,
|
|
155
|
+
plus **FSRS recency** and session-adaptive reranking (see [Search & Ranking](#search--ranking)).
|
|
134
156
|
|
|
135
157
|
| Tool | What it does |
|
|
136
158
|
|------|-------------|
|
|
137
|
-
| `search` |
|
|
159
|
+
| `search` | Weighted RRF (semantic + BM25 + entity) + FSRS recency + adaptive rerank |
|
|
138
160
|
| `ask` | Vault-grounded Q&A |
|
|
139
161
|
| `generate-draft` | AI drafts from your knowledge |
|
|
140
162
|
| `get-decay-status` | Memory decay report (FSRS) |
|
|
@@ -218,6 +240,34 @@ stellavault decay # What are you forgetting?
|
|
|
218
240
|
|
|
219
241
|
---
|
|
220
242
|
|
|
243
|
+
## Configuration
|
|
244
|
+
|
|
245
|
+
Stellavault reads `./.stellavault.json` (or `~/.stellavault.json`). Search ranking is fully tunable — sensible defaults work out of the box:
|
|
246
|
+
|
|
247
|
+
```jsonc
|
|
248
|
+
{
|
|
249
|
+
"search": {
|
|
250
|
+
"rrfK": 60,
|
|
251
|
+
"weights": { "semantic": 1.0, "bm25": 1.0, "entity": 1.5 },
|
|
252
|
+
"recencyWeight": 0.2, // FSRS recency strength; 0 = off
|
|
253
|
+
"entityAliases": { "k8s": ["kubernetes"] } // synonym / cross-lingual groups (exact-only)
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Environment variables override config (parsed with guards):
|
|
259
|
+
|
|
260
|
+
| Env var | Effect |
|
|
261
|
+
|---------|--------|
|
|
262
|
+
| `STELLAVAULT_W_SEMANTIC` / `_BM25` / `_ENTITY` | per-signal RRF weight (e.g. `STELLAVAULT_W_ENTITY=2.0` for aggressive entity surfacing) |
|
|
263
|
+
| `STELLAVAULT_RECENCY_WEIGHT` | recency strength `0`–`1` (`0` disables) |
|
|
264
|
+
| `STELLAVAULT_DB_PATH` | override the index DB location |
|
|
265
|
+
| `STELLAVAULT_WATCH` | `0` to disable the auto-reindex file watcher while `serve` runs |
|
|
266
|
+
|
|
267
|
+
> Note: cross-lingual recall (e.g. a Korean query finding English notes) is handled automatically by the multilingual embedding model — `entityAliases` is an optional precision boost for the curated entity graph (tags / wikilinks) and abbreviations.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
221
271
|
## Performance
|
|
222
272
|
|
|
223
273
|
Tested on synthetic vaults — all operations under 1 second for typical use cases:
|
|
@@ -253,7 +303,7 @@ Key optimizations:
|
|
|
253
303
|
| Runtime | Node.js 20+ (ESM, TypeScript) |
|
|
254
304
|
| Vector Store | SQLite-vec (local, zero config) |
|
|
255
305
|
| Embedding | MiniLM-L12-v2 (local, 50+ languages, batch processing) |
|
|
256
|
-
| Search | BM25 +
|
|
306
|
+
| Search | Weighted RRF (semantic + BM25 + entity) + FSRS recency |
|
|
257
307
|
| Math | KaTeX (inline + display) |
|
|
258
308
|
| Code | lowlight / highlight.js (40+ languages) |
|
|
259
309
|
| 3D | React Three Fiber + Three.js |
|
package/dist/stellavault.js
CHANGED
|
@@ -5795,7 +5795,7 @@ function createMcpServer(options) {
|
|
|
5795
5795
|
const askTool = createAskTool(searchEngine, vaultPath);
|
|
5796
5796
|
const generateDraftTool = createGenerateDraftTool(searchEngine, vaultPath);
|
|
5797
5797
|
const agenticTools = embedder ? createAgenticGraphTools(store, embedder, vaultPath) : [];
|
|
5798
|
-
const server = new Server({ name: "stellavault", version: "0.8.
|
|
5798
|
+
const server = new Server({ name: "stellavault", version: "0.8.4" }, { capabilities: { tools: {} } });
|
|
5799
5799
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
5800
5800
|
tools: [
|
|
5801
5801
|
searchToolDef,
|
|
@@ -10976,7 +10976,7 @@ if (nodeVersion < 20) {
|
|
|
10976
10976
|
process.exit(1);
|
|
10977
10977
|
}
|
|
10978
10978
|
var program = new Command();
|
|
10979
|
-
var SV_VERSION = true ? "0.8.
|
|
10979
|
+
var SV_VERSION = true ? "0.8.4" : "0.0.0-dev";
|
|
10980
10980
|
program.name("stellavault").description("Stellavault \u2014 Self-compiling knowledge base for your Obsidian vault").version(SV_VERSION).option("--json", "Output in JSON format (for scripting)").option("--quiet", "Suppress non-essential output");
|
|
10981
10981
|
program.command("init").description("Interactive setup wizard \u2014 get started in 3 minutes").action(initCommand);
|
|
10982
10982
|
program.command("doctor").description("Diagnose setup issues (config, vault, DB, model, Node version)").action(doctorCommand);
|
package/package.json
CHANGED