DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Maestro Memory — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
M

@ddtcorex/dsh-maestro-memory

Maestro Memory

持久化分层记忆(全局 / 用户 / 项目 / 分支 / 每日)、需确认后写入、待办事项和技能。原地保留 ~/.dsh/memories 文件并接管,支持经 SHA-256 验证的备份和回滚。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:ddtcorex/dsh-maestro-memory#819f02379b8c1e5c03ec3ef4877de20980410215
README兼容性版本

兼容性与来源证明

Maestro Memory 以 @ddtcorex/dsh-maestro-memory 发布,当前版本为 2.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/14

版本

2.1.0stable
2026/9/14
2.0.0stable
2026/9/13
1.3.0stable
2026/9/12
查看其余 8 个版本收起版本
1.2.5stable
2026/9/5
1.2.4stable
2026/9/2
1.2.3stable
2026/9/1
1.2.2stable
2026/8/30
1.2.1stable
2026/8/30
1.2.0stable
2026/8/29
1.1.1stable
2026/8/29
1.0.1stable
2026/8/25

相关插件

正在加载相关插件…

最新版
2.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/18
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 memory-context 分类下经过校验的插件。

Mnemondsh-mnemon面向 DeepSeek Harness 的可组合三层记忆控制平面:持久化运行时上下文、可搜索的项目文档、可插拔的长期记忆、受保护的策略、WebUI 和无头工具。Memory@furongjun1999/dsh-memory灵枢(Lingshu·líng shū)DeepSeek Harness 插件:完整大脑——长期记忆/知识飞轮/自我认知/递归反思接入 DSH,对话自动沉淀进 md_cg 认知图(md 文档)Rewind Plugindsh-rewind-plugin同窗口内对话回退并恢复工作区文件Meow Memorymeow-memoryDeepSeek Harness 的跨会话项目记忆:七层 SQLite 记忆、首轮快照注入、每条消息的关键词命中、memory_remember/search/project 工具、带 reflection-fold UI 的自动反思,以及由空闲触发的梦境整合

README

dsh-maestro-memory

Durable memory and todos for DeepSeek Harness (DSH) — preserves ~/.dsh/memories in place.

Give the AI cross-session durable memory and todos — the more you use it, the more it understands you.

  • Package: @ddtcorex/dsh-maestro-memory (cordis.patch.yml id maestro-memory)
  • Version: 2.0.0 · Changelog: CHANGELOG.md

Requirements

  • Node.js 22+, pnpm 11+
  • DSH deepseek-harness master

Install

pnpm install
pnpm run build   # -> lib/
pnpm test        # vitest run

DSH profile (operator):

dsh plugin --profile web add link:<workspace-root>/packages/dsh-maestro-memory
# production: dsh plugin --profile web add github:ddtcorex/dsh-maestro-memory#<tag-or-sha>

cordis.patch.yml is shipped with the package — do not duplicate it in the profile.

- insert:
    - id: maestro-memory
      name: '@ddtcorex/dsh-maestro-memory'
      config:
        memoryDir: null      # -> ~/.dsh/memories
        snapshotOrder: 500
        autoMemory: { enabled: false, userMessage: true, desensitize: true } # opt-in
        writeGuard: { enabled: false, threshold: 2 }  # per-turn write watchdog, opt-in

writeGuard is read once at apply() time — changing it needs a profile edit and a host restart. threshold counts consecutive working human turns with no daily/project write; any value below 1 is read as 1.

Tools

ToolPurpose
memoryFive tracks memory/user/project/key/daily + archive/expand. key is gated via memory_suggest.
maestro_todoDurable cross-session todo store (four tracks life/work/project/daily with ids, smart view max 8). Named apart from the harness's own in-session task list todo_write.
memory_suggestGated proposals to SUGGESTIONS.jsonl — requires human approve.

memory sanitizes sensitive fragments ([Filtered:API key/password/token/ID/phone], pure credential → content filtered).

System Prompt Snapshot

memory:snapshot (order 500) injects bounded deterministic context:

USER + MEMORY + KEY (branch-filtered) + Project Context (auto-recall top-4, 600 chars each, cap 1024) + Recent Daily (last 2 days, 512) + header + discipline note

Caps: memory 2048 / user 4096 / key 6144 / recentDaily 512 / autoRecall 1024, plus per-section entry budgets memory 8 / user 8 / key 12 / recentDaily 2 / autoRecall 4.

A cap is hard in both dimensions. The newest entry is always kept — compacted to head + [summary:…] when it carries a summary tag. An untagged entry larger than twice its byte cap is truncated with an explicit …[truncated] marker instead of being kept whole: before that rule, a single 2,293-byte global entry owned the 2,048-byte section and pushed every other entry out of the prompt.

Cost reporting. renderSnapshotWithStats (the renderer behind memory:snapshot) reports the bytes, entry count and excluded-entry count of every section. The host keeps the last 50 renders in memory and returns them as cost on /dsh-maestro-memory-health: samples, last, medianTotalBytes, maxTotalBytes, medianBySection. Entry text is never retained — byte counts only.

