DSH Plugins Marketplace

DSH Plugins

Plugins

/

Development & Infrastructure

/

dsh-plugin-thread

z

dsh-plugin-thread

Manifest valid★ 2

Decision-and-goal memory with lineage: explicit commands and a model tool record decisions deterministically, a status card re-anchors them across compaction, a lossless event stream with BM25+jieba r

hasBundlePatch

dsh-thread

CI

Thread's deep-integration plugin for DeepSeek Harness — session memory with lineage for coding agents, using the base's native channels end to end.

What it does

  • Lossless capture — subscribes to session/event; the full event stream lands in dual SQLite databases with stable origins (idempotent append).
  • Structural delivery, three triggers — a first-turn anchor (project identity
    • behavior contract + status card), a re-anchor after every compaction, and a cross-agent state delta at every turn boundary. No per-turn card noise. The design follows the deterministic-log line of memory research (e.g. arXiv:2605.21997 “The Log is the Agent”); the compaction re-anchor targets the “Compaction Cliff” failure mode (arXiv:2608.22752).
  • Native query tool — query_session_memory registered through ctx.tools.register into the model's tool schema, with filesystem-style navigation ls / cd / cat / grep. The embedded MCP server remains as a fallback channel. Retrieval is deterministic BM25 over the lossless stream (jieba word segmentation for Chinese) with citation pull-back — no embedding dependency by default; a hybrid layer can be added at the integration boundary (evaluated against the BM25 baseline on the eval suite, not bundled).
  • Behavior-contract skill — a thread skill is registered into the base's skill catalog ("need details → call the tool") and injected at anchors, so the model does not rely on memory to know it has memory.
  • Output recognition — write/edit tools on markdown documents register knowledge_assets with lineage edges on write; /thread-reg ast covers explicit registration.
  • Explicit decision & preference channels — decisions are recorded through /thread-reg dec (user, --supersedes <id> for chain evolution) or the model's record_decision tool (the behavior contract instructs the model to call it when the user settles a decision or it commits to one). Preferences and lessons are recorded through /thread-reg fdb (auto-classified as correction when phrased as "don't"). Natural-language extraction of decisions/preferences is off — zero text-heuristic false positives; the lossless event stream remains the backstop for anything unrecorded. (Goal detection from short imperative messages and completion detection stay on, guarded against pasted/multi-line text.)
  • Closing sediment + inbox — closing words sediment in-progress goals into todos; /thread-cfm is the single pending-work inbox: todos (t#id) and candidates (c#id) in one view — do completes/promotes (candidates accept a corrected text), cnl discards, cnl all clears both. The status card surfaces the top candidates so they cannot pile up silently.
  • Behavior notes (1.0, stated plainly) — candidates are not produced automatically: natural-language extraction of decisions/preferences is off, so c# entries only ever hold pre-existing rows until the post-release extraction layer arrives; todos are produced actively (closing sediment + goal-completion self-healing). Decisions never expire on their own — close out time-bound ones with --supersedes. Goal completion detection is conservative (≥4 non-ASCII / ≥8 pure-ASCII overlap; short English goals are missed rather than mis-judged — abandon them with /thread-rev gol). See the Thread README "Honest boundaries" section for the full list.
  • Resource cleanup — /thread-rev <ast|dec|fdb|gol> <ids|all> revokes registrations: decisions/preferences/assets are deleted (the event stream keeps the text), goals are abandoned through the state machine with their todos self-healed. Every structured row carries a visible #id on the status card, so memory stays human-editable end to end.
  • Session isolation — /thread-iso / /thread-uniso, and /thread-pub <ast|dec|fdb|gol> <ids|all> shares rows produced while isolated.
  • Optional active compaction — with THREAD_AUTO_COMPACT=1 the plugin monitors token pressure at turn boundaries and triggers compactNow silently; state re-anchors after every compaction either way.
  • Dev probe, inert by default — the package ships a batch0-probe module used for contract smoke-testing during development; it is inert unless THREAD_B0_PROBE=1 is set, so normal sessions are unaffected.

Supported dsh versions

  • Local-first, no daemon — everything runs in-process: embedded SQLite stores, no background service, no cloud dependency. Headless and web profiles of the same machine share the same store, and offline sessions behave identically.

  • Verified: dsh 0.1.5-rc.1 (current; the dsh CLI and its SDK packages ship version-locked — the 0.1.5-rc.1 CLI resolves its SDK sub-packages to 0.1.5-rc.2). 0.1.1-rc.2, the previous baseline, is no longer declared.

  • The plugin pins its SDK peers to ^0.1.5-rc.1 (dsh-tools/dsh-agent/dsh-session/dsh-user-questions); within the 0.1.x train, upgrades are expected to be compatible and are verified by an isolated contract probe plus the CI compat matrix (.github/workflows/ci.yml) before this table is updated.

  • No promise is made for future major releases (0.2+); each new dsh release is evaluated and the matrix extended before support is claimed.

Install

dsh plugin add dsh-thread
dsh plugin add dsh-thread@latest   # 升级:同命令重装最新版(core 经 ^1.0.0 依赖自动跟随)

The plugin pulls its kernel (@thread-memory/core) through a ^1.0.0 range, so new installs and re-adds pick up the latest core automatically. The runtime logs the resolved core version at startup ([dsh-thread] thread core vX.Y.Z) and the embedded MCP server reports it in its handshake.

All dsh plugins must be referenced in a profile's bundles to take effect. In ~/.dsh/profiles/<your-profile>/package.json:

{
  "name": "dsh-profile-my",
  "private": true,
  "dependencies": {},
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-headless",
        "dsh-thread"
      ]
    }
  }
}

