@memtensor/memos-local-openclaw-plugin 1.0.4-beta.2 → 1.0.4-beta.20
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/.env.example +7 -0
- package/README.md +111 -44
- package/dist/capture/index.d.ts +1 -1
- package/dist/capture/index.d.ts.map +1 -1
- package/dist/capture/index.js +36 -2
- package/dist/capture/index.js.map +1 -1
- package/dist/client/connector.d.ts +6 -2
- package/dist/client/connector.d.ts.map +1 -1
- package/dist/client/connector.js +160 -26
- package/dist/client/connector.js.map +1 -1
- package/dist/client/hub.d.ts.map +1 -1
- package/dist/client/hub.js +22 -0
- package/dist/client/hub.js.map +1 -1
- package/dist/client/skill-sync.d.ts +7 -0
- package/dist/client/skill-sync.d.ts.map +1 -1
- package/dist/client/skill-sync.js +10 -0
- package/dist/client/skill-sync.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -3
- package/dist/config.js.map +1 -1
- package/dist/hub/server.d.ts +9 -0
- package/dist/hub/server.d.ts.map +1 -1
- package/dist/hub/server.js +500 -112
- package/dist/hub/server.js.map +1 -1
- package/dist/hub/user-manager.d.ts +11 -0
- package/dist/hub/user-manager.d.ts.map +1 -1
- package/dist/hub/user-manager.js +31 -3
- package/dist/hub/user-manager.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/ingest/chunker.d.ts +2 -1
- package/dist/ingest/chunker.d.ts.map +1 -1
- package/dist/ingest/chunker.js +14 -10
- package/dist/ingest/chunker.js.map +1 -1
- package/dist/ingest/providers/index.d.ts.map +1 -1
- package/dist/ingest/providers/index.js +37 -6
- package/dist/ingest/providers/index.js.map +1 -1
- package/dist/recall/engine.d.ts.map +1 -1
- package/dist/recall/engine.js +96 -1
- package/dist/recall/engine.js.map +1 -1
- package/dist/shared/llm-call.d.ts +1 -0
- package/dist/shared/llm-call.d.ts.map +1 -1
- package/dist/shared/llm-call.js +84 -9
- package/dist/shared/llm-call.js.map +1 -1
- package/dist/sharing/types.d.ts +1 -1
- package/dist/sharing/types.d.ts.map +1 -1
- package/dist/skill/evolver.d.ts +4 -0
- package/dist/skill/evolver.d.ts.map +1 -1
- package/dist/skill/evolver.js +59 -5
- package/dist/skill/evolver.js.map +1 -1
- package/dist/skill/generator.d.ts +2 -0
- package/dist/skill/generator.d.ts.map +1 -1
- package/dist/skill/generator.js +45 -3
- package/dist/skill/generator.js.map +1 -1
- package/dist/skill/installer.d.ts +26 -0
- package/dist/skill/installer.d.ts.map +1 -1
- package/dist/skill/installer.js +80 -4
- package/dist/skill/installer.js.map +1 -1
- package/dist/skill/upgrader.d.ts +2 -0
- package/dist/skill/upgrader.d.ts.map +1 -1
- package/dist/skill/upgrader.js +139 -1
- package/dist/skill/upgrader.js.map +1 -1
- package/dist/skill/validator.d.ts +3 -0
- package/dist/skill/validator.d.ts.map +1 -1
- package/dist/skill/validator.js +75 -0
- package/dist/skill/validator.js.map +1 -1
- package/dist/storage/ensure-binding.d.ts +12 -0
- package/dist/storage/ensure-binding.d.ts.map +1 -0
- package/dist/storage/ensure-binding.js +53 -0
- package/dist/storage/ensure-binding.js.map +1 -0
- package/dist/storage/sqlite.d.ts +115 -20
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +458 -110
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/telemetry.d.ts +12 -5
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +156 -40
- package/dist/telemetry.js.map +1 -1
- package/dist/tools/memory-search.d.ts +3 -1
- package/dist/tools/memory-search.d.ts.map +1 -1
- package/dist/tools/memory-search.js +3 -1
- package/dist/tools/memory-search.js.map +1 -1
- package/dist/types.d.ts +11 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/viewer/html.d.ts.map +1 -1
- package/dist/viewer/html.js +2952 -910
- package/dist/viewer/html.js.map +1 -1
- package/dist/viewer/server.d.ts +39 -8
- package/dist/viewer/server.d.ts.map +1 -1
- package/dist/viewer/server.js +1198 -227
- package/dist/viewer/server.js.map +1 -1
- package/index.ts +774 -74
- package/openclaw.plugin.json +2 -2
- package/package.json +3 -2
- package/scripts/postinstall.cjs +1 -1
- package/skill/memos-memory-guide/SKILL.md +64 -26
- package/src/capture/index.ts +40 -1
- package/src/client/connector.ts +161 -28
- package/src/client/hub.ts +18 -0
- package/src/client/skill-sync.ts +14 -0
- package/src/config.ts +2 -3
- package/src/hub/server.ts +481 -107
- package/src/hub/user-manager.ts +48 -8
- package/src/index.ts +10 -2
- package/src/ingest/chunker.ts +19 -13
- package/src/ingest/providers/index.ts +41 -7
- package/src/recall/engine.ts +89 -1
- package/src/shared/llm-call.ts +99 -10
- package/src/sharing/types.ts +1 -1
- package/src/skill/evolver.ts +63 -6
- package/src/skill/generator.ts +44 -5
- package/src/skill/installer.ts +107 -4
- package/src/skill/upgrader.ts +139 -1
- package/src/skill/validator.ts +79 -0
- package/src/storage/ensure-binding.ts +52 -0
- package/src/storage/sqlite.ts +498 -137
- package/src/telemetry.ts +172 -41
- package/src/tools/memory-search.ts +2 -1
- package/src/types.ts +12 -2
- package/src/viewer/html.ts +2952 -910
- package/src/viewer/server.ts +1109 -212
package/.env.example
CHANGED
|
@@ -23,3 +23,10 @@ SUMMARIZER_TEMPERATURE=0
|
|
|
23
23
|
# No memory content, queries, or personal data is ever sent — only tool names, latencies, and version info.
|
|
24
24
|
# Enabled by default. Set to false to opt-out.
|
|
25
25
|
# TELEMETRY_ENABLED=false
|
|
26
|
+
#
|
|
27
|
+
# Telemetry backend credentials (for maintainers / CI only).
|
|
28
|
+
# End users do NOT need to set these — they are bundled into the npm package at publish time.
|
|
29
|
+
# If not set and telemetry.credentials.json is absent, telemetry is silently disabled.
|
|
30
|
+
# MEMOS_ARMS_ENDPOINT=https://your-arms-endpoint.log.aliyuncs.com/rum/web/v2?workspace=...&service_id=...
|
|
31
|
+
# MEMOS_ARMS_PID=your-arms-pid
|
|
32
|
+
# MEMOS_ARMS_ENV=prod
|
package/README.md
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
[](https://nodejs.org/)
|
|
6
6
|
[](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-openclaw)
|
|
7
7
|
|
|
8
|
-
Persistent local conversation memory for [OpenClaw](https://github.com/nicepkg/openclaw) AI Agents. Every conversation is automatically captured, semantically indexed, and instantly recallable — with **task summarization & skill evolution**, **
|
|
8
|
+
Persistent local conversation memory for [OpenClaw](https://github.com/nicepkg/openclaw) AI Agents. Every conversation is automatically captured, semantically indexed, and instantly recallable — with **task summarization & skill evolution**, **team sharing for memories and skills**, and **multi-agent collaborative memory**.
|
|
9
9
|
|
|
10
|
-
**Full-write | Hybrid Search | Task Summarization & Skill Evolution |
|
|
10
|
+
**Full-write | Hybrid Search | Task Summarization & Skill Evolution | Team Sharing | Memory Viewer**
|
|
11
11
|
|
|
12
|
-
>
|
|
12
|
+
> 🌐 [Homepage](https://memos-claw.openmem.net) · 📖 [Documentation](https://memos-claw.openmem.net/docs/) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-openclaw-plugin) · 🛠 [Troubleshooting](https://memos-claw.openmem.net/docs/troubleshooting.html)
|
|
13
13
|
|
|
14
14
|
## Why MemOS
|
|
15
15
|
|
|
@@ -48,13 +48,17 @@ Persistent local conversation memory for [OpenClaw](https://github.com/nicepkg/o
|
|
|
48
48
|
- **Dedicated model** — Optional separate LLM model for skill generation (e.g., Claude 4.6 for higher quality)
|
|
49
49
|
- **LLM fallback chain** — `skillSummarizer` → `summarizer` → OpenClaw native model (auto-detected from `openclaw.json`). If all configured models fail, the next in chain is tried automatically
|
|
50
50
|
|
|
51
|
-
###
|
|
52
|
-
- **Hub-
|
|
53
|
-
- **
|
|
54
|
-
- **Admin approval flow** —
|
|
55
|
-
- **
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
51
|
+
### Team Sharing (v4)
|
|
52
|
+
- **Hub-Client architecture** — One Hub stores shared data; clients keep private data local and query the Hub on demand. Roles can be switched dynamically with proper confirmation and cleanup
|
|
53
|
+
- **Hub port auto-derivation** — Hub port derived from gateway port (`gatewayPort + 11`) to avoid conflicts in multi-instance setups; automatic port retry on `EADDRINUSE`
|
|
54
|
+
- **Admin approval flow** — Join requests require admin approval; admins can promote, demote, and remove members (with self-removal prevention)
|
|
55
|
+
- **Notification system** — Role change notifications (promoted/demoted), resource sharing notifications (shared/unshared/removed) with localized messages, Hub shutdown alerts
|
|
56
|
+
- **Scoped retrieval** — `memory_search` and `skill_search` support `local`, `group`, and `all` search scopes
|
|
57
|
+
- **Task sharing** — `task_share` / `task_unshare` push or remove task memories from the team without changing local private storage
|
|
58
|
+
- **Skill publish/pull** — Skills can be published to team visibility scopes and pulled back locally as full bundles for offline reuse
|
|
59
|
+
- **Graceful state transitions** — Client-to-Hub switch triggers confirmation, pending request withdrawal, connection cleanup, and automatic restart
|
|
60
|
+
- **Multi-instance support** — Viewer port, Hub port, sessions, and databases are all isolated per instance; supports running multiple OpenClaw instances on the same machine
|
|
61
|
+
- **Viewer integration** — Full team management UI: connection state, member management, pending approvals, scoped search, task share controls, skill pull, notification feed, and setup guide
|
|
58
62
|
|
|
59
63
|
### Memory Migration — Reconnect 🦐
|
|
60
64
|
- **One-click import** — Seamlessly migrate OpenClaw's native built-in memories (SQLite + JSONL) into the MemOS intelligent memory system
|
|
@@ -87,35 +91,29 @@ Persistent local conversation memory for [OpenClaw](https://github.com/nicepkg/o
|
|
|
87
91
|
|
|
88
92
|
### 1. Install
|
|
89
93
|
|
|
90
|
-
|
|
94
|
+
One command installs the plugin, all dependencies, and build tools automatically. Supports auto-upgrade to the latest version.
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
**macOS / Linux:**
|
|
93
97
|
|
|
94
98
|
```bash
|
|
95
|
-
|
|
96
|
-
xcode-select --install
|
|
97
|
-
|
|
98
|
-
# Linux (Ubuntu / Debian)
|
|
99
|
-
sudo apt install build-essential python3
|
|
99
|
+
curl -fsSL https://cdn.memtensor.com.cn/memos-local-openclaw/install.sh | bash
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
**Windows (PowerShell):**
|
|
103
|
+
|
|
104
|
+
```powershell
|
|
105
|
+
powershell -c "irm https://cdn.memtensor.com.cn/memos-local-openclaw/install.ps1 | iex"
|
|
106
|
+
```
|
|
107
107
|
|
|
108
|
-
**
|
|
108
|
+
**Alternative — Install via OpenClaw CLI:**
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
111
|
openclaw plugins install @memtensor/memos-local-openclaw-plugin
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
The plugin is installed under `~/.openclaw/extensions/memos-local-openclaw-plugin` and registered as `memos-local-openclaw-plugin`. Dependencies and `better-sqlite3` native module are built automatically during installation.
|
|
115
|
-
|
|
116
114
|
> **Note:** The Memory Viewer starts only when the **OpenClaw gateway** is running. After install, **configure** `openclaw.json` (step 2) and **start the gateway** (step 3); the viewer will then be available at `http://127.0.0.1:18799`.
|
|
117
115
|
>
|
|
118
|
-
> **Installation failed?**
|
|
116
|
+
> **Installation failed?** See the [Troubleshooting](#troubleshooting) section, the [detailed troubleshooting guide](https://memos-claw.openmem.net/docs/troubleshooting.html), or the [official better-sqlite3 troubleshooting docs](https://github.com/WiseLibs/better-sqlite3/blob/master/docs/troubleshooting.md). You can also try manually rebuilding the native module:
|
|
119
117
|
> ```bash
|
|
120
118
|
> cd ~/.openclaw/extensions/memos-local-openclaw-plugin && npm rebuild better-sqlite3
|
|
121
119
|
> ```
|
|
@@ -259,15 +257,84 @@ memos-local: started (embedding: openai_compatible)
|
|
|
259
257
|
╚══════════════════════════════════════════╝
|
|
260
258
|
```
|
|
261
259
|
|
|
262
|
-
##
|
|
260
|
+
## Team Sharing (v4)
|
|
261
|
+
|
|
262
|
+
Team Sharing turns multiple OpenClaw instances into a collaborative memory network. One instance serves as the **Hub** (team server), others connect as **Clients**. Private data stays local; only explicitly shared tasks, memories, and skills are visible to the team.
|
|
263
|
+
|
|
264
|
+
### Key Capabilities
|
|
265
|
+
|
|
266
|
+
| Capability | Description |
|
|
267
|
+
|---|---|
|
|
268
|
+
| **Hub / Client architecture** | One Hub stores shared data; clients keep private data local and query the Hub on demand |
|
|
269
|
+
| **Hub port auto-derivation** | Hub port is automatically derived from the gateway port (`gatewayPort + 11`), avoiding port conflicts in multi-instance setups. Explicit `hub.port` config overrides this. |
|
|
270
|
+
| **Port retry on conflict** | If the derived/configured Hub port is in use (`EADDRINUSE`), the server automatically retries up to 3 consecutive ports |
|
|
271
|
+
| **Admin approval flow** | New members submit join requests; admin approves/rejects from the Viewer |
|
|
272
|
+
| **Self-removal prevention** | Admins cannot accidentally remove themselves from the team |
|
|
273
|
+
| **Role change notifications** | When an admin promotes/demotes a member, the affected user receives a notification |
|
|
274
|
+
| **Resource notifications** | Shared/unshared/removed resources trigger localized notifications with resource names |
|
|
275
|
+
| **Pending withdrawal** | Clients can cancel pending join requests when switching roles or disabling sharing |
|
|
276
|
+
| **Graceful role transitions** | Switching from Client to Hub (or vice versa) triggers confirmation prompts, proper cleanup of remote connections, and restart |
|
|
277
|
+
| **Hub shutdown notification** | When a Hub owner disables sharing, all connected clients receive a `hub_shutdown` notification |
|
|
278
|
+
| **Leave team** | Clients can leave a team with a confirmation dialog; the Hub is notified and the client's data is cleaned up |
|
|
279
|
+
| **Scoped retrieval** | `memory_search` and `skill_search` support `local`, `group`, and `all` search scopes |
|
|
280
|
+
| **Task sharing** | Push/remove task memories to/from the team |
|
|
281
|
+
| **Skill publish/pull** | Publish skills to team visibility; pull team skills locally as full bundles for offline use |
|
|
282
|
+
|
|
283
|
+
### Quick Setup
|
|
284
|
+
|
|
285
|
+
**Option A — Start a Hub (team server):**
|
|
286
|
+
|
|
287
|
+
```jsonc
|
|
288
|
+
{
|
|
289
|
+
"config": {
|
|
290
|
+
"sharing": {
|
|
291
|
+
"enabled": true,
|
|
292
|
+
"role": "hub",
|
|
293
|
+
"hub": {
|
|
294
|
+
"teamName": "My Team",
|
|
295
|
+
"teamToken": "${MEMOS_TEAM_TOKEN}"
|
|
296
|
+
// port is auto-derived; set explicitly only if needed
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Option B — Join as Client:**
|
|
304
|
+
|
|
305
|
+
```jsonc
|
|
306
|
+
{
|
|
307
|
+
"config": {
|
|
308
|
+
"sharing": {
|
|
309
|
+
"enabled": true,
|
|
310
|
+
"role": "client",
|
|
311
|
+
"client": {
|
|
312
|
+
"hubAddress": "192.168.1.100:18800"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
You can also configure sharing entirely through the **Viewer → Settings → Team Sharing** panel — no need to edit `openclaw.json` manually.
|
|
320
|
+
|
|
321
|
+
### Multi-Instance Deployment
|
|
322
|
+
|
|
323
|
+
When running multiple OpenClaw instances on the same machine (e.g., personal + work):
|
|
324
|
+
|
|
325
|
+
- **Viewer port**: Each instance derives its Viewer port from the gateway port, so they won't conflict
|
|
326
|
+
- **Hub port**: Auto-derived as `gatewayPort + 11` (e.g., gateway `18789` → Hub `18800`, gateway `19001` → Hub `19012`)
|
|
327
|
+
- **Session isolation**: Each instance uses a separate cookie name based on its Viewer port, so multiple Viewers can be logged in simultaneously
|
|
328
|
+
- **Database isolation**: Each instance uses its own `memos.db` under its respective state directory
|
|
329
|
+
|
|
330
|
+
### Viewer Team Sharing Panel
|
|
263
331
|
|
|
264
|
-
|
|
332
|
+
The **Settings → Team Sharing** panel provides a complete management interface:
|
|
265
333
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
5. **Share tasks** from the Tasks view and **pull skills** from the Skills view.
|
|
334
|
+
- **Hub mode**: Team name, member count, active members, pending approvals, admin controls (approve/reject/promote/demote/remove)
|
|
335
|
+
- **Client mode**: Connection status, team info, leave team button, notification feed
|
|
336
|
+
- **Setup guide cards**: Always visible — choose "Host a Team" or "Join a Team" with step-by-step instructions
|
|
337
|
+
- **Real-time notifications**: Role changes, resource sharing events, Hub status changes
|
|
271
338
|
|
|
272
339
|
For the full end-user workflow, see [`HUB-SHARING-GUIDE.md`](./HUB-SHARING-GUIDE.md).
|
|
273
340
|
|
|
@@ -373,26 +440,26 @@ Query → FTS5 + Vector dual recall → RRF Fusion → MMR Rerank
|
|
|
373
440
|
|
|
374
441
|
## Agent Tools
|
|
375
442
|
|
|
376
|
-
The plugin provides local memory tools plus v4
|
|
443
|
+
The plugin provides local memory tools plus v4 team-sharing tools, and auto-installs the **memos-memory-guide** skill:
|
|
377
444
|
|
|
378
445
|
| Tool | Purpose | When to Use |
|
|
379
446
|
|------|---------|-------------|
|
|
380
447
|
| `auto_recall` | Automatically injects relevant memories into agent context each turn (via `before_agent_start` hook) | Runs automatically — no manual call needed |
|
|
381
|
-
| `memory_search` | Search memories with `scope: local | group | all`;
|
|
448
|
+
| `memory_search` | Search memories with `scope: local | group | all`; team hits are returned separately from local hits | When auto-recall returned nothing or you need local + shared context |
|
|
382
449
|
| `memory_get` | Get full original text of a local memory chunk | When you need to verify exact details from a local search hit |
|
|
383
450
|
| `memory_timeline` | Surrounding conversation around a local chunk | When you need the exact dialogue before/after a local hit |
|
|
384
|
-
| `network_memory_detail` | Fetch full content for a
|
|
451
|
+
| `network_memory_detail` | Fetch full content for a team memory hit | When a shared search hit looks relevant and you need full detail |
|
|
385
452
|
| `memory_write_public` | Write a memory to the local shared public space (`owner="public"`) | When the agent discovers knowledge all local agents should access |
|
|
386
453
|
| `task_summary` | Full structured summary of a completed task | When a hit has `task_id` and you need the full story |
|
|
387
|
-
| `task_share` | Push a local task and its memories to the
|
|
388
|
-
| `task_unshare` | Remove a shared task from the
|
|
454
|
+
| `task_share` | Push a local task and its memories to the team | When a task should be searchable by your group or the whole team |
|
|
455
|
+
| `task_unshare` | Remove a shared task from the team | When a task should stop being shared |
|
|
389
456
|
| `skill_get` | Get local skill content by `skillId` or `taskId` | When a hit has a linked task/skill and you want the reusable guide |
|
|
390
457
|
| `skill_install` | Install a skill into the agent workspace | When the skill should be permanently available for future turns |
|
|
391
|
-
| `skill_search` | Search skills with `scope: local | group | all` | When an agent needs to discover local or
|
|
392
|
-
| `skill_publish` | Publish a skill to
|
|
458
|
+
| `skill_search` | Search skills with `scope: local | group | all` | When an agent needs to discover local or team-shared skills |
|
|
459
|
+
| `skill_publish` | Publish a skill to team sharing or local public visibility, depending on scope | When a skill should be shared with teammates |
|
|
393
460
|
| `skill_unpublish` | Make a previously shared skill private again | When a skill should no longer be shared |
|
|
394
|
-
| `network_skill_pull` | Pull a
|
|
395
|
-
| `network_team_info` | Show current
|
|
461
|
+
| `network_skill_pull` | Pull a team skill bundle into local storage | When a teammate's shared skill should be usable locally/offline |
|
|
462
|
+
| `network_team_info` | Show current team server URL, user, role, and groups | When you need to inspect current team connection state |
|
|
396
463
|
| `memory_viewer` | Get the URL of the Memory Viewer web UI | When the user asks where to view or manage their memories |
|
|
397
464
|
|
|
398
465
|
### Search Parameters
|
|
@@ -420,7 +487,7 @@ Open `http://127.0.0.1:18799` in your browser after starting the gateway.
|
|
|
420
487
|
| **Analytics** | Daily write/read activity charts, memory/task/skill totals, role breakdown |
|
|
421
488
|
| **Logs** | Tool call log (memory_search, auto_recall, memory_add, etc.) with input/output, duration, and tool filter; auto-refresh |
|
|
422
489
|
| **Import** | 🦐 OpenClaw native memory migration — scan, one-click import with real-time SSE progress, smart dedup, pause/resume; post-processing for task & skill generation |
|
|
423
|
-
| **Settings** | Online configuration plus **
|
|
490
|
+
| **Settings** | Online configuration plus **Team Sharing** status, current role, team/groups, and admin pending-user actions |
|
|
424
491
|
|
|
425
492
|
**Viewer won't open?**
|
|
426
493
|
|
|
@@ -521,7 +588,7 @@ TELEMETRY_ENABLED=false
|
|
|
521
588
|
|
|
522
589
|
### Technical details
|
|
523
590
|
|
|
524
|
-
- Uses
|
|
591
|
+
- Uses Aliyun ARMS RUM for event collection
|
|
525
592
|
- Each installation gets a random anonymous UUID (stored at `~/.openclaw/memos-local/.anonymous-id`)
|
|
526
593
|
- Events are batched and sent in the background; failures are silently ignored
|
|
527
594
|
- The anonymous ID is never linked to any personal information
|
package/dist/capture/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare function captureMessages(messages: Array<{
|
|
|
10
10
|
role: string;
|
|
11
11
|
content: string;
|
|
12
12
|
toolName?: string;
|
|
13
|
-
}>, sessionKey: string, turnId: string, evidenceTag: string, log: Logger, owner?: string): ConversationMessage[];
|
|
13
|
+
}>, sessionKey: string, turnId: string, evidenceTag: string, log: Logger, owner?: string, userSearchTime?: number): ConversationMessage[];
|
|
14
14
|
/**
|
|
15
15
|
* Strip OpenClaw-injected inbound metadata blocks from user messages.
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAQ,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAQ,MAAM,EAAE,MAAM,UAAU,CAAC;AAsClE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,mBAAmB,EAAE,CAmDvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+CzD"}
|
package/dist/capture/index.js
CHANGED
|
@@ -26,6 +26,7 @@ const INBOUND_META_SENTINELS = [
|
|
|
26
26
|
];
|
|
27
27
|
const SENTINEL_FAST_RE = new RegExp(INBOUND_META_SENTINELS.map((s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"));
|
|
28
28
|
const ENVELOPE_PREFIX_RE = /^\s*\[(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}(?::\d{2})?\s+[A-Z]{3}[+-]\d{1,2}\]\s*/;
|
|
29
|
+
const ENVELOPE_EXTRACT_RE = /^\s*\[(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}(?::\d{2})?)\s+([A-Z]{3}[+-]\d{1,2})\]/;
|
|
29
30
|
/**
|
|
30
31
|
* Extract writable messages from a conversation turn.
|
|
31
32
|
*
|
|
@@ -33,9 +34,10 @@ const ENVELOPE_PREFIX_RE = /^\s*\[(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s+\d{4}-\d{2}-
|
|
|
33
34
|
* prefixes (Sender info, conversation context, etc.) which are not user content.
|
|
34
35
|
* Only skips: system prompts and our own memory tool results (prevents loop).
|
|
35
36
|
*/
|
|
36
|
-
function captureMessages(messages, sessionKey, turnId, evidenceTag, log, owner) {
|
|
37
|
+
function captureMessages(messages, sessionKey, turnId, evidenceTag, log, owner, userSearchTime) {
|
|
37
38
|
const now = Date.now();
|
|
38
39
|
const result = [];
|
|
40
|
+
let lastTimestamp = 0;
|
|
39
41
|
for (const msg of messages) {
|
|
40
42
|
const role = msg.role;
|
|
41
43
|
if (SKIP_ROLES.has(role))
|
|
@@ -55,14 +57,25 @@ function captureMessages(messages, sessionKey, turnId, evidenceTag, log, owner)
|
|
|
55
57
|
content = stripInboundMetadata(content);
|
|
56
58
|
}
|
|
57
59
|
else {
|
|
60
|
+
content = stripThinkingTags(content);
|
|
58
61
|
content = stripEvidenceWrappers(content, evidenceTag);
|
|
59
62
|
}
|
|
60
63
|
if (!content.trim())
|
|
61
64
|
continue;
|
|
65
|
+
let ts;
|
|
66
|
+
if (role === "user" && userSearchTime && userSearchTime > 0) {
|
|
67
|
+
ts = userSearchTime;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
ts = now;
|
|
71
|
+
}
|
|
72
|
+
if (ts <= lastTimestamp)
|
|
73
|
+
ts = lastTimestamp + 1;
|
|
74
|
+
lastTimestamp = ts;
|
|
62
75
|
result.push({
|
|
63
76
|
role,
|
|
64
77
|
content,
|
|
65
|
-
timestamp:
|
|
78
|
+
timestamp: ts,
|
|
66
79
|
turnId,
|
|
67
80
|
sessionKey,
|
|
68
81
|
toolName: role === "tool" ? msg.toolName : undefined,
|
|
@@ -123,6 +136,27 @@ function stripInboundMetadata(text) {
|
|
|
123
136
|
}
|
|
124
137
|
return stripEnvelopePrefix(result.join("\n")).trim();
|
|
125
138
|
}
|
|
139
|
+
/** Strip <think…>…</think> blocks emitted by DeepSeek-style reasoning models. */
|
|
140
|
+
const THINKING_TAG_RE = /<think[\s>][\s\S]*?<\/think>\s*/gi;
|
|
141
|
+
/** Unwrap <final>…</final> tags from MiniMax-style models (keep content, strip tags). */
|
|
142
|
+
const FINAL_TAG_RE = /<\/?final\s*>/gi;
|
|
143
|
+
function stripThinkingTags(text) {
|
|
144
|
+
return text.replace(THINKING_TAG_RE, "").replace(FINAL_TAG_RE, "").trim();
|
|
145
|
+
}
|
|
146
|
+
function extractEnvelopeTimestamp(text) {
|
|
147
|
+
const m = ENVELOPE_EXTRACT_RE.exec(text);
|
|
148
|
+
if (!m)
|
|
149
|
+
return null;
|
|
150
|
+
const [, date, time, tz] = m;
|
|
151
|
+
const timeStr = time.includes(":") && time.split(":").length === 3 ? time : time + ":00";
|
|
152
|
+
const offsetMatch = tz.match(/([+-])(\d{1,2})$/);
|
|
153
|
+
const offsetStr = offsetMatch
|
|
154
|
+
? `${offsetMatch[1]}${offsetMatch[2].padStart(2, "0")}:00`
|
|
155
|
+
: "+00:00";
|
|
156
|
+
const iso = `${date}T${timeStr}${offsetStr}`;
|
|
157
|
+
const ts = new Date(iso).getTime();
|
|
158
|
+
return Number.isNaN(ts) ? null : ts;
|
|
159
|
+
}
|
|
126
160
|
function stripEnvelopePrefix(text) {
|
|
127
161
|
return text.replace(ENVELOPE_PREFIX_RE, "");
|
|
128
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capture/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger, MemosLocalConfig } from "../types";
|
|
2
|
-
import type {
|
|
2
|
+
import type { UserRole, UserStatus } from "../sharing/types";
|
|
3
3
|
import type { SqliteStore } from "../storage/sqlite";
|
|
4
4
|
export interface HubSessionInfo {
|
|
5
5
|
hubUrl: string;
|
|
@@ -8,6 +8,7 @@ export interface HubSessionInfo {
|
|
|
8
8
|
userToken: string;
|
|
9
9
|
role: UserRole;
|
|
10
10
|
connectedAt: number;
|
|
11
|
+
identityKey?: string;
|
|
11
12
|
}
|
|
12
13
|
export interface HubStatusInfo {
|
|
13
14
|
connected: boolean;
|
|
@@ -17,7 +18,10 @@ export interface HubStatusInfo {
|
|
|
17
18
|
username: string;
|
|
18
19
|
role: UserRole;
|
|
19
20
|
status: UserStatus | string;
|
|
20
|
-
groups
|
|
21
|
+
groups?: Array<{
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
}>;
|
|
21
25
|
};
|
|
22
26
|
}
|
|
23
27
|
export declare function connectToHub(store: SqliteStore, config: MemosLocalConfig, log?: Logger): Promise<HubSessionInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/client/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/client/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG;QACX,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,QAAQ,CAAC;QACf,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;CACH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA2EtH;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+JvG;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,CAwEzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,MAAM,EAAE,MAAM,CAAC;gBACnB,MAAM,EAAE,MAAM;CAK3B"}
|