memorix 1.4.4 → 1.4.6

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 (90) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/CLAUDE.md +7 -3
  3. package/README.md +14 -4
  4. package/README.zh-CN.md +9 -2
  5. package/dist/cli/index.js +1802 -1138
  6. package/dist/index.js +1298 -991
  7. package/dist/{maintenance-jobs-B1-W0ssz.d.ts → maintenance-jobs-DVRF-46r.d.ts} +1 -1
  8. package/dist/maintenance-runner.d.ts +1 -1
  9. package/dist/maintenance-runner.js +1755 -829
  10. package/dist/media-audio-runner.js +1760 -835
  11. package/dist/media-video-runner.js +1755 -830
  12. package/dist/memcode-runtime/CHANGELOG.md +69 -0
  13. package/dist/sdk.js +1290 -990
  14. package/dist/types.d.ts +7 -1
  15. package/dist/vector-backfill-runner.d.ts +1 -1
  16. package/dist/vector-backfill-runner.js +1751 -826
  17. package/docs/1.4.5-AGENT-AUTO-MEMORY-RESEARCH.md +95 -0
  18. package/docs/AGENT_OPERATOR_PLAYBOOK.md +3 -2
  19. package/docs/API_REFERENCE.md +23 -4
  20. package/docs/CONFIGURATION.md +17 -3
  21. package/docs/INTEGRATIONS.md +9 -2
  22. package/docs/KNOWN_ISSUES_AND_ROADMAP.md +1 -0
  23. package/docs/MEMCODE.md +1 -1
  24. package/docs/SETUP.md +14 -4
  25. package/llms-full.txt +5 -4
  26. package/llms.txt +1 -1
  27. package/package.json +1 -1
  28. package/plugins/antigravity/memorix/mcp_config.json +3 -1
  29. package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
  30. package/plugins/claude/memorix/.mcp.json +1 -1
  31. package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
  32. package/plugins/codebuddy/memorix/.mcp.json +1 -1
  33. package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
  34. package/plugins/codex/memorix/.mcp.json +1 -1
  35. package/plugins/copilot/memorix/.mcp.json +1 -1
  36. package/plugins/copilot/memorix/plugin.json +1 -1
  37. package/plugins/gemini/memorix/gemini-extension.json +4 -2
  38. package/plugins/omp/memorix/package.json +1 -1
  39. package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -1
  40. package/plugins/openclaw/memorix/.mcp.json +3 -1
  41. package/plugins/pi/memorix/package.json +1 -1
  42. package/server.json +2 -2
  43. package/src/cli/commands/agent-integrations.ts +7 -1
  44. package/src/cli/commands/dashboard.ts +14 -3
  45. package/src/cli/commands/hooks-install.ts +2 -0
  46. package/src/cli/commands/hooks-preview.ts +5 -0
  47. package/src/cli/commands/ingest-commit.ts +47 -3
  48. package/src/cli/commands/integrate.ts +2 -0
  49. package/src/cli/commands/memory.ts +17 -4
  50. package/src/cli/commands/purge.ts +120 -0
  51. package/src/cli/commands/serve-http.ts +39 -5
  52. package/src/cli/commands/setup.ts +60 -3
  53. package/src/cli/commands/uninstall.ts +20 -0
  54. package/src/cli/index.ts +3 -804
  55. package/src/codegraph/auto-context.ts +82 -1
  56. package/src/config/yaml-loader.ts +3 -8
  57. package/src/config.ts +0 -5
  58. package/src/evaluation/session-replay.ts +98 -0
  59. package/src/git/extractor.ts +5 -3
  60. package/src/hooks/installers/index.ts +58 -2
  61. package/src/hooks/types.ts +2 -0
  62. package/src/integrations/registry.ts +9 -0
  63. package/src/knowledge/workset.ts +58 -0
  64. package/src/memory/long-term.ts +97 -2
  65. package/src/runtime/control-plane-maintenance.ts +1 -0
  66. package/src/runtime/isolated-maintenance.ts +1 -0
  67. package/src/runtime/lifecycle.ts +19 -0
  68. package/src/runtime/maintenance-jobs.ts +1 -0
  69. package/src/runtime/project-maintenance.ts +8 -0
  70. package/src/search/surfaced-registry.ts +62 -0
  71. package/src/server.ts +74 -14
  72. package/src/store/orama-store.ts +17 -1
  73. package/src/types.ts +7 -1
  74. package/src/workspace/mcp-adapters/dsh.ts +147 -0
  75. package/src/cli/commands/audit-list.ts +0 -89
  76. package/src/cli/commands/purge-all-memory.ts +0 -85
  77. package/src/cli/commands/purge-project-memory.ts +0 -83
  78. package/src/cli/commands/uninstall-project-artifacts.ts +0 -86
  79. package/src/cli/tui/Sidebar.tsx +0 -179
  80. package/src/cli/tui/interactive-commands.ts +0 -261
  81. package/src/cli/tui/markdown-render.tsx +0 -371
  82. package/src/cli/tui/use-mouse.ts +0 -157
  83. package/src/cli/tui/useNavigation.ts +0 -56
  84. package/src/orchestrate/context-compact.ts +0 -188
  85. package/src/team/file-locks.ts +0 -173
  86. package/src/team/index.ts +0 -23
  87. package/src/team/messages.ts +0 -203
  88. package/src/team/persistence.ts +0 -96
  89. package/src/team/registry.ts +0 -158
  90. package/src/team/tasks.ts +0 -211
