DSH Hub

zhaoyuntao-wl/dsh-plugin-thread

dsh-thread

BundleWorkflow0 GitHub stars· updated 2026-08-21

DeepSeek Harness plugin - Thread session memory adapter (dsh-thread)

Install

npx @deepseek-ai/dsh plugin --profile web add github:zhaoyuntao-wl/dsh-plugin-thread

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-thread DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-plugin-thread.svg)](https://dshhub.dev/plugins/dsh-plugin-thread)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from zhaoyuntao-wl/dsh-plugin-thread, cleaned of badges and images.

dsh-thread

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.
  • Native query toolquery_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.
  • 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.
  • Session isolation/thread-iso / /thread-uniso, and /thread-pub <ast|dec|fdb|gol> <ids|all> shares rows produced while isolated.
  • Optional active compaction — with

Related plugins