DeepSeek Harness Plugin

xinchen03/minta#dsh-plugin

Stars ★ 5 Category Memory Added 2026-08-30

DSH-native integration layer for the Minta memory engine: composes the official dsh-mcp-client row, registers the minta-memory-governance skill plus a session-start memory prewarm, and ships a Minta agent preset; requires the separately deployed Minta engine (Python/Docker) to provide the 19 MCP tools - not usable without it.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:xinchen03/minta#path:/dsh-plugin

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

Minta — context quality layer for DeepSeek Harness.

Installing this package composes two Cordis rows into a DSH profile:

  • mcp-client-minta — official @deepseek-ai/dsh-mcp-client wired to the local Minta engine's streamable-HTTP endpoint (its 19 minta_* tools reach the agent).
  • minta-plugin — this package as a real Cordis plugin. At mount it registers a runtime skill (minta-memory-governance, content derived from the Minta interaction guide) and a agent/session-start hook that prewarms engine health + recent memory over the Minta REST API (fail-open: an unreachable engine never breaks a session).

The memory engine itself is a separately deployed service (see Prerequisites); the plugin is a thin DSH-native surface over it. See docs/dsh-integration.md for the verified end-to-end flow.

Prerequisites

  • DeepSeek Harness (npx @deepseek-ai/dsh web)
  • Minta engine running locally: python minta_cli.py start (serves MCP at 127.0.0.1:18721 and API at 8772), or docker compose up -d

Install (verified 2026-08-23)

dsh plugin --profile web add @xxinchen/dsh-plugin

Restart dsh web. The MCP client row is composed automatically — no manual config editing. Verify in a new session: "list all tools whose name contains minta" → the 19 mcp__minta__* tools.

Note: the engine must be running before the tools respond; failOnStartupError: false means a stopped engine does not break DSH sessions.

Using Minta in a session

  1. Keep the engine runningpython minta_cli.py start (or Docker).
  2. After dsh plugin add + one restart of dsh web, start a new session and ask: "list all tools whose name contains minta" — expect the 19 mcp__minta__* tools. If they are absent, restart dsh web once more.
  3. First session: call minta_login (your Minta credentials) so the tools operate with your identity.
  4. Automatically at session start: the plugin checks engine health and recent memory (logged; never blocks the session). The skill minta-memory-governance is registered and available to the model.
  5. Manual first answer: say "用 Minta 先把记忆找出来再回答" — or just ask about prior work; the skilled model will minta_search_context first.
  6. To save something durable: tell the model to remember it — it will minta_append_inbox, and you confirm or discard in the Minta UI (http://127.0.0.1:8772, inbox review). Your memory is never edited silently.
  7. Engine stopped / unreachable: sessions keep working; tools and prewarm just report unavailable (fail-open).

Minta agent preset (per-turn protocol)

For turn-level automation (DSH rc.2 has no per-step/turn-end events, so the protocol is carried by the preset persona, which the model follows every turn), install the preset shipped in this package:

mkdir -p ~/.dsh/.agent-presets
cp -r <node_modules>/@xxinchen/dsh-plugin/presets/minta ~/.dsh/.agent-presets/  # or cp -r the repo's dsh-plugin/presets/minta

Then, in DSH, pick Minta in the session preset picker — or set it as the default by overriding the agent-presets row (in ~/.dsh/profiles/web/cordis.patch.yml):

- id: agent-presets
  config:
    default: minta

The preset persona adds the per-turn protocol: minta_autopilot_preflight before answering about prior work, minta_autopilot_postflight after each reply, inbox-only writes, and graceful degradation when the engine is offline.

Migrating from the manual cordis.patch.yml block

If you previously set Minta up by appending the mcp-client-minta block to ~/.dsh/profiles/web/cordis.patch.yml, remove that block before installing this plugin. The bundle patch and the manual block insert the same loader entry id mcp-client-minta; with both present the profile fails to boot with duplicate loader entry id: mcp-client-minta. Check you are clean with:

grep -A6 mcp-client-minta ~/.dsh/profiles/web/cordis.patch.yml   # expect no output

(A patch file containing only [] is valid and means "no overrides".)

Manual alternative (no npm install)

Append to ~/.dsh/profiles/web/cordis.patch.yml:

- insert:
    - id: mcp-client-minta
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        transport: streamable-http
        serverName: minta
        url: http://127.0.0.1:18721/mcp
        failOnStartupError: false

Roadmap and known boundaries

Shipped: MCP wiring, runtime skill registration, session-start prewarm.

Not here yet (and why):

  • Automatic pre/post-flight per turn — DeepSeek Harness 0.1.1-rc.2 exposes no per-step or turn-end agent events, so per-message autopilot stays a model-facing tool call (minta_autopilot_preflight / minta_autopilot_postflight, instructed by the registered skill) rather than a hidden automatic hook.
  • Prompt injection of the prewarm result — the profile-level plugin cannot safely shadow the deployment persona (the prompt registry owns that slot); prewarm currently logs engine state, and the agent reads memory on demand through the MCP tools.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.