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.
Files changed (198) hide show
  1. memall_os-0.1.2/.env.example +14 -0
  2. memall_os-0.1.2/.github/ISSUE_TEMPLATE/bug_report.yml +30 -0
  3. memall_os-0.1.2/.github/ISSUE_TEMPLATE/feature_request.yml +23 -0
  4. memall_os-0.1.2/.github/workflows/ci.yml +36 -0
  5. memall_os-0.1.2/.gitignore +155 -0
  6. memall_os-0.1.2/CHANGELOG.md +162 -0
  7. memall_os-0.1.2/CLAUDE.md +28 -0
  8. memall_os-0.1.2/COMPARISON.md +71 -0
  9. memall_os-0.1.2/CONTRIBUTING.md +42 -0
  10. memall_os-0.1.2/LICENSE +21 -0
  11. memall_os-0.1.2/MemALL_Function_Spec.md +914 -0
  12. memall_os-0.1.2/PKG-INFO +266 -0
  13. memall_os-0.1.2/QUICKSTART.md +78 -0
  14. memall_os-0.1.2/README.md +217 -0
  15. memall_os-0.1.2/README.zh-CN.md +217 -0
  16. memall_os-0.1.2/RELEASE_NOTES_v0.1.0.md +163 -0
  17. memall_os-0.1.2/desktop/index.html +1864 -0
  18. memall_os-0.1.2/freellmapi/.env.example +32 -0
  19. memall_os-0.1.2/frontend/index.html +1864 -0
  20. memall_os-0.1.2/lib/bindings/utils.js +189 -0
  21. memall_os-0.1.2/lib/tom-select/tom-select.complete.min.js +356 -0
  22. memall_os-0.1.2/lib/tom-select/tom-select.css +334 -0
  23. memall_os-0.1.2/lib/vis-9.1.2/vis-network.css +1 -0
  24. memall_os-0.1.2/lib/vis-9.1.2/vis-network.min.js +27 -0
  25. memall_os-0.1.2/mcp_servers.json.example +14 -0
  26. memall_os-0.1.2/obsidian-plugin/main.js +514 -0
  27. memall_os-0.1.2/obsidian-plugin/manifest.json +10 -0
  28. memall_os-0.1.2/obsidian-plugin/styles.css +16 -0
  29. memall_os-0.1.2/paperclip/.env.example +7 -0
  30. memall_os-0.1.2/plugin/memall-sync-v2/main.js +15 -0
  31. memall_os-0.1.2/plugin/memall-sync-v2/manifest.json +9 -0
  32. memall_os-0.1.2/pyproject.toml +88 -0
  33. memall_os-0.1.2/src/memall/api/frontend/index.html +1864 -0
  34. memall_os-0.1.2/src/memall/api/server.py +840 -0
  35. memall_os-0.1.2/src/memall/api/start_server.py +27 -0
  36. memall_os-0.1.2/src/memall/bridge/config.py +68 -0
  37. memall_os-0.1.2/src/memall/bridge/lark_client.py +174 -0
  38. memall_os-0.1.2/src/memall/bridge/main.py +302 -0
  39. memall_os-0.1.2/src/memall/bridge/run_bridge.py +12 -0
  40. memall_os-0.1.2/src/memall/bridge/watchdog.py +78 -0
  41. memall_os-0.1.2/src/memall/cli/backup_restore.py +321 -0
  42. memall_os-0.1.2/src/memall/cli/commands/base.py +104 -0
  43. memall_os-0.1.2/src/memall/cli/commands/federation_commands.py +174 -0
  44. memall_os-0.1.2/src/memall/cli/commands/gateway_commands.py +95 -0
  45. memall_os-0.1.2/src/memall/cli/commands/management_commands.py +1146 -0
  46. memall_os-0.1.2/src/memall/cli/commands/pipeline_commands.py +682 -0
  47. memall_os-0.1.2/src/memall/cli/export.py +266 -0
  48. memall_os-0.1.2/src/memall/cli/main.py +453 -0
  49. memall_os-0.1.2/src/memall/cli/register.py +171 -0
  50. memall_os-0.1.2/src/memall/cli/setup.py +494 -0
  51. memall_os-0.1.2/src/memall/cli/uninstall.py +132 -0
  52. memall_os-0.1.2/src/memall/config.py +282 -0
  53. memall_os-0.1.2/src/memall/core/context_assembler.py +65 -0
  54. memall_os-0.1.2/src/memall/core/db.py +649 -0
  55. memall_os-0.1.2/src/memall/core/health.py +174 -0
  56. memall_os-0.1.2/src/memall/core/models.py +48 -0
  57. memall_os-0.1.2/src/memall/core/nlp.py +191 -0
  58. memall_os-0.1.2/src/memall/core/thin_waist.py +958 -0
  59. memall_os-0.1.2/src/memall/federation/conflict.py +281 -0
  60. memall_os-0.1.2/src/memall/federation/family.py +410 -0
  61. memall_os-0.1.2/src/memall/federation/health.py +129 -0
  62. memall_os-0.1.2/src/memall/federation/visualize.py +195 -0
  63. memall_os-0.1.2/src/memall/gateway.py +2137 -0
  64. memall_os-0.1.2/src/memall/graph/embeddings.py +234 -0
  65. memall_os-0.1.2/src/memall/graph/retrieve.py +244 -0
  66. memall_os-0.1.2/src/memall/graph/vector_model.py +197 -0
  67. memall_os-0.1.2/src/memall/graph/visualize.py +172 -0
  68. memall_os-0.1.2/src/memall/lark/client.py +183 -0
  69. memall_os-0.1.2/src/memall/lark/consumer.py +409 -0
  70. memall_os-0.1.2/src/memall/lark/consumer_helpers.py +34 -0
  71. memall_os-0.1.2/src/memall/lark/credentials.py +89 -0
  72. memall_os-0.1.2/src/memall/lark_notify.py +207 -0
  73. memall_os-0.1.2/src/memall/mcp/adapter.py +61 -0
  74. memall_os-0.1.2/src/memall/mcp/federation_tools.py +608 -0
  75. memall_os-0.1.2/src/memall/mcp/hooks.py +107 -0
  76. memall_os-0.1.2/src/memall/mcp/hooks_builtin.py +50 -0
  77. memall_os-0.1.2/src/memall/mcp/http_transport.py +381 -0
  78. memall_os-0.1.2/src/memall/mcp/hub_client.py +196 -0
  79. memall_os-0.1.2/src/memall/mcp/models.py +328 -0
  80. memall_os-0.1.2/src/memall/mcp/registry.py +50 -0
  81. memall_os-0.1.2/src/memall/mcp/server.py +315 -0
  82. memall_os-0.1.2/src/memall/mcp/shared.py +131 -0
  83. memall_os-0.1.2/src/memall/mcp/tools/capture.py +9 -0
  84. memall_os-0.1.2/src/memall/mcp/tools/discussion.py +34 -0
  85. memall_os-0.1.2/src/memall/mcp/tools/federation.py +41 -0
  86. memall_os-0.1.2/src/memall/mcp/tools/gateway.py +69 -0
  87. memall_os-0.1.2/src/memall/mcp/tools/graph.py +12 -0
  88. memall_os-0.1.2/src/memall/mcp/tools/hub.py +15 -0
  89. memall_os-0.1.2/src/memall/mcp/tools/index.py +8 -0
  90. memall_os-0.1.2/src/memall/mcp/tools/manage.py +143 -0
  91. memall_os-0.1.2/src/memall/mcp/tools/memory_write.py +28 -0
  92. memall_os-0.1.2/src/memall/mcp/tools/onboarding.py +182 -0
  93. memall_os-0.1.2/src/memall/mcp/tools/persona.py +58 -0
  94. memall_os-0.1.2/src/memall/mcp/tools/pipeline.py +24 -0
  95. memall_os-0.1.2/src/memall/mcp/tools/reflect.py +31 -0
  96. memall_os-0.1.2/src/memall/mcp/tools/retrieve.py +128 -0
  97. memall_os-0.1.2/src/memall/mcp/tools/session.py +27 -0
  98. memall_os-0.1.2/src/memall/mcp/tools/timeline.py +10 -0
  99. memall_os-0.1.2/src/memall/mcp/validator.py +139 -0
  100. memall_os-0.1.2/src/memall/migrations/001_add_identity_trusted_by.py +19 -0
  101. memall_os-0.1.2/src/memall/migrations/002_add_owner_type.py +18 -0
  102. memall_os-0.1.2/src/memall/migrations/003_add_primary_secondary_layers.py +29 -0
  103. memall_os-0.1.2/src/memall/migrations/004_normalize_supersedes.py +54 -0
  104. memall_os-0.1.2/src/memall/migrations/005_add_memories_confidence.py +21 -0
  105. memall_os-0.1.2/src/memall/migrations/006_add_memories_visibility.py +18 -0
  106. memall_os-0.1.2/src/memall/migrations/007_add_identities_profile_json.py +18 -0
  107. memall_os-0.1.2/src/memall/migrations/008_add_identities_persona_updated_at.py +18 -0
  108. memall_os-0.1.2/src/memall/migrations/009_create_suggestions_table.py +44 -0
  109. memall_os-0.1.2/src/memall/migrations/010_create_narrative_clusters_table.py +23 -0
  110. memall_os-0.1.2/src/memall/migrations/011_create_embeddings_table.py +26 -0
  111. memall_os-0.1.2/src/memall/migrations/012_drop_dead_embeddings.py +18 -0
  112. memall_os-0.1.2/src/memall/migrations/013_add_identities_permission_level.py +19 -0
  113. memall_os-0.1.2/src/memall/migrations/014_add_memories_tags.py +19 -0
  114. memall_os-0.1.2/src/memall/migrations/015_drop_memories_embedding.py +24 -0
  115. memall_os-0.1.2/src/memall/migrations/016_create_time_slices_and_epochs.py +70 -0
  116. memall_os-0.1.2/src/memall/migrations/017_add_arc_status.py +25 -0
  117. memall_os-0.1.2/src/memall/migrations/018_add_echo_score.py +23 -0
  118. memall_os-0.1.2/src/memall/migrations/019_create_discussion_tables.py +64 -0
  119. memall_os-0.1.2/src/memall/onboarding.py +290 -0
  120. memall_os-0.1.2/src/memall/pipeline/adaptive.py +576 -0
  121. memall_os-0.1.2/src/memall/pipeline/arc_status.py +118 -0
  122. memall_os-0.1.2/src/memall/pipeline/ask.py +344 -0
  123. memall_os-0.1.2/src/memall/pipeline/backup.py +39 -0
  124. memall_os-0.1.2/src/memall/pipeline/bridge.py +208 -0
  125. memall_os-0.1.2/src/memall/pipeline/classify.py +242 -0
  126. memall_os-0.1.2/src/memall/pipeline/cleanup.py +127 -0
  127. memall_os-0.1.2/src/memall/pipeline/cluster.py +348 -0
  128. memall_os-0.1.2/src/memall/pipeline/convergence.py +654 -0
  129. memall_os-0.1.2/src/memall/pipeline/decay.py +80 -0
  130. memall_os-0.1.2/src/memall/pipeline/distill.py +177 -0
  131. memall_os-0.1.2/src/memall/pipeline/distill_l7.py +141 -0
  132. memall_os-0.1.2/src/memall/pipeline/echo.py +180 -0
  133. memall_os-0.1.2/src/memall/pipeline/embed_index.py +19 -0
  134. memall_os-0.1.2/src/memall/pipeline/enrich.py +186 -0
  135. memall_os-0.1.2/src/memall/pipeline/epoch.py +372 -0
  136. memall_os-0.1.2/src/memall/pipeline/forget.py +457 -0
  137. memall_os-0.1.2/src/memall/pipeline/identity.py +130 -0
  138. memall_os-0.1.2/src/memall/pipeline/improve.py +277 -0
  139. memall_os-0.1.2/src/memall/pipeline/integrate.py +163 -0
  140. memall_os-0.1.2/src/memall/pipeline/link.py +140 -0
  141. memall_os-0.1.2/src/memall/pipeline/metrics.py +62 -0
  142. memall_os-0.1.2/src/memall/pipeline/narrative.py +202 -0
  143. memall_os-0.1.2/src/memall/pipeline/observe.py +418 -0
  144. memall_os-0.1.2/src/memall/pipeline/ops.py +1008 -0
  145. memall_os-0.1.2/src/memall/pipeline/persona.py +771 -0
  146. memall_os-0.1.2/src/memall/pipeline/pipeline.py +202 -0
  147. memall_os-0.1.2/src/memall/pipeline/procedure.py +88 -0
  148. memall_os-0.1.2/src/memall/pipeline/reflect.py +251 -0
  149. memall_os-0.1.2/src/memall/pipeline/security.py +588 -0
  150. memall_os-0.1.2/src/memall/pipeline/session.py +963 -0
  151. memall_os-0.1.2/src/memall/pipeline/stream.py +149 -0
  152. memall_os-0.1.2/src/memall/pipeline/suggest.py +82 -0
  153. memall_os-0.1.2/src/memall/pipeline/task_lifecycle.py +255 -0
  154. memall_os-0.1.2/src/memall/pipeline/time_slice.py +478 -0
  155. memall_os-0.1.2/src/memall/plugins/dashboard.py +207 -0
  156. memall_os-0.1.2/src/memall/plugins/exporter.py +295 -0
  157. memall_os-0.1.2/src/memall/plugins/loader.py +151 -0
  158. memall_os-0.1.2/src/memall/plugins/notifier.py +116 -0
  159. memall_os-0.1.2/src/memall/plugins/scheduler.py +221 -0
  160. memall_os-0.1.2/src/memall/scheduler/agent_round.py +128 -0
  161. memall_os-0.1.2/src/memall/scheduler/scheduler.py +297 -0
  162. memall_os-0.1.2/src/memall/search/base.py +55 -0
  163. memall_os-0.1.2/src/memall/search/faiss_provider.py +247 -0
  164. memall_os-0.1.2/src/memall/search/registry.py +83 -0
  165. memall_os-0.1.2/tests/conftest.py +29 -0
  166. memall_os-0.1.2/tests/test_adaptive.py +136 -0
  167. memall_os-0.1.2/tests/test_arc_status.py +414 -0
  168. memall_os-0.1.2/tests/test_backup.py +110 -0
  169. memall_os-0.1.2/tests/test_bridge.py +117 -0
  170. memall_os-0.1.2/tests/test_classify.py +150 -0
  171. memall_os-0.1.2/tests/test_cluster.py +120 -0
  172. memall_os-0.1.2/tests/test_config.py +130 -0
  173. memall_os-0.1.2/tests/test_context_assembler.py +132 -0
  174. memall_os-0.1.2/tests/test_convergence.py +127 -0
  175. memall_os-0.1.2/tests/test_decay.py +131 -0
  176. memall_os-0.1.2/tests/test_distill.py +135 -0
  177. memall_os-0.1.2/tests/test_e2e.py +361 -0
  178. memall_os-0.1.2/tests/test_embeddings.py +118 -0
  179. memall_os-0.1.2/tests/test_enrich.py +114 -0
  180. memall_os-0.1.2/tests/test_epoch.py +196 -0
  181. memall_os-0.1.2/tests/test_federation_family.py +188 -0
  182. memall_os-0.1.2/tests/test_federation_health.py +139 -0
  183. memall_os-0.1.2/tests/test_forget.py +179 -0
  184. memall_os-0.1.2/tests/test_gateway.py +129 -0
  185. memall_os-0.1.2/tests/test_helpers.py +95 -0
  186. memall_os-0.1.2/tests/test_hooks.py +102 -0
  187. memall_os-0.1.2/tests/test_improve.py +216 -0
  188. memall_os-0.1.2/tests/test_link.py +132 -0
  189. memall_os-0.1.2/tests/test_metrics.py +144 -0
  190. memall_os-0.1.2/tests/test_narrative.py +120 -0
  191. memall_os-0.1.2/tests/test_nlp.py +108 -0
  192. memall_os-0.1.2/tests/test_ops.py +456 -0
  193. memall_os-0.1.2/tests/test_pipeline.py +481 -0
  194. memall_os-0.1.2/tests/test_reflect.py +132 -0
  195. memall_os-0.1.2/tests/test_security.py +173 -0
  196. memall_os-0.1.2/tests/test_session.py +299 -0
  197. memall_os-0.1.2/tests/test_suggest.py +116 -0
  198. 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.
@@ -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.