@@ -0,0 +1,95 @@
1
+ # Research: Claude Code Auto Memory and What Memorix Should Borrow
2
+
3
+ > Status: research note (2026-08-14, against the 1.4.5 line). This document
4
+ > records findings and direction; it is not a shipped feature and not a claim
5
+ > that any item below is implemented.
6
+
7
+ ## Question
8
+
9
+ Claude Code's Auto Memory gives a single agent a file-based, recallable
10
+ workspace memory: `~/.claude/projects/<git-root>/memory/` with a `MEMORY.md`
11
+ entrypoint index and typed memory files. What is the design, how does it
12
+ compare with Memorix, and which parts are worth absorbing?
13
+
14
+ ## Sourcing caveat
15
+
16
+ The mechanism-level details below come from community source-level analyses
17
+ and third-party write-ups, not from an official Anthropic specification:
18
+
19
+ - Source-level analysis of the memory system (`memdir`): project-memory.mdx
20
+ in a community Claude Code docs mirror
21
+ (https://github.com/claude-code-best/claude-code/blob/master/docs/context/project-memory.mdx)
22
+ - Independent critical analysis:
23
+ https://dev.to/chen_zhang_bac430bc7f6b95/claude-codes-memory-4-layers-of-complexity-still-just-grep-and-a-200-line-cap-2kn9
24
+ - Community adoption discussion:
25
+ https://developer.aliyun.com/article/1713756
26
+
27
+ Treat feature-flag names (`KAIROS`, `TEAMMEM`) and thresholds as observed
28
+ behavior of a moving target, not as stable contracts.
29
+
30
+ ## The design, in brief
31
+
32
+ - Pure Markdown files, no database, no vector store. One directory per
33
+ sanitized Git root, shared across worktrees of that repository.
34
+ - `MEMORY.md` is the entrypoint index: at most 200 lines AND 25 KB, one
35
+ `- [Title](file.md) — one-line hook` pointer per line, loaded into every
36
+ session. The knowledge lives in topic files, loaded on demand.
37
+ - A closed four-type taxonomy (user / feedback / project / reference), each
38
+ type with explicit `<when_to_save>`, `<how_to_use>`, and `<body_structure>`
39
+ rules. Each memory file carries frontmatter whose `description` field is
40
+ written for the recall system, not for humans.
41
+ - The core saving rule: only store information that cannot be derived from
42
+ the current project state. Code, file paths, and Git history are
43
+ re-derivable and do not belong in memory.
44
+ - Recall is a lightweight model side-query that picks at most 5 relevant
45
+ memories from the manifest, with denoising for recently used tools and
46
+ dedup of already-surfaced files.
47
+ - Memory is injected as a user-context message (prompt-cache friendly).
48
+ - Drift defense is prompt-level: a memory that names a file, function, or
49
+ flag is a claim about the past — verify before recommending. An explicit
50
+ "ignore memory" instruction means proceed as if `MEMORY.md` were empty.
51
+ - Consolidation ("dream") is time/volume-triggered, merging contradictions
52
+ and pruning stale entries. Long-running sessions may switch to append-only
53
+ daily logs that a later pass distills.
54
+ - Security: the memory directory resolves only from user-level input
55
+ (environment override or a user setting). Project-level settings are
56
+ deliberately excluded from that resolution chain, so a hostile repository
57
+ cannot redirect memory storage to arbitrary paths.
58
+
59
+ ## Comparison with Memorix
60
+
61
+ | Aspect | Claude Code Auto Memory | Memorix (1.4.5) |
62
+ | --- | --- | --- |
63
+ | Audience | One agent, one product | Any MCP/CLI/SDK/hooks agent, shared |
64
+ | Storage | Markdown files | SQLite canonical store + Orama search |
65
+ | Entry injection | Full index, fixed 200-line/25 KB cap | Task-lensed Workset, budget-governed |
66
+ | Taxonomy | Closed 4 types | 11 observation types + reasoning + Git + long-term |
67
+ | Recall | Paid model side-query (needs a key) | Local BM25 primary + bounded semantic fallback |
68
+ | Drift defense | Prompt-level verify-before-use | Freshness, attribution guard, evidence governor |
69
+ | Cleanup | Time/volume-triggered consolidation | Retention + dedup + consolidation pipeline |
70
+ | Path security | User-level-only resolution | User-level-only by construction (env var only) |
71
+
72
+ The critical review's complaint — memory trapped in one product's sandbox,
73
+ no cross-agent sharing — is exactly the space Memorix occupies.
74
+
75
+ ## What Memorix should borrow (directions, not commitments)
76
+
77
+ Shipped (2026-08-14, continuing on the 1.4.x line):
78
+ 1. **The "only store the underivable" rule, made explicit.** Now part of every
79
+ generated guidance file, with the dual-channel rule and the verify-before-use
80
+ / ignore semantics.
81
+ 2. **Dual-channel feedback.** Guidance now tells agents to record validated
82
+ approaches and explicit user confirmations, not only corrections.
83
+ 3. **Session-level dedup of already-surfaced memory.** `memorix_search`
84
+ demotes rows already shown in the same session (never removes them) and
85
+ remembers the surfaced set per session; measured 25% → 19% duplicate rate
86
+ with hits and budget unchanged.
87
+ 4. **Explicit ignore semantics.** Guidance now states the contract: an ignore
88
+ instruction means proceed as if memory were empty.
89
+ 5. **Keep the security boundary tested.** Pinned by
90
+ `tests/config/data-dir-boundary.test.ts`.
91
+
92
+ Scoring lives in `tests/evaluation/session-replay-evaluation.test.ts`
93
+ (retrieval) and `tests/evaluation/guidance-content.test.ts` (guidance); both
94
+ are deterministic and offline. A future change to these behaviors must update
95
+ the pinned scores only with a measured improvement.
@@ -23,7 +23,7 @@ It supports:
23
23
  - HTTP MCP service + dashboard (`memorix background start` or `memorix serve-http --port 3211`)
24
24
  - bundled terminal agent (`memorix` or `memcode`) that uses the same shared memory pool
25
25
  - local-first project-scoped memory
26
- - cross-agent recall across Cursor, Claude Code, Codex, CodeBuddy Code, Windsurf, Gemini CLI, GitHub Copilot, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, and Trae
26
+ - cross-agent recall across Cursor, Claude Code, Codex, CodeBuddy Code, Windsurf, Gemini CLI, GitHub Copilot, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, and DeepSeek Harness
27
27
 
28
28
  ### Current 1.4 Baseline
29
29
 
@@ -41,7 +41,7 @@ For the 1.4 release line, the visible product shape is:
41
41
  - `memorix_project_context` / `memorix context "..."` is the normal black-box entry for non-trivial coding work: it assembles a bounded task Workset instead of injecting a generic memory dump; `memorix resume "..."` is the explicit CLI continuation projection
42
42
  - Code State keeps local snapshots and freshness links; a healthy pre-existing local CodeGraph index can add a bounded semantic outline, but Memorix never initializes or synchronizes that external index itself
43
43
  - `memorix knowledge` is an explicit review path for source-backed Markdown knowledge and canonical workflows. Do not initialize a versioned workspace or apply a proposal unless the user asks for that managed artifact
44
- - integration surfaces are agent-specific: Claude Code, Codex, GitHub Copilot CLI, Antigravity, and Hermes receive plugin packages; OpenClaw receives a compatible bundle; Pi and Oh-my-Pi receive package entries; Gemini CLI receives an extension package; OpenCode receives a plugin file and skill; Cursor and other agents receive MCP/rules/hooks where supported
44
+ - integration surfaces are agent-specific: Claude Code, Codex, GitHub Copilot CLI, Antigravity, and Hermes receive plugin packages; OpenClaw receives a compatible bundle; Pi and Oh-my-Pi receive package entries; Gemini CLI receives an extension package; OpenCode receives a plugin file and skill; DeepSeek Harness receives an MCP patch row, AGENTS.md guidance, and skills; Cursor and other agents receive MCP/rules/hooks where supported
45
45
  - privacy-safe diagnostics and receipts avoid raw chat, memory text, query text, tool payloads, and local file paths
46
46
 
47
47
  ---
@@ -256,6 +256,7 @@ What this installs depends on the target agent:
256
256
  - Hermes Agent: Hermes plugin under Hermes home (`%LOCALAPPDATA%\hermes` on native Windows, `~/.hermes` elsewhere, or `HERMES_HOME`), enabled in `config.yaml`, with plugin hooks, slash command, CLI command, skills, and MCP config.
257
257
  - Oh-my-Pi: `omp.extensions` package linked through `omp plugin link <path>` when available, with extension hook events, a `memorix` command, skills, and MCP config.
258
258
  - Windsurf, Kiro, Trae: MCP config plus rules/hooks where supported.
259
+ - DeepSeek Harness: a Memorix `@deepseek-ai/dsh-mcp-client` row in `$DSH_HOME/cordis.patch.yml` (default `~/.dsh/cordis.patch.yml`), harness `AGENTS.md` guidance, and official skills under `$DSH_HOME/skills`. Tools appear as `mcp__memorix__*`; there is no hooks surface. Project-local setup writes project `AGENTS.md` guidance and `.dsh/skills`, while the MCP row stays in the harness-level patch file.
259
260
 
260
261
  Run the same setup command without `--global` only when you intentionally want repo-local guidance, rules, or hooks for a single Git project.
261
262
 
@@ -223,7 +223,7 @@ Important inputs:
223
223
  - optional `relatedCommits`
224
224
  - optional `relatedEntities`
225
225
  - optional `visibility`: `project` (default), `personal`, or `team`
226
- - optional `longTerm`: an explicit source-backed long-term candidate with `kind` (`episodic`, `semantic`, or `procedural`), an optional `scope` (`project`, `user`, or `team`), tags, and applicability
226
+ - optional `longTerm`: an explicit source-backed long-term record with `kind` (`episodic`, `semantic`, or `procedural`), an optional `scope` (`project`, `user`, or `team`), tags, and applicability
227
227
 
228
228
  Visibility controls who can retrieve a record through agent-facing memory
229
229
  tools. Normal memories default to `project`. `personal` and `team` writes
@@ -236,11 +236,15 @@ files, `memorix_store` returns without writing. Use `overrideReadOnly: true`
236
236
  only when the user explicitly asks to preserve a record during that task.
237
237
 
238
238
  `longTerm` is deliberately opt-in. It stores the normal Observation first, then
239
- creates a separate candidate with an evidence reference. Candidates are not
240
- inserted into a Task Workset. Review them with `memorix memory long-term
241
- list|show|qualify|approve|archive|supersede`. Source-derived entries remain
239
+ creates a separate record with an evidence reference. Because an explicit
240
+ request carries its own source evidence, the new record is auto-qualified on
241
+ the spot and enters Task Worksets as durable context; approval remains an
242
+ explicit operator review. Manage records with `memorix memory long-term
243
+ list|show|approve|archive|supersede`. Source-derived entries remain
242
244
  project-bound; only a manual or user-confirmed `user + portable` record created
243
245
  through the CLI may cross local projects for the same local installation.
246
+ Hook-captured and git-derived candidates stay in the candidate state until
247
+ qualified.
244
248
 
245
249
  Example:
246
250
 
@@ -540,6 +544,21 @@ Use it to inspect:
540
544
  - stage timing
541
545
  - recent pipeline behavior
542
546
 
547
+ ### `memorix_audit_project`
548
+
549
+ Scan the current project for observations that may have been written to the
550
+ wrong project bucket — entities that appear exclusively in a different
551
+ project. Read-only; nothing is changed.
552
+
553
+ Available in the `full` tool profile (`MEMORIX_MODE=full` or `--mode full`).
554
+
555
+ Important inputs:
556
+
557
+ - optional `threshold` — minimum occurrences in another project to flag
558
+ (default: 2)
559
+
560
+ Archive confirmed mis-attributed observations with `memorix_resolve`.
561
+
543
562
  ---
544
563
 
545
564
  ## 7. Skills and Promotion Tools
@@ -294,10 +294,24 @@ Server and dashboard behavior.
294
294
 
295
295
  Common keys:
296
296
 
297
- - `transport = "stdio"`
298
- - `port = 3211`
297
+ - `transport = "stdio"` — advisory. An explicit `memorix serve-http` still
298
+ runs on HTTP and prints a notice; this key documents the intended mode.
299
+ - `port = 3211` — default listener port for `memorix serve-http` when
300
+ `--port` is not given.
299
301
  - `dashboard = true`
300
- - `dashboard_port = 3210`
302
+ - `dashboard_port = 3210` — default port for `memorix dashboard` when
303
+ `--port` is not given.
304
+
305
+ ### Reserved sections (parsed, not yet enforced)
306
+
307
+ These sections exist so future releases do not need a config format change.
308
+ Today no runtime behavior reads them; set them only as forward-looking notes.
309
+
310
+ - `[team]` (`enabled`, `workspace_collection`) — coordination defaults.
311
+ - `[hooks]` (`native_memcode`, `external_agents`) — hook bootstrap policy.
312
+ - The former `mcpServers` key in `memorix.yml` was removed: no code ever
313
+ consumed it, and Memorix is not an MCP aggregator. Unknown keys are
314
+ ignored, so old files keep loading.
301
315
 
302
316
  ---
303
317
 
@@ -20,7 +20,7 @@ That command installs the recommended Memorix package or config for the target a
20
20
  | Package or extension | Bundles Memorix for agents that use package or extension systems | `memorix setup --agent pi --global`, `omp --global`, or `gemini-cli --global` |
21
21
  | Local plugin | Installs a local plugin file where the agent loads plugins directly | `memorix setup --agent opencode --global` |
22
22
  | MCP server | Gives an agent live tools for search, recall, storage, reasoning, and coordination | bundled by setup, host MCP config, or `memorix serve` |
23
- | Usage guidance | Tells the agent when and how to use memory | `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, Cursor/Windsurf/Kiro/Trae rules |
23
+ | Usage guidance | Tells the agent when and how to use memory | `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, Cursor/Windsurf/Kiro/Trae rules, DeepSeek Harness AGENTS.md |
24
24
  | Hooks | Captures useful session events when the agent exposes hook events | bundled by plugin packages or generated hook files |
25
25
  | Skills | Turns durable project knowledge into reusable task guidance | plugin skills, `memorix skills`, `memorix_promote` |
26
26
  | memcode | Opens a terminal coding agent that already uses Memorix memory | `memorix`, `memcode` |
@@ -36,7 +36,7 @@ CLI, MCP, and HTTP have separate jobs:
36
36
 
37
37
  Generated guidance also has scope:
38
38
 
39
- - Project guidance (`CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, Cursor/Windsurf/Kiro/Trae rules) may say the repository is configured for Memorix.
39
+ - Project guidance (`CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, Cursor/Windsurf/Kiro/Trae rules, DeepSeek Harness AGENTS.md) may say the repository is configured for Memorix.
40
40
  - Plugin or skill package guidance is workspace-safe. It says to use Memorix when the active workspace has Memorix tools available.
41
41
  - `--global` writes user-level plugin, config, and hook surfaces where the host supports them.
42
42
  - Running the same setup command without `--global` is the repo-local path for one project only.
@@ -63,6 +63,7 @@ Generated guidance also has scope:
63
63
  | Kiro | `memorix setup --agent kiro --global` | Kiro MCP/steering/hooks config | MCP config, `.kiro/steering/memorix.md`, `.kiro/hooks/*.kiro.hook` | Uses Kiro steering and hook files. |
64
64
  | Antigravity | `memorix setup --agent antigravity --global` | Antigravity plugin | Plugin under `~/.gemini/config/plugins/memorix` or `.agents/plugins/memorix`, with `plugin.json`, `mcp_config.json`, `hooks.json`, rules, and skills | Uses Antigravity's official plugin layout. Dedicated MCP configs live at `~/.gemini/config/mcp_config.json` or `.agents/mcp_config.json`; legacy Gemini settings are read only for compatibility. |
65
65
  | Trae | `memorix setup --agent trae --global` | Trae MCP/rules config | MCP config and `.trae/rules/project_rules.md` | Current support is MCP plus project rules. |
66
+ | DeepSeek Harness | `memorix setup --agent dsh --global` | DeepSeek Harness MCP patch | Memorix `@deepseek-ai/dsh-mcp-client` row in `$DSH_HOME/cordis.patch.yml` (default `~/.dsh/cordis.patch.yml`), guidance in the harness `AGENTS.md`, and official skills under `$DSH_HOME/skills` | Tools appear as `mcp__memorix__*`. No hooks surface. Project-local setup writes project `AGENTS.md` guidance and `.dsh/skills`; the MCP row always lives in the harness-level patch file. |
66
67
  | memcode | `memorix` or `memcode` | Bundled terminal agent | Built-in Memorix memory access | memcode uses the same project memory pool; it is not a separate memory silo. |
67
68
  | Any MCP client | Manual MCP config | MCP stdio or HTTP | `memorix serve` or `memorix background start` | Use stdio first unless you need a shared HTTP endpoint. |
68
69
 
@@ -87,9 +88,15 @@ memorix setup --agent cursor --global
87
88
  memorix setup --agent pi --global
88
89
  memorix setup --agent gemini-cli --global
89
90
  memorix setup --agent opencode --global
91
+ memorix setup --agent windsurf --global
92
+ memorix setup --agent kiro --global
93
+ memorix setup --agent antigravity --global
94
+ memorix setup --agent trae --global
90
95
  memorix setup --agent openclaw --global
91
96
  memorix setup --agent hermes --global
97
+ memorix setup --agent codebuddy --global
92
98
  memorix setup --agent omp --global
99
+ memorix setup --agent dsh --global
93
100
  ```
94
101
 
95
102
  Use `memorix setup --agent all --global` only when you intentionally want every supported agent integration generated for the current machine/user scope.
@@ -63,6 +63,7 @@ Memorix 是本地优先、可插拔的 Agent Memory 系统。它给不同 Agent
63
63
 
64
64
  - 跟进受用户需求推动的集成,例如 [Qwen 自动 hooks](https://github.com/AVIDS2/memorix/issues/3) 与 [持久化 Agent 身份](https://github.com/AVIDS2/memorix/issues/49);
65
65
  - 独立推进记忆能力的实证研究,例如[模型能力如何改变项目记忆收益与伤害边界](https://github.com/AVIDS2/memorix/issues/152),不把研究假设当作产品已经证明的效果。
66
+ - DeepSeek Harness 支持已随 `memorix setup --agent dsh` 发布:写入 MCP 行(`$DSH_HOME/cordis.patch.yml`,默认 `~/.dsh/cordis.patch.yml`)、AGENTS.md 使用规范与官方 skills;工具以 `mcp__memorix__*` 形式出现。
66
67
 
67
68
  ---
68
69
 
package/docs/MEMCODE.md CHANGED
@@ -224,7 +224,7 @@ memcode update self
224
224
 
225
225
  Memorix is the shared memory layer. memcode is the bundled terminal agent built on top of it.
226
226
 
227
- Use Memorix when you want Claude Code, Codex, Cursor, Windsurf, Copilot, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Kiro, Antigravity, Trae, or another MCP client to share project memory.
227
+ Use Memorix when you want Claude Code, Codex, Cursor, Windsurf, Copilot, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Kiro, Antigravity, Trae, DeepSeek Harness, or another MCP client to share project memory.
228
228
 
229
229
  Use memcode when you want a terminal agent that already uses that memory layer.
230
230
 
package/docs/SETUP.md CHANGED
@@ -17,9 +17,9 @@ Common runtime entry points:
17
17
 
18
18
  | Entry | Use it for |
19
19
  | --- | --- |
20
- | `memorix setup --agent <agent> --global` | one-command user-level agent integration |
20
+ | `memorix setup --agent <agent> --global` | one-command user-level agent integration; installs the stdio server with `--mode lite` so every tool taught in the generated guidance is actually reachable |
21
21
  | `memorix` CLI commands | direct workflows: setup, search/store, Git Memory, import/export, dashboard, diagnostics, orchestration, and automation |
22
- | `memorix serve` | stdio MCP server for IDEs and coding agents; defaults to a compact `micro` tool profile |
22
+ | `memorix serve` | stdio MCP server for IDEs and coding agents; defaults to a compact `micro` tool profile when launched manually |
23
23
  | `memorix background start` | long-lived HTTP MCP service plus dashboard |
24
24
  | `memorix serve-http --port 3211` | foreground HTTP MCP for debugging or supervised launches |
25
25
  | `memorix` / `memcode` | bundled terminal agent that uses the same Memorix memory pool |
@@ -68,9 +68,15 @@ memorix setup --agent cursor --global
68
68
  memorix setup --agent pi --global
69
69
  memorix setup --agent gemini-cli --global
70
70
  memorix setup --agent opencode --global
71
+ memorix setup --agent windsurf --global
72
+ memorix setup --agent kiro --global
73
+ memorix setup --agent antigravity --global
74
+ memorix setup --agent trae --global
71
75
  memorix setup --agent openclaw --global
72
76
  memorix setup --agent hermes --global
77
+ memorix setup --agent codebuddy --global
73
78
  memorix setup --agent omp --global
79
+ memorix setup --agent dsh --global
74
80
  ```
75
81
 
76
82
  What this does:
@@ -86,6 +92,7 @@ What this does:
86
92
  - OpenClaw: installs `~/.openclaw/extensions/memorix` as an OpenClaw-compatible bundle with bundled stdio MCP, skills, and an OpenClaw `HOOK.md`/`handler.ts` hook pack.
87
93
  - Hermes Agent: installs into Hermes home (`%LOCALAPPDATA%\hermes` on native Windows, `~/.hermes` elsewhere, or `HERMES_HOME`), enables it in `config.yaml`, registers plugin hooks, a slash command, a CLI command, skills, and writes MCP config in `mcp_servers`.
88
94
  - Oh-my-Pi: installs an `omp.extensions` package, links it with `omp plugin link <path>` when available, and writes `.omp/mcp.json` or `~/.omp/agent/mcp.json` for MCP.
95
+ - DeepSeek Harness: writes a Memorix `@deepseek-ai/dsh-mcp-client` row into `$DSH_HOME/cordis.patch.yml` (default `~/.dsh/cordis.patch.yml`), appends guidance to the harness `AGENTS.md` (`$DSH_HOME/AGENTS.md`, default `~/.dsh/AGENTS.md`), and installs official skills under `$DSH_HOME/skills` (default `~/.dsh/skills`). Tools appear as `mcp__memorix__*`; there is no hooks surface. Project-local setup (without `--global`) appends guidance to the project-root `AGENTS.md` and installs skills under `.dsh/skills`, while the MCP row still goes to the harness-level patch file.
89
96
  - Other supported agents: writes their MCP/rules/hooks files according to agent support.
90
97
 
91
98
  Global setup writes user-level plugin, config, and hook files where the host supports them. Use the same command without `--global` only when you explicitly want repo-local guidance, rules, or hooks for the current project.
@@ -117,7 +124,7 @@ memorix doctor agents --agent <agent>
117
124
  memorix setup --agent <agent> --global
118
125
  ```
119
126
 
120
- Use this for Claude Code, Codex, Cursor, Windsurf, Copilot, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, or any supported agent. It is the default user-facing install path.
127
+ Use this for Claude Code, Codex, Cursor, Windsurf, Copilot, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, DeepSeek Harness, or any supported agent. It is the default user-facing install path.
121
128
 
122
129
  To see the current setup matrix:
123
130
 
@@ -144,7 +151,9 @@ memorix serve
144
151
 
145
152
  Use this when your agent only needs a raw local stdio MCP process or you are debugging a manual config. The agent starts `memorix serve` and communicates with it over stdio.
146
153
 
147
- The stdio server defaults to `--mode micro`, which exposes 9 high-signal tools so agent context is not crowded by rarely used schemas. Use `memorix serve --mode lite` for the extended solo memory surface, `--mode team` for coordination tools, or `--mode full` for advanced and MCP Memory compatibility tools.
154
+ A bare `memorix serve` defaults to `--mode micro`, which exposes 9 high-signal tools so agent context is not crowded by rarely used schemas. Use `memorix serve --mode lite` for the extended solo memory surface, `--mode team` for coordination tools, or `--mode full` for advanced and MCP Memory compatibility tools.
155
+
156
+ `memorix setup` writes `--mode lite` into the installed MCP config: the generated guidance teaches the extended surface (sessions, timeline, reasoning, retention), so the installed server must actually expose it. Override with `MEMORIX_MODE` if you prefer a different profile.
148
157
 
149
158
  Generic stdio MCP config:
150
159
 
@@ -666,6 +675,7 @@ Common MCP config locations:
666
675
  | Hermes Agent | `%LOCALAPPDATA%\hermes\config.yaml` on native Windows, `~/.hermes/config.yaml` elsewhere, or `HERMES_HOME\config.yaml` |
667
676
  | Oh-my-Pi | `.omp/mcp.json` or `~/.omp/agent/mcp.json` |
668
677
  | Trae | `%APPDATA%/Trae/User/mcp.json` on Windows |
678
+ | DeepSeek Harness | `$DSH_HOME/cordis.patch.yml` (default `~/.dsh/cordis.patch.yml`) |
669
679
 
670
680
  ---
671
681
 
package/llms-full.txt CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Local-first shared memory layer for AI coding agents.
4
4
 
5
- Memorix is a TypeScript/Node.js project that gives AI coding agents persistent, project-aware memory. It targets software development workflows, not generic chat. It works across Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, and any agent that can speak MCP over stdio or HTTP. Integrations usually start with `memorix setup --agent <agent> --global`, which installs the recommended user-level package or config for that agent: plugin packages when supported, package or extension entries, MCP config, generated guidance, hooks, skills, or the bundled terminal agent.
5
+ Memorix is a TypeScript/Node.js project that gives AI coding agents persistent, project-aware memory. It targets software development workflows, not generic chat. It works across Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, DeepSeek Harness, and any agent that can speak MCP over stdio or HTTP. Integrations usually start with `memorix setup --agent <agent> --global`, which installs the recommended user-level package or config for that agent: plugin packages when supported, package or extension entries, MCP config, generated guidance, hooks, skills, or the bundled terminal agent.
6
6
 
7
7
  If you are an AI coding agent helping a user install, operate, or troubleshoot Memorix, read `docs/AGENT_OPERATOR_PLAYBOOK.md` before taking action. It is the main reference for install, runtime selection, Git/project binding, MCP integration, hooks, and troubleshooting.
8
8
 
@@ -36,6 +36,7 @@ It installs the recommended Memorix integration for the target agent:
36
36
  - Gemini CLI: local Gemini extension package with MCP and `GEMINI.md` context.
37
37
  - OpenCode: local plugin file, `opencode.json` MCP config, OpenCode skill, and `AGENTS.md` guidance.
38
38
  - Windsurf, Kiro, Antigravity, Trae: MCP config plus rules/hooks where supported.
39
+ - DeepSeek Harness: MCP patch row (`$DSH_HOME/cordis.patch.yml`) plus `AGENTS.md` guidance and official skills.
39
40
 
40
41
  Use:
41
42
 
@@ -131,7 +132,7 @@ memorix orchestrate --goal "Add authentication"
131
132
  - plugin packages: Claude Code, Codex, and GitHub Copilot CLI
132
133
  - package or extension entries: Pi package and Gemini CLI extension package
133
134
  - local plugins: OpenCode local plugin file and skill
134
- - project instructions and rules: AGENTS.md, GEMINI.md, Cursor rules, Windsurf rules, Kiro steering, Trae rules
135
+ - project instructions and rules: AGENTS.md, GEMINI.md, Cursor rules, Windsurf rules, Kiro steering, Trae rules, DeepSeek Harness AGENTS.md
135
136
  - hooks: agent event capture routed through `memorix hook`
136
137
  - skills: durable project knowledge promoted into reusable task guidance
137
138
 
@@ -365,7 +366,7 @@ Docker is for the HTTP service. The container must have access to the repositori
365
366
 
366
367
  ## Supported Clients
367
368
 
368
- Memorix supports Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, memcode, and other stdio or HTTP MCP clients.
369
+ Memorix supports Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, DeepSeek Harness, memcode, and other stdio or HTTP MCP clients.
369
370
 
370
371
  Support depth differs by client:
371
372
 
@@ -374,7 +375,7 @@ Support depth differs by client:
374
375
  - Claude Code, Codex, and GitHub Copilot CLI receive local plugin packages.
375
376
  - Pi receives a user-level package when setup runs with `--global`; Gemini CLI receives a local extension package.
376
377
  - OpenClaw receives a compatible bundle; Hermes Agent receives a plugin package; Oh-my-Pi receives a package/extension entry.
377
- - Project instructions and rules include AGENTS.md, GEMINI.md, Cursor rules, Windsurf rules, Kiro steering, and Trae rules.
378
+ - Project instructions and rules include AGENTS.md, GEMINI.md, Cursor rules, Windsurf rules, Kiro steering, Trae rules, and DeepSeek Harness AGENTS.md.
378
379
  - Hooks are generated for agents that expose usable hook events.
379
380
  - OpenCode receives a local plugin file at `.opencode/plugins/memorix.js`, an OpenCode skill at `.opencode/skills/memorix-memory/SKILL.md`, plus `opencode.json` MCP config.
380
381
  - memcode is the bundled terminal agent and uses the same project memory pool.
package/llms.txt CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Local-first shared memory layer for AI coding agents.
4
4
 
5
- Memorix gives coding agents persistent, project-aware memory across sessions, IDEs, terminals, and MCP clients. It stores project knowledge once so multiple agents can retrieve it through plugin packages, MCP, CLI, SDK, generated rules/instructions, hooks, skills, local plugins, or the bundled terminal agent. It works with Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, and other MCP-capable agents.
5
+ Memorix gives coding agents persistent, project-aware memory across sessions, IDEs, terminals, and MCP clients. It stores project knowledge once so multiple agents can retrieve it through plugin packages, MCP, CLI, SDK, generated rules/instructions, hooks, skills, local plugins, or the bundled terminal agent. It works with Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, DeepSeek Harness, and other MCP-capable agents.
6
6
 
7
7
  ## Entry Points
8
8
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "memorix",
3
3
  "mcpName": "io.github.AVIDS2/memorix",
4
- "version": "1.4.4",
4
+ "version": "1.4.6",
5
5
  "description": "Local-first shared memory layer for AI coding agents across MCP clients, Git history, reasoning context, and project sessions.",
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -3,7 +3,9 @@
3
3
  "memorix": {
4
4
  "command": "memorix",
5
5
  "args": [
6
- "serve"
6
+ "serve",
7
+ "--mode",
8
+ "lite"
7
9
  ]
8
10
  }
9
11
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/plugin.schema.json",
3
3
  "name": "memorix",
4
- "version": "1.4.4",
4
+ "version": "1.4.6",
5
5
  "description": "Shared workspace memory for Claude Code and other AI coding agents.",
6
6
  "author": {
7
7
  "name": "AVIDS2",
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "memorix": {
4
4
  "command": "memorix",
5
- "args": ["serve"],
5
+ "args": ["serve", "--mode", "lite"],
6
6
  "alwaysLoad": true
7
7
  }
8
8
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Local-first project memory for CodeBuddy Code and other coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -3,7 +3,7 @@
3
3
  "memorix": {
4
4
  "type": "stdio",
5
5
  "command": "memorix",
6
- "args": ["serve"]
6
+ "args": ["serve", "--mode", "lite"]
7
7
  }
8
8
  }
9
9
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Shared workspace memory for Codex and other AI coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "memorix": {
4
4
  "command": "memorix",
5
- "args": ["serve"]
5
+ "args": ["serve", "--mode", "lite"]
6
6
  }
7
7
  }
8
8
  }
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "memorix": {
4
4
  "command": "memorix",
5
- "args": ["serve"]
5
+ "args": ["serve", "--mode", "lite"]
6
6
  }
7
7
  }
8
8
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Shared local workspace memory for GitHub Copilot CLI and other AI coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "mcpServers": {
5
5
  "memorix": {
6
6
  "command": "memorix",
7
7
  "args": [
8
- "serve"
8
+ "serve",
9
+ "--mode",
10
+ "lite"
9
11
  ]
10
12
  }
11
13
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix-omp-package",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Memorix shared workspace memory package for Oh-my-Pi.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Shared workspace memory for OpenClaw and other AI coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -3,7 +3,9 @@
3
3
  "memorix": {
4
4
  "command": "memorix",
5
5
  "args": [
6
- "serve"
6
+ "serve",
7
+ "--mode",
8
+ "lite"
7
9
  ]
8
10
  }
9
11
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix-pi-package",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "description": "Memorix shared workspace memory package for Pi coding agent.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
package/server.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/AVIDS2/memorix",
8
8
  "source": "github"
9
9
  },
10
- "version": "1.4.4",
10
+ "version": "1.4.6",
11
11
  "websiteUrl": "https://github.com/AVIDS2/memorix#readme",
12
12
  "icons": [
13
13
  {
@@ -22,7 +22,7 @@
22
22
  {
23
23
  "registryType": "npm",
24
24
  "identifier": "memorix",
25
- "version": "1.4.4",
25
+ "version": "1.4.6",
26
26
  "runtimeHint": "npx",
27
27
  "packageArguments": [
28
28
  {
@@ -124,6 +124,7 @@ const GUIDANCE_AGENTS = new Set<AgentName>([
124
124
  'kiro',
125
125
  'opencode',
126
126
  'trae',
127
+ 'dsh',
127
128
  ]);
128
129
 
129
130
  const CODEX_PLUGIN_NAME = 'memorix';
@@ -787,7 +788,12 @@ async function inspectMcp(agent: AgentName, projectRoot: string, scope: AgentInt
787
788
  }
788
789
 
789
790
  const configPath = adapter.getConfigPath(targetScope === 'project' ? projectRoot : undefined);
790
- if (targetScope === 'global' && configPath === adapter.getConfigPath(projectRoot)) continue;
791
+ if (targetScope === 'global' && configPath === adapter.getConfigPath(projectRoot) && scope === 'all') {
792
+ // User-level-only adapters (Trae, DSH) resolve one path for every
793
+ // scope. Deduplicate only when the project iteration also runs;
794
+ // an explicit global-only scope must still inspect the shared path.
795
+ continue;
796
+ }
791
797
 
792
798
  if (!existsSync(configPath)) {
793
799
  checks.push({
@@ -22,8 +22,8 @@ export default defineCommand({
22
22
  args: {
23
23
  port: {
24
24
  type: 'string',
25
- description: 'Port to run the dashboard on (default: 3210)',
26
- default: '3210',
25
+ description: 'Port to run the dashboard on (default: [server].dashboardPort or 3210)',
26
+ required: false,
27
27
  },
28
28
  },
29
29
  run: async ({ args }) => {
@@ -31,13 +31,24 @@ export default defineCommand({
31
31
  const { getProjectDataDir } = await import('../../store/persistence.js');
32
32
  const { startDashboard } = await import('../../dashboard/server.js');
33
33
 
34
+ // The [server].dashboardPort config is a real default source; the
35
+ // explicit --port flag always wins.
36
+ let configuredDashboardPort: number | undefined;
37
+ try {
38
+ const { getServerConfig } = await import('../../config.js');
39
+ const serverConfig = getServerConfig();
40
+ configuredDashboardPort = typeof serverConfig.dashboardPort === 'number'
41
+ ? serverConfig.dashboardPort
42
+ : undefined;
43
+ } catch { /* config files are optional */ }
44
+
34
45
  const project = detectProject();
35
46
  if (!project) {
36
47
  console.error('Memorix requires a git repo to establish project identity. Run `git init` in this workspace first.');
37
48
  process.exit(1);
38
49
  }
39
50
  const dataDir = await getProjectDataDir(project.id);
40
- const port = parseTcpPortOrReport(args.port as string | undefined, 3210);
51
+ const port = parseTcpPortOrReport(args.port as string | undefined, configuredDashboardPort ?? 3210);
41
52
  if (port === undefined) {
42
53
  process.exitCode = 1;
43
54
  return;