memorix 1.4.4 → 1.4.5
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 +15 -0
- package/README.md +9 -2
- package/README.zh-CN.md +9 -2
- package/dist/cli/index.js +348 -127
- package/dist/index.js +35 -5
- package/dist/memcode-runtime/CHANGELOG.md +15 -0
- package/dist/sdk.js +34 -4
- package/dist/types.d.ts +1 -1
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +3 -2
- 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 +9 -1
- package/llms-full.txt +5 -4
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
- package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/copilot/memorix/plugin.json +1 -1
- package/plugins/gemini/memorix/gemini-extension.json +1 -1
- package/plugins/omp/memorix/package.json +1 -1
- package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -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/hooks-install.ts +2 -0
- package/src/cli/commands/hooks-preview.ts +5 -0
- package/src/cli/commands/integrate.ts +2 -0
- package/src/cli/commands/setup.ts +57 -2
- package/src/cli/commands/uninstall.ts +20 -0
- package/src/hooks/installers/index.ts +43 -2
- package/src/hooks/types.ts +2 -0
- package/src/integrations/registry.ts +9 -0
- package/src/types.ts +1 -1
- package/src/workspace/mcp-adapters/dsh.ts +147 -0
package/dist/index.js
CHANGED
|
@@ -164221,7 +164221,7 @@ async function installOfficialSkillsForAgent(agent, projectRoot, global2 = false
|
|
|
164221
164221
|
const dirs = AGENT_SKILL_DIRS[agent];
|
|
164222
164222
|
const relativeDir = global2 ? dirs?.global : dirs?.project;
|
|
164223
164223
|
if (!relativeDir) return [];
|
|
164224
|
-
const root = global2 ? os3.homedir() : projectRoot;
|
|
164224
|
+
const root = global2 ? agent === "dsh" ? process.env.DSH_HOME?.trim() || path32.join(os3.homedir(), ".dsh") : os3.homedir() : projectRoot;
|
|
164225
164225
|
const skillPaths = [];
|
|
164226
164226
|
for (const skillEntry of OFFICIAL_MEMORIX_SKILLS) {
|
|
164227
164227
|
const skillPath = path32.join(root, relativeDir, skillEntry.name, "SKILL.md");
|
|
@@ -164453,6 +164453,8 @@ function getProjectConfigPath(agent, projectRoot) {
|
|
|
164453
164453
|
return path32.join(projectRoot, "AGENTS.md");
|
|
164454
164454
|
case "trae":
|
|
164455
164455
|
return path32.join(projectRoot, ".trae", "rules", "project_rules.md");
|
|
164456
|
+
case "dsh":
|
|
164457
|
+
return path32.join(projectRoot, "AGENTS.md");
|
|
164456
164458
|
case "opencode":
|
|
164457
164459
|
return path32.join(projectRoot, ".opencode", "plugins", "memorix.js");
|
|
164458
164460
|
case "pi":
|
|
@@ -164498,6 +164500,8 @@ function getGlobalConfigPath(agent) {
|
|
|
164498
164500
|
return path32.join(home, ".omp", "agent", "packages", "memorix", "extensions", "memorix.js");
|
|
164499
164501
|
case "trae":
|
|
164500
164502
|
return path32.join(home, ".trae", "rules", "project_rules.md");
|
|
164503
|
+
case "dsh":
|
|
164504
|
+
return path32.join(process.env.DSH_HOME?.trim() || path32.join(home, ".dsh"), "AGENTS.md");
|
|
164501
164505
|
default:
|
|
164502
164506
|
return path32.join(home, ".memorix", "hooks.json");
|
|
164503
164507
|
}
|
|
@@ -164522,6 +164526,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
164522
164526
|
return path32.join(root, ".gemini", "GEMINI.md");
|
|
164523
164527
|
case "trae":
|
|
164524
164528
|
return path32.join(root, ".trae", "rules", "project_rules.md");
|
|
164529
|
+
case "dsh":
|
|
164530
|
+
return path32.join(process.env.DSH_HOME?.trim() || path32.join(root, ".dsh"), "AGENTS.md");
|
|
164525
164531
|
default:
|
|
164526
164532
|
return path32.join(root, ".agent", "rules", "memorix.md");
|
|
164527
164533
|
}
|
|
@@ -164546,6 +164552,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
164546
164552
|
return path32.join(root, "GEMINI.md");
|
|
164547
164553
|
case "trae":
|
|
164548
164554
|
return path32.join(root, ".trae", "rules", "project_rules.md");
|
|
164555
|
+
case "dsh":
|
|
164556
|
+
return path32.join(root, "AGENTS.md");
|
|
164549
164557
|
default:
|
|
164550
164558
|
return path32.join(root, ".agent", "rules", "memorix.md");
|
|
164551
164559
|
}
|
|
@@ -164628,6 +164636,12 @@ async function detectInstalledAgents() {
|
|
|
164628
164636
|
agents.push("trae");
|
|
164629
164637
|
} catch {
|
|
164630
164638
|
}
|
|
164639
|
+
const dshDir = process.env.DSH_HOME?.trim() || path32.join(home, ".dsh");
|
|
164640
|
+
try {
|
|
164641
|
+
await fs21.access(dshDir);
|
|
164642
|
+
agents.push("dsh");
|
|
164643
|
+
} catch {
|
|
164644
|
+
}
|
|
164631
164645
|
return agents;
|
|
164632
164646
|
}
|
|
164633
164647
|
async function installHooks(agent, projectRoot, global2 = false) {
|
|
@@ -164710,6 +164724,19 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
164710
164724
|
generated: { note: "Trae has no hooks system, only rules (.trae/rules/project_rules.md) installed" }
|
|
164711
164725
|
};
|
|
164712
164726
|
}
|
|
164727
|
+
case "dsh": {
|
|
164728
|
+
const rulesPath = await installAgentRules(agent, projectRoot, global2);
|
|
164729
|
+
const skillPaths2 = await installOfficialSkillsForAgent(agent, projectRoot, global2);
|
|
164730
|
+
return {
|
|
164731
|
+
agent,
|
|
164732
|
+
configPath: rulesPath,
|
|
164733
|
+
events: [],
|
|
164734
|
+
generated: {
|
|
164735
|
+
note: "DeepSeek Harness has no hook system \u2014 installed AGENTS.md guidance and skills; the MCP row is installed by `memorix setup --agent dsh`.",
|
|
164736
|
+
...skillPaths2.length > 0 ? { skillPaths: skillPaths2, skillPath: skillPaths2[0] } : {}
|
|
164737
|
+
}
|
|
164738
|
+
};
|
|
164739
|
+
}
|
|
164713
164740
|
case "opencode": {
|
|
164714
164741
|
const pluginContent = generateOpenCodePlugin();
|
|
164715
164742
|
const pluginPath = global2 ? getGlobalConfigPath(agent) : getProjectConfigPath(agent, projectRoot);
|
|
@@ -164844,7 +164871,7 @@ async function installAgentRules(agent, projectRoot, global2 = false) {
|
|
|
164844
164871
|
const rulesPath = getAgentRulesPath(agent, rulesRoot, global2);
|
|
164845
164872
|
try {
|
|
164846
164873
|
await fs21.mkdir(path32.dirname(rulesPath), { recursive: true });
|
|
164847
|
-
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli") {
|
|
164874
|
+
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli" || agent === "dsh") {
|
|
164848
164875
|
try {
|
|
164849
164876
|
const existing = await fs21.readFile(rulesPath, "utf-8");
|
|
164850
164877
|
await fs21.writeFile(rulesPath, mergeMemorixRulesContent(existing, rulesContent), "utf-8");
|
|
@@ -165133,7 +165160,10 @@ var init_installers = __esm({
|
|
|
165133
165160
|
windsurf: { project: path32.join(".windsurf", "skills"), global: path32.join(".windsurf", "skills") },
|
|
165134
165161
|
kiro: { project: path32.join(".kiro", "skills"), global: path32.join(".kiro", "skills") },
|
|
165135
165162
|
opencode: { project: path32.join(".opencode", "skills"), global: path32.join(".config", "opencode", "skills") },
|
|
165136
|
-
trae: { project: path32.join(".trae", "skills"), global: path32.join(".trae", "skills") }
|
|
165163
|
+
trae: { project: path32.join(".trae", "skills"), global: path32.join(".trae", "skills") },
|
|
165164
|
+
// DSH's user skill root is <harness home>/skills; the global root below is
|
|
165165
|
+
// resolved to $DSH_HOME (or ~/.dsh) for dsh by installOfficialSkillsForAgent.
|
|
165166
|
+
dsh: { project: path32.join(".dsh", "skills"), global: "skills" }
|
|
165137
165167
|
};
|
|
165138
165168
|
PACKAGE_OWNED_HOOK_AGENTS = /* @__PURE__ */ new Set(["openclaw", "hermes", "omp"]);
|
|
165139
165169
|
}
|
|
@@ -165560,7 +165590,7 @@ The path should point to a directory containing a .git folder.`
|
|
|
165560
165590
|
};
|
|
165561
165591
|
const server = existingServer ?? new McpServer({
|
|
165562
165592
|
name: "memorix",
|
|
165563
|
-
version: true ? "1.4.
|
|
165593
|
+
version: true ? "1.4.5" : "1.0.1"
|
|
165564
165594
|
});
|
|
165565
165595
|
const originalRegisterTool = server.registerTool.bind(server);
|
|
165566
165596
|
server.registerTool = ((name, ...args) => {
|
|
@@ -169893,7 +169923,7 @@ var init_serve_shared = __esm({
|
|
|
169893
169923
|
|
|
169894
169924
|
// src/cli/version.ts
|
|
169895
169925
|
function getCliVersion() {
|
|
169896
|
-
return true ? "1.4.
|
|
169926
|
+
return true ? "1.4.5" : pkg.version;
|
|
169897
169927
|
}
|
|
169898
169928
|
var init_version3 = __esm({
|
|
169899
169929
|
"src/cli/version.ts"() {
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.4.5] - 2026-08-14
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **DeepSeek Harness integration** -- `memorix setup --agent dsh` installs
|
|
9
|
+
Memorix into DeepSeek's official harness: a `@deepseek-ai/dsh-mcp-client`
|
|
10
|
+
row in `$DSH_HOME/cordis.patch.yml` (tools appear as `mcp__memorix__*`),
|
|
11
|
+
AGENTS.md guidance at the harness and project levels, and official skills
|
|
12
|
+
under `$DSH_HOME/skills` or `.dsh/skills`. Existing user patch rows are
|
|
13
|
+
preserved and installs are idempotent. DSH has no hook surface, so none is
|
|
14
|
+
written. `doctor`, `repair`, `uninstall`, and `setup --list` cover the new
|
|
15
|
+
target, and MCP checks for user-level-only adapters now run under an
|
|
16
|
+
explicit global scope (fixing the same latent skip for Trae). Native
|
|
17
|
+
validation composed the generated patch with the real
|
|
18
|
+
`@deepseek-ai/dsh@0.1.0-rc.6` launcher.
|
|
19
|
+
|
|
5
20
|
## [1.4.4] - 2026-08-14
|
|
6
21
|
|
|
7
22
|
### Added
|
package/dist/sdk.js
CHANGED
|
@@ -160280,7 +160280,7 @@ async function installOfficialSkillsForAgent(agent, projectRoot, global2 = false
|
|
|
160280
160280
|
const dirs = AGENT_SKILL_DIRS[agent];
|
|
160281
160281
|
const relativeDir = global2 ? dirs?.global : dirs?.project;
|
|
160282
160282
|
if (!relativeDir) return [];
|
|
160283
|
-
const root = global2 ? os3.homedir() : projectRoot;
|
|
160283
|
+
const root = global2 ? agent === "dsh" ? process.env.DSH_HOME?.trim() || path32.join(os3.homedir(), ".dsh") : os3.homedir() : projectRoot;
|
|
160284
160284
|
const skillPaths = [];
|
|
160285
160285
|
for (const skillEntry of OFFICIAL_MEMORIX_SKILLS) {
|
|
160286
160286
|
const skillPath = path32.join(root, relativeDir, skillEntry.name, "SKILL.md");
|
|
@@ -160512,6 +160512,8 @@ function getProjectConfigPath(agent, projectRoot) {
|
|
|
160512
160512
|
return path32.join(projectRoot, "AGENTS.md");
|
|
160513
160513
|
case "trae":
|
|
160514
160514
|
return path32.join(projectRoot, ".trae", "rules", "project_rules.md");
|
|
160515
|
+
case "dsh":
|
|
160516
|
+
return path32.join(projectRoot, "AGENTS.md");
|
|
160515
160517
|
case "opencode":
|
|
160516
160518
|
return path32.join(projectRoot, ".opencode", "plugins", "memorix.js");
|
|
160517
160519
|
case "pi":
|
|
@@ -160557,6 +160559,8 @@ function getGlobalConfigPath(agent) {
|
|
|
160557
160559
|
return path32.join(home, ".omp", "agent", "packages", "memorix", "extensions", "memorix.js");
|
|
160558
160560
|
case "trae":
|
|
160559
160561
|
return path32.join(home, ".trae", "rules", "project_rules.md");
|
|
160562
|
+
case "dsh":
|
|
160563
|
+
return path32.join(process.env.DSH_HOME?.trim() || path32.join(home, ".dsh"), "AGENTS.md");
|
|
160560
160564
|
default:
|
|
160561
160565
|
return path32.join(home, ".memorix", "hooks.json");
|
|
160562
160566
|
}
|
|
@@ -160581,6 +160585,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
160581
160585
|
return path32.join(root, ".gemini", "GEMINI.md");
|
|
160582
160586
|
case "trae":
|
|
160583
160587
|
return path32.join(root, ".trae", "rules", "project_rules.md");
|
|
160588
|
+
case "dsh":
|
|
160589
|
+
return path32.join(process.env.DSH_HOME?.trim() || path32.join(root, ".dsh"), "AGENTS.md");
|
|
160584
160590
|
default:
|
|
160585
160591
|
return path32.join(root, ".agent", "rules", "memorix.md");
|
|
160586
160592
|
}
|
|
@@ -160605,6 +160611,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
160605
160611
|
return path32.join(root, "GEMINI.md");
|
|
160606
160612
|
case "trae":
|
|
160607
160613
|
return path32.join(root, ".trae", "rules", "project_rules.md");
|
|
160614
|
+
case "dsh":
|
|
160615
|
+
return path32.join(root, "AGENTS.md");
|
|
160608
160616
|
default:
|
|
160609
160617
|
return path32.join(root, ".agent", "rules", "memorix.md");
|
|
160610
160618
|
}
|
|
@@ -160687,6 +160695,12 @@ async function detectInstalledAgents() {
|
|
|
160687
160695
|
agents.push("trae");
|
|
160688
160696
|
} catch {
|
|
160689
160697
|
}
|
|
160698
|
+
const dshDir = process.env.DSH_HOME?.trim() || path32.join(home, ".dsh");
|
|
160699
|
+
try {
|
|
160700
|
+
await fs21.access(dshDir);
|
|
160701
|
+
agents.push("dsh");
|
|
160702
|
+
} catch {
|
|
160703
|
+
}
|
|
160690
160704
|
return agents;
|
|
160691
160705
|
}
|
|
160692
160706
|
async function installHooks(agent, projectRoot, global2 = false) {
|
|
@@ -160769,6 +160783,19 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
160769
160783
|
generated: { note: "Trae has no hooks system, only rules (.trae/rules/project_rules.md) installed" }
|
|
160770
160784
|
};
|
|
160771
160785
|
}
|
|
160786
|
+
case "dsh": {
|
|
160787
|
+
const rulesPath = await installAgentRules(agent, projectRoot, global2);
|
|
160788
|
+
const skillPaths2 = await installOfficialSkillsForAgent(agent, projectRoot, global2);
|
|
160789
|
+
return {
|
|
160790
|
+
agent,
|
|
160791
|
+
configPath: rulesPath,
|
|
160792
|
+
events: [],
|
|
160793
|
+
generated: {
|
|
160794
|
+
note: "DeepSeek Harness has no hook system \u2014 installed AGENTS.md guidance and skills; the MCP row is installed by `memorix setup --agent dsh`.",
|
|
160795
|
+
...skillPaths2.length > 0 ? { skillPaths: skillPaths2, skillPath: skillPaths2[0] } : {}
|
|
160796
|
+
}
|
|
160797
|
+
};
|
|
160798
|
+
}
|
|
160772
160799
|
case "opencode": {
|
|
160773
160800
|
const pluginContent = generateOpenCodePlugin();
|
|
160774
160801
|
const pluginPath = global2 ? getGlobalConfigPath(agent) : getProjectConfigPath(agent, projectRoot);
|
|
@@ -160903,7 +160930,7 @@ async function installAgentRules(agent, projectRoot, global2 = false) {
|
|
|
160903
160930
|
const rulesPath = getAgentRulesPath(agent, rulesRoot, global2);
|
|
160904
160931
|
try {
|
|
160905
160932
|
await fs21.mkdir(path32.dirname(rulesPath), { recursive: true });
|
|
160906
|
-
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli") {
|
|
160933
|
+
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli" || agent === "dsh") {
|
|
160907
160934
|
try {
|
|
160908
160935
|
const existing = await fs21.readFile(rulesPath, "utf-8");
|
|
160909
160936
|
await fs21.writeFile(rulesPath, mergeMemorixRulesContent(existing, rulesContent), "utf-8");
|
|
@@ -161192,7 +161219,10 @@ var init_installers = __esm({
|
|
|
161192
161219
|
windsurf: { project: path32.join(".windsurf", "skills"), global: path32.join(".windsurf", "skills") },
|
|
161193
161220
|
kiro: { project: path32.join(".kiro", "skills"), global: path32.join(".kiro", "skills") },
|
|
161194
161221
|
opencode: { project: path32.join(".opencode", "skills"), global: path32.join(".config", "opencode", "skills") },
|
|
161195
|
-
trae: { project: path32.join(".trae", "skills"), global: path32.join(".trae", "skills") }
|
|
161222
|
+
trae: { project: path32.join(".trae", "skills"), global: path32.join(".trae", "skills") },
|
|
161223
|
+
// DSH's user skill root is <harness home>/skills; the global root below is
|
|
161224
|
+
// resolved to $DSH_HOME (or ~/.dsh) for dsh by installOfficialSkillsForAgent.
|
|
161225
|
+
dsh: { project: path32.join(".dsh", "skills"), global: "skills" }
|
|
161196
161226
|
};
|
|
161197
161227
|
PACKAGE_OWNED_HOOK_AGENTS = /* @__PURE__ */ new Set(["openclaw", "hermes", "omp"]);
|
|
161198
161228
|
}
|
|
@@ -165374,7 +165404,7 @@ The path should point to a directory containing a .git folder.`
|
|
|
165374
165404
|
};
|
|
165375
165405
|
const server = existingServer ?? new McpServer({
|
|
165376
165406
|
name: "memorix",
|
|
165377
|
-
version: true ? "1.4.
|
|
165407
|
+
version: true ? "1.4.5" : "1.0.1"
|
|
165378
165408
|
});
|
|
165379
165409
|
const originalRegisterTool = server.registerTool.bind(server);
|
|
165380
165410
|
server.registerTool = ((name, ...args) => {
|
package/dist/types.d.ts
CHANGED
|
@@ -592,7 +592,7 @@ interface MemoryRef {
|
|
|
592
592
|
/** MCP config format adapter interface */
|
|
593
593
|
interface MCPConfigAdapter {
|
|
594
594
|
/** Setup-only adapters may support a host that does not participate in workspace sync. */
|
|
595
|
-
readonly source: AgentTarget | 'codebuddy';
|
|
595
|
+
readonly source: AgentTarget | 'codebuddy' | 'dsh';
|
|
596
596
|
/** Parse MCP server entries from a config file */
|
|
597
597
|
parse(content: string): MCPServerEntry[];
|
|
598
598
|
/** Generate config file content from MCP server entries */
|
|
@@ -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/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
|
@@ -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
|
|
|
@@ -666,6 +673,7 @@ Common MCP config locations:
|
|
|
666
673
|
| Hermes Agent | `%LOCALAPPDATA%\hermes\config.yaml` on native Windows, `~/.hermes/config.yaml` elsewhere, or `HERMES_HOME\config.yaml` |
|
|
667
674
|
| Oh-my-Pi | `.omp/mcp.json` or `~/.omp/agent/mcp.json` |
|
|
668
675
|
| Trae | `%APPDATA%/Trae/User/mcp.json` on Windows |
|
|
676
|
+
| DeepSeek Harness | `$DSH_HOME/cordis.patch.yml` (default `~/.dsh/cordis.patch.yml`) |
|
|
669
677
|
|
|
670
678
|
---
|
|
671
679
|
|
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.5",
|
|
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.5",
|
|
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.5",
|
|
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({
|
|
@@ -159,6 +159,7 @@ function getAgentLabel(agent: string): string {
|
|
|
159
159
|
hermes: 'Hermes Agent',
|
|
160
160
|
omp: 'Oh-my-Pi',
|
|
161
161
|
trae: 'Trae',
|
|
162
|
+
dsh: 'DeepSeek Harness',
|
|
162
163
|
};
|
|
163
164
|
return labels[agent] || agent;
|
|
164
165
|
}
|
|
@@ -177,6 +178,7 @@ function getAgentHint(agent: string): string {
|
|
|
177
178
|
hermes: 'Hermes plugin hooks; use `memorix setup --agent hermes`',
|
|
178
179
|
omp: 'Oh-my-Pi package hooks; use `memorix setup --agent omp`',
|
|
179
180
|
trae: '.trae/rules/project_rules.md (rules only, no hooks system)',
|
|
181
|
+
dsh: '~/.dsh/cordis.patch.yml MCP row via `memorix setup --agent dsh` (no hooks system)',
|
|
180
182
|
codex: 'Codex plugin hooks; use `memorix setup --agent codex`',
|
|
181
183
|
};
|
|
182
184
|
return hints[agent] || '';
|
|
@@ -152,6 +152,7 @@ function estimateFileSize(agent: string, configPath: string): string {
|
|
|
152
152
|
antigravity: '~2KB',
|
|
153
153
|
opencode: '~3KB',
|
|
154
154
|
trae: '~1KB',
|
|
155
|
+
dsh: '~1KB',
|
|
155
156
|
};
|
|
156
157
|
return sizes[agent] || '~2KB';
|
|
157
158
|
}
|
|
@@ -171,6 +172,8 @@ function getRulesPath(agent: string, cwd: string, global: boolean): string {
|
|
|
171
172
|
return path.join(home, '.gemini', 'GEMINI.md');
|
|
172
173
|
case 'trae':
|
|
173
174
|
return path.join(home, '.trae', 'rules', 'project_rules.md');
|
|
175
|
+
case 'dsh':
|
|
176
|
+
return path.join(process.env.DSH_HOME?.trim() || path.join(home, '.dsh'), 'AGENTS.md');
|
|
174
177
|
default:
|
|
175
178
|
return '';
|
|
176
179
|
}
|
|
@@ -186,6 +189,8 @@ function getRulesPath(agent: string, cwd: string, global: boolean): string {
|
|
|
186
189
|
return path.join(cwd, 'GEMINI.md');
|
|
187
190
|
case 'trae':
|
|
188
191
|
return path.join(cwd, '.trae', 'rules', 'project_rules.md');
|
|
192
|
+
case 'dsh':
|
|
193
|
+
return path.join(cwd, 'AGENTS.md');
|
|
189
194
|
default:
|
|
190
195
|
return '';
|
|
191
196
|
}
|
|
@@ -114,6 +114,7 @@ function getAgentLabel(agent: string): string {
|
|
|
114
114
|
antigravity: 'Antigravity',
|
|
115
115
|
'gemini-cli': 'Gemini CLI',
|
|
116
116
|
trae: 'Trae',
|
|
117
|
+
dsh: 'DeepSeek Harness',
|
|
117
118
|
};
|
|
118
119
|
return labels[agent] || agent;
|
|
119
120
|
}
|
|
@@ -130,6 +131,7 @@ function getAgentHint(agent: string): string {
|
|
|
130
131
|
antigravity: 'plugin + MCP + hooks + skills',
|
|
131
132
|
'gemini-cli': 'settings + GEMINI.md',
|
|
132
133
|
trae: 'rules',
|
|
134
|
+
dsh: 'MCP patch + AGENTS.md + skills',
|
|
133
135
|
};
|
|
134
136
|
return hints[agent] || 'integration files';
|
|
135
137
|
}
|