Plugin directory / Knowledge / dsh-obsidian-export
dsh-obsidian-export
Unverified xiaomiba0904
What it does
DeepSeek Harness (DSH) plugin: export conversations to an Obsidian vault, plus read/search/list/tags/backlinks tools and automatic vault discovery.
Unverified — not yet verified
DeepSeek Harness (DSH) plugin: export conversations to an Obsidian vault, plus read/search/list/tags/backlinks tools and automatic vault discovery. Not yet verified — install and test it yourself.
“Unverified” means our automated CI has not yet installed this plugin. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-obsidian-export
DeepSeek Harness (DSH) plugin that integrates with an Obsidian vault
(no Obsidian-app dependency — a vault is just a folder of Markdown files),
offering a model-facing toolset: export conversations, plus common vault
operations read / search / list / tags / backlinks.
Tools
| tool | purpose |
|---|---|
obsidian_export |
export a DSH conversation to the vault as Markdown, with per-session dedupe / create / skip / update / overwrite semantics |
obsidian_read |
read a note; returns body + parsed frontmatter, first H1 title, [[wikilink]] targets, #tags |
obsidian_search |
search the vault — field filename (paths) or content (full-text) — and narrow by tags |
obsidian_list |
list Markdown notes and folders under a vault path (recursive, optional subpath) |
obsidian_tags |
aggregate distinct #tags used across the vault, with note counts |
obsidian_backlinks |
find notes that [[link]] a given target (for graph traversal) |
obsidian_export — export + dedup
- Reads a session from the persistence seam (
ctx.sessionPersistence) — current
session by default, orsessionId, or imports an exportedsession.jsonl/session.jsonl.zstdviapath. - Renders a transcript (user / assistant / tool calls) + a
_dashboard.md
overview, and refreshes a vault_index.md. - Tracks each session's content hash in
<vault>/.dsh-obsidian/manifest.json,
so it can tell whether the target exists and whether content changed.
Export modes (判断"是否重复 / 更新 / 覆盖")
| mode | new session | content changed | content unchanged |
|---|---|---|---|
auto (default) |
create |
update (rewrite in place) |
skip |
update |
create |
update |
skip |
overwrite |
create |
overwrite |
overwrite (force) |
skip |
create |
skip |
skip |
dry-run |
dry-run |
dry-run |
dry-run (report only) |
Returns { ok, action, reason, changed, note, sessionId, hash, dir }
— action ∈ create | skip | update | overwrite | dry-run | error.
Source resolution order
path— import an exportedsession.jsonl/.jsonl.zstd.sessionId— that persisted session (viactx.sessionPersistence.readRaw/inspect).- otherwise — the current session (
exec.agent.session.id/DSH_SESSION_ID).
Files
src/engine.js— pure, framework-free export + manifest/dedupe engine (Node ESM).src/obsidian-tools.js— the vault tools (read / search / list / tags / backlinks) overctx.fs.src/index.js— the Cordis plugin:defineToolwiring for all six tools,ctx.fs/ctx.sessionPersistenceuse.cordis.patch.yml— bundle patch that mounts the plugin row.package.json— declares"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }.
Install into a DSH profile
# from any directory; relative specs anchor to your invoking directory
dsh plugin --profile web add /absolute/path/to/dsh-obsidian-export
dsh plugin --profile web add ./dsh-obsidian-export # or file:/link:
dsh plugin installs the package into the profile's node_modules, detects thedsh.bundle.patch declaration, and appends it to dsh.profile.bundles in~/.dsh/profiles/<name>/package.json.
Bundle layers only mount at process boot, so a full restart of the profile is
required to activate the tool:# stop the running instance, then dsh --profile web # or dsh webWatch steps before restarting: confirm composition with
dsh --profile web --dump-config(no restart needed).
The plugin needs its @deepseek-ai/* peer packages resolvable. When installed via
pnpm file:/link: from a directory, provide them in the plugin's ownnode_modules (e.g. symlink to the DSH install's fallback dir) or rely on the
profile node_modules hoisting.
Model usage
obsidian_export(vaultDir="/path/to/vault", mode="auto") # current session
obsidian_export(vaultDir="/path/to/vault", path="exported/session.jsonl")
obsidian_export(vaultDir="/path/to/vault", sessionId="session-<id>", mode="dry-run")
obsidian_read(vaultDir="/path/to/vault", path="Inbox/My Note.md")
obsidian_list(vaultDir="/path/to/vault", subpath="Inbox")
obsidian_search(vaultDir="/path/to/vault", query="rag") # filename match
obsidian_search(vaultDir="/path/to/vault", query="embedding", field="content")
obsidian_search(vaultDir="/path/to/vault", tags="pkms#research")
obsidian_tags(vaultDir="/path/to/vault")
obsidian_backlinks(vaultDir="/path/to/vault", target="Welcome")
Model flow for a common workflow: obsidian_list (see what's there) →obsidian_read (load a note) → obsidian_search (find related notes by
content/tag) → obsidian_backlinks (follow the graph) → obsidian_export
(save a conversation). Combine an export with a dry-run first to preview
whether a target would be created, skipped, updated, or overwritten.
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-obsidian-export for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:xiaomiba0904/dsh-obsidian-export Headless (CLI) profile:
dsh plugin --profile headless add github:xiaomiba0904/dsh-obsidian-export Test report
Not yet L3-verified — see failure note below if we already ran it.
Note: 验证: load-fail (0.1.0-rc.6) Browse all pending failures →
When to use it
Give the agent a memory, a knowledge base, or a retrieval layer so it stops forgetting context between sessions.
Who it's for
Users running long projects who want the agent to remember decisions, docs, and preferences without re-explaining.
For developers — extending it
The memory/retrieval backend is the seam — plug a new store, tune what gets distilled, or add citation and audit trails.