Zero configuration beyond that: @thread-memory/core + better-sqlite3 resolve as dependencies; capture and injection start as soon as the plugin is activated.

Note (native module): if the plugin fails to start with "Could not locate the bindings file", pnpm 10 ignored the better-sqlite3 build script during install. Fix with one command in the profile directory:

cd ~/.dsh/profiles/<your-profile>
pnpm rebuild better-sqlite3

This is a pnpm 10 onlyBuiltDependencies policy, not a plugin bug.

Configuration

ConfigDefaultMeaning
budgetLines200Status card line budget
feedbackRows50Feedback rows consulted by the tool guard
busyRetries / busyRetryDelayMs20 / 100SQLITE_BUSY retry policy
compactPressureTokens0Active-compaction token threshold (0 = off; requires THREAD_AUTO_COMPACT=1 to pull the compaction service)

Commands

Registered as real dsh commands — visible in the command palette, /-completable, and executed directly (no model round-trip). The same lines also work as plain messages where no command UI exists. One grammar, six commands:

CommandEffect
/thread-reg <ast|dec|fdb|gol>List that resource's rows (ids for rev/supersede)
/thread-reg <ast|dec|fdb|gol> <text>Register: ast = path (directories expand recursively, cap 50) · dec = decision (active immediately; --supersedes <id> evolves the chain) · fdb = preference/lesson (auto-classified by "don't" phrasing) · gol = goal
/thread-rev <ast|dec|fdb|gol>List that resource's rows
/thread-rev <ast|dec|fdb|gol> <ids|all>Revoke: dec/fdb/ast are deleted (event stream keeps the text) · gol is abandoned (state machine + todos self-heal)
/thread-cfmPending-work inbox: todos (t#id) + candidates (c#id)
/thread-cfm do <id> [text]t# complete a todo · c# promote a candidate to an active decision (optional corrected text)
/thread-cfm cnl <id> / cnl allDiscard one item / clear the inbox
/thread-iso / /thread-unisoSilence / restore a session
/thread-pubList isolated rows (all resources, ids for sharing)
/thread-pub <ast|dec|fdb|gol> <ids|all>Share isolated rows

MCP fallback

The package ships an embedded MCP server (bin: dsh-thread) exposing the same query_session_memory contract over MCP for bases and setups where native tool registration is unavailable. See the Thread Memory Protocol.

Repository relationship

This repository hosts the dsh deep-integration plugin. The base-agnostic kernel (@thread-memory/core) and the Qoder adapter live in the main Thread repository.

License

MIT

Compatibility

DSH 0.2.1-rc.3: failedDSH 0.1.5-rc.2: failedDSH 0.1.6-alpha.1: failed

Versions

Latest versionPublishedSize
0.1.0——
0.1.1——
0.1.2——
0.1.3——
1.0.0——
1.0.1——
1.0.2——
1.1.0——
1.1.1——
1.2.0——
1.3.0——
1.4.0——
1.4.1——
1.5.0——

Comments

Loading…

Similar plugins

dsh-decision-log

Decision log for DeepSeek Harness: record key decisions (chosen option + why) into a versionable DECISIONS.md via decision_log / decision_list / decision_audit tools, and auto-inject the summary into

Memory & ContextManifest valid

★ 0

dsh plugin --profile web add dsh-decision-log

by NoxTyrannus

Cipher memory platform as a DSH bundle: four memory types (attention, experience, preference, cognitive) sedimented per turn by four memory agents, cross-session deterministic recall injected via syst

Memory & ContextSessions & MessagesManifest valid

★ 2

↓ 87/wk

NOASSERTION

TypeScript

Aug 31, 2026

dsh plugin --profile web add dsh-cipher

PLUR memory rendered into the system prompt on each assembly rather than exposed as a tool call, so the block is replaced instead of appended and context stays flat across a session. Fully local hybri

Memory & ContextManifest valid

★ 0

dsh plugin --profile web add @plur-ai/dsh

by menotbobbybrown

Persistent long-term memory for DeepSeek Harness: a JSON store of typed entries (fact, preference, entity, rule, episodic) exposed as the memory_remember and memory_recall agent tools, with recall ran

Memory & ContextManifest valid

★ 0

MIT

TypeScript

Sep 8, 2026

dsh plugin --profile web add @modelnorth/dsh-plugin-memory

by 863683348

Focus board for DeepSeek Harness agents: durable, model-maintained notes in the session workspace that pin the objective, constraints, and decisions across compaction and sessions, with automatic cont

Terminal & ClientsMemory & ContextSessions & MessagesManifest valid

★ 1

↓ 118/wk

MIT

JavaScript

Sep 11, 2026

dsh plugin --profile web add dsh-plugin-focus

by chenhw7

Cairn — long-term memory for the DeepSeek Harness (@chenhw7/dsh-memory). Persistent cross-session memory: facts, preferences, corrections, lessons. BM25 retrieval, three-layer scoping, human-confirmed

Manifest valid

★ 3

↓ 114/wk

MIT

TypeScript

Sep 10, 2026

dsh plugin --profile web add @chenhw7/dsh-memory