# v1.6.0: Duplicate Detection + 2-5x Performance — Your AI Agent's Memory Just Got Smarter

We just shipped [Knowledge Keeper MCP v1.6.0](https://github.com/zsc-glitch/knowledge-keeper-mcp) with two major improvements: a new duplicate detection tool and significantly faster performance across analytics, export, and sync operations.

## New: `knowledge_duplicates`

As your knowledge base grows, duplicates sneak in. You save the same concept twice with slightly different wording. You note a decision that overlaps with an existing one. Over time, your knowledge base gets cluttered.

The new `knowledge_duplicates` tool finds these for you:

```
🔍 knowledge_duplicates(threshold=0.7, scope="both")
```

**How it works:**
- Computes Jaccard similarity between knowledge points
- Title gets 60% weight, content gets 40% (configurable scope: title/content/both)
- Threshold is adjustable (0.1-1.0, default 0.7)
- Returns groups of similar items with merge suggestions

**Example output:**
```
1. 🔗 相似度 0.85（2 个）
    - [concept] React Server Components (2026-04-10)
    - [concept] React Server Components (2026-04-15)
    💡 建议保留 "React Server Components" (kp-cp-...)，合并另一个

💡 使用 knowledge_merge 工具合并重复项
```

One command to find duplicates, one command to merge them. Clean knowledge base, better search results.

## Faster: 2-5x on Analytics, Export & Sync

v1.5.0 eliminated a subtle anti-pattern: 14 places across 8 files were calling `searchKnowledge({ query: "" })` just to get "all entries." This ran through the full search pipeline (load → filter → sort) when all we needed was raw data.

**The fix**: A single `loadAllEntries()` function that reads `index.json` directly. No filtering, no sorting, no search overhead.

**The worst case**: Cloud sync was calling this inside a loop — once per remote item. 50 items = 50 full index loads. We hoisted it outside: **1 read instead of 50**.

v1.5.1 then consolidated 6 duplicate implementations of `loadAllEntries()` into a single public export from `core.ts`, removing 263 lines of duplicate code.

## All 32 Tools

| Category | Tools |
|----------|-------|
| **Core** | save, get, update, delete, search, tags |
| **Search** | semantic, bm25, hybrid (RRF fusion) |
| **Version** | list, get, diff, rollback |
| **Links** | link, unlink, get-linked |
| **Graph** | build, query, visualize |
| **Import/Export** | export (JSON/MD/CSV), import, batch |
| **Sync** | sync (Obsidian), merge |
| **Analytics** | overview, insights, timeline |
| **Cloud (Pro)** | sync_status, sync, license |
| **New** | recent (with sort_by), **duplicates** |

## Upgrade

```bash
npx @zsc-glitch/knowledge-keeper-mcp@1.6.0
```

Or add to your Claude Code / Cursor MCP config:

```json
{
  "mcpServers": {
    "knowledge-keeper": {
      "command": "npx",
      "args": ["-y", "@zsc-glitch/knowledge-keeper-mcp@1.6.0"]
    }
  }
}
```

## What's Next

We're working on:
- **Knowledge graph Phase 2** — Relationship inference from content patterns
- **MCP Registry** — Auto-publish to the official MCP server directory
- **Pro tier** — Stripe integration for cloud sync subscription

---

*Knowledge Keeper MCP — 32 tools, zero API keys, 100% local. [GitHub](https://github.com/zsc-glitch/knowledge-keeper-mcp) • [npm](https://npm.im/@zsc-glitch/knowledge-keeper-mcp) • [Docs](https://zsc-glitch.github.io/knowledge-keeper-mcp/)*
