@lucagiftzek/dsh-note-keeper
DSH 侧栏里的 Obsidian 兼容 Markdown 笔记:搜索、标签、反向链接、图谱、带转写的语音笔记、画布、OCR(需 tesseract)、客户端加密与 notes_* agent 工具;release tarball 与 npm 包自带预构建的 Linux x64 daemon,其他平台需用 Go 从源码构建。
安装
dsh plugin --profile web add @lucagiftzek/dsh-note-keeper
沙箱测试
这个插件还没测过。提交测试 →
README
Note Keeper (dsh-note-keeper)

Note Keeper is a plugin for the DeepSeek Harness (DSH) web GUI: an
Obsidian-compatible, local-first notes app that lives in the left sidebar and
opens as a full-page panel. It stores notes as plain Markdown files in a
regular directory on disk, so any Obsidian-compatible sync method keeps it in
step with a phone or another desktop. It also exposes a set of notes_*
tools so an AI in the same DSH chat can read, search and write the user's
notes under a clear set of guardrails.
Author: Loukas "Luca" Tzekos. License: MIT.
Feature overview
- Left-sidebar "Notes" entry: a row in the sidebar panel list
(sidebar.panellist slot) that opens Note Keeper as a full-page panel
registered in the main-column keyed slot.
- Obsidian-compatible vault: plain Markdown files under a normal
directory (default ~/NoteKeeper, configurable via vault). Wikilinks
([[Note]]), embeds (![[Note]]), #tags (including nested
project/alpha), YAML frontmatter, callouts (> [!warning]), and a
.trash folder for recoverable deletes, exactly the way Obsidian lays
them out.
- Rename-safe wikilinks: moving or renaming a note rewrites every
[[wikilink]]/![[embed]] that pointed at it, in every other note, the
same way Obsidian does.
- Live sync from any writer: an fsnotify-backed watcher reindexes any
change (this app's own writes, Obsidian on the same machine, a sync
client landing a phone edit) and pushes a Server-Sent Events refresh to
every open browser tab; a 5-minute full rescan repairs anything a dropped
kernel event missed.
- Full-text search: accent-insensitive for both Greek and Latin script
(Καλημέρα ≈ καλημερα ≈ ΚΑΛΗΜΕΡΑ), last-word prefix matching while typing,
and "quoted phrase" matching. Filterable by tag (nested tags included)
or folder.
- Tags, backlinks, outline, graph: a tag browser with counts, a
backlinks panel per note, a heading outline, and an interactive local
graph view (note/attachment/tag nodes, plus "ghost" nodes for unresolved
links, just like Obsidian's graph).
- Quick capture & daily notes: one shortcut appends a timestamped
bullet (or a - [ ] task) to Inbox.md; another opens or creates
today's daily note at Daily/YYYY-MM-DD.md, expanding
Templates/Daily.md when present.
- Templates: any note under the
Templates/folder can be used to
start a new note, with {{title}}, {{date}} and {{time}} expanded.
- Audio notes: record with
MediaRecorder, send the clip to the
dsh-voice plugin's /api/voice/stt endpoint with the language pinned
(Greek and English are first-class; several others are offered; "auto"
lets the engine detect), optionally run a text-polish pass, and save the
result as a Markdown note with nk-type: audio frontmatter
(language, engine, duration) embedding the audio clip.
- Retro paint canvas: an MS-Paint-style drawing editor: pencil, brush,
eraser, spray and more, over a raster canvas plus an editable vector shape
layer. Saving writes a PNG, the vector JSON, and (optionally) OCR'd text
from the drawing into a single "drawing" note.
- OCR: Tesseract (
eng+ellby default) runs over pasted/attached
images and over paint-canvas drawings to extract text (handwriting
included, on a best-effort basis).
- Attachments: upload, paste, or drag-and-drop images, audio, video and
PDF, with inline previews; risky file types (HTML, SVG, JS, …) are always
forced to download so an uploaded file can never script the DSH origin.
Large files: uploads above 64 MiB are sent as 64 MiB slices
(begin / chunk… / finish), because an edge such as Cloudflare refuses
any single request body over 100 MB. The server stages the slices in a hidden
.nk-up-* file, renames it into place at finish, and removes it on any
failure or abort. The assembled-file cap is 1 GiB (maxAttachBytes).
- Client-side zero-knowledge encryption: see the [Security model](#security-model)
section below. Encrypted notes/attachments/folders are opaque to the
server, to sync tools and to AI tools; only the browser that knows the
password can read them.
- Conflict detection: every save carries the mtime it was read at; a
concurrent edit from another device, Obsidian, or an AI tool produces a
conflict banner offering "load disk version", "keep both" or "overwrite
with mine", instead of silently clobbering data.
- Autosave: edits are saved 1.2 s after the last keystroke, and flushed
immediately when the tab is hidden or closed.
- Live preview editor: CodeMirror 6 with Obsidian-style live preview: links,
wikilinks and tags are clickable while you type; source, split and reading modes too.
- Connect: the Note Keeper Sync plugin for Obsidian (desktop and mobile, two-way,
paired with a one-time code, signed requests), WebDAV for other apps, and a
two-way cloud mirror (Google Drive, OneDrive, Dropbox, iCloud Drive, S3) via rclone.
See [docs/SYNC-PROTOCOL.md](docs/SYNC-PROTOCOL.md).
- Import: Obsidian/Bear/Logseq/Joplin Markdown, HTML, Evernote .enex, Google Keep
Takeout, Notion export zips.
- AI Enhance: proofread, format and interlink a note with the DSH default model
(or any model chosen in its settings), previewed as a diff before anything changes.
- 12 AI tools (
notes_*), see the [AI tools](#ai-tools) table.
Screenshots
v0.2: live preview (links and tags clickable), AI Enhance diff review, Connect (Obsidian pairing):
Captured from the live DSH GUI with a custom theme (dark mode).
 · 
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:2,最后更新 2026-11-01