Write watchdog. With writeGuard.enabled, the host counts consecutive human turns in which work happened but no daily/project entry was written (agent/turn-stopping). Three things must hold for a turn to count:

  1. it was opened by a direct human prompt — goal-continuation rounds (source.kind === 'goal') and injected context ('plugin', e.g. wake notices) carry no per-turn duty;
  2. it is not a subagent session;
  3. it dispatched at least one tool call. A turn that only answered a question is conversation, not work, so no debt accrues — otherwise the watchdog would push the model to write filler entries, exactly what the discipline note forbids.

Once the gap reaches threshold, the snapshot gains a # ⚠️ Memory Write Backlog section immediately before the discipline note, and it stays until a write succeeds. Only a write that actually recorded something counts — a deduplicated add does not. The alert text is static (threshold only, never the live count), so one open gap costs at most two tail snapshots: appear, then disappear.

Subagent sessions (session.header.origin === 'subagent') get a restrained per-achievement cadence instead of the per-turn duty, and never see the backlog alert. The shared memory context (MEMORY / USER / KEY / Project Context) is still injected for them.

The rendered snapshot collapses brace runs of two or more to a single brace: DSH interpolates each prompt context and fails the whole turn on a {{name}} group with a malformed or unregistered name, so free-form memory prose never reaches it as template syntax.

UI & RPC

One conversation.view slot (maestro-memory, order 40) with tabs Memory / Review / Todos / Skills / Health. Health shows coverage, daily last 7d, longest + 5-dim score S/R/J/C/Safety (composite min*0.4+mean*0.6).

The Memory tab lists each track read-only and carries a manual add composer: pick a track, type an entry, press Add. It posts memory.mutate with action: 'add', so it needs no model round-trip; drafts are kept per track and the button stays disabled while the entry is empty or while key/project has no cwd. The model's key gate is exec.agent-scoped on the host, so it stays in force — a human writing key here is equivalent to approving a queued suggestion.

RPC: /dsh-maestro-memory + loopback /dsh-maestro-memory-health + /dsh-maestro-memory-propose.

Maintenance endpoints on /dsh-maestro-memory (both preview-first: dryRun defaults to true and an actual write needs confirm: true):

EndpointWhat it does
memory.repairSplits entries glued without the § delimiter, drops exact duplicates and moves a trailing [summary:…] to its canonical header position, across every store file. Reports files / changed / split / deduped / relocated.
memory.maintenancePlans (and optionally applies) the archive of the oldest entries of memory/user/key/project beyond DEFAULT_ARCHIVE_POLICY (keep-bytes + max-age). Overgrown entries move to the track's *-archive.md; they are never dropped.

Archive vs. the two-machine sync. sync/ merges MEMORY.md, KEY.md and KEY-archive.md as a union — it never drops a version, and project/global entries carry no [id:…], so a deletion on one machine is indistinguishable from "the other machine has not seen it yet". Consequences worth knowing before archiving:

  • Archiving on ONE machine only is not stable: the next union merge pulls the archived entries back into the live file, because the peer still carries them there. Archive on every machine (same policy) so both sides agree and the union is a no-op, or archive with sync disabled.
  • MEMORY-archive.md is not in the merge set (only KEY-archive.md is), so a project-track archive stays local. That is safe for the live file but means the two machines' archive files can legitimately differ.
  • The archive does not change what the prompt shows: # Project Key Memory is capped at 6,144 B and # Project Context at the newest 4 entries, both far below the archive policy's keep budget. Verified on the live store: rendering was byte-identical before and after the run.

One repair pass runs once at boot, gated by a flag file under <root>/.maestro-memory/ (maestroMetaDir): delimiter-repaired-v3 covers every store file and writes its run report into the flag. (v1 was a KEY-only pass that had been a silent no-op — it was called with a bogus cwd — and v2 covered the store without the stray-delimiter split; the versioned flag is what lets an existing machine pick up a new repair rule exactly once.)

Maintenance

node scripts/maestro-memory-remediate.mjs --apply --threshold-days 14
node scripts/enforce-rules.mjs --check-memory --threshold 90

Cutover

  1. Backup: node scripts/migrate.mjs --root ~/.dsh/memories --apply
  2. Verify: node scripts/migrate.mjs --root ~/.dsh/memories --verify (must be ok=true)
  3. Swap profile: remove dsh-memory-evolve, add dsh-maestro-memory as link: or pinned SHA.
  4. Restart dsh web at user-approved window, then live-read each track.

Rollback: rollback(root, runId) restores byte-identical files from backups/<runId>/.

Migration CLI

node scripts/migrate.mjs --root <path> [--inspect|--dry-run|--verify|--apply]

Default read-only; only --apply writes manifest.json + backups/<runId>/files/ + schema.json.

Verification

After --apply/--verify: ok=true, mismatches=[], manifest.json byte-identical. Rehearsal suite tests/m4-rehearsal.spec.ts covers fixture link: profile → backup → verify → rollback.