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.
- package/CHANGELOG.md +69 -0
- package/CLAUDE.md +7 -3
- package/README.md +14 -4
- package/README.zh-CN.md +9 -2
- package/dist/cli/index.js +1802 -1138
- package/dist/index.js +1298 -991
- package/dist/{maintenance-jobs-B1-W0ssz.d.ts → maintenance-jobs-DVRF-46r.d.ts} +1 -1
- package/dist/maintenance-runner.d.ts +1 -1
- package/dist/maintenance-runner.js +1755 -829
- package/dist/media-audio-runner.js +1760 -835
- package/dist/media-video-runner.js +1755 -830
- package/dist/memcode-runtime/CHANGELOG.md +69 -0
- package/dist/sdk.js +1290 -990
- package/dist/types.d.ts +7 -1
- package/dist/vector-backfill-runner.d.ts +1 -1
- package/dist/vector-backfill-runner.js +1751 -826
- package/docs/1.4.5-AGENT-AUTO-MEMORY-RESEARCH.md +95 -0
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +3 -2
- package/docs/API_REFERENCE.md +23 -4
- package/docs/CONFIGURATION.md +17 -3
- package/docs/INTEGRATIONS.md +9 -2
- package/docs/KNOWN_ISSUES_AND_ROADMAP.md +1 -0
- package/docs/MEMCODE.md +1 -1
- package/docs/SETUP.md +14 -4
- package/llms-full.txt +5 -4
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/plugins/antigravity/memorix/mcp_config.json +3 -1
- package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
- package/plugins/claude/memorix/.mcp.json +1 -1
- package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
- package/plugins/codebuddy/memorix/.mcp.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/codex/memorix/.mcp.json +1 -1
- package/plugins/copilot/memorix/.mcp.json +1 -1
- package/plugins/copilot/memorix/plugin.json +1 -1
- package/plugins/gemini/memorix/gemini-extension.json +4 -2
- package/plugins/omp/memorix/package.json +1 -1
- package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/openclaw/memorix/.mcp.json +3 -1
- package/plugins/pi/memorix/package.json +1 -1
- package/server.json +2 -2
- package/src/cli/commands/agent-integrations.ts +7 -1
- package/src/cli/commands/dashboard.ts +14 -3
- package/src/cli/commands/hooks-install.ts +2 -0
- package/src/cli/commands/hooks-preview.ts +5 -0
- package/src/cli/commands/ingest-commit.ts +47 -3
- package/src/cli/commands/integrate.ts +2 -0
- package/src/cli/commands/memory.ts +17 -4
- package/src/cli/commands/purge.ts +120 -0
- package/src/cli/commands/serve-http.ts +39 -5
- package/src/cli/commands/setup.ts +60 -3
- package/src/cli/commands/uninstall.ts +20 -0
- package/src/cli/index.ts +3 -804
- package/src/codegraph/auto-context.ts +82 -1
- package/src/config/yaml-loader.ts +3 -8
- package/src/config.ts +0 -5
- package/src/evaluation/session-replay.ts +98 -0
- package/src/git/extractor.ts +5 -3
- package/src/hooks/installers/index.ts +58 -2
- package/src/hooks/types.ts +2 -0
- package/src/integrations/registry.ts +9 -0
- package/src/knowledge/workset.ts +58 -0
- package/src/memory/long-term.ts +97 -2
- package/src/runtime/control-plane-maintenance.ts +1 -0
- package/src/runtime/isolated-maintenance.ts +1 -0
- package/src/runtime/lifecycle.ts +19 -0
- package/src/runtime/maintenance-jobs.ts +1 -0
- package/src/runtime/project-maintenance.ts +8 -0
- package/src/search/surfaced-registry.ts +62 -0
- package/src/server.ts +74 -14
- package/src/store/orama-store.ts +17 -1
- package/src/types.ts +7 -1
- package/src/workspace/mcp-adapters/dsh.ts +147 -0
- package/src/cli/commands/audit-list.ts +0 -89
- package/src/cli/commands/purge-all-memory.ts +0 -85
- package/src/cli/commands/purge-project-memory.ts +0 -83
- package/src/cli/commands/uninstall-project-artifacts.ts +0 -86
- package/src/cli/tui/Sidebar.tsx +0 -179
- package/src/cli/tui/interactive-commands.ts +0 -261
- package/src/cli/tui/markdown-render.tsx +0 -371
- package/src/cli/tui/use-mouse.ts +0 -157
- package/src/cli/tui/useNavigation.ts +0 -56
- package/src/orchestrate/context-compact.ts +0 -188
- package/src/team/file-locks.ts +0 -173
- package/src/team/index.ts +0 -23
- package/src/team/messages.ts +0 -203
- package/src/team/persistence.ts +0 -96
- package/src/team/registry.ts +0 -158
- 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
|
|
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
|
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -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
|
|
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
|
|
240
|
-
|
|
241
|
-
|
|
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
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -294,10 +294,24 @@ Server and dashboard behavior.
|
|
|
294
294
|
|
|
295
295
|
Common keys:
|
|
296
296
|
|
|
297
|
-
- `transport = "stdio"`
|
|
298
|
-
|
|
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
|
|
package/docs/INTEGRATIONS.md
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
+
"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,
|
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.
|
|
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.
|
|
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))
|
|
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
|
-
|
|
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;
|