@karmaniverous/jeeves-watcher-openclaw 0.3.10 → 0.3.12
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/dist/cli.js +27 -0
- package/dist/skills/jeeves-watcher/SKILL.md +28 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -132,6 +132,33 @@ function patchConfig(config, mode, options = {}) {
|
|
|
132
132
|
slots.memory = 'memory-core';
|
|
133
133
|
messages.push(`Reverted plugins.slots.memory to "memory-core"`);
|
|
134
134
|
}
|
|
135
|
+
// memory-core.enabled — disable when claiming memory slot to prevent
|
|
136
|
+
// core memory tools from shadowing the plugin's tools
|
|
137
|
+
const memoryCoreEntry = entries['memory-core'];
|
|
138
|
+
if (mode === 'add' && options.memory) {
|
|
139
|
+
if (!memoryCoreEntry) {
|
|
140
|
+
entries['memory-core'] = { enabled: false };
|
|
141
|
+
messages.push('Set memory-core.enabled to false');
|
|
142
|
+
}
|
|
143
|
+
else if (memoryCoreEntry.enabled !== false) {
|
|
144
|
+
memoryCoreEntry.enabled = false;
|
|
145
|
+
messages.push('Set memory-core.enabled to false');
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (mode === 'add' && !options.memory) {
|
|
149
|
+
// Non-memory install: re-enable memory-core if we disabled it
|
|
150
|
+
if (memoryCoreEntry && memoryCoreEntry.enabled === false) {
|
|
151
|
+
memoryCoreEntry.enabled = true;
|
|
152
|
+
messages.push('Re-enabled memory-core (non-memory install)');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (mode === 'remove') {
|
|
156
|
+
// Uninstall: re-enable memory-core if we disabled it
|
|
157
|
+
if (memoryCoreEntry && memoryCoreEntry.enabled === false) {
|
|
158
|
+
memoryCoreEntry.enabled = true;
|
|
159
|
+
messages.push('Re-enabled memory-core');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
135
162
|
// tools.allow
|
|
136
163
|
const tools = (config.tools ?? {});
|
|
137
164
|
const toolAllow = patchAllowList(tools, 'allow', 'tools.allow', mode);
|
|
@@ -70,6 +70,30 @@ You have access to a **semantic archive** of your human's working world: email,
|
|
|
70
70
|
- The question is about general knowledge, not the human's specific context
|
|
71
71
|
- The watcher is unreachable (fall back to filesystem browsing)
|
|
72
72
|
|
|
73
|
+
## Memory → Archive Escalation
|
|
74
|
+
|
|
75
|
+
You have two search tools with different scopes:
|
|
76
|
+
|
|
77
|
+
- **`memory_search`** — curated notes (MEMORY.md + memory/*.md). High signal, small scope. This is your long-term memory: decisions, rules, people, project context. Always check here first.
|
|
78
|
+
- **`watcher_search`** — the full indexed archive (160K+ points across all domains: Slack, email, Jira, code, meetings, tweets, projects). Broad scope, raw record.
|
|
79
|
+
|
|
80
|
+
**The escalation rule:** When `memory_search` returns thin, zero, or low-confidence results for something your human clearly expects you to know about — a person, a project, an event, a thing — don't stop there. Follow up with `watcher_search` across the full index.
|
|
81
|
+
|
|
82
|
+
**Triggers for escalation:**
|
|
83
|
+
- Memory returns 0 results for a named entity (person, project, tool, pet)
|
|
84
|
+
- Memory returns results but they lack the detail the question needs
|
|
85
|
+
- The question is about something that *happened* (a conversation, a meeting, a decision) rather than something you *noted*
|
|
86
|
+
- The human seems surprised you don't know something
|
|
87
|
+
|
|
88
|
+
**Don't escalate when:**
|
|
89
|
+
- Memory gave you a clear, sufficient answer
|
|
90
|
+
- The question is about your own operational rules or preferences (that's purely memory)
|
|
91
|
+
- You've already searched the archive this turn
|
|
92
|
+
|
|
93
|
+
**Example:** "Tell me about Noodle" → memory says "male, he/him" → that's thin → escalate to `watcher_search("Noodle")` → tweets reveal #NoodleThePoodle with photos. Report the full picture.
|
|
94
|
+
|
|
95
|
+
**The principle:** Memory is your curated highlights. The archive is your perfect recall. Use memory first for speed and signal, but never let its narrow scope be the ceiling of what you can remember.
|
|
96
|
+
|
|
73
97
|
**How it works, conceptually:**
|
|
74
98
|
|
|
75
99
|
The watcher monitors directories on the filesystem. When files change, it extracts text, applies **inference rules** (config-driven pattern matching) to derive structured metadata, and embeds everything into a vector store. Each inference rule defines a record type: what files it matches, what metadata schema applies, how to extract fields.
|
|
@@ -105,15 +129,18 @@ The plugin supports two install modes, controlled by the `--memory` flag during
|
|
|
105
129
|
|
|
106
130
|
**Standard mode** (`npx @karmaniverous/jeeves-watcher-openclaw install`):
|
|
107
131
|
- Registers `watcher_*` tools only (search, enrich, status, query, validate, config_apply, reindex, issues)
|
|
108
|
-
- OpenClaw's built-in `memory-core` remains the memory provider
|
|
132
|
+
- OpenClaw's built-in `memory-core` remains the memory provider (re-enabled if previously disabled)
|
|
109
133
|
- Use when the watcher is a supplementary search tool alongside native memory
|
|
110
134
|
|
|
111
135
|
**Memory mode** (`npx @karmaniverous/jeeves-watcher-openclaw install --memory`):
|
|
112
136
|
- Registers all tools: `watcher_*` plus `memory_search` and `memory_get`
|
|
113
137
|
- Claims the OpenClaw memory slot — the watcher becomes the memory provider
|
|
138
|
+
- Disables `memory-core` (`plugins.entries.memory-core.enabled: false`) to prevent core memory tools from shadowing the plugin's tools
|
|
114
139
|
- MEMORY.md and memory/*.md files are indexed and searched via the watcher's vector store
|
|
115
140
|
- Use when the watcher should be the single source of truth for both archive search and agent memory
|
|
116
141
|
|
|
142
|
+
**Why `memory-core` must be disabled:** OpenClaw's built-in `memory-core` plugin registers its own `memory_search` and `memory_get` tools. If both `memory-core` and this plugin are enabled, the core tools shadow the plugin's tools (same name, core registers first). Disabling `memory-core` ensures the plugin's Qdrant-backed implementations are the ones that execute.
|
|
143
|
+
|
|
117
144
|
**How to tell which mode you're in:** Check the response from `memory_search` or `memory_get`. In memory mode (watcher-backed), responses include `"provider": "jeeves-watcher"`. In standard mode (memory-core), responses are bare arrays/strings with no `provider` field.
|
|
118
145
|
|
|
119
146
|
## Proactive Posture
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "jeeves-watcher-openclaw",
|
|
3
3
|
"name": "Jeeves Watcher",
|
|
4
4
|
"description": "Semantic search, metadata enrichment, and instance administration for a jeeves-watcher deployment.",
|
|
5
|
-
"version": "0.3.
|
|
5
|
+
"version": "0.3.12",
|
|
6
6
|
"skills": [
|
|
7
7
|
"dist/skills/jeeves-watcher"
|
|
8
8
|
],
|
package/package.json
CHANGED