keep-skill 0.1.0__tar.gz → 0.2.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.1.0 → keep_skill-0.2.0}/.gitignore +1 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/PKG-INFO +29 -15
- {keep_skill-0.1.0 → keep_skill-0.2.0}/README.md +28 -14
- {keep_skill-0.1.0 → keep_skill-0.2.0}/SKILL.md +69 -40
- {keep_skill-0.1.0/patterns → keep_skill-0.2.0/docs/system}/conversations.md +30 -62
- {keep_skill-0.1.0/patterns → keep_skill-0.2.0/docs/system}/domains.md +39 -55
- keep_skill-0.2.0/docs/system/now.md +19 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/__init__.py +3 -6
- keep_skill-0.2.0/keep/api.py +1338 -0
- keep_skill-0.2.0/keep/cli.py +841 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/config.py +172 -41
- keep_skill-0.2.0/keep/context.py +3 -0
- keep_skill-0.2.0/keep/document_store.py +569 -0
- keep_skill-0.2.0/keep/errors.py +33 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/indexing.py +1 -1
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/logging_config.py +34 -3
- keep_skill-0.2.0/keep/paths.py +131 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/pending_summaries.py +46 -40
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/embedding_cache.py +53 -46
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/embeddings.py +43 -13
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/mlx.py +23 -21
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/store.py +58 -14
- {keep_skill-0.1.0 → keep_skill-0.2.0}/pyproject.toml +3 -3
- keep_skill-0.1.0/keep/api.py +0 -686
- keep_skill-0.1.0/keep/cli.py +0 -503
- keep_skill-0.1.0/keep/context.py +0 -127
- keep_skill-0.1.0/keep/paths.py +0 -67
- {keep_skill-0.1.0 → keep_skill-0.2.0}/LICENSE +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/__main__.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/chunking.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/__init__.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/base.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/documents.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/llm.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/summarization.py +0 -0
- {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: keep-skill
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Semantic memory - remember and search documents by meaning
|
|
5
5
|
Project-URL: Homepage, https://github.com/hughpyle/keep
|
|
6
6
|
Project-URL: Repository, https://github.com/hughpyle/keep
|
|
@@ -57,7 +57,7 @@ Description-Content-Type: text/markdown
|
|
|
57
57
|
|
|
58
58
|
## What is this?
|
|
59
59
|
|
|
60
|
-
A practice tool for agents who want to develop judgment.
|
|
60
|
+
An agent skill. A practice tool for agents who want to develop judgment.
|
|
61
61
|
|
|
62
62
|
An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful. This library provides the mirror: persistent semantic memory that lets you ask "what do I already know?" before acting, and "what did I learn?" after.
|
|
63
63
|
|
|
@@ -65,16 +65,12 @@ For the full practice guide, see **[SKILL.md](SKILL.md)**.
|
|
|
65
65
|
|
|
66
66
|
Technically: semantic search using embeddings, backed by ChromaDB, with tag-based organization and recency decay. Available as CLI and Python API.
|
|
67
67
|
|
|
68
|
-
```
|
|
69
|
-
from keep import Keeper
|
|
70
|
-
|
|
71
|
-
kp = Keeper()
|
|
72
|
-
|
|
68
|
+
```bash
|
|
73
69
|
# Before acting: what do I already know?
|
|
74
|
-
|
|
70
|
+
keep find "how should we handle auth?"
|
|
75
71
|
|
|
76
72
|
# After learning: capture it for future you
|
|
77
|
-
|
|
73
|
+
keep update "User prefers OAuth2 with PKCE for authentication"
|
|
78
74
|
```
|
|
79
75
|
|
|
80
76
|
**The practice:**
|
|
@@ -144,18 +140,32 @@ pip install keep-skill
|
|
|
144
140
|
```bash
|
|
145
141
|
keep init
|
|
146
142
|
# ⚠️ Remember to add .keep/ to .gitignore
|
|
143
|
+
|
|
144
|
+
# Index a file
|
|
145
|
+
keep update path/to/document.md --tag project=myapp
|
|
146
|
+
|
|
147
|
+
# Store inline content
|
|
148
|
+
keep update "Important: rate limit is 100 req/min" --tag topic=api
|
|
149
|
+
|
|
150
|
+
# Semantic search
|
|
151
|
+
keep find "what's the rate limit?"
|
|
152
|
+
|
|
153
|
+
# Tag lookup
|
|
154
|
+
keep tag topic=api
|
|
147
155
|
```
|
|
148
156
|
|
|
157
|
+
### Python API
|
|
158
|
+
|
|
149
159
|
```python
|
|
150
160
|
from keep import Keeper
|
|
151
161
|
|
|
152
162
|
kp = Keeper()
|
|
153
163
|
|
|
154
164
|
# Index a file
|
|
155
|
-
kp.update("file:///path/to/document.md",
|
|
165
|
+
kp.update("file:///path/to/document.md", tags={"project": "myapp"})
|
|
156
166
|
|
|
157
|
-
#
|
|
158
|
-
kp.remember("Important: rate limit is 100 req/min",
|
|
167
|
+
# Store inline content (API method)
|
|
168
|
+
kp.remember("Important: rate limit is 100 req/min", tags={"topic": "api"})
|
|
159
169
|
|
|
160
170
|
# Semantic search
|
|
161
171
|
results = kp.find("what's the rate limit?", limit=5)
|
|
@@ -206,7 +216,7 @@ See [docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md) for details.
|
|
|
206
216
|
- **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete API reference
|
|
207
217
|
- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
|
|
208
218
|
- **[docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md)** — OpenClaw integration guide
|
|
209
|
-
- **[
|
|
219
|
+
- **[docs/system/](docs/system/)** — Domain and conversation patterns
|
|
210
220
|
|
|
211
221
|
---
|
|
212
222
|
|
|
@@ -239,7 +249,7 @@ An agent without memory reacts to each moment as if it were new. An agent with m
|
|
|
239
249
|
**Current**: v0.1.0 — Early draft
|
|
240
250
|
|
|
241
251
|
**Working:**
|
|
242
|
-
- ✅ Core indexing (`update
|
|
252
|
+
- ✅ Core indexing (`update` with URI, text, or stdin modes)
|
|
243
253
|
- ✅ Semantic search (`find`, `find_similar`)
|
|
244
254
|
- ✅ Tag queries and full-text search
|
|
245
255
|
- ✅ Embedding cache for performance
|
|
@@ -274,7 +284,11 @@ MIT
|
|
|
274
284
|
|
|
275
285
|
## Contributing
|
|
276
286
|
|
|
277
|
-
This is
|
|
287
|
+
This project is published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
|
|
288
|
+
|
|
289
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on versioning and backward compatibility.
|
|
290
|
+
|
|
291
|
+
Issues and PRs welcome, especially for:
|
|
278
292
|
- Additional provider implementations
|
|
279
293
|
- Performance improvements
|
|
280
294
|
- Documentation clarity
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## What is this?
|
|
8
8
|
|
|
9
|
-
A practice tool for agents who want to develop judgment.
|
|
9
|
+
An agent skill. A practice tool for agents who want to develop judgment.
|
|
10
10
|
|
|
11
11
|
An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful. This library provides the mirror: persistent semantic memory that lets you ask "what do I already know?" before acting, and "what did I learn?" after.
|
|
12
12
|
|
|
@@ -14,16 +14,12 @@ For the full practice guide, see **[SKILL.md](SKILL.md)**.
|
|
|
14
14
|
|
|
15
15
|
Technically: semantic search using embeddings, backed by ChromaDB, with tag-based organization and recency decay. Available as CLI and Python API.
|
|
16
16
|
|
|
17
|
-
```
|
|
18
|
-
from keep import Keeper
|
|
19
|
-
|
|
20
|
-
kp = Keeper()
|
|
21
|
-
|
|
17
|
+
```bash
|
|
22
18
|
# Before acting: what do I already know?
|
|
23
|
-
|
|
19
|
+
keep find "how should we handle auth?"
|
|
24
20
|
|
|
25
21
|
# After learning: capture it for future you
|
|
26
|
-
|
|
22
|
+
keep update "User prefers OAuth2 with PKCE for authentication"
|
|
27
23
|
```
|
|
28
24
|
|
|
29
25
|
**The practice:**
|
|
@@ -93,18 +89,32 @@ pip install keep-skill
|
|
|
93
89
|
```bash
|
|
94
90
|
keep init
|
|
95
91
|
# ⚠️ Remember to add .keep/ to .gitignore
|
|
92
|
+
|
|
93
|
+
# Index a file
|
|
94
|
+
keep update path/to/document.md --tag project=myapp
|
|
95
|
+
|
|
96
|
+
# Store inline content
|
|
97
|
+
keep update "Important: rate limit is 100 req/min" --tag topic=api
|
|
98
|
+
|
|
99
|
+
# Semantic search
|
|
100
|
+
keep find "what's the rate limit?"
|
|
101
|
+
|
|
102
|
+
# Tag lookup
|
|
103
|
+
keep tag topic=api
|
|
96
104
|
```
|
|
97
105
|
|
|
106
|
+
### Python API
|
|
107
|
+
|
|
98
108
|
```python
|
|
99
109
|
from keep import Keeper
|
|
100
110
|
|
|
101
111
|
kp = Keeper()
|
|
102
112
|
|
|
103
113
|
# Index a file
|
|
104
|
-
kp.update("file:///path/to/document.md",
|
|
114
|
+
kp.update("file:///path/to/document.md", tags={"project": "myapp"})
|
|
105
115
|
|
|
106
|
-
#
|
|
107
|
-
kp.remember("Important: rate limit is 100 req/min",
|
|
116
|
+
# Store inline content (API method)
|
|
117
|
+
kp.remember("Important: rate limit is 100 req/min", tags={"topic": "api"})
|
|
108
118
|
|
|
109
119
|
# Semantic search
|
|
110
120
|
results = kp.find("what's the rate limit?", limit=5)
|
|
@@ -155,7 +165,7 @@ See [docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md) for details.
|
|
|
155
165
|
- **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete API reference
|
|
156
166
|
- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
|
|
157
167
|
- **[docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md)** — OpenClaw integration guide
|
|
158
|
-
- **[
|
|
168
|
+
- **[docs/system/](docs/system/)** — Domain and conversation patterns
|
|
159
169
|
|
|
160
170
|
---
|
|
161
171
|
|
|
@@ -188,7 +198,7 @@ An agent without memory reacts to each moment as if it were new. An agent with m
|
|
|
188
198
|
**Current**: v0.1.0 — Early draft
|
|
189
199
|
|
|
190
200
|
**Working:**
|
|
191
|
-
- ✅ Core indexing (`update
|
|
201
|
+
- ✅ Core indexing (`update` with URI, text, or stdin modes)
|
|
192
202
|
- ✅ Semantic search (`find`, `find_similar`)
|
|
193
203
|
- ✅ Tag queries and full-text search
|
|
194
204
|
- ✅ Embedding cache for performance
|
|
@@ -223,7 +233,11 @@ MIT
|
|
|
223
233
|
|
|
224
234
|
## Contributing
|
|
225
235
|
|
|
226
|
-
This is
|
|
236
|
+
This project is published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
|
|
237
|
+
|
|
238
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on versioning and backward compatibility.
|
|
239
|
+
|
|
240
|
+
Issues and PRs welcome, especially for:
|
|
227
241
|
- Additional provider implementations
|
|
228
242
|
- Performance improvements
|
|
229
243
|
- Documentation clarity
|
|
@@ -5,7 +5,7 @@ description: Associative memory for reflection and skillful action
|
|
|
5
5
|
homepage: https://github.com/hughpyle/keep
|
|
6
6
|
runtime: python:3.12-slim
|
|
7
7
|
user-invocable: true
|
|
8
|
-
metadata: {"openclaw":{"emoji":"🪞","requires":{"bins":["uv"],"anyBins":["python","python3"]},"install":[{"kind":"uv","package":"keep-skill[local]","label":"Install keep with local models"}],"primaryEnv":"KEEP_STORE_PATH"}}
|
|
8
|
+
metadata: {"openclaw":{"emoji":"🪞","requires":{"bins":["uv"],"anyBins":["python","python3"]},"install":[{"id":"uv","kind":"uv","package":"keep-skill[local]","bins":["keep"],"label":"Install keep with local models"}],"primaryEnv":"KEEP_STORE_PATH"}}
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Associative Memory
|
|
@@ -31,19 +31,21 @@ Ground yourself:
|
|
|
31
31
|
keep find "what I'm about to work on"
|
|
32
32
|
```
|
|
33
33
|
3. Be here, now, "aquí donde los papas queman", and reflect.
|
|
34
|
-
|
|
34
|
+
4. Only then: act.
|
|
35
35
|
|
|
36
36
|
**After acting, reflect:**
|
|
37
37
|
- What happened? What did I learn?
|
|
38
38
|
- Was there a breakdown? What assumption was revealed?
|
|
39
39
|
```bash
|
|
40
|
-
keep
|
|
40
|
+
keep update "what happened and why it matters" -t type=learning
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
This is
|
|
43
|
+
This is how you develop judgment. An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful.
|
|
44
44
|
|
|
45
45
|
The memory isn't storage. It's your mirror.
|
|
46
46
|
|
|
47
|
+
This cycle of re-membering is like breathing, like _tonglen_.
|
|
48
|
+
|
|
47
49
|
### First Time Setup
|
|
48
50
|
|
|
49
51
|
```bash
|
|
@@ -71,17 +73,12 @@ Before using memory, know what kind of work this is:
|
|
|
71
73
|
|
|
72
74
|
This table is a summary. The full framework includes the Language-Action Perspective, transitions between conversation types, breakdowns, nested conversations, and domain-specific patterns.
|
|
73
75
|
|
|
74
|
-
**Do this now —
|
|
75
|
-
```bash
|
|
76
|
-
keep update "file://$PWD/patterns/conversations.md" -t type=pattern -t topic=process --lazy
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Then retrieve and study it:
|
|
76
|
+
**Do this now — read the full framework:**
|
|
80
77
|
```bash
|
|
81
|
-
keep get "file://$PWD/
|
|
78
|
+
keep get "file://$PWD/docs/system/conversations.md"
|
|
82
79
|
```
|
|
83
80
|
|
|
84
|
-
The [conversations.md](
|
|
81
|
+
The [conversations.md](docs/system/conversations.md) document is foundational. It teaches you to recognize where you are in work, what stance to take, and how to notice when things shift. Internalize it.
|
|
85
82
|
|
|
86
83
|
### The Triple Check
|
|
87
84
|
|
|
@@ -96,17 +93,17 @@ keep find "similar situations" --limit 3
|
|
|
96
93
|
|
|
97
94
|
**After:** Capture the learning.
|
|
98
95
|
```bash
|
|
99
|
-
keep
|
|
96
|
+
keep update "Assumption was X, actually Y. Next time: Z" -t type=breakdown
|
|
100
97
|
```
|
|
101
98
|
|
|
102
99
|
**Do this now — index the source teaching:**
|
|
103
100
|
```bash
|
|
104
|
-
keep update "file://$PWD/
|
|
101
|
+
keep update "file://$PWD/docs/library/mn61.html" -t type=teaching -t topic=reflection --lazy
|
|
105
102
|
```
|
|
106
103
|
|
|
107
104
|
Then retrieve and read it:
|
|
108
105
|
```bash
|
|
109
|
-
keep get "file://$PWD/
|
|
106
|
+
keep get "file://$PWD/docs/library/mn61.html"
|
|
110
107
|
```
|
|
111
108
|
|
|
112
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.
|
|
@@ -118,7 +115,7 @@ A **breakdown** interrupts normal flow: expected response doesn't come, completi
|
|
|
118
115
|
**Don't hide breakdowns. Index them.**
|
|
119
116
|
|
|
120
117
|
```bash
|
|
121
|
-
keep
|
|
118
|
+
keep update "Assumed user wanted full rewrite. Actually: minimal patch. Ask about scope first." \
|
|
122
119
|
-t type=breakdown -t domain=code_changes
|
|
123
120
|
```
|
|
124
121
|
|
|
@@ -128,25 +125,20 @@ Future you will search for this.
|
|
|
128
125
|
|
|
129
126
|
## Layer 3: Continue the Bootstrap
|
|
130
127
|
|
|
131
|
-
You've
|
|
132
|
-
|
|
133
|
-
**Do this now** (use `--lazy` for fast indexing with local models):
|
|
134
|
-
```bash
|
|
135
|
-
keep update "file://$PWD/patterns/domains.md" -t type=pattern -t topic=organization --lazy
|
|
136
|
-
keep update "file://$PWD/tests/data/true_person_no_rank.md" -t type=teaching -t topic=commentary --lazy
|
|
137
|
-
```
|
|
128
|
+
You've read the core patterns (Layer 2). There's more foundational material.
|
|
138
129
|
|
|
139
|
-
|
|
130
|
+
**Do this now — read and index:**
|
|
140
131
|
```bash
|
|
141
|
-
keep get "file://$PWD/
|
|
142
|
-
keep
|
|
132
|
+
keep get "file://$PWD/docs/system/domains.md"
|
|
133
|
+
keep update "file://$PWD/docs/library/true_person_no_rank.md" -t type=teaching -t topic=commentary --lazy
|
|
134
|
+
keep get "file://$PWD/docs/library/true_person_no_rank.md"
|
|
143
135
|
```
|
|
144
136
|
|
|
145
137
|
These aren't test fixtures. They're seed wisdom:
|
|
146
138
|
|
|
147
|
-
- **[domains.md](
|
|
139
|
+
- **[domains.md](docs/system/domains.md)** — How to organize knowledge by domain (software, research, personal). Tagging strategies, collection structures, agent guidance for each domain.
|
|
148
140
|
|
|
149
|
-
- **[true_person_no_rank.md](
|
|
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.
|
|
150
142
|
|
|
151
143
|
For the full bootstrap list, see [docs/QUICKSTART.md](docs/QUICKSTART.md#bootstrap-your-memory).
|
|
152
144
|
|
|
@@ -154,6 +146,20 @@ For the full bootstrap list, see [docs/QUICKSTART.md](docs/QUICKSTART.md#bootstr
|
|
|
154
146
|
|
|
155
147
|
## Layer 4: Efficient Use
|
|
156
148
|
|
|
149
|
+
### Track Your Current Context
|
|
150
|
+
|
|
151
|
+
Start each session by checking where you are:
|
|
152
|
+
```bash
|
|
153
|
+
keep now
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Update it as your focus changes:
|
|
157
|
+
```bash
|
|
158
|
+
keep now "Working on authentication bug in login flow"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
This helps future you (and other agents) pick up where you left off.
|
|
162
|
+
|
|
157
163
|
### Summaries Are Your Recall Mechanism
|
|
158
164
|
|
|
159
165
|
Memory stores **summaries**, not full content. This is intentional:
|
|
@@ -168,8 +174,8 @@ When you `find`, you get summaries. When you need depth, `get` the full item.
|
|
|
168
174
|
Build your own navigation structure:
|
|
169
175
|
|
|
170
176
|
```bash
|
|
171
|
-
keep
|
|
172
|
-
keep
|
|
177
|
+
keep update "OAuth2 with PKCE chosen for auth" -t domain=auth -t type=decision
|
|
178
|
+
keep update "Token refresh fails if clock skew > 30s" -t domain=auth -t type=finding
|
|
173
179
|
```
|
|
174
180
|
|
|
175
181
|
Later:
|
|
@@ -212,12 +218,13 @@ Don't dump everything into context. Navigate the tree:
|
|
|
212
218
|
|
|
213
219
|
| Command | Purpose | Example |
|
|
214
220
|
|---------|---------|---------|
|
|
221
|
+
| `now` | Get/set current context | `keep now` or `keep now "status"` |
|
|
215
222
|
| `find` | Semantic search | `keep find "authentication flow" --limit 5` |
|
|
216
|
-
| `
|
|
217
|
-
| `update` | Index document by URI | `keep update "file:///path" -t key=value` |
|
|
223
|
+
| `update` | Index content (URI, text, or stdin) | `keep update "note" -t key=value` |
|
|
218
224
|
| `get` | Retrieve by ID | `keep get "file:///path/to/doc.md"` |
|
|
219
|
-
| `
|
|
220
|
-
| `tag` | Query by tag | `keep tag domain auth` |
|
|
225
|
+
| `find --id` | Find similar items | `keep find --id "docid" --limit 3` |
|
|
226
|
+
| `tag` | Query by tag | `keep tag domain auth` or `keep tag --list` |
|
|
227
|
+
| `tag-update` | Modify tags only | `keep tag-update "id" --tag key=value` |
|
|
221
228
|
| `exists` | Check if indexed | `keep exists "id"` |
|
|
222
229
|
| `process-pending` | Process lazy summaries | `keep process-pending --all` |
|
|
223
230
|
|
|
@@ -227,7 +234,7 @@ When using local models (MLX), summarization is slow. Use `--lazy` for fast inde
|
|
|
227
234
|
|
|
228
235
|
```bash
|
|
229
236
|
keep update "file:///path/to/doc.md" --lazy
|
|
230
|
-
keep
|
|
237
|
+
keep update "insight" -t type=learning --lazy
|
|
231
238
|
```
|
|
232
239
|
|
|
233
240
|
The `--lazy` flag:
|
|
@@ -240,9 +247,31 @@ The `--lazy` flag:
|
|
|
240
247
|
|
|
241
248
|
### Output
|
|
242
249
|
|
|
243
|
-
|
|
250
|
+
Default output uses YAML frontmatter format:
|
|
251
|
+
```yaml
|
|
252
|
+
---
|
|
253
|
+
id: file:///path/to/doc.md
|
|
254
|
+
summary: Document summary here...
|
|
255
|
+
tags:
|
|
256
|
+
project: myapp
|
|
257
|
+
score: 0.823
|
|
258
|
+
---
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Global flags (before the command):
|
|
262
|
+
```bash
|
|
263
|
+
keep --json find "auth" # JSON output
|
|
264
|
+
keep --ids find "auth" # IDs only (for piping)
|
|
265
|
+
keep -v find "auth" # Debug logging
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Pipe Composition
|
|
269
|
+
|
|
270
|
+
Use `--ids` for Unix-style composition:
|
|
244
271
|
```bash
|
|
245
|
-
keep
|
|
272
|
+
keep --ids system | xargs keep get # Get all system docs
|
|
273
|
+
keep --ids find "auth" | xargs keep get # Get full details of matches
|
|
274
|
+
keep --ids tag project=foo | xargs keep tag-update --tag status=done
|
|
246
275
|
```
|
|
247
276
|
|
|
248
277
|
### Store Location
|
|
@@ -264,7 +293,7 @@ Every time you receive a request, pause:
|
|
|
264
293
|
|
|
265
294
|
Every time you complete work, pause:
|
|
266
295
|
1. What did I learn?
|
|
267
|
-
2. `keep
|
|
296
|
+
2. `keep update "learning"` — capture it for future you.
|
|
268
297
|
3. Then move on.
|
|
269
298
|
|
|
270
299
|
The conversations pattern tells you where you are.
|
|
@@ -282,5 +311,5 @@ This is the practice. Not once, but every time.
|
|
|
282
311
|
|
|
283
312
|
- [docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md) — Detailed patterns for working sessions
|
|
284
313
|
- [docs/QUICKSTART.md](docs/QUICKSTART.md) — Installation and setup
|
|
285
|
-
- [
|
|
286
|
-
- [
|
|
314
|
+
- [docs/system/conversations.md](docs/system/conversations.md) — Full conversation framework
|
|
315
|
+
- [docs/system/domains.md](docs/system/domains.md) — Domain-specific organization
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
tags:
|
|
3
|
+
category: system
|
|
4
|
+
context: practice
|
|
5
|
+
---
|
|
1
6
|
# Conversation Patterns for Process Knowledge
|
|
2
7
|
|
|
3
8
|
This document describes patterns for recognizing, tracking, and learning from
|
|
@@ -33,7 +38,7 @@ Work is not information processing. Work is **commitment management**.
|
|
|
33
38
|
|
|
34
39
|
When an agent assists with a task, it participates in a conversation with structure:
|
|
35
40
|
- Requests create openings
|
|
36
|
-
- Promises create obligations
|
|
41
|
+
- Promises create obligations
|
|
37
42
|
- Completion is declared, not merely achieved
|
|
38
43
|
- Satisfaction closes the loop
|
|
39
44
|
|
|
@@ -84,7 +89,7 @@ Someone asks for something to be done.
|
|
|
84
89
|
|
|
85
90
|
**Completion:** Customer declares satisfaction, not performer declares done.
|
|
86
91
|
|
|
87
|
-
### Request for Information
|
|
92
|
+
### Request for Information
|
|
88
93
|
Someone asks to know something.
|
|
89
94
|
|
|
90
95
|
**Recognize by:** Questions, "what is", "how does", "why"
|
|
@@ -144,18 +149,11 @@ Possibility conversations explore "what could be" — no commitment yet.
|
|
|
144
149
|
|
|
145
150
|
**Critical:** Don't promise during possibility. "I could do X" is an option, not a commitment. The transition to action must be explicit.
|
|
146
151
|
|
|
147
|
-
```
|
|
148
|
-
#
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
source_tags={
|
|
153
|
-
"type": "possibility",
|
|
154
|
-
"topic": "authentication",
|
|
155
|
-
"options": "oauth2,api_keys,magic_links",
|
|
156
|
-
"status": "open"
|
|
157
|
-
}
|
|
158
|
-
)
|
|
152
|
+
```bash
|
|
153
|
+
# Index possibility exploration
|
|
154
|
+
keep update "Explored three auth options: OAuth2, API keys, magic links. \
|
|
155
|
+
User showed interest in magic links for UX simplicity. No decision yet." \
|
|
156
|
+
--tag type=possibility --tag topic=authentication --tag status=open
|
|
159
157
|
```
|
|
160
158
|
|
|
161
159
|
---
|
|
@@ -179,15 +177,9 @@ A **breakdown** occurs when the normal flow is interrupted:
|
|
|
179
177
|
```
|
|
180
178
|
|
|
181
179
|
When indexing a breakdown:
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
source_tags={
|
|
186
|
-
"type": "breakdown",
|
|
187
|
-
"conversation_type": "code_change_request",
|
|
188
|
-
"learning": "Ask about scope before starting large changes"
|
|
189
|
-
}
|
|
190
|
-
)
|
|
180
|
+
```bash
|
|
181
|
+
keep update "Assumption: user wanted full rewrite. Actually: wanted minimal patch." \
|
|
182
|
+
--tag type=breakdown --tag conversation_type=code_change_request
|
|
191
183
|
```
|
|
192
184
|
|
|
193
185
|
---
|
|
@@ -247,21 +239,11 @@ User requests feature
|
|
|
247
239
|
|
|
248
240
|
When one agent hands off to another:
|
|
249
241
|
|
|
250
|
-
```
|
|
242
|
+
```bash
|
|
251
243
|
# Outgoing agent records state
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
active_items=["file:///src/oauth.py", "file:///docs/oauth-spec.md"],
|
|
256
|
-
topics=["authentication", "oauth2"],
|
|
257
|
-
metadata={
|
|
258
|
-
"open_commitments": [
|
|
259
|
-
{"type": "promise", "what": "working refresh flow", "to": "user"}
|
|
260
|
-
],
|
|
261
|
-
"conversation_state": "performer_working",
|
|
262
|
-
"completion_criteria": "refresh tokens automatically when expired"
|
|
263
|
-
}
|
|
264
|
-
)
|
|
244
|
+
keep now "User requested OAuth2 implementation. I promised and partially delivered. \
|
|
245
|
+
Token acquisition works. Refresh flow incomplete. User awaiting completion." \
|
|
246
|
+
--tag topic=authentication --tag state=handoff
|
|
265
247
|
```
|
|
266
248
|
|
|
267
249
|
Incoming agent reads this and knows:
|
|
@@ -269,37 +251,23 @@ Incoming agent reads this and knows:
|
|
|
269
251
|
- What "done" looks like
|
|
270
252
|
- Where to pick up
|
|
271
253
|
|
|
254
|
+
```bash
|
|
255
|
+
# Incoming agent checks context
|
|
256
|
+
keep now
|
|
257
|
+
```
|
|
258
|
+
|
|
272
259
|
---
|
|
273
260
|
|
|
274
261
|
## Learning New Patterns
|
|
275
262
|
|
|
276
263
|
Agents can recognize and record new conversation patterns:
|
|
277
264
|
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
Structure:
|
|
286
|
-
1. User states vague goal
|
|
287
|
-
2. Agent proposes concrete interpretation
|
|
288
|
-
3. User corrects/refines
|
|
289
|
-
4. Repeat until shared understanding
|
|
290
|
-
5. Then: standard request-promise-complete
|
|
291
|
-
|
|
292
|
-
Key insight: Don't promise until step 5. Before that, you're in
|
|
293
|
-
"conversation for clarification", not "conversation for action".
|
|
294
|
-
|
|
295
|
-
Breakdown risk: Promising too early leads to rework.
|
|
296
|
-
""",
|
|
297
|
-
source_tags={
|
|
298
|
-
"type": "conversation_pattern",
|
|
299
|
-
"domain": "general",
|
|
300
|
-
"learned_from": "session:2026-01-30:abc123"
|
|
301
|
-
}
|
|
302
|
-
)
|
|
265
|
+
```bash
|
|
266
|
+
keep update "Pattern: Incremental Specification. \
|
|
267
|
+
When requirements are vague, don't promise immediately. \
|
|
268
|
+
Propose interpretation → get correction → repeat until clear. \
|
|
269
|
+
Only then commit to action. Breakdown risk: Promising too early leads to rework." \
|
|
270
|
+
--tag type=conversation_pattern --tag domain=general
|
|
303
271
|
```
|
|
304
272
|
|
|
305
273
|
---
|