Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
b443a25
Pi: fix createSystemPromptOverride return type
cursoragent Feb 2, 2026
92e1cbd
Auto-reply: inject deep memory context per turn
cursoragent Feb 2, 2026
aef142c
Deep memory: schedule async updates (delta + near-compaction)
cursoragent Feb 2, 2026
286af57
Deep memory server: add TS service + compose profile
cursoragent Feb 2, 2026
b4342fe
Deps: add deep-memory-server workspace dependencies
cursoragent Feb 2, 2026
500900b
Deep memory server: fix TS types and caching wrapper
cursoragent Feb 2, 2026
3728069
Deep memory server: add config + weights + multi-hop relation query
cursoragent Feb 2, 2026
1aba912
Deep memory server: add unit tests and local vitest config
cursoragent Feb 2, 2026
cc95a8e
Deep memory server: add novelty scoring, decay, and safety filter
cursoragent Feb 2, 2026
b9f5c18
Deep memory server: add retriever/updater unit tests
cursoragent Feb 2, 2026
5ab5a3e
Docs: describe deep-memory-server tuning knobs
cursoragent Feb 2, 2026
1c638a1
Deep memory: add namespace isolation and safer injection
cursoragent Feb 2, 2026
2c770bb
Deep memory server: add namespace isolation
cursoragent Feb 2, 2026
9011b8b
Deep memory server: add provenance + idempotent updates
cursoragent Feb 2, 2026
b5a0e4c
Deep memory server: add forget endpoint (delete by ids/session)
cursoragent Feb 2, 2026
e9657a3
Deep memory: fix agent-scope typing and logging
cursoragent Feb 2, 2026
ba00d36
Config: add deepMemory to agent config type
cursoragent Feb 2, 2026
bbca639
Deep memory server: add durable on-disk update queue
cursoragent Feb 2, 2026
409d467
Deep memory server: add auth, body limits, and compressed queue
cursoragent Feb 2, 2026
56bc4eb
Deep memory: support apiKey for server requests
cursoragent Feb 2, 2026
4486002
Deep memory server: add audit log, failed replay, and API key rotation
cursoragent Feb 2, 2026
7d573b4
Deep memory server: export failed tasks and batch retry
cursoragent Feb 2, 2026
8c5ccce
Deep memory: add kind/keys, TTL, and conflict resolution
cursoragent Feb 2, 2026
a31b84b
Deep memory server: role-based authz and namespace binding
cursoragent Feb 2, 2026
f13d826
Auto-reply: add /forget deep memory admin command
cursoragent Feb 2, 2026
a49347b
Docs: document /forget slash command
cursoragent Feb 2, 2026
d2df111
Deep-memory: fix lint/format compliance
cursoragent Feb 2, 2026
9e33cb0
Chore: remove deep-memory-server build artifacts
cursoragent Feb 2, 2026
d3fd48b
Chore: format changelogs
cursoragent Feb 2, 2026
29b14ff
Deep-memory-server: avoid broken transformer pipeline types
cursoragent Feb 2, 2026
82266d5
Deep-memory-server: fix embeddings data extraction typing
cursoragent Feb 2, 2026
f18f2b2
Deep-memory-server: add /metrics Prometheus endpoint
cursoragent Feb 3, 2026
c26d719
Deep-memory-server: add /readyz dependency readiness probe
cursoragent Feb 3, 2026
ccd5094
Deep-memory-server: add structured request logging
cursoragent Feb 3, 2026
7fb6ff8
Chore: update lockfile
cursoragent Feb 3, 2026
bf45b92
Docs/Deploy: add production deep memory compose + Dockerfile
cursoragent Feb 3, 2026
2fba093
Deep-memory-server: harden /metrics and export queue gauges
cursoragent Feb 3, 2026
f304552
Docs/Ops: add deep memory backup/restore runbook and Prometheus alerts
cursoragent Feb 3, 2026
e853823
Deploy/Docs: add Kubernetes manifests for deep memory
cursoragent Feb 3, 2026
5d5760f
deep-memory: add rate limiting and update backlog backpressure
cursoragent Feb 3, 2026
3ac5e15
deep-memory: add detailed health and /deepmemory status command
cursoragent Feb 3, 2026
0933268
deep-memory: add schema versioning and startup migration checks
cursoragent Feb 3, 2026
1324475
deep-memory: add reindex tool for Qdrant collection migrations
cursoragent Feb 3, 2026
dc7389a
deep-memory: add offline eval + parameter sweep for retrieval regress…
cursoragent Feb 3, 2026
e502f2f
deep-memory: add proof-ish /forget results and request id
cursoragent Feb 3, 2026
3181a61
deep-memory: fix forget proof test lint/format
cursoragent Feb 3, 2026
d7c82cc
deep-memory: add durable async forget queue and admin endpoints
cursoragent Feb 3, 2026
1b80185
deep-memory: fix durable forget queue lint/format
cursoragent Feb 3, 2026
581e4cc
deep-memory: add update ingestion guardrails (disable/throttle/sample)
cursoragent Feb 3, 2026
97ed4f7
deep-memory: configurable sensitive filter allow/deny rules
cursoragent Feb 3, 2026
623412e
deep-memory: fix sensitive filter lint/format
cursoragent Feb 3, 2026
574c6eb
docs: add deep memory disaster recovery drills and rollback
cursoragent Feb 3, 2026
22d608a
deep-memory: expand eval dataset regression coverage
cursoragent Feb 3, 2026
6728395
deep-memory: format expanded eval dataset
cursoragent Feb 3, 2026
fac66e1
deep-memory: improve eval output and add baseline compare snapshots
cursoragent Feb 3, 2026
6407bb3
deep-memory: fix eval output lint
cursoragent Feb 3, 2026
5d569f1
deep-memory: enforce eval quality thresholds in tests
cursoragent Feb 3, 2026
5868e6e
deep-memory: expand eval sweep and print env recommendations
cursoragent Feb 3, 2026
841d32c
deep-memory: add namespace concurrency limits for retrieve/update
cursoragent Feb 3, 2026
84dbd14
deep-memory: add adaptive degradation for overload (delay/read-only/s…
cursoragent Feb 3, 2026
ada83d0
deep-memory: improve reindex resume, concurrency, retries, report
cursoragent Feb 3, 2026
55a7007
deep-memory: add validate-reindex tool for migration verification
cursoragent Feb 3, 2026
be14f74
deep-memory: fix validate-reindex lint/format
cursoragent Feb 3, 2026
4c3df8f
deep-memory: add gc-expired lifecycle maintenance tool
cursoragent Feb 3, 2026
000582e
deep-memory: fix gc-expired lint/format
cursoragent Feb 3, 2026
8bce73f
deep-memory: add build info to health and release checklist
cursoragent Feb 3, 2026
be2c4f3
docs: add deep-memory-server reference (config + API contract)
cursoragent Feb 4, 2026
7b321e5
deep-memory: sync types with API contract
cursoragent Feb 4, 2026
4abb4bd
deep-memory: unify overload semantics (503 + retry-after)
cursoragent Feb 4, 2026
5da2d8c
docs: format deep-memory-server reference
cursoragent Feb 4, 2026
ecf2516
deep-memory: disambiguate queue audit events by kind
cursoragent Feb 4, 2026
d29c862
Merge remote-tracking branch 'origin/main' into cursor/-bc-4331cb41-f…
cursoragent Feb 4, 2026
8fa2597
build: fix check after merging main
cursoragent Feb 4, 2026
596be9e
infra: add rustfs service + docker compose profile
cursoragent Feb 4, 2026
f32c0c7
infra: rustfs share links + docker config
cursoragent Feb 4, 2026
6b4b719
agents: add rustfs file search/send/ingest tools
cursoragent Feb 4, 2026
70f53c8
infra: rustfs tombstone + audit log
cursoragent Feb 4, 2026
e587c32
infra: rustfs store annotations + extract status
cursoragent Feb 4, 2026
1a1f874
infra: rustfs expose pending extract + status APIs
cursoragent Feb 4, 2026
9e152d5
infra: rustfs re-lease stuck processing jobs
cursoragent Feb 4, 2026
a1cf044
infra: add rustfs-worker package
cursoragent Feb 4, 2026
85134a2
infra: wire rustfs-worker into docker compose
cursoragent Feb 4, 2026
b5241d5
infra: forget deep-memory on rustfs tombstone
cursoragent Feb 4, 2026
2ccc33d
feat: allow semantic hints in file_ingest
cursoragent Feb 4, 2026
bf1bfe8
test: cover rustfs config + file tools schema
cursoragent Feb 4, 2026
533780e
feat: semantic file_search via deep-memory
cursoragent Feb 4, 2026
997d3c7
fix: cron reload store for cross-service dedupe
cursoragent Feb 4, 2026
b444c63
feat: file_search returns candidates + selection contract
cursoragent Feb 5, 2026
0e807d8
feat: rustfs add atomic claim_extract leasing
cursoragent Feb 5, 2026
aafc4f6
feat: rustfs-worker claim jobs atomically
cursoragent Feb 5, 2026
b8d8106
feat: rustfs-worker chunk extracted text for deep-memory
cursoragent Feb 5, 2026
66f2c40
feat: rustfs-worker backoff on deep-memory overload
cursoragent Feb 5, 2026
b2eaafc
docs: document rustfs claim_extract + worker chunking
cursoragent Feb 5, 2026
21a2f67
chore: extend rustfs-worker compose env
cursoragent Feb 5, 2026
7dfa9c1
refactor: rustfs-worker normalize extraction result v1
cursoragent Feb 5, 2026
6edcc3d
feat: rustfs-worker write annotations schema v1
cursoragent Feb 5, 2026
8599b51
feat: rustfs-worker extract html into segments
cursoragent Feb 5, 2026
b31bbe3
feat: rustfs-worker extract code into sections
cursoragent Feb 5, 2026
0bd1498
feat: rustfs-worker extract pdf pages
cursoragent Feb 5, 2026
abbadd3
feat: rustfs-worker extract docx and pptx
cursoragent Feb 5, 2026
8c752c2
feat: merge openclaw_ingest into annotations v1
cursoragent Feb 5, 2026
53c5196
perf: file_search cache + concurrency for semantic rerank
cursoragent Feb 5, 2026
44c57c2
feat: file_search return clarify questions
cursoragent Feb 5, 2026
29b1101
chore: rustfs-worker log extraction timings
cursoragent Feb 5, 2026
86dcfc1
feat: return memory ids for update_memory_index sync
cursoragent Feb 5, 2026
48444f0
feat: rustfs-worker store deep-memory memory_ids
cursoragent Feb 5, 2026
30d45ad
docs: update rustfs worker extraction + traceability
cursoragent Feb 5, 2026
e16f6b3
test: deep-memory updater can return memory ids
cursoragent Feb 5, 2026
ad4c9e8
feat: deep-memory session inspect api
cursoragent Feb 5, 2026
3495312
feat: rustfs-worker write semantics from deep-memory inspect
cursoragent Feb 5, 2026
d51714b
feat: file_search surface schema v1 semantics
cursoragent Feb 5, 2026
3eca0bb
test: add session inspect api coverage
cursoragent Feb 5, 2026
00ebf35
docs: document session inspect and worker semantics
cursoragent Feb 5, 2026
221f90b
feat: file_search dual-evidence semantic retrieval
cursoragent Feb 5, 2026
51ba2fa
chore: fix lint for semantic spreads
cursoragent Feb 5, 2026
7a79816
feat: clarify uses semantic topics when scores close
cursoragent Feb 5, 2026
d5f4a17
test: cover clarify topic hint when scores close
cursoragent Feb 5, 2026
51820e3
docs: add rustfs file tools reference
cursoragent Feb 5, 2026
0d1cb2c
Merge branch 'main' into cursor/-bc-4331cb41-ff2f-4553-b3e9-e98775eaa…
cursoragent Feb 5, 2026
b92c5cf
Merge branch 'main' into cursor/-bc-4331cb41-ff2f-4553-b3e9-e98775eaa…
cursoragent Feb 6, 2026
d3c4685
docs: add startup flow for docker profiles
cursoragent Feb 6, 2026
8febc1c
chore: ignore Cursor workspace files
GUOF629 Feb 11, 2026
e75fb06
docker: stabilize deep-memory + rustfs stack
GUOF629 Feb 11, 2026
0b1d68d
feishu: add doc export action
GUOF629 Feb 11, 2026
3ba0903
Feishu: 按会话账号选择工具 client + 权限错误返回授权链接
cursoragent Feb 11, 2026
ec91a25
Docker: 恢复 openclaw-gateway/openclaw-cli 到 compose
cursoragent Feb 11, 2026
626b4f2
Merge origin/main
cursoragent Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ mise.toml
apps/android/.gradle/
apps/android/app/build/
apps/android/.cxx/

# Bun build artifacts
*.bun-build
apps/macos/.build/
Expand All @@ -49,6 +48,8 @@ apps/ios/.swiftpm/
apps/ios/.derivedData/
apps/ios/.local-signing.xcconfig
vendor/
!src/auto-reply/reply/export-html/vendor/
!src/auto-reply/reply/export-html/vendor/**
apps/ios/Clawdbot.xcodeproj/
apps/ios/Clawdbot.xcodeproj/**
apps/macos/.build/**
Expand Down Expand Up @@ -79,6 +80,7 @@ apps/ios/*.mobileprovision

# Local untracked files
.local/
.cursor/
docs/.local/
IDENTITY.md
USER.md
Expand All @@ -88,15 +90,15 @@ USER.md
# local tooling
.serena/

# Rust build artifacts (RustFS)
packages/rustfs/target/
# Agent credentials and memory (NEVER COMMIT)
/memory/
.agent/*.json
!.agent/workflows/
/local/
package-lock.json
.claude/settings.local.json
.agents/
.agents
.agent/
skills-lock.json

Expand Down
1 change: 1 addition & 0 deletions .oxfmtrc.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"node_modules/",
"patches/",
"pnpm-lock.yaml/",
"packages/rustfs/target/",
"src/gateway/server-methods/CLAUDE.md",
"src/auto-reply/reply/export-html/",
"Swabble/",
Expand Down
135 changes: 135 additions & 0 deletions deploy/k8s/deep-memory/deep-memory-server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
apiVersion: v1
kind: Service
metadata:
name: deep-memory-server
labels:
app.kubernetes.io/name: deep-memory-server
spec:
selector:
app.kubernetes.io/name: deep-memory-server
ports:
- name: http
port: 8088
targetPort: 8088
---
apiVersion: v1
kind: Secret
metadata:
name: deep-memory-server-secrets
type: Opaque
stringData:
# REQUIRED in production: configure API keys and limit namespaces.
# Example:
# [
# { "key": "<read-key>", "role": "read", "namespaces": ["teamA"] },
# { "key": "<write-key>", "role": "write", "namespaces": ["teamA"] },
# { "key": "<admin-key>", "role": "admin", "namespaces": ["teamA"] }
# ]
API_KEYS_JSON: "[]"
# Optional: set if Qdrant is secured.
QDRANT_API_KEY: ""
---
apiVersion: v1
kind: ConfigMap
metadata:
name: deep-memory-server-config
data:
PORT: "8088"
HOST: "0.0.0.0"
REQUIRE_API_KEY: "true"
# In Kubernetes, prefer keeping /metrics behind NetworkPolicy; leave this false by default.
ALLOW_UNAUTHENTICATED_METRICS: "false"
RATE_LIMIT_ENABLED: "true"
RATE_LIMIT_WINDOW_MS: "60000"
RATE_LIMIT_RETRIEVE_PER_WINDOW: "300"
RATE_LIMIT_UPDATE_PER_WINDOW: "60"
RATE_LIMIT_FORGET_PER_WINDOW: "10"
RATE_LIMIT_QUEUE_ADMIN_PER_WINDOW: "60"
UPDATE_BACKLOG_REJECT_PENDING: "2000"
UPDATE_BACKLOG_RETRY_AFTER_SECONDS: "30"

QDRANT_URL: "http://qdrant:6333"
QDRANT_COLLECTION: "openclaw_memories"
VECTOR_DIMS: "384"

NEO4J_URI: "bolt://neo4j:7687"
NEO4J_USER: "neo4j"

LOG_LEVEL: "info"
UPDATE_CONCURRENCY: "1"
QUEUE_DIR: "/data/queue"
AUDIT_LOG_PATH: "/data/audit/audit.jsonl"
EMBEDDING_MODEL: "Xenova/bge-small-en-v1.5"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deep-memory-server
labels:
app.kubernetes.io/name: deep-memory-server
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: deep-memory-server
template:
metadata:
labels:
app.kubernetes.io/name: deep-memory-server
spec:
containers:
- name: deep-memory-server
# Build and push your own image from packages/deep-memory-server/Dockerfile
# then set this to your registry.
image: "openclaw/deep-memory-server:local"
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8088
envFrom:
- configMapRef:
name: deep-memory-server-config
- secretRef:
name: deep-memory-server-secrets
env:
- name: NEO4J_PASSWORD
valueFrom:
secretKeyRef:
name: neo4j-auth
key: password
volumeMounts:
- name: data
mountPath: /data
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: "2"
memory: 2Gi
readinessProbe:
httpGet:
path: /readyz
port: 8088
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 8088
initialDelaySeconds: 10
periodSeconds: 20
volumes:
- name: data
persistentVolumeClaim:
claimName: deep-memory-server-data
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: deep-memory-server-data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
11 changes: 11 additions & 0 deletions deploy/k8s/deep-memory/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: openclaw

resources:
- namespace.yaml
- qdrant.yaml
- neo4j.yaml
- deep-memory-server.yaml
- networkpolicy.yaml
4 changes: 4 additions & 0 deletions deploy/k8s/deep-memory/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: openclaw
95 changes: 95 additions & 0 deletions deploy/k8s/deep-memory/neo4j.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
apiVersion: v1
kind: Service
metadata:
name: neo4j
labels:
app.kubernetes.io/name: neo4j
spec:
selector:
app.kubernetes.io/name: neo4j
ports:
- name: http
port: 7474
targetPort: 7474
- name: bolt
port: 7687
targetPort: 7687
---
apiVersion: v1
kind: Secret
metadata:
name: neo4j-auth
type: Opaque
stringData:
# Set this to a strong password before applying.
password: "openclaw"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: neo4j
labels:
app.kubernetes.io/name: neo4j
spec:
serviceName: neo4j
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: neo4j
template:
metadata:
labels:
app.kubernetes.io/name: neo4j
spec:
containers:
- name: neo4j
image: neo4j:5.26
ports:
- name: http
containerPort: 7474
- name: bolt
containerPort: 7687
env:
- name: NEO4J_AUTH
value: "neo4j/$(NEO4J_PASSWORD)"
- name: NEO4J_PASSWORD
valueFrom:
secretKeyRef:
name: neo4j-auth
key: password
- name: NEO4J_server_memory_pagecache_size
value: "512M"
- name: NEO4J_server_memory_heap_initial__size
value: "512M"
- name: NEO4J_server_memory_heap_max__size
value: "512M"
volumeMounts:
- name: data
mountPath: /data
resources:
requests:
cpu: 200m
memory: 1Gi
limits:
cpu: "2"
memory: 2Gi
readinessProbe:
httpGet:
path: /
port: 7474
initialDelaySeconds: 15
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 7474
initialDelaySeconds: 30
periodSeconds: 20
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 20Gi
17 changes: 17 additions & 0 deletions deploy/k8s/deep-memory/networkpolicy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deep-memory-server-ingress
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: deep-memory-server
policyTypes:
- Ingress
ingress:
# Allow in-namespace callers by default. Tighten this to specific pods/namespaces
# in production (e.g. OpenClaw gateway pods + Prometheus).
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: openclaw
67 changes: 67 additions & 0 deletions deploy/k8s/deep-memory/qdrant.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
apiVersion: v1
kind: Service
metadata:
name: qdrant
labels:
app.kubernetes.io/name: qdrant
spec:
selector:
app.kubernetes.io/name: qdrant
ports:
- name: http
port: 6333
targetPort: 6333
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: qdrant
labels:
app.kubernetes.io/name: qdrant
spec:
serviceName: qdrant
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: qdrant
template:
metadata:
labels:
app.kubernetes.io/name: qdrant
spec:
containers:
- name: qdrant
image: qdrant/qdrant:v1.13.4
ports:
- name: http
containerPort: 6333
volumeMounts:
- name: data
mountPath: /qdrant/storage
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: "1"
memory: 1Gi
readinessProbe:
httpGet:
path: /
port: 6333
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 6333
initialDelaySeconds: 10
periodSeconds: 20
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
Loading
Loading