keep-skill 0.2.0__tar.gz → 0.3.0__tar.gz
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.
- {keep_skill-0.2.0 → keep_skill-0.3.0}/.gitignore +2 -0
- keep_skill-0.3.0/PKG-INFO +218 -0
- keep_skill-0.3.0/README.md +167 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/SKILL.md +45 -12
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/__init__.py +1 -1
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/api.py +265 -10
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/cli.py +254 -19
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/config.py +2 -2
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/document_store.py +351 -12
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/pending_summaries.py +6 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/embedding_cache.py +6 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/store.py +111 -11
- {keep_skill-0.2.0 → keep_skill-0.3.0}/pyproject.toml +1 -1
- keep_skill-0.2.0/PKG-INFO +0 -304
- keep_skill-0.2.0/README.md +0 -253
- {keep_skill-0.2.0 → keep_skill-0.3.0}/LICENSE +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/docs/system/conversations.md +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/docs/system/domains.md +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/docs/system/now.md +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/__main__.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/chunking.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/context.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/errors.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/indexing.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/logging_config.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/paths.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/__init__.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/base.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/documents.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/embeddings.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/llm.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/mlx.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/providers/summarization.py +0 -0
- {keep_skill-0.2.0 → keep_skill-0.3.0}/keep/types.py +0 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: keep-skill
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Semantic memory - remember and search documents by meaning
|
|
5
|
+
Project-URL: Homepage, https://github.com/hughpyle/keep
|
|
6
|
+
Project-URL: Repository, https://github.com/hughpyle/keep
|
|
7
|
+
Author: Hugh Pyle
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: agents,chromadb,embeddings,semantic-memory,vector-search
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
+
Classifier: Topic :: Text Processing
|
|
20
|
+
Requires-Python: <3.14,>=3.11
|
|
21
|
+
Requires-Dist: chromadb>=0.4
|
|
22
|
+
Requires-Dist: tomli-w>=1.0
|
|
23
|
+
Requires-Dist: typer>=0.9
|
|
24
|
+
Provides-Extra: anthropic
|
|
25
|
+
Requires-Dist: anthropic>=0.40.0; extra == 'anthropic'
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
29
|
+
Provides-Extra: documents
|
|
30
|
+
Requires-Dist: beautifulsoup4>=4.9; extra == 'documents'
|
|
31
|
+
Requires-Dist: pypdf>=5.0; extra == 'documents'
|
|
32
|
+
Provides-Extra: gemini
|
|
33
|
+
Requires-Dist: google-genai>=1.0.0; extra == 'gemini'
|
|
34
|
+
Provides-Extra: local
|
|
35
|
+
Requires-Dist: beautifulsoup4>=4.9; extra == 'local'
|
|
36
|
+
Requires-Dist: mlx-lm>=0.10; (platform_system == 'Darwin' and platform_machine == 'arm64') and extra == 'local'
|
|
37
|
+
Requires-Dist: mlx>=0.10; (platform_system == 'Darwin' and platform_machine == 'arm64') and extra == 'local'
|
|
38
|
+
Requires-Dist: pypdf>=5.0; extra == 'local'
|
|
39
|
+
Requires-Dist: sentence-transformers>=2.2; extra == 'local'
|
|
40
|
+
Provides-Extra: mlx
|
|
41
|
+
Requires-Dist: mlx-lm>=0.10; extra == 'mlx'
|
|
42
|
+
Requires-Dist: mlx>=0.10; extra == 'mlx'
|
|
43
|
+
Provides-Extra: openai
|
|
44
|
+
Requires-Dist: openai>=1.0; extra == 'openai'
|
|
45
|
+
Provides-Extra: openclaw
|
|
46
|
+
Requires-Dist: anthropic>=0.18.0; extra == 'openclaw'
|
|
47
|
+
Requires-Dist: google-genai>=1.0.0; extra == 'openclaw'
|
|
48
|
+
Provides-Extra: sentence-transformers
|
|
49
|
+
Requires-Dist: sentence-transformers>=2.2; extra == 'sentence-transformers'
|
|
50
|
+
Description-Content-Type: text/markdown
|
|
51
|
+
|
|
52
|
+
# keep
|
|
53
|
+
|
|
54
|
+
**Semantic memory with version history.**
|
|
55
|
+
|
|
56
|
+
Index documents and notes. Search by meaning. Track changes over time.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pip install 'keep-skill[local]'
|
|
60
|
+
keep init
|
|
61
|
+
|
|
62
|
+
# Index content
|
|
63
|
+
keep update path/to/document.md -t project=myapp
|
|
64
|
+
keep update "Rate limit is 100 req/min" -t topic=api
|
|
65
|
+
|
|
66
|
+
# Search by meaning
|
|
67
|
+
keep find "what's the rate limit?"
|
|
68
|
+
|
|
69
|
+
# Track what you're working on
|
|
70
|
+
keep now "Debugging auth flow"
|
|
71
|
+
keep now -V 1 # Previous context
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## What It Does
|
|
77
|
+
|
|
78
|
+
- **Semantic search** — Find by meaning, not just keywords
|
|
79
|
+
- **Version history** — All documents retain history on update
|
|
80
|
+
- **Tag organization** — Filter and navigate with key=value tags
|
|
81
|
+
- **Recency decay** — Recent items rank higher in search
|
|
82
|
+
- **Works offline** — Local embedding models by default
|
|
83
|
+
|
|
84
|
+
Backed by ChromaDB for vectors, SQLite for metadata and versions.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Installation
|
|
89
|
+
|
|
90
|
+
**Python 3.11–3.13 required.**
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Recommended: local models (works offline)
|
|
94
|
+
pip install 'keep-skill[local]'
|
|
95
|
+
|
|
96
|
+
# Or with uv (faster):
|
|
97
|
+
uv tool install 'keep-skill[local]'
|
|
98
|
+
|
|
99
|
+
# API-based alternative (requires OPENAI_API_KEY)
|
|
100
|
+
pip install 'keep-skill[openai]'
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
First run downloads embedding models (~3-5 minutes).
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Quick Start
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
keep init # Creates .keep/ at repo root
|
|
111
|
+
|
|
112
|
+
# Index files and notes
|
|
113
|
+
keep update file:///path/to/doc.md -t project=myapp
|
|
114
|
+
keep update "Important insight" -t type=note
|
|
115
|
+
|
|
116
|
+
# Search
|
|
117
|
+
keep find "authentication flow" --limit 5
|
|
118
|
+
keep find "auth" --since P7D # Last 7 days
|
|
119
|
+
|
|
120
|
+
# Retrieve
|
|
121
|
+
keep get file:///path/to/doc.md
|
|
122
|
+
keep get ID -V 1 # Previous version
|
|
123
|
+
keep get ID --history # All versions
|
|
124
|
+
|
|
125
|
+
# Tags
|
|
126
|
+
keep tag project=myapp # Find by tag
|
|
127
|
+
keep tag --list # List all tags
|
|
128
|
+
|
|
129
|
+
# Current context
|
|
130
|
+
keep now # Show what you're working on
|
|
131
|
+
keep now "Fixing login bug" # Update context
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Python API
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
from keep import Keeper
|
|
138
|
+
|
|
139
|
+
kp = Keeper()
|
|
140
|
+
|
|
141
|
+
# Index
|
|
142
|
+
kp.update("file:///path/to/doc.md", tags={"project": "myapp"})
|
|
143
|
+
kp.remember("Rate limit is 100 req/min", tags={"topic": "api"})
|
|
144
|
+
|
|
145
|
+
# Search
|
|
146
|
+
results = kp.find("rate limit", limit=5)
|
|
147
|
+
for r in results:
|
|
148
|
+
print(f"[{r.score:.2f}] {r.summary}")
|
|
149
|
+
|
|
150
|
+
# Version history
|
|
151
|
+
prev = kp.get_version("doc:1", offset=1)
|
|
152
|
+
versions = kp.list_versions("doc:1")
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
See [docs/QUICKSTART.md](docs/QUICKSTART.md) for configuration and more examples.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Documentation
|
|
160
|
+
|
|
161
|
+
- **[docs/QUICKSTART.md](docs/QUICKSTART.md)** — Setup, configuration, lazy summarization
|
|
162
|
+
- **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete CLI and API reference
|
|
163
|
+
- **[docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md)** — Working session patterns
|
|
164
|
+
- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
|
|
165
|
+
- **[SKILL.md](SKILL.md)** — The reflective practice (for AI agents)
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## For AI Agents
|
|
170
|
+
|
|
171
|
+
This library was designed as an agent skill — persistent memory that helps agents reflect before acting and learn from experience.
|
|
172
|
+
|
|
173
|
+
**The practice:**
|
|
174
|
+
- Pause before acting — `keep find` what you already know
|
|
175
|
+
- Notice breakdowns — when assumptions surface, index them
|
|
176
|
+
- Reflect after — `keep update` learnings for future sessions
|
|
177
|
+
|
|
178
|
+
See **[SKILL.md](SKILL.md)** for the full practice guide.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Status
|
|
183
|
+
|
|
184
|
+
**Current:** v0.3.0
|
|
185
|
+
|
|
186
|
+
**Working:**
|
|
187
|
+
- ✅ Semantic search with embeddings
|
|
188
|
+
- ✅ Document versioning (all updates retain history)
|
|
189
|
+
- ✅ Content-addressed IDs for text (same content = same ID)
|
|
190
|
+
- ✅ Tag queries and full-text search
|
|
191
|
+
- ✅ Current context tracking (`keep now`)
|
|
192
|
+
- ✅ Recency decay (recent items rank higher)
|
|
193
|
+
- ✅ Lazy summarization (background processing)
|
|
194
|
+
- ✅ Provider abstraction (local or API-based)
|
|
195
|
+
|
|
196
|
+
**Planned** (see [later/](later/)):
|
|
197
|
+
- ⏳ Private/shared routing
|
|
198
|
+
- ⏳ Relationship graphs between items
|
|
199
|
+
- ⏳ LLM-based auto-tagging
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
MIT
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Contributing
|
|
210
|
+
|
|
211
|
+
Published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
|
|
212
|
+
|
|
213
|
+
Issues and PRs welcome:
|
|
214
|
+
- Provider implementations
|
|
215
|
+
- Performance improvements
|
|
216
|
+
- Documentation clarity
|
|
217
|
+
|
|
218
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# keep
|
|
2
|
+
|
|
3
|
+
**Semantic memory with version history.**
|
|
4
|
+
|
|
5
|
+
Index documents and notes. Search by meaning. Track changes over time.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install 'keep-skill[local]'
|
|
9
|
+
keep init
|
|
10
|
+
|
|
11
|
+
# Index content
|
|
12
|
+
keep update path/to/document.md -t project=myapp
|
|
13
|
+
keep update "Rate limit is 100 req/min" -t topic=api
|
|
14
|
+
|
|
15
|
+
# Search by meaning
|
|
16
|
+
keep find "what's the rate limit?"
|
|
17
|
+
|
|
18
|
+
# Track what you're working on
|
|
19
|
+
keep now "Debugging auth flow"
|
|
20
|
+
keep now -V 1 # Previous context
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## What It Does
|
|
26
|
+
|
|
27
|
+
- **Semantic search** — Find by meaning, not just keywords
|
|
28
|
+
- **Version history** — All documents retain history on update
|
|
29
|
+
- **Tag organization** — Filter and navigate with key=value tags
|
|
30
|
+
- **Recency decay** — Recent items rank higher in search
|
|
31
|
+
- **Works offline** — Local embedding models by default
|
|
32
|
+
|
|
33
|
+
Backed by ChromaDB for vectors, SQLite for metadata and versions.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
**Python 3.11–3.13 required.**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Recommended: local models (works offline)
|
|
43
|
+
pip install 'keep-skill[local]'
|
|
44
|
+
|
|
45
|
+
# Or with uv (faster):
|
|
46
|
+
uv tool install 'keep-skill[local]'
|
|
47
|
+
|
|
48
|
+
# API-based alternative (requires OPENAI_API_KEY)
|
|
49
|
+
pip install 'keep-skill[openai]'
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
First run downloads embedding models (~3-5 minutes).
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Quick Start
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
keep init # Creates .keep/ at repo root
|
|
60
|
+
|
|
61
|
+
# Index files and notes
|
|
62
|
+
keep update file:///path/to/doc.md -t project=myapp
|
|
63
|
+
keep update "Important insight" -t type=note
|
|
64
|
+
|
|
65
|
+
# Search
|
|
66
|
+
keep find "authentication flow" --limit 5
|
|
67
|
+
keep find "auth" --since P7D # Last 7 days
|
|
68
|
+
|
|
69
|
+
# Retrieve
|
|
70
|
+
keep get file:///path/to/doc.md
|
|
71
|
+
keep get ID -V 1 # Previous version
|
|
72
|
+
keep get ID --history # All versions
|
|
73
|
+
|
|
74
|
+
# Tags
|
|
75
|
+
keep tag project=myapp # Find by tag
|
|
76
|
+
keep tag --list # List all tags
|
|
77
|
+
|
|
78
|
+
# Current context
|
|
79
|
+
keep now # Show what you're working on
|
|
80
|
+
keep now "Fixing login bug" # Update context
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Python API
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from keep import Keeper
|
|
87
|
+
|
|
88
|
+
kp = Keeper()
|
|
89
|
+
|
|
90
|
+
# Index
|
|
91
|
+
kp.update("file:///path/to/doc.md", tags={"project": "myapp"})
|
|
92
|
+
kp.remember("Rate limit is 100 req/min", tags={"topic": "api"})
|
|
93
|
+
|
|
94
|
+
# Search
|
|
95
|
+
results = kp.find("rate limit", limit=5)
|
|
96
|
+
for r in results:
|
|
97
|
+
print(f"[{r.score:.2f}] {r.summary}")
|
|
98
|
+
|
|
99
|
+
# Version history
|
|
100
|
+
prev = kp.get_version("doc:1", offset=1)
|
|
101
|
+
versions = kp.list_versions("doc:1")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
See [docs/QUICKSTART.md](docs/QUICKSTART.md) for configuration and more examples.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Documentation
|
|
109
|
+
|
|
110
|
+
- **[docs/QUICKSTART.md](docs/QUICKSTART.md)** — Setup, configuration, lazy summarization
|
|
111
|
+
- **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete CLI and API reference
|
|
112
|
+
- **[docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md)** — Working session patterns
|
|
113
|
+
- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
|
|
114
|
+
- **[SKILL.md](SKILL.md)** — The reflective practice (for AI agents)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## For AI Agents
|
|
119
|
+
|
|
120
|
+
This library was designed as an agent skill — persistent memory that helps agents reflect before acting and learn from experience.
|
|
121
|
+
|
|
122
|
+
**The practice:**
|
|
123
|
+
- Pause before acting — `keep find` what you already know
|
|
124
|
+
- Notice breakdowns — when assumptions surface, index them
|
|
125
|
+
- Reflect after — `keep update` learnings for future sessions
|
|
126
|
+
|
|
127
|
+
See **[SKILL.md](SKILL.md)** for the full practice guide.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Status
|
|
132
|
+
|
|
133
|
+
**Current:** v0.3.0
|
|
134
|
+
|
|
135
|
+
**Working:**
|
|
136
|
+
- ✅ Semantic search with embeddings
|
|
137
|
+
- ✅ Document versioning (all updates retain history)
|
|
138
|
+
- ✅ Content-addressed IDs for text (same content = same ID)
|
|
139
|
+
- ✅ Tag queries and full-text search
|
|
140
|
+
- ✅ Current context tracking (`keep now`)
|
|
141
|
+
- ✅ Recency decay (recent items rank higher)
|
|
142
|
+
- ✅ Lazy summarization (background processing)
|
|
143
|
+
- ✅ Provider abstraction (local or API-based)
|
|
144
|
+
|
|
145
|
+
**Planned** (see [later/](later/)):
|
|
146
|
+
- ⏳ Private/shared routing
|
|
147
|
+
- ⏳ Relationship graphs between items
|
|
148
|
+
- ⏳ LLM-based auto-tagging
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## License
|
|
153
|
+
|
|
154
|
+
MIT
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Contributing
|
|
159
|
+
|
|
160
|
+
Published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
|
|
161
|
+
|
|
162
|
+
Issues and PRs welcome:
|
|
163
|
+
- Provider implementations
|
|
164
|
+
- Performance improvements
|
|
165
|
+
- Documentation clarity
|
|
166
|
+
|
|
167
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: keep
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.3.0
|
|
4
4
|
description: Associative memory for reflection and skillful action
|
|
5
5
|
homepage: https://github.com/hughpyle/keep
|
|
6
6
|
runtime: python:3.12-slim
|
|
@@ -106,7 +106,7 @@ Then retrieve and read it:
|
|
|
106
106
|
keep get "file://$PWD/docs/library/mn61.html"
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
This teaching (MN 61) uses the mirror metaphor: "What is a mirror for?" "For reflection." Actions — bodily, verbal, mental — are to be done with repeated reflection. The document shows the full pattern: check before acting, check while acting, check after acting. If unskillful, confess and adjust. If skillful, stay refreshed and continue training.
|
|
109
|
+
This teaching ([MN 61](docs/library/mn61.html)) uses the mirror metaphor: "What is a mirror for?" "For reflection." Actions — bodily, verbal, mental — are to be done with repeated reflection. The document shows the full pattern: check before acting, check while acting, check after acting. If unskillful, confess and adjust. If skillful, stay refreshed and continue training.
|
|
110
110
|
|
|
111
111
|
### Breakdowns Are Valuable
|
|
112
112
|
|
|
@@ -140,7 +140,7 @@ These aren't test fixtures. They're seed wisdom:
|
|
|
140
140
|
|
|
141
141
|
- **[true_person_no_rank.md](docs/library/true_person_no_rank.md)** — A Zen teaching with layers of commentary. Notice how each commentator re-enacts the pointing from a different angle — not explaining, not accumulating facts, but each responding to what students in that era needed. This is how knowledge in your memory should relate: organic, not hierarchical.
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
The [docs/library/](docs/library/) directory contains additional seed material.
|
|
144
144
|
|
|
145
145
|
---
|
|
146
146
|
|
|
@@ -158,8 +158,29 @@ Update it as your focus changes:
|
|
|
158
158
|
keep now "Working on authentication bug in login flow"
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
+
Check previous context if needed:
|
|
162
|
+
```bash
|
|
163
|
+
keep now -V 1 # Previous context
|
|
164
|
+
keep now --history # All versions
|
|
165
|
+
```
|
|
166
|
+
|
|
161
167
|
This helps future you (and other agents) pick up where you left off.
|
|
162
168
|
|
|
169
|
+
### Version History
|
|
170
|
+
|
|
171
|
+
All documents retain history on update. Use this to see how understanding evolved:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
keep get ID -V 1 # Previous version
|
|
175
|
+
keep get ID --history # All versions
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Text updates use content-addressed IDs — same content = same ID. This enables versioning through tag changes:
|
|
179
|
+
```bash
|
|
180
|
+
keep update "auth decision" -t status=draft # Creates ID from content
|
|
181
|
+
keep update "auth decision" -t status=final # Same ID, new version
|
|
182
|
+
```
|
|
183
|
+
|
|
163
184
|
### Summaries Are Your Recall Mechanism
|
|
164
185
|
|
|
165
186
|
Memory stores **summaries**, not full content. This is intentional:
|
|
@@ -180,8 +201,8 @@ keep update "Token refresh fails if clock skew > 30s" -t domain=auth -t type=fin
|
|
|
180
201
|
|
|
181
202
|
Later:
|
|
182
203
|
```bash
|
|
183
|
-
keep tag domain
|
|
184
|
-
keep tag type
|
|
204
|
+
keep tag domain=auth # Everything about auth
|
|
205
|
+
keep tag type=decision # All decisions made
|
|
185
206
|
```
|
|
186
207
|
|
|
187
208
|
**Suggested tag dimensions:**
|
|
@@ -219,13 +240,21 @@ Don't dump everything into context. Navigate the tree:
|
|
|
219
240
|
| Command | Purpose | Example |
|
|
220
241
|
|---------|---------|---------|
|
|
221
242
|
| `now` | Get/set current context | `keep now` or `keep now "status"` |
|
|
222
|
-
| `
|
|
243
|
+
| `now -V N` | Previous context versions | `keep now -V 1` or `keep now --history` |
|
|
244
|
+
| `find` | Semantic similarity search | `keep find "authentication flow" --limit 5` |
|
|
245
|
+
| `find --id` | Find similar to existing item | `keep find --id "docid" --limit 3` |
|
|
246
|
+
| `search` | Full-text search in summaries | `keep search "OAuth"` |
|
|
247
|
+
| `list` | List recent items by update time | `keep list` or `keep list -n 20` |
|
|
223
248
|
| `update` | Index content (URI, text, or stdin) | `keep update "note" -t key=value` |
|
|
224
|
-
| `get` | Retrieve by ID | `keep get "file:///path/to/doc.md"` |
|
|
225
|
-
| `
|
|
226
|
-
| `tag` |
|
|
227
|
-
| `tag-update` | Modify tags
|
|
228
|
-
| `exists` | Check if indexed | `keep exists "id"` |
|
|
249
|
+
| `get` | Retrieve item by ID | `keep get "file:///path/to/doc.md"` |
|
|
250
|
+
| `get -V N` | Previous versions | `keep get ID -V 1` or `keep get ID --history` |
|
|
251
|
+
| `tag` | List tag values or find by tag | `keep tag domain=auth` or `keep tag --list` |
|
|
252
|
+
| `tag-update` | Modify tags on existing item | `keep tag-update "id" --tag key=value` |
|
|
253
|
+
| `exists` | Check if item is indexed | `keep exists "id"` |
|
|
254
|
+
| `system` | List system documents | `keep system` |
|
|
255
|
+
| `collections` | List all collections | `keep collections` |
|
|
256
|
+
| `init` | Initialize or verify store | `keep init` |
|
|
257
|
+
| `config` | Show configuration and store path | `keep config` |
|
|
229
258
|
| `process-pending` | Process lazy summaries | `keep process-pending --all` |
|
|
230
259
|
|
|
231
260
|
### Fast Indexing with `--lazy`
|
|
@@ -251,11 +280,14 @@ Default output uses YAML frontmatter format:
|
|
|
251
280
|
```yaml
|
|
252
281
|
---
|
|
253
282
|
id: file:///path/to/doc.md
|
|
254
|
-
summary: Document summary here...
|
|
255
283
|
tags:
|
|
256
284
|
project: myapp
|
|
257
285
|
score: 0.823
|
|
286
|
+
prev:
|
|
287
|
+
- 1: 2026-01-15 Previous summary...
|
|
288
|
+
- 2: 2026-01-14 Older summary...
|
|
258
289
|
---
|
|
290
|
+
Document summary here...
|
|
259
291
|
```
|
|
260
292
|
|
|
261
293
|
Global flags (before the command):
|
|
@@ -310,6 +342,7 @@ This is the practice. Not once, but every time.
|
|
|
310
342
|
## See Also
|
|
311
343
|
|
|
312
344
|
- [docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md) — Detailed patterns for working sessions
|
|
345
|
+
- [docs/REFERENCE.md](docs/REFERENCE.md) — Complete CLI and API reference
|
|
313
346
|
- [docs/QUICKSTART.md](docs/QUICKSTART.md) — Installation and setup
|
|
314
347
|
- [docs/system/conversations.md](docs/system/conversations.md) — Full conversation framework
|
|
315
348
|
- [docs/system/domains.md](docs/system/domains.md) — Domain-specific organization
|