chatdev-memorysync
MemorySync memory store for ChatDev 2.0 (DevAll) — OpenBMB's zero-code multi-agent platform.
One pip install adds type: memorysync to ChatDev's memory registry: usable
from workflow YAML and the web console's store-type dropdown, no code
changes to ChatDev required.
# inside your ChatDev checkout's environment
uv pip install chatdev-memorysync # or: pip install chatdev-memorysync
Activation is automatic (a .pth hook registers the store whenever ChatDev's
modules are importable, and silently no-ops anywhere else). The explicit
alternative:
import chatdev_memorysync
chatdev_memorysync.register()
Workflow YAML
graph:
nodes:
- id: writer
type: agent
config:
# ... model config ...
memories:
- name: user_memory
top_k: 5
retrieve_stage: [gen]
read: true
write: true
memory:
- name: user_memory
type: memorysync
config:
api_key: ${MEMORYSYNC_API_KEY}
user_id: customer-42 # REQUIRED — who these memories belong to
session_id: support # optional transcript scope
Retrieved memories arrive in the standard ===== Related Memories =====
block ChatDev injects into agent prompts.
Why this instead of the in-tree Mem0 store?
ChatDev ships a mem0 store in its repo. Verified against its source:
| Behavior | Mem0 (in-tree store) | memorysync |
|---|---|---|
| User scoping | ✗ demo YAML hardcodes user_id: project-user-123 — every operator shares one partition |
user_id is a REQUIRED config field |
| Slow/down backend | ✗ SDK call with no timeout — the whole agent turn stalls | hard recall_timeout budget (1.2 s), fails open to no memories |
| Timestamps | ✗ every retrieved item stamped time.time() — corrupts ChatDev's own time-decay scorer (0.7 of ranking weight) and unfairly outranks honest stores |
the row's real created_at |
| Agent outputs | ✗ thrown away ("noise") — half the conversation lost | stored, role-labeled; server-side gating handles noise (store_outputs: false to opt out) |
| Retries / re-runs | ✗ duplicate extractions on every re-send | deterministic idempotency seeds — retries converge |
| Failure diagnosis | ✗ bare logger.error + [] — quota, auth, and network all look like "no memories" |
fail-open logs carry the HTTP status code |
| Multimodal snapshots | ✗ ignored | attachment overviews recorded in metadata |
Memories stored here are recallable from every other MemorySync surface (LangChain, the CLI, voice agents, Dify…) and vice versa.
Configuration
| Field | Default | Meaning |
|---|---|---|
api_key |
${MEMORYSYNC_API_KEY} |
MemorySync API key |
user_id |
— (required) | End user the memories belong to |
session_id |
chatdev |
Transcript scope: chatdev::<session> |
base_url |
https://api.memorysync.io |
Override for staging |
recall_timeout |
1.2 |
Hard recall budget in seconds |
store_outputs |
true |
Persist agent outputs too |
source |
chatdev |
Source label on stored rows |
Per-agent knobs (top_k, similarity_threshold, read, write,
retrieve_stage) come from ChatDev's own memories: attachment config and
are honored — including similarity_threshold filtering on real scores.
Tests
git clone --depth 1 https://github.com/OpenBMB/ChatDev.git chatdev
pip install -e . pytest pydantic openai pyyaml tenacity numpy faiss-cpu fastmcp jinja2
pytest tests -q # 24 checks against the real ChatDev 2.0 modules
The suite drives ChatDev's real config parser, registry, MemoryFactory,
and MemoryManager — and reproduces each in-tree Mem0 store bug as a
regression test.
License
MIT © MemorySync.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chatdev_memorysync-1.0.0.tar.gz.
File metadata
- Download URL: chatdev_memorysync-1.0.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0f1cee2ca7fab210db1739feb45c95ef399261ae3217ce1609ad3d0fc69d173
|
|
| MD5 |
0d3c9283a408ce1f3b1367aaab4942a6
|
|
| BLAKE2b-256 |
278018f2eeda2e614a9f8ddc1ccb5c6a4a3ba2283b2085ba5dfa2ed815bf71a3
|
File details
Details for the file chatdev_memorysync-1.0.0-py3-none-any.whl.
File metadata
- Download URL: chatdev_memorysync-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7aabe44ff4f2aca382fe627d3fbe647bed6387bee77bd49464116c10e6832120
|
|
| MD5 |
be015bd66e223d7c4d9e8f61f377a90a
|
|
| BLAKE2b-256 |
4092206fef0a89966867668e4c29c2e8505b0acd5904696bdb5be415e3914426
|