中文EN

dsh-obsidian-board

tools已测通过npmMIT

把本地 Obsidian 仓库变成专属 RAG 对话面板:侧栏一个完整页面,左侧笔记浏览、中间检索增强对话、右侧引用原文;检索用完全本地的 BM25 加中文 bigram,回答走 DSH 模型通道,\[n] 引用可点击,索引按 mtime 增量更新。

下载量 / Downloads
908
依赖体积 / node_modules
5.04 MB
测试时间 / Tested
2026-11-07
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add dsh-obsidian-board

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

dsh-obsidian-board

[English](#english) | [中文](#中文)

A DeepSeek Harness (DSH) plugin that turns your local Obsidian vault into a dedicated RAG chat panel inside the DSH GUI — a sidebar entry leading to a full three-pane page: note browser on the left, retrieval-augmented chat in the middle, cited note source on the right. The desktop app and the Web GUI ship the same browser-rendered client, so the panel behaves identically in both. Indexing and BM25 matching run 100% locally (no embedding model, no vector database); the optional planner query rewrite and answer generation go through the model channel you already configured in DSH — only your question, the recent conversation and the retrieved snippets are sent, never the vault itself.

Not an MCP integration, not an Obsidian plugin — this is a dual-half DSH plugin (host + browser client). The UI is injected into the DSH main window as a main slot page (same mechanism as switching conversations); model calls reuse the host ctx.llm; the knowledge base points at your local vault directory (Obsidian doesn't even need to be running).
Compatibility: checked against a live DeepSeek Harness 44.7.0 install (host ships @deepseek-ai/dsh-typert-protocol@0.2.1-rc.2 / cordis 4.0.5); the declared peer range >=0.1.5-rc.1 still covers it. Since v0.2.5 the browser half additionally pulls react, react-dom and @deepseek-ai/dsh-client-ui-primitives out of the host's browser module table (that is how the model menu reuses the host's own primitives — the same three modules the sibling plugin dsh-forget-session already requires on 44.x); if a profile ever lacks them, the panel page fails to render rather than degrading. Changes after the 44.7.0 check are covered by the repo suite (node --test); the indexing and watcher numbers come from re-runs on a local synthetic 10k-note vault, while the UI batch (composer and model menu) has not had a fresh in-app regression pass.

Features

  • 🔍 Local-first retrieval — BM25 with CJK bigram tokenization, title/path boosting, Obsidian tag & alias awareness. No embedding model; indexing and BM25 matching make no network calls, and the vault itself never leaves your machine. Answer generation (plus the optional planner query rewrite) uses the DSH model channel you configured — question, recent conversation and retrieved snippets only.
  • 🎯 Finds what you actually wrote — your own notes outrank collected third-party material (public skill libraries are down-weighted), long identifiers such as github_pat_… are matched literally, and meaningful hidden folders (e.g. .workbuddy/) are indexed instead of silently skipped.
  • 🛑 Stop that actually stops — the stop button takes effect at any stage, including the retrieval/planning phase and the model's silent period before its first token. Stopped replies are shown as a neutral "stopped" state, not a red error. Double-press Escape does the same thing from anywhere on the page.
  • ⌨️ A composer that behaves like the main chat — the input card is rebuilt against the host InputBar's geometry and interaction contract: send and stop share one primary button (the stop square appears while a reply streams and the box is empty), Enter while a reply is still generating queues the message instead of losing it (queued items list above the card, auto-send after the current answer finishes, each individually removable, and an explicit stop hands the text back to the input instead of dropping it), IME composition is respected so picking a candidate with Enter never sends a half-typed message, the box auto-grows, and focus returns to the input after you send. The focus indicator is drawn on the rounded card, so no rectangular outline floats over it.
  • 🎚 Model menu ported from the host — the picker is the host ModelSelect ported rather than imitated: two-level "Model / Reasoning effort" menu, provider grouping with sticky headers, search once the list passes 4 entries, full keyboard navigation with focus hand-off, an upward-opening portal menu that repositions on scroll and resize, and per-row metadata (free / credits / context window / supported efforts). It shows the host's actual default model instead of a generic "default model" label, and the effort you see is the effort that gets sent. Selections apply to the panel's next message only — a per-message route override, your DSH global settings stay untouched.
  • 🧵 Output that never garbles or hangs — the stream pipeline is keyed per attempt, so switching provider fallbacks can't splice two answers together or silently swallow a reply; each answer shows the model that actually produced it, and a reply regenerated on a fallback channel carries a "fallback channel" tag so the detour is visible, not hidden. Replies left mid-stream by a panel refresh are marked "interrupted" with a retry button instead of spinning forever.
  • 📖 Citations, honestly separated from recall — every [n] in the answer and the chips below it open the exact note in the right-hand source pane. Chips are grouped by what the answer actually marked [n] (cited) versus what retrieval surfaced but the answer never cited (related snippets), using the same matcher that renders [n] in the body, and the .md export keeps the same two sections.
  • 📊 Rich Markdown answers — tables, headings, links, italics and task lists render in answers and the source pane, sandboxed (no executable links).
  • 📡 Live vault sync — optional file watching resolves the changed note straight from the watcher event and rebuilds only that note: ≈0.2 s (lean vault) to ≈0.26 s (rich vault) end-to-end on the 10k-note vault below, 150 ms debounce included, with zero full directory scans during the window. Events that can't be pinned to a single file — renames, deletes, batch changes that report no filename — fall back to a coalesced full incremental pass (≈1.2 s window

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:8,最后更新 2026-10-21

链接

GitHub · Homepage · npm

同类插件