DeepSeek Harness 插件

dsh-obsidian-export

DeepSeek Harness (DSH) plugin: export conversations to an Obsidian vault, plus read/search/list/tags/backlinks tools and automatic vault discovery.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
xiaomiba0904/dsh-obsidian-export
最近更新
2026年8月13日
分类
工具与能力
GitHub stars
2
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/xiaomiba0904/dsh-obsidian-export
插件名:dsh-obsidian-export
作者:xiaomiba0904

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

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

toolpurpose
obsidian_exportexport a DSH conversation to the vault as Markdown, with per-session dedupe / create / skip / update / overwrite semantics
obsidian_readread a note; returns body + parsed frontmatter, first H1 title, [[wikilink]] targets, #tags
obsidian_searchsearch the vault — field filename (paths) or content (full-text) — and narrow by tags
obsidian_listlist Markdown notes and folders under a vault path (recursive, optional subpath)
obsidian_tagsaggregate distinct #tags used across the vault, with note counts
obsidian_backlinksfind 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, or sessionId, or imports an exported session.jsonl / session.jsonl.zstd via path.

  • 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 (判断"是否重复 / 更新 / 覆盖")

modenew sessioncontent changedcontent unchanged
auto (default)createupdate (rewrite in place)skip
updatecreateupdateskip
overwritecreateoverwriteoverwrite (force)
skipcreateskipskip
dry-rundry-rundry-rundry-run (report only)

Returns { ok, action, reason, changed, note, sessionId, hash, dir }

actioncreate | skip | update | overwrite | dry-run | error.

Source resolution order

1. path — import an exported session.jsonl / .jsonl.zstd. 2. sessionId — that persisted session (via ctx.sessionPersistence.readRaw/inspect). 3. 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) over ctx.fs.
  • src/index.js — the Cordis plugin: defineTool wiring for all six tools,

ctx.fs / ctx.sessionPersistence use.

  • 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 the dsh.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: > ``sh > # stop the running instance, then > dsh --profile web # or dsh web > ` > Watch 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 own node_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