Tools
Zettelkasten Second Memory
An OpenClaw plugin that turns AI conversations into a permanent Zettelkasten knowledge base โ atomic notes, bi-directional links, knowledge distillation, and intelligent retrieval.
Install
npm install
#
README
<p align="center">
<img src="docs/assets/zettelkasten-infographic.png" alt="Zettelkasten Second Memory" width="100%">
</p>
# ๐ง Zettelkasten Second Memory
> **An [OpenClaw](https://github.com/openclaw) plugin** that turns AI conversations into a permanent Zettelkasten knowledge base โ atomic notes, bi-directional links, knowledge distillation, and intelligent retrieval.
[English](README.md) ยท [็ฎไฝไธญๆ](README.zh.md)
[](https://github.com/cx2002302-lang/zettelkasten-second-memory/releases)
[](https://github.com/openclaw)
[](src/mcp/server.ts)
[](LICENSE)
[](package.json)
---
## ๐ Current Version
| Component | Version | Status |
|-----------|---------|--------|
| Plugin | `v1.0.0-beta.3` | Active development |
| Skill | `v1.0.0-beta.2` | Active development |
| OpenClaw | `2026.4.24` | Developed & tested on 2026.4.24; compatible with >= 2026.4.23 |
| Node.js | `>= 22.14.0` | Required (for `node:sqlite`) |
**Latest Release**: [v1.0.0-beta.3](https://github.com/cx2002302-lang/zettelkasten-second-memory/releases/tag/v1.0.0-beta.3) โ Wave 3: Knowledge Heatmap & Network Graph
---
## โจ Core Features
| Feature | Description |
|---------|-------------|
| ๐ **Atomic Notes** | Each note is an independent knowledge unit, supporting `atomic` / `structure` / `source` types |
| ๐ **Bi-directional Links** | 11 semantic link types (supports, refines, extends, contradicts, example-of...) to build a true knowledge graph |
| ๐ **Full-text Search** | SQLite FTS5 + LIKE dual engine, supporting Chinese tokenization and fuzzy matching |
| ๐ค **AI Integration** | Deep MCP integration with OpenClaw, enabling AI agents to automatically capture conversation knowledge |
| ๐ **Knowledge Distillation** | CEQRC pipeline automatically refines fragmented notes into permanent knowledge |
| ๐ท๏ธ **Tag System** | Flexible tag classification and statistics, supporting tag-cloud analysis |
| ๐ฆ **Markdown Native** | All notes stored as Markdown, your data belongs entirely to you |
| ๐ง **Zombie Detection** | Auto-detect stale notes (180+ days, zero backlinks) with `zk_find_zombies` |
| โจ **Glow Ranking** | Knowledge importance scoring via PageRank + citation + recency decay |
| ๐ฆ **Archive System** | Move cold notes to `archive` folder; auto-archive nightly at 2:00 AM |
| ๐ **Audit Log** | Full archive/unarchive history with `zk_get_archive_log` |
| ๐ **Path Discovery** | Weighted shortest path between any two notes with Chinese explanations |
---
> ๐จ๐ณ **Looking for Chinese documentation?** [็นๅป่ฟ้ๆฅ็็ฎไฝไธญๆไป็ป](README.zh.md)
---
## ๐ System Architecture
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OpenClaw Gateway โ
โ (MCP Protocol Layer) โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Zettelkasten Plugin โ
โ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ MCP โ โ CLI โ โ Session โ โ
โ โ Tools โ โ Commands โ โ Hook โ โ
โ โโโโโโฌโโโโโ โโโโโโฌโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโโผโโโโโโโโโโโโฌโโโโโโโโโโโ โ
โ โ Service โ Repositoryโ Storage โ Core โ โ
โ โ Layer โ Layer โ Layer โ Types โ โ
โ โ โ โ โ โ โ
โ โโข Note โโข NoteRepo โโข DB Schemaโโข Types โ โ
โ โโข Link โโข LinkRepo โโข FTS5 โโข Constantsโ โ
โ โโข CEQRC โโข TagRepo โโข Templatesโโข Utils โ โ
โ โโข Distill โโข ReviewRepoโ โ โ โ
โ โโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโ โ
โ โ โ
โ SQLite + Markdown โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
---
> ๐จ๐ณ **Chinese users**: [็นๅป่ฟ้ๆฅ็ไธญๆไป็ป](README.zh.md)
---
## ๐ Quick Start
### Requirements
- **Node.js** >= 22.14.0 (requires built-in `node:sqlite`)
- **OpenClaw** `2026.4.24` (developed & tested on this version; compatible with >= 2026.4.23)
### Installation
```bash
# Clone the repository
git clone https://github.com/YOUR_USERNAME/zettelkasten-second-memory.git
cd zettelkasten-second-memory
# Install dependencies
npm install
# Run tests
npm test
```
### Use as an OpenClaw Plugin
```bash
# 1. Deploy the plugin
bash scripts/deploy.sh
# 2. Configure OpenClaw (edit ~/.openclaw/openclaw.json)
# Ensure plugins.load.paths includes the plugin path
# 3. Restart the Gateway
openclaw gateway restart
# 4. Initialize the database
openclaw zk init
# 5. Health check
openclaw zk doctor
```
### Use as a Standalone Library
```typescript
import { createZettelkasten } from "zettelkasten-second-memory";
// Create a client
const zk = await createZettelkasten("./data/zettelkasten.db", "./data");
// Create a note
const note = await zk.createNote({
title: "Hello Zettelkasten",
content: "This is my first atomic note.",
tags: ["intro", "demo"],
type: "atomic",
});
// Search
const results = zk.searchNotes("atomic note", 10);
console.log(results);
```
---
## ๐ ๏ธ CLI Commands
| Command | Description |
|---------|-------------|
| `openclaw zk init` | Initialize database and directory structure |
| `openclaw zk doctor` | Run health checks |
| `openclaw zk status` | Show system status |
| `openclaw zk new` | Create a new note |
| `openclaw zk list` | List notes |
| `openclaw zk search <query>` | Search notes |
| `openclaw zk show <id>` | View note details |
| `openclaw zk link <from> <to>` | Create a note link |
---
## ๐งฉ MCP Tools (for AI Agents)
| Tool | Permission | Description |
|------|------------|-------------|
| `zk_search_notes` | Read | Full-text search for notes |
| `zk_get_note` | Read | Get a single note |
| `zk_get_backlinks` | Read | Get reverse links |
| `zk_find_path` | Read | Find paths between notes |
| `zk_create_note` | Write | Create a new note |
| `zk_update_note` | Write | Update a note |
| `zk_create_link` | Write | Create a note link |
| `zk_run_ceqrc` | Write | Run the cognitive pipeline |
| `zk_distill_memory` | Write | Distill session memories |
| `zk_review_note` | Write | Review a note |
---
## ๐ Project Structure
```
zettelkasten-second-memory/
โโโ src/
โ โโโ core/ # Type definitions, constants, utilities
โ โโโ storage/ # Database schema, FTS5, template manager
โ โโโ repository/ # Data access layer (notes, links, tags, reviews...)
โ โโโ service/ # Business logic (CEQRC, distillation, deduplication...)
โ โโโ integration/ # OpenClaw integration (agent config, scheduler, hooks)
โ โโโ mcp/ # MCP tool definitions and server
โ โโโ plugin/ # OpenClaw plugin entry and manifest
โ โโโ skills/brain/ # AI Skill (prompts, rules, evolution scripts)
โ โโโ examples/ # Usage examples
โ โโโ index.ts # Library entry point
โโโ scripts/ # Deployment scripts
โโโ plans/ # Design documents and architecture diagrams
โโโ docs/ # Documentation
โโโ package.json
โโโ LICENSE
โโโ README.md
```
---
## ๐ง Second Memory Skill (AI Integration)
This project includes a **Brain Skill** that enables AI agents to automatically save conversation knowledge into Zettelkasten:
```bash
# Install the Skill
cp -r src/skills/brain ~/.openclaw/skills/zettelkasten-brain
# Activate the Skill
openclaw config set agents.defaults.skills '["zettelkasten-brain"]'
# Restart the Gateway
openclaw gateway restart
```
Once activated, the AI will automatically:
- ๐ Search the knowledge base before answering
- ๐ Recognize and save important information
- ๐ Intelligently establish note associations
- ๐ฆ Archive discussions when sessions end
---
## ๐ Database Schema
The system uses SQLite. Core tables include:
| Table | Description |
|-------|-------------|
| `zettel_notes` | Main notes table (title, content, status, confidence...) |
| `zettel_links` | Bi-directional links table (11 semantic link types) |
| `zettel_tags` | Tags table |
| `zettel_note_tags` | Note-tag association table |
| `zettel_reviews` | Review records table |
| `zettel_feedback` | Feedback data table |
| `zettel_prompt_versions` | Prompt version table |
| `zettel_meta` | Metadata table |
FTS5 virtual tables provide full-text search capabilities.
---
## ๐งช Testing
```bash
# Run all tests
npm test
# Watch mode
npm run test:watch
```
Current test coverage:
- Repository layer (CRUD, search, links, tags)
- Service layer (CEQRC, distillation, deduplication, parsing)
- Integration layer (configuration, scheduling)
- MCP Server (tool registration and invocation)
---
## ๐ License
[MIT](LICENSE) ยฉ Zettelkasten Contributors
---
## ๐ Acknowledgements
- Inspired by [Niklas Luhmann](https://en.wikipedia.org/wiki/Niklas_Luhmann)'s Zettelkasten method
- Built on the [OpenClaw](https://github.com/openclaw) plugin architecture
- Uses SQLite FTS5 for full-text search
tools
Comments
Sign in to leave a comment