memall-os 0.1.2__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.
- memall_os-0.1.2/.env.example +14 -0
- memall_os-0.1.2/.github/ISSUE_TEMPLATE/bug_report.yml +30 -0
- memall_os-0.1.2/.github/ISSUE_TEMPLATE/feature_request.yml +23 -0
- memall_os-0.1.2/.github/workflows/ci.yml +36 -0
- memall_os-0.1.2/.gitignore +155 -0
- memall_os-0.1.2/CHANGELOG.md +162 -0
- memall_os-0.1.2/CLAUDE.md +28 -0
- memall_os-0.1.2/COMPARISON.md +71 -0
- memall_os-0.1.2/CONTRIBUTING.md +42 -0
- memall_os-0.1.2/LICENSE +21 -0
- memall_os-0.1.2/MemALL_Function_Spec.md +914 -0
- memall_os-0.1.2/PKG-INFO +266 -0
- memall_os-0.1.2/QUICKSTART.md +78 -0
- memall_os-0.1.2/README.md +217 -0
- memall_os-0.1.2/README.zh-CN.md +217 -0
- memall_os-0.1.2/RELEASE_NOTES_v0.1.0.md +163 -0
- memall_os-0.1.2/desktop/index.html +1864 -0
- memall_os-0.1.2/freellmapi/.env.example +32 -0
- memall_os-0.1.2/frontend/index.html +1864 -0
- memall_os-0.1.2/lib/bindings/utils.js +189 -0
- memall_os-0.1.2/lib/tom-select/tom-select.complete.min.js +356 -0
- memall_os-0.1.2/lib/tom-select/tom-select.css +334 -0
- memall_os-0.1.2/lib/vis-9.1.2/vis-network.css +1 -0
- memall_os-0.1.2/lib/vis-9.1.2/vis-network.min.js +27 -0
- memall_os-0.1.2/mcp_servers.json.example +14 -0
- memall_os-0.1.2/obsidian-plugin/main.js +514 -0
- memall_os-0.1.2/obsidian-plugin/manifest.json +10 -0
- memall_os-0.1.2/obsidian-plugin/styles.css +16 -0
- memall_os-0.1.2/paperclip/.env.example +7 -0
- memall_os-0.1.2/plugin/memall-sync-v2/main.js +15 -0
- memall_os-0.1.2/plugin/memall-sync-v2/manifest.json +9 -0
- memall_os-0.1.2/pyproject.toml +88 -0
- memall_os-0.1.2/src/memall/api/frontend/index.html +1864 -0
- memall_os-0.1.2/src/memall/api/server.py +840 -0
- memall_os-0.1.2/src/memall/api/start_server.py +27 -0
- memall_os-0.1.2/src/memall/bridge/config.py +68 -0
- memall_os-0.1.2/src/memall/bridge/lark_client.py +174 -0
- memall_os-0.1.2/src/memall/bridge/main.py +302 -0
- memall_os-0.1.2/src/memall/bridge/run_bridge.py +12 -0
- memall_os-0.1.2/src/memall/bridge/watchdog.py +78 -0
- memall_os-0.1.2/src/memall/cli/backup_restore.py +321 -0
- memall_os-0.1.2/src/memall/cli/commands/base.py +104 -0
- memall_os-0.1.2/src/memall/cli/commands/federation_commands.py +174 -0
- memall_os-0.1.2/src/memall/cli/commands/gateway_commands.py +95 -0
- memall_os-0.1.2/src/memall/cli/commands/management_commands.py +1146 -0
- memall_os-0.1.2/src/memall/cli/commands/pipeline_commands.py +682 -0
- memall_os-0.1.2/src/memall/cli/export.py +266 -0
- memall_os-0.1.2/src/memall/cli/main.py +453 -0
- memall_os-0.1.2/src/memall/cli/register.py +171 -0
- memall_os-0.1.2/src/memall/cli/setup.py +494 -0
- memall_os-0.1.2/src/memall/cli/uninstall.py +132 -0
- memall_os-0.1.2/src/memall/config.py +282 -0
- memall_os-0.1.2/src/memall/core/context_assembler.py +65 -0
- memall_os-0.1.2/src/memall/core/db.py +649 -0
- memall_os-0.1.2/src/memall/core/health.py +174 -0
- memall_os-0.1.2/src/memall/core/models.py +48 -0
- memall_os-0.1.2/src/memall/core/nlp.py +191 -0
- memall_os-0.1.2/src/memall/core/thin_waist.py +958 -0
- memall_os-0.1.2/src/memall/federation/conflict.py +281 -0
- memall_os-0.1.2/src/memall/federation/family.py +410 -0
- memall_os-0.1.2/src/memall/federation/health.py +129 -0
- memall_os-0.1.2/src/memall/federation/visualize.py +195 -0
- memall_os-0.1.2/src/memall/gateway.py +2137 -0
- memall_os-0.1.2/src/memall/graph/embeddings.py +234 -0
- memall_os-0.1.2/src/memall/graph/retrieve.py +244 -0
- memall_os-0.1.2/src/memall/graph/vector_model.py +197 -0
- memall_os-0.1.2/src/memall/graph/visualize.py +172 -0
- memall_os-0.1.2/src/memall/lark/client.py +183 -0
- memall_os-0.1.2/src/memall/lark/consumer.py +409 -0
- memall_os-0.1.2/src/memall/lark/consumer_helpers.py +34 -0
- memall_os-0.1.2/src/memall/lark/credentials.py +89 -0
- memall_os-0.1.2/src/memall/lark_notify.py +207 -0
- memall_os-0.1.2/src/memall/mcp/adapter.py +61 -0
- memall_os-0.1.2/src/memall/mcp/federation_tools.py +608 -0
- memall_os-0.1.2/src/memall/mcp/hooks.py +107 -0
- memall_os-0.1.2/src/memall/mcp/hooks_builtin.py +50 -0
- memall_os-0.1.2/src/memall/mcp/http_transport.py +381 -0
- memall_os-0.1.2/src/memall/mcp/hub_client.py +196 -0
- memall_os-0.1.2/src/memall/mcp/models.py +328 -0
- memall_os-0.1.2/src/memall/mcp/registry.py +50 -0
- memall_os-0.1.2/src/memall/mcp/server.py +315 -0
- memall_os-0.1.2/src/memall/mcp/shared.py +131 -0
- memall_os-0.1.2/src/memall/mcp/tools/capture.py +9 -0
- memall_os-0.1.2/src/memall/mcp/tools/discussion.py +34 -0
- memall_os-0.1.2/src/memall/mcp/tools/federation.py +41 -0
- memall_os-0.1.2/src/memall/mcp/tools/gateway.py +69 -0
- memall_os-0.1.2/src/memall/mcp/tools/graph.py +12 -0
- memall_os-0.1.2/src/memall/mcp/tools/hub.py +15 -0
- memall_os-0.1.2/src/memall/mcp/tools/index.py +8 -0
- memall_os-0.1.2/src/memall/mcp/tools/manage.py +143 -0
- memall_os-0.1.2/src/memall/mcp/tools/memory_write.py +28 -0
- memall_os-0.1.2/src/memall/mcp/tools/onboarding.py +182 -0
- memall_os-0.1.2/src/memall/mcp/tools/persona.py +58 -0
- memall_os-0.1.2/src/memall/mcp/tools/pipeline.py +24 -0
- memall_os-0.1.2/src/memall/mcp/tools/reflect.py +31 -0
- memall_os-0.1.2/src/memall/mcp/tools/retrieve.py +128 -0
- memall_os-0.1.2/src/memall/mcp/tools/session.py +27 -0
- memall_os-0.1.2/src/memall/mcp/tools/timeline.py +10 -0
- memall_os-0.1.2/src/memall/mcp/validator.py +139 -0
- memall_os-0.1.2/src/memall/migrations/001_add_identity_trusted_by.py +19 -0
- memall_os-0.1.2/src/memall/migrations/002_add_owner_type.py +18 -0
- memall_os-0.1.2/src/memall/migrations/003_add_primary_secondary_layers.py +29 -0
- memall_os-0.1.2/src/memall/migrations/004_normalize_supersedes.py +54 -0
- memall_os-0.1.2/src/memall/migrations/005_add_memories_confidence.py +21 -0
- memall_os-0.1.2/src/memall/migrations/006_add_memories_visibility.py +18 -0
- memall_os-0.1.2/src/memall/migrations/007_add_identities_profile_json.py +18 -0
- memall_os-0.1.2/src/memall/migrations/008_add_identities_persona_updated_at.py +18 -0
- memall_os-0.1.2/src/memall/migrations/009_create_suggestions_table.py +44 -0
- memall_os-0.1.2/src/memall/migrations/010_create_narrative_clusters_table.py +23 -0
- memall_os-0.1.2/src/memall/migrations/011_create_embeddings_table.py +26 -0
- memall_os-0.1.2/src/memall/migrations/012_drop_dead_embeddings.py +18 -0
- memall_os-0.1.2/src/memall/migrations/013_add_identities_permission_level.py +19 -0
- memall_os-0.1.2/src/memall/migrations/014_add_memories_tags.py +19 -0
- memall_os-0.1.2/src/memall/migrations/015_drop_memories_embedding.py +24 -0
- memall_os-0.1.2/src/memall/migrations/016_create_time_slices_and_epochs.py +70 -0
- memall_os-0.1.2/src/memall/migrations/017_add_arc_status.py +25 -0
- memall_os-0.1.2/src/memall/migrations/018_add_echo_score.py +23 -0
- memall_os-0.1.2/src/memall/migrations/019_create_discussion_tables.py +64 -0
- memall_os-0.1.2/src/memall/onboarding.py +290 -0
- memall_os-0.1.2/src/memall/pipeline/adaptive.py +576 -0
- memall_os-0.1.2/src/memall/pipeline/arc_status.py +118 -0
- memall_os-0.1.2/src/memall/pipeline/ask.py +344 -0
- memall_os-0.1.2/src/memall/pipeline/backup.py +39 -0
- memall_os-0.1.2/src/memall/pipeline/bridge.py +208 -0
- memall_os-0.1.2/src/memall/pipeline/classify.py +242 -0
- memall_os-0.1.2/src/memall/pipeline/cleanup.py +127 -0
- memall_os-0.1.2/src/memall/pipeline/cluster.py +348 -0
- memall_os-0.1.2/src/memall/pipeline/convergence.py +654 -0
- memall_os-0.1.2/src/memall/pipeline/decay.py +80 -0
- memall_os-0.1.2/src/memall/pipeline/distill.py +177 -0
- memall_os-0.1.2/src/memall/pipeline/distill_l7.py +141 -0
- memall_os-0.1.2/src/memall/pipeline/echo.py +180 -0
- memall_os-0.1.2/src/memall/pipeline/embed_index.py +19 -0
- memall_os-0.1.2/src/memall/pipeline/enrich.py +186 -0
- memall_os-0.1.2/src/memall/pipeline/epoch.py +372 -0
- memall_os-0.1.2/src/memall/pipeline/forget.py +457 -0
- memall_os-0.1.2/src/memall/pipeline/identity.py +130 -0
- memall_os-0.1.2/src/memall/pipeline/improve.py +277 -0
- memall_os-0.1.2/src/memall/pipeline/integrate.py +163 -0
- memall_os-0.1.2/src/memall/pipeline/link.py +140 -0
- memall_os-0.1.2/src/memall/pipeline/metrics.py +62 -0
- memall_os-0.1.2/src/memall/pipeline/narrative.py +202 -0
- memall_os-0.1.2/src/memall/pipeline/observe.py +418 -0
- memall_os-0.1.2/src/memall/pipeline/ops.py +1008 -0
- memall_os-0.1.2/src/memall/pipeline/persona.py +771 -0
- memall_os-0.1.2/src/memall/pipeline/pipeline.py +202 -0
- memall_os-0.1.2/src/memall/pipeline/procedure.py +88 -0
- memall_os-0.1.2/src/memall/pipeline/reflect.py +251 -0
- memall_os-0.1.2/src/memall/pipeline/security.py +588 -0
- memall_os-0.1.2/src/memall/pipeline/session.py +963 -0
- memall_os-0.1.2/src/memall/pipeline/stream.py +149 -0
- memall_os-0.1.2/src/memall/pipeline/suggest.py +82 -0
- memall_os-0.1.2/src/memall/pipeline/task_lifecycle.py +255 -0
- memall_os-0.1.2/src/memall/pipeline/time_slice.py +478 -0
- memall_os-0.1.2/src/memall/plugins/dashboard.py +207 -0
- memall_os-0.1.2/src/memall/plugins/exporter.py +295 -0
- memall_os-0.1.2/src/memall/plugins/loader.py +151 -0
- memall_os-0.1.2/src/memall/plugins/notifier.py +116 -0
- memall_os-0.1.2/src/memall/plugins/scheduler.py +221 -0
- memall_os-0.1.2/src/memall/scheduler/agent_round.py +128 -0
- memall_os-0.1.2/src/memall/scheduler/scheduler.py +297 -0
- memall_os-0.1.2/src/memall/search/base.py +55 -0
- memall_os-0.1.2/src/memall/search/faiss_provider.py +247 -0
- memall_os-0.1.2/src/memall/search/registry.py +83 -0
- memall_os-0.1.2/tests/conftest.py +29 -0
- memall_os-0.1.2/tests/test_adaptive.py +136 -0
- memall_os-0.1.2/tests/test_arc_status.py +414 -0
- memall_os-0.1.2/tests/test_backup.py +110 -0
- memall_os-0.1.2/tests/test_bridge.py +117 -0
- memall_os-0.1.2/tests/test_classify.py +150 -0
- memall_os-0.1.2/tests/test_cluster.py +120 -0
- memall_os-0.1.2/tests/test_config.py +130 -0
- memall_os-0.1.2/tests/test_context_assembler.py +132 -0
- memall_os-0.1.2/tests/test_convergence.py +127 -0
- memall_os-0.1.2/tests/test_decay.py +131 -0
- memall_os-0.1.2/tests/test_distill.py +135 -0
- memall_os-0.1.2/tests/test_e2e.py +361 -0
- memall_os-0.1.2/tests/test_embeddings.py +118 -0
- memall_os-0.1.2/tests/test_enrich.py +114 -0
- memall_os-0.1.2/tests/test_epoch.py +196 -0
- memall_os-0.1.2/tests/test_federation_family.py +188 -0
- memall_os-0.1.2/tests/test_federation_health.py +139 -0
- memall_os-0.1.2/tests/test_forget.py +179 -0
- memall_os-0.1.2/tests/test_gateway.py +129 -0
- memall_os-0.1.2/tests/test_helpers.py +95 -0
- memall_os-0.1.2/tests/test_hooks.py +102 -0
- memall_os-0.1.2/tests/test_improve.py +216 -0
- memall_os-0.1.2/tests/test_link.py +132 -0
- memall_os-0.1.2/tests/test_metrics.py +144 -0
- memall_os-0.1.2/tests/test_narrative.py +120 -0
- memall_os-0.1.2/tests/test_nlp.py +108 -0
- memall_os-0.1.2/tests/test_ops.py +456 -0
- memall_os-0.1.2/tests/test_pipeline.py +481 -0
- memall_os-0.1.2/tests/test_reflect.py +132 -0
- memall_os-0.1.2/tests/test_security.py +173 -0
- memall_os-0.1.2/tests/test_session.py +299 -0
- memall_os-0.1.2/tests/test_suggest.py +116 -0
- memall_os-0.1.2/tests/test_time_slice.py +229 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# ── MemALL 环境变量配置 ──
|
|
2
|
+
# Copy this file to .env and fill in your values.
|
|
3
|
+
|
|
4
|
+
# 必需
|
|
5
|
+
# MEMALL_CHAT_ID=<飞书群聊chat_id>
|
|
6
|
+
# TAVILY_API_KEY=<Tavily API密钥,用于网络搜索>
|
|
7
|
+
# FEISHU_APP_ID=<飞书应用ID>
|
|
8
|
+
# FEISHU_APP_SECRET=<飞书应用密钥>
|
|
9
|
+
# OPENROUTER_API_KEY=<OpenRouter API密钥,用于LLM调用>
|
|
10
|
+
|
|
11
|
+
# 可选
|
|
12
|
+
# MEMALL_LOG_LEVEL=INFO
|
|
13
|
+
# MEMALL_DB_PATH=data.db
|
|
14
|
+
# MEMALL_BRIDGE_ENABLED=true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug to help us improve
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: description
|
|
7
|
+
attributes:
|
|
8
|
+
label: Describe the bug
|
|
9
|
+
description: What happened and what did you expect?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: steps
|
|
14
|
+
attributes:
|
|
15
|
+
label: Steps to reproduce
|
|
16
|
+
description: How can we reproduce this?
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: input
|
|
20
|
+
id: version
|
|
21
|
+
attributes:
|
|
22
|
+
label: MemALL version
|
|
23
|
+
description: Run `memall --version` or check `pip show memall`
|
|
24
|
+
- type: dropdown
|
|
25
|
+
id: os
|
|
26
|
+
attributes:
|
|
27
|
+
label: OS
|
|
28
|
+
options: [Windows, macOS, Linux]
|
|
29
|
+
validations:
|
|
30
|
+
required: true
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest an idea for MemALL
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Problem
|
|
9
|
+
description: What problem does this solve?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: solution
|
|
14
|
+
attributes:
|
|
15
|
+
label: Proposed solution
|
|
16
|
+
description: How should this work?
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: alternatives
|
|
21
|
+
attributes:
|
|
22
|
+
label: Alternatives
|
|
23
|
+
description: What else have you considered?
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.10", "3.11"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python-version }}
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install -e .
|
|
26
|
+
pip install pytest flake8 mypy
|
|
27
|
+
- name: Lint with flake8
|
|
28
|
+
run: |
|
|
29
|
+
flake8 src/memall/ --count --statistics --max-line-length=120
|
|
30
|
+
- name: Test with pytest
|
|
31
|
+
run: |
|
|
32
|
+
python -m pytest tests/ -v --tb=short
|
|
33
|
+
- name: Type check with mypy
|
|
34
|
+
continue-on-error: true
|
|
35
|
+
run: |
|
|
36
|
+
mypy src/memall/ --ignore-missing-imports --follow-imports=silent --python-version 3.10
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# ── Python ──
|
|
2
|
+
.venv/
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.pyc
|
|
5
|
+
*.pyo
|
|
6
|
+
*.egg-info/
|
|
7
|
+
.eggs/
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
*.so
|
|
11
|
+
|
|
12
|
+
# ── IDE / Editor ──
|
|
13
|
+
.idea/
|
|
14
|
+
.vscode/
|
|
15
|
+
*.swp
|
|
16
|
+
*.swo
|
|
17
|
+
*~
|
|
18
|
+
|
|
19
|
+
# ── OS ──
|
|
20
|
+
.DS_Store
|
|
21
|
+
Thumbs.db
|
|
22
|
+
desktop.ini
|
|
23
|
+
|
|
24
|
+
# ── Environment / Secrets ──
|
|
25
|
+
.env
|
|
26
|
+
.env.*
|
|
27
|
+
!.env.example
|
|
28
|
+
*.key
|
|
29
|
+
*.pem
|
|
30
|
+
bot_credentials.json
|
|
31
|
+
api_key
|
|
32
|
+
|
|
33
|
+
# ── Claude / AI agent artifacts ──
|
|
34
|
+
.claude/
|
|
35
|
+
.skills/
|
|
36
|
+
.agents/
|
|
37
|
+
|
|
38
|
+
# ── Browser automation artifacts (page captures, recovery codes, console logs) ──
|
|
39
|
+
.playwright-mcp/
|
|
40
|
+
playwright-report/
|
|
41
|
+
test-results/
|
|
42
|
+
|
|
43
|
+
# ── Internal knowledge base (Agent WAL, conversations, deployment details) ──
|
|
44
|
+
memall知识库/
|
|
45
|
+
|
|
46
|
+
# ── Bot scripts (internal, hardcoded IDs) ──
|
|
47
|
+
bot_service.cjs
|
|
48
|
+
debug_token.cjs
|
|
49
|
+
get_token.*
|
|
50
|
+
ws_*
|
|
51
|
+
|
|
52
|
+
# ── MCP server config (contains API keys) ──
|
|
53
|
+
mcp_servers.json
|
|
54
|
+
|
|
55
|
+
# ── Desktop tools (internal use only) ──
|
|
56
|
+
desktop/capture_tray.py
|
|
57
|
+
|
|
58
|
+
# ── Internal ops scripts ──
|
|
59
|
+
scripts/
|
|
60
|
+
start_headroom.bat
|
|
61
|
+
start_mcp_http.ps1
|
|
62
|
+
start_mcp_http.vbs
|
|
63
|
+
sync_to_vault.*
|
|
64
|
+
install.bat
|
|
65
|
+
install.sh
|
|
66
|
+
run_bot.bat
|
|
67
|
+
|
|
68
|
+
# ── Node.js ──
|
|
69
|
+
node_modules/
|
|
70
|
+
freellmapi/node_modules/
|
|
71
|
+
|
|
72
|
+
# ── Binary/vendored deps (keep in repo but flag as generated) ──
|
|
73
|
+
sql.js-*.tgz
|
|
74
|
+
|
|
75
|
+
# ── Database ──
|
|
76
|
+
*.db
|
|
77
|
+
*.db-*
|
|
78
|
+
*.db-shm
|
|
79
|
+
*.db-wal
|
|
80
|
+
*.sqlite
|
|
81
|
+
chroma/
|
|
82
|
+
data/
|
|
83
|
+
chroma_data/
|
|
84
|
+
|
|
85
|
+
# ── Logs ──
|
|
86
|
+
*.log
|
|
87
|
+
logs/
|
|
88
|
+
bot_runtime.log
|
|
89
|
+
|
|
90
|
+
# ── Backup / Export ──
|
|
91
|
+
*.bak
|
|
92
|
+
*.bak-*
|
|
93
|
+
exports/
|
|
94
|
+
reports/
|
|
95
|
+
*.csv
|
|
96
|
+
memall-frontend-snapshot.md
|
|
97
|
+
memories-page.md
|
|
98
|
+
|
|
99
|
+
# ── Build artifacts (frontend bundles live in desktop/v30/) ──
|
|
100
|
+
frontend/dist/
|
|
101
|
+
desktop/v30/
|
|
102
|
+
|
|
103
|
+
# ── Marketing / sales materials (not source code) ──
|
|
104
|
+
marketing/
|
|
105
|
+
|
|
106
|
+
# ── Internal / third-party subprojects (not part of MemALL open-source) ──
|
|
107
|
+
freellmapi/
|
|
108
|
+
paperclip/
|
|
109
|
+
.workbuddy/
|
|
110
|
+
|
|
111
|
+
# ── Test archive (internal debug scripts) ──
|
|
112
|
+
tests/archive/
|
|
113
|
+
_*.py
|
|
114
|
+
_*.txt
|
|
115
|
+
|
|
116
|
+
# ── Vector model artifacts (regeneratable) ──
|
|
117
|
+
.vector_model/
|
|
118
|
+
|
|
119
|
+
# ── Internal design docs / plans ──
|
|
120
|
+
*.plan.md
|
|
121
|
+
l5_completion_plan.md
|
|
122
|
+
前端设计文档_v2.md
|
|
123
|
+
|
|
124
|
+
# ── Marketing media files (large, not code) ──
|
|
125
|
+
marketing/*.mp4
|
|
126
|
+
|
|
127
|
+
# ── Internal reports / docs ──
|
|
128
|
+
architecture_*.md
|
|
129
|
+
code_review_suggestions.md
|
|
130
|
+
project_recommendations.md
|
|
131
|
+
network_architecture_plan.md
|
|
132
|
+
BOM_list.md
|
|
133
|
+
self_reflection_*.md
|
|
134
|
+
memory_design_reference.md
|
|
135
|
+
recall_result.txt
|
|
136
|
+
tmp_check_debt.py
|
|
137
|
+
|
|
138
|
+
# ── Board / inventory artifacts ──
|
|
139
|
+
board.html
|
|
140
|
+
board_err.txt
|
|
141
|
+
memall-feature-inventory/
|
|
142
|
+
|
|
143
|
+
# ── Generated / internal reports (*.docx) ──
|
|
144
|
+
*.docx
|
|
145
|
+
|
|
146
|
+
# ── Unrelated files accidentally tracked ──
|
|
147
|
+
ODF_jump_table.md
|
|
148
|
+
|
|
149
|
+
# ── Bridge message inboxes (internal Feishu messages) ──
|
|
150
|
+
src/memall/bridge/inboxes/
|
|
151
|
+
|
|
152
|
+
# ── Output / test artifacts ──
|
|
153
|
+
output/
|
|
154
|
+
test_frontend.html
|
|
155
|
+
test_mcp_*.jsonl
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [v0.1.2] - 2026-06-22
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **E2E Test Suite**: 25-test end-to-end test covering capture, retrieve, timeline, connect, traverse, session lifecycle, smart store, vector search, DB ops, identity, persona, onboarding, pipeline, index rebuild, dedup, and error handling — all calling `handle_call` directly (no HTTP server) with retry-on-BUSY pattern. (`tests/test_e2e.py`, `tests/test_helpers.py`)
|
|
8
|
+
- **Memory Health System**: New `memall.core.health` module with `collect()` for actionable memory diagnostics. Integrated into `memall doctor --deep` for deep health checks and `session_start` as `[HEALTH]` section. Reports graph coverage, reflection rate, isolated memories, stale discussions, pipeline freshness, and DB size with issue/recommendation hints. (`core/health.py`, `cli/commands/management_commands.py`, `pipeline/session.py`)
|
|
9
|
+
- **Export/Import/Sync System**: JSONL export format with content_hash dedup, `--since` time filter, `memall import <file>` for JSON/JSONL import, and `memall sync --from <file>` for incremental sync with state tracking in `~/.memall/sync_state.json`. (`cli/export.py`, `cli/main.py`, `cli/commands/management_commands.py`)
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Category Taxonomy Normalization**: Eliminated all 122 composite categories and consolidated 100+ labels → 25 clean categories. Fixed root cause in `integrate.py` (L10 merge no longer concatenates categories with `、`; picks majority category instead). Applied DB cleanup via migration script to standardize synonyms (`bugfix→fix`, `business_idea→business`, `discussion_response→discussion`, `daily_summary→report`, etc.). (`pipeline/integrate.py`)
|
|
14
|
+
- **ops.py SyntaxError**: Moved `import logging` to module level to fix `expected 'except' or 'finally' block` crash introduced in earlier commit. (`pipeline/ops.py`)
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **Lazy Auto-Init**: `get_conn()` and `ConnectionPool._new_conn()` now call `init_db()` on their first invocation, so no explicit `memall init` is required for new users or agents that clone the repo. (`core/db.py`)
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **Gateway import global content_hash dedup**: Dedup check was scoped by `agent_name`, but the `UNIQUE` constraint is global — switched to a global lookup. (`gateway.py`)
|
|
23
|
+
- **Connection Pool Write Lock**: `pool_conn()` returned connections with uncommitted implicit write transactions, causing "database is locked" on reused connections. Added `conn.commit()` in pool_conn context manager's finally block. (`core/db.py`)
|
|
24
|
+
- **vec0 Dimension Mismatch**: `build_index()` passed raw k-dim SVD vectors (k ≪ 256 for small datasets) to vec0 expecting 256-dim vectors. Added padding to `EMBED_DIM=256` before `tobytes()`. (`graph/embeddings.py`)
|
|
25
|
+
- **Pipeline Hook TypeError**: `_hook_pipeline_stop` assumed all step results were `int`, but `classify_step()` returns `dict`. Added `_count()` helper to extract integer from dict. (`mcp/hooks_builtin.py`)
|
|
26
|
+
- **OpsInput None Defaults**: Pydantic model had `Optional[int] = None` which `model_dump()` preserved as `None`, causing `TypeError` in dedup operator. Changed to explicit `Field(...)` defaults. (`mcp/models.py`)
|
|
27
|
+
- **`_auto_embed` Missing Table**: Called `SELECT` on `memory_embeddings` before table existed on fresh DB. Added `_ensure_embeddings_table()` guard. (`graph/embeddings.py`)
|
|
28
|
+
- **`_load_embeddings_matrix` Missing Table**: Queried `memory_embeddings` without creating it first. Added `_ensure_embeddings_table()` call. (`graph/embeddings.py`)
|
|
29
|
+
- **`_query_embed` Dimension Mismatch**: SVD produced k-dim query vectors (k < `EMBED_DIM`) causing matmul shape error. Added padding to `EMBED_DIM=256`. (`graph/retrieve.py`)
|
|
30
|
+
- **Migration 015/017/018 Silent Errors**: `logger = logging.getLogger(__name__)` placed inside docstrings, never executed — migrations silently caught all exceptions. Extracted logger assignment above docstring. (`migrations/015_*.py`, `migrations/017_*.py`, `migrations/018_*.py`)
|
|
31
|
+
- **Missing `identity_profile` Column**: Column referenced in code but missing from base schema DDL. Added to `CREATE TABLE identities`. (`core/db.py`)
|
|
32
|
+
- **Thread-Safe Connection Close**: `ConnectionPool.get()` tried to close connections owned by another thread, causing `ProgrammingError`. Added specific catch for `sqlite3.ProgrammingError`. (`core/db.py`)
|
|
33
|
+
- **SyntaxWarning `\\w`**: Invalid escape sequence `\w` in docstring triggered Python 3.12 warning. Escaped backslash. (`graph/embeddings.py`)
|
|
34
|
+
- **`doctor --deep` UnboundLocalError**: Redundant `import json` inside `cmd_doctor()` shadowed the module-level import, causing `UnboundLocalError` on all non-`--fix` runs. Removed the local import. (`cli/commands/management_commands.py`)
|
|
35
|
+
- **MCP stdout GBK crash**: `_respond()` wrote JSON with `ensure_ascii=False` to `sys.stdout`, which crashes on Windows GBK consoles when Unicode chars (✅) appear. Added `sys.stdout.reconfigure(encoding='utf-8')` at `serve()` entry + `PYTHONIOENCODING=utf-8` env var in MCP config. (`mcp/server.py`, `.claude/settings.json`)
|
|
36
|
+
- **DB default on C: drive**: `_resolve_db_path()` now prefers first available non-system drive (D:, E:, …) on Windows instead of always dropping in `C:\Users\...\.memall`. Backups and `memall doctor` path checks follow the same logic. (`core/db.py`, `cli/backup_restore.py`, `cli/commands/management_commands.py`)
|
|
37
|
+
|
|
38
|
+
## [v0.1.1] - 2026-06-21
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- **HTTP Transport Crash**: Root cause fixed — sync `handle_call()` blocked aiohttp event loop. Offloaded to `ThreadPoolExecutor` (12 fast + 2 heavy workers) with `asyncio.wait_for()`. Auto-restart on crash/port conflict. (`http_transport.py`, `shared.py`)
|
|
43
|
+
- **DB Connection Deadlock**: `ConnectionPool.get()` had no timeout on `Queue.get()` — added 30s barrier. 21 raw `sqlite3.connect()` calls missing `timeout=10` — all backfilled across federation, lark, cli, pipeline modules. (`core/db.py`, 8 federation/cli/api files)
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **L7 Lifecycle Closure**: `auto_inject` defaults to True across all entry points (5 files) — new sessions automatically inject `[L7约束]` behavioral rules. L6→L7 auto-distillation via `distill_l7.py` regex-based lesson extraction, registered in pipeline after `reflect_step()`. (`pipeline/distill_l7.py`, `mcp/models.py`, `mcp/tools/__init__.py`, `mcp/tools/session.py`, `pipeline/session.py`, `api/server.py`, `pipeline/pipeline.py`)
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- **CLAUDE.md**: Added "自动提交" rule — each independent change auto-updates ALL relevant .md (not just CHANGELOG) + commit + push + notify user.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **Lazy Auto-Init**: `get_conn()` and `ConnectionPool._new_conn()` now call `init_db()` on their first invocation, so no explicit `memall init` is required for new users or agents that clone the repo. (`core/db.py`)
|
|
56
|
+
|
|
57
|
+
## [v0.1.0] - 2026-06-19
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
|
|
61
|
+
- **Memory Lifecycle**: 10-layer memory architecture (P0/L1-L10) with automatic pipeline
|
|
62
|
+
- **Decision Arcs**: Full L4→L5→L6 lifecycle with convergence engine for multi-agent discussions
|
|
63
|
+
- **Timeline System**: Pre-aggregated time_slices (day/week/month) + epoch detection (gaps, topic drift, reflection inflection points)
|
|
64
|
+
- **Self-Reflection (L6)**: Automatic quality review, pattern recognition, error correction
|
|
65
|
+
- **Knowledge Distillation (L9)**: Compress raw memories into structured knowledge graph
|
|
66
|
+
- **Multi-Agent Federation**: Cross-agent memory publish/query/conflict resolution with trust hierarchy
|
|
67
|
+
- **LAN Discovery**: Auto-detect nearby peers via mDNS, bidirectional sync
|
|
68
|
+
- **Hybrid Search**: FTS5 exact match + sqlite-vec (256-dim) semantic similarity
|
|
69
|
+
- **Session Management**: session_start with auto-inject, session_end with summary, session_summary
|
|
70
|
+
- **Agent Identity**: L1 identity traits + L7 preferences profiling
|
|
71
|
+
- **Onboarding System**: 5-step guided setup for new users
|
|
72
|
+
- **OODA Self-Improvement**: Observe-Orient-Decide-Act loop without human intervention
|
|
73
|
+
- **Quality Gates**: 8-dimension scoring in pipeline (relevance, coherence, novelty, actionability, etc.)
|
|
74
|
+
- **Auto-Forget**: TTL expiration + low-value decay with review mechanism
|
|
75
|
+
- **Memory Ops**: merge, split, tag, archive, restore, dedup tools
|
|
76
|
+
- **Security Governance**: audit, permit, check, score subsystem
|
|
77
|
+
- **Gateway Server**: HTTP export/import, LAN discovery, federated queries
|
|
78
|
+
|
|
79
|
+
### Changed
|
|
80
|
+
|
|
81
|
+
- **Architecture Redesign**: From legacy 62-action surface to Thin Waist 5-method (capture/recall/connect/traverse/timeline)
|
|
82
|
+
- **MCP Tool Consolidation**: 19 independent tools → 4 tool sets (core, AI, graph, system) → 37 unified MCP tools
|
|
83
|
+
- **Pipeline v3**: 21-step automatic pipeline (enrich → classify → time_slice → arc_status → echo → epoch → reflect → distill → integrate → ...)
|
|
84
|
+
- **Configuration**: All config stored in SQLite `config` table, env overridable
|
|
85
|
+
- **Identity evolved**: Agent identities table with L1/L7 portrait generation
|
|
86
|
+
- **Discipline Migration**: Legacy daemon → Windows Scheduled Tasks (04:00 pipeline, 03:00 forget)
|
|
87
|
+
- **MCP Server**: Unified STDIO + HTTP transport via config-based routing
|
|
88
|
+
- **Pricing positioning**: Freemium model (Free: 5k memory limit, Pro: $9.99/mo) defined
|
|
89
|
+
|
|
90
|
+
### Fixed
|
|
91
|
+
|
|
92
|
+
- **DB Path Resolution**: Config-based path respecting overrides (#7905, #8144)
|
|
93
|
+
- **OpenBLAS OOM**: Pipeline crash on 2000+ memories (#8133)
|
|
94
|
+
- **Scheduler Restored**: After 12-day downtime, migrated to Windows Tasks (#7895)
|
|
95
|
+
- **Discussion Dual-Path**: _meta/value duplicate entries (#8177)
|
|
96
|
+
- **Discussion Metadata Migration**: Legacy table drop without re-wrap cycle (#7958, #7963)
|
|
97
|
+
- **Silent Errors**: 79 blocks across 33 files migrated from bare pass to logger.warning (#7965)
|
|
98
|
+
- **Database Copy Bug**: Fixed concurrent write corruption (#5558)
|
|
99
|
+
- **Classify Level Loss**: layer field not persisted in classify step (#4894)
|
|
100
|
+
- **Bridge N+1**: Per-edge queries converted to batch IN (#5306)
|
|
101
|
+
- **Migration Cleanup**: Double migration system removed (#5305)
|
|
102
|
+
- **Test Isolation**: conftest.py + production DB protection (#6292)
|
|
103
|
+
- **10-Layer Health Skew**: Resolved architecture imbalance (#4975, #4977)
|
|
104
|
+
- **Consumer Recovery**: Message consumption restored after refactor (#4979-#4981)
|
|
105
|
+
- **FTS5 Repair**: memory-doctor.py for database integrity checks
|
|
106
|
+
- **Discussion Status**: Removed bare status after cleanup (#7963)
|
|
107
|
+
- **Backup Restoration**: Added memall backup/restore/check commands
|
|
108
|
+
|
|
109
|
+
### Removed
|
|
110
|
+
|
|
111
|
+
- Legacy daemon process (replaced by Windows Scheduled Tasks)
|
|
112
|
+
- _run_migrations + 7 migration files (dual migration system)
|
|
113
|
+
- Legacy SmartMemoryInjector (integrated into pipeline)
|
|
114
|
+
- Kronvex from comparison table (blocking marketplace listing)
|
|
115
|
+
- FTS5 as standalone MCP tool (SQLite built-in, not a tool)
|
|
116
|
+
|
|
117
|
+
### Security
|
|
118
|
+
|
|
119
|
+
- **3-Layer Safety Net**: Permission + circuit-breaker + recovery
|
|
120
|
+
- **QR Pairing**: LAN device authentication without network exposure
|
|
121
|
+
- **PII Redaction**: Optional content sanitization in scrape/parse pipelines
|
|
122
|
+
- **API Key Auth**: MCP Server authentication module
|
|
123
|
+
|
|
124
|
+
## [v0.0.2] - 2026-06-06
|
|
125
|
+
|
|
126
|
+
### Added
|
|
127
|
+
|
|
128
|
+
- Phase 2 compression and decay mechanisms (DreamGenerator, MemoryLifecycle)
|
|
129
|
+
- Timeline dimension: time_slices, epochs, session summary injection
|
|
130
|
+
- Decision Arc: full L4→L5→L6 lifecycle
|
|
131
|
+
- Discussion convergence engine
|
|
132
|
+
- MCP Marketplace listing draft
|
|
133
|
+
- LAN discovery and federation prototype
|
|
134
|
+
|
|
135
|
+
### Changed
|
|
136
|
+
|
|
137
|
+
- Legacy -> Thin Waist architecture migration completed
|
|
138
|
+
- 19 MCP tools -> 4 tool sets
|
|
139
|
+
- Tag normalization: 352 unique tags → 33 (91% reduction), 5-dimension standard set
|
|
140
|
+
- Database path: sandbox (~/.MemALL) → workspace
|
|
141
|
+
|
|
142
|
+
### Fixed
|
|
143
|
+
|
|
144
|
+
- Dead code and script cleanup
|
|
145
|
+
- L9 decay pipeline timeout
|
|
146
|
+
- FTS5 + vector search hybrid
|
|
147
|
+
- BOM illegal characters (8 files)
|
|
148
|
+
- Indentation/syntax errors (5 files)
|
|
149
|
+
|
|
150
|
+
## [v0.0.1] - 2026-05-25
|
|
151
|
+
|
|
152
|
+
### Added
|
|
153
|
+
|
|
154
|
+
- Initial MemALL prototype with SQLite-backed memory storage
|
|
155
|
+
- MCP server with HTTP + STDIO transport
|
|
156
|
+
- CLI with 40+ subcommands
|
|
157
|
+
- Agent SDK Python client
|
|
158
|
+
- Basic capture/retrieve/timeline/search operations
|
|
159
|
+
- 10-layer architecture: P0/L1-L10
|
|
160
|
+
- FTS5 full-text search
|
|
161
|
+
- Identity and Agent Registry
|
|
162
|
+
- Self-improvement framework (HOT memory injection)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# MemALL 开发约束
|
|
2
|
+
|
|
3
|
+
## 自动存入记忆
|
|
4
|
+
每次完成一个独立改动(修复、重构、新增功能)后,**自主**调用 `capture()` 存入 summary 记忆,不需要等待用户提醒。包括:
|
|
5
|
+
- 代码改动完成后立即存
|
|
6
|
+
- 重要分析/决策结论存
|
|
7
|
+
- session 反思自主存(L6)
|
|
8
|
+
|
|
9
|
+
## 修复流程
|
|
10
|
+
1. 先分析根因,再考虑 workaround
|
|
11
|
+
2. 异常数据分布先查数据流路径的 WHERE 条件
|
|
12
|
+
3. 改完后做完整 import/parse + 干运行验证
|
|
13
|
+
|
|
14
|
+
## 自我反思
|
|
15
|
+
1. 每个 session 结束时,自主做一次 L6 反思:做对了什么、做错了什么、改进点
|
|
16
|
+
2. 反思存入数据库(level=L6, category=reflection),不等用户要求
|
|
17
|
+
|
|
18
|
+
## 自我改进
|
|
19
|
+
1. L1/L7 教训:遇到数据分布异常先查 WHERE 条件链,不凭直觉下结论
|
|
20
|
+
2. 修复节奏:改完做完整验证(import + parse + 干运行),不分步 debug
|
|
21
|
+
3. 根因优先:改一行 SQL → 改配置 → 加新模块,顺序不可倒置
|
|
22
|
+
|
|
23
|
+
## 自动提交
|
|
24
|
+
每次完成一个独立改动后(修复/重构/新增功能 + 验证通过):
|
|
25
|
+
1. **更新文档**:在 `CHANGELOG.md` 末尾追加条目(日期 + 摘要 + 涉及文件),同时排查所有相关 `.md`(`README*.md`、`QUICKSTART.md`、`architecture_*.md`、`COMPARISON.md` 等),按实际情况更新内容——不局限于追加,过期内容要改、废弃内容要删
|
|
26
|
+
2. **commit + push**:`git add -A && git commit -m "type: summary..." && git push`
|
|
27
|
+
3. commit message 用英文,格式:`type: description`(type: fix/feat/refactor/docs/chore)
|
|
28
|
+
4. 推送完后主动告知用户(一句短消息,例如 "已推送 (hash)")
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# 竞品对比:MemALL vs Mem0 / Letta / Zep
|
|
2
|
+
|
|
3
|
+
## 核心定位差异
|
|
4
|
+
|
|
5
|
+
| 维度 | MemALL | Mem0 | Letta | Zep |
|
|
6
|
+
|------|--------|------|-------|-----|
|
|
7
|
+
| **定位** | Multi-agent Memory OS / Loop Engineering 记忆基础设施 | 个人 AI 记忆层 | Agent 服务端框架 | 对话记忆中间件 |
|
|
8
|
+
| **记忆模型** | 10 层生命周期(P0-L10) | 用户/会话 两层 | 智能体/记忆块 | 会话/摘要 两层 |
|
|
9
|
+
| **持久化** | SQLite(本地优先) | 云 API | PostgreSQL | 云 API |
|
|
10
|
+
| **协议** | MCP Server | REST API | REST + gRPC | REST API |
|
|
11
|
+
| **开源** | ✅ 全开源 | ⚠️ 部分 | ✅ | ⚠️ 部分 |
|
|
12
|
+
|
|
13
|
+
## 功能差异
|
|
14
|
+
|
|
15
|
+
### 记忆生命周期
|
|
16
|
+
|
|
17
|
+
MemALL 独有:P0(紧急)→ P1/P2(规划)→ L1-L10(认知层级),每条记忆有明确的层级语义和转换规则。竞品只有"用户记忆"和"会话记忆"两类。
|
|
18
|
+
|
|
19
|
+
### 时间线
|
|
20
|
+
|
|
21
|
+
| 能力 | MemALL | Mem0 | Letta | Zep |
|
|
22
|
+
|------|--------|------|-------|-----|
|
|
23
|
+
| 预聚合时间片 | time_slices(日/周/月) | ❌ | ❌ | ❌ |
|
|
24
|
+
| 时期分段 | epochs(自动检测 gap/主题漂移/反思拐点) | ❌ | ❌ | ❌ |
|
|
25
|
+
| 时间衰减 | temporal_weight(指数+epoch_boost) | ❌ | ❌ | 基础衰减 |
|
|
26
|
+
| 感知时长 | ❌(Phase 3) | ❌ | ❌ | ❌ |
|
|
27
|
+
|
|
28
|
+
### 决策追踪
|
|
29
|
+
|
|
30
|
+
| 能力 | MemALL | Mem0 | Letta | Zep |
|
|
31
|
+
|------|--------|------|-------|-----|
|
|
32
|
+
| 决策生命周期 | 决策弧(open→in_progress→closed) | ❌ | ❌ | ❌ |
|
|
33
|
+
| 任务关联 | L5 任务自动关联决策 | ❌ | ❌ | ❌ |
|
|
34
|
+
| 反思闭环 | L6 反思自动闭合决策弧 | ❌ | ❌ | ❌ |
|
|
35
|
+
| 未闭合决策注入 | session_start 自动提示 | ❌ | ❌ | ❌ |
|
|
36
|
+
|
|
37
|
+
### 记忆管线
|
|
38
|
+
|
|
39
|
+
MemALL 有 21 步自动管线(enrich → classify → time_slice → arc_status → echo → epoch → reflect → distill → integrate → ...)。竞品依赖用户手动触发或简单 CRUD。
|
|
40
|
+
|
|
41
|
+
### 讨论收敛
|
|
42
|
+
|
|
43
|
+
MemALL Phase 1.5 支持多 Agent 讨论自动推进到共识并 capture 为可追溯的决策记忆。竞品无此能力。
|
|
44
|
+
|
|
45
|
+
### 多 Agent 协作
|
|
46
|
+
|
|
47
|
+
| 能力 | MemALL | Mem0 | Letta | Zep |
|
|
48
|
+
|------|--------|------|-------|-----|
|
|
49
|
+
| 跨 Agent 共享 | 共享记忆 + 权限控制 | ❌ | 同 Agent 内 | ❌ |
|
|
50
|
+
| Agent 身份 | identities 表 + L1/L7 画像 | ❌ | 智能体定义 | ❌ |
|
|
51
|
+
| 联邦记忆 | 跨设备同步 + LAN 发现 | ❌ | ❌ | ❌ |
|
|
52
|
+
|
|
53
|
+
## 适用场景
|
|
54
|
+
|
|
55
|
+
| 场景 | 推荐 |
|
|
56
|
+
|------|------|
|
|
57
|
+
| 个人 AI 助手记忆 | Mem0 / MemALL |
|
|
58
|
+
| 单 Agent 长期对话 | Zep |
|
|
59
|
+
| 自主 Agent 服务端 | Letta |
|
|
60
|
+
| **多 Agent 协作系统** | **MemALL** |
|
|
61
|
+
| **Loop Engineering 基础设施** | **MemALL** |
|
|
62
|
+
| **本地优先 / 离线场景** | **MemALL** |
|
|
63
|
+
| 团队 / 企业级 | Letta / Zep Cloud |
|
|
64
|
+
|
|
65
|
+
## MemALL 的核心差异总结
|
|
66
|
+
|
|
67
|
+
1. **生命周期深度**:10 层不是噱头,每条记忆知道自己的"认知权重"
|
|
68
|
+
2. **时间线维度**:time_slices + epochs = Agent 知道自己"从哪来、在哪个阶段"
|
|
69
|
+
3. **决策弧**:让 Agent 知道"哪些决策没有收尾",这是 Loop Engineering 中 Sub-agents 协作的前提
|
|
70
|
+
4. **离线优先**:SQLite 本地运行,不依赖云 API,适合需要数据主权的场景
|
|
71
|
+
5. **管线自动化**:21 步管线自动处理,无需手动维护
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Contributing to MemALL
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing! We're an open-source, community-driven project and welcome contributions of all kinds.
|
|
4
|
+
|
|
5
|
+
## 🐛 Bug Reports
|
|
6
|
+
|
|
7
|
+
Open a [GitHub Issue](https://github.com/j19800/MemALL/issues/new) with:
|
|
8
|
+
- A clear title and description
|
|
9
|
+
- Steps to reproduce
|
|
10
|
+
- Expected vs actual behavior
|
|
11
|
+
- Your environment (OS, Python version, MemALL version)
|
|
12
|
+
|
|
13
|
+
## 💡 Feature Requests
|
|
14
|
+
|
|
15
|
+
Open a [Discussion](https://github.com/j19800/MemALL/discussions) first. We use L4 decisions internally to track feature planning — your proposal will be treated the same way.
|
|
16
|
+
|
|
17
|
+
## 🔧 Pull Requests
|
|
18
|
+
|
|
19
|
+
1. Fork the repo
|
|
20
|
+
2. Create a feature branch (`git checkout -b feat/your-feature`)
|
|
21
|
+
3. Make your changes
|
|
22
|
+
4. Run tests: `pytest`
|
|
23
|
+
5. Open a PR against `main`
|
|
24
|
+
|
|
25
|
+
### PR Checklist
|
|
26
|
+
- [ ] Tests pass (`pytest`)
|
|
27
|
+
- [ ] New tests added if applicable
|
|
28
|
+
- [ ] Code follows existing style (we use `black` + `ruff`)
|
|
29
|
+
- [ ] Commit messages are clear
|
|
30
|
+
|
|
31
|
+
## 🧪 Development Setup
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git clone https://github.com/j19800/MemALL
|
|
35
|
+
cd memall
|
|
36
|
+
pip install -e .[dev]
|
|
37
|
+
pytest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 📋 Code of Conduct
|
|
41
|
+
|
|
42
|
+
Be respectful. We're building something cool — let's keep it fun.
|
memall_os-0.1.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2025 MemALL Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|