DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Notes — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
N

dsh-notes

Notes

DSH bundle: 笔记——按目录分组的本地 Markdown 笔记。选择一个本地目录作为根目录(可在页面内即时切换并记住),读取根/分组下的 AGENTS.md 等规则 md 作为上下文,以根目录的直接子目录(=二级目录)为分组,把粘贴的文本或整理好的内容存成 <分组>/<笔记>.md。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:suomir1995/dsh-notes#ad452d281cb1a02dc0a2ea268240e2732d24b86f
README兼容性版本

兼容性与来源证明

Notes 以 dsh-notes 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/11

版本

0.1.1stable
2026/9/11
0.1.0stable
2026/9/10

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Agent Teams@nanmicoder/dsh-agent-teamsAgentTeams for DeepSeek Harness:通过自然语言驱动多智能体团队协作(队长、成员、具有依赖关系的任务、消息传递),并在 Web GUI 中提供树状监视器

README

dsh-notes — Notes

English | 中文

A DeepSeek Harness plugin (bundle) that keeps your notes as local Markdown files, grouped by directory.

It is a DSH bundle in two halves:

  • Host half (index.js, plain ESM, no build step) — the read/write service for your notes. Choose a local directory as the root (default <DSH_HOME>/dsh-notes; switchable inside the page and remembered, no restart required); a direct subdirectory of the root is a group (second-level directory, created automatically when missing); an md file inside a group is a note; rule md files under the root or a group — AGENTS.md / CLAUDE.md / *.rules.md / *规则.md and the like — are read as convention context. Loopback + same-origin guarded routes serve the Web UI, and six agent tools are registered: note_root / note_list / note_rules / note_create / note_read / note_delete.
  • Client half (src/client/*, built to lib/client.js) — the sidebar entry 「笔记」 opens a page: group list, rule viewer, note create (paste text) / view / edit / rename / delete, and switching the root directory.

Storage model (a directory is a group, an md file is a note)

<root>/                       ← the local directory you chose (level 1)
  AGENTS.md                   ← root-level rule file (optional, matched case-insensitively)
  <group>/                    ← level-2 directory = a group (created automatically if missing)
    AGENTS.md                 ← that group's rule file (optional)
    <note>.md                 ← one note (every other .md counts as a note)

Rule files = md files whose name matches (case-insensitive): AGENTS.md, AGENTS.local.md, CLAUDE.md, *.rules.md, *规则.md / *規則.md. A note with the same name cannot be created (that name is reserved for rules). Tolerant parsing: hand-written plain Markdown can be dropped into a group as a note — a missing title falls back to the file name, a missing group to the directory name; pasting a complete md file that already carries front matter stores it verbatim and never wraps it twice.

Each note the plugin creates:

---
title: useState 笔记
group: 前端
created: 2025-01-01T00:00:00.000Z
updated: 2025-01-01T00:00:00.000Z
---

Body (any Markdown).

Features

  • Groups = second-level directories under the root: list / create; writing a note creates the directory when the group does not exist.
  • Notes: paste text or organized content → stored as <group>/<note>.md; view / edit / rename / delete; the body is any Markdown.
  • Rule context: the AGENTS-style rule md files of the root and of each group are shown as chips — click one to read it in full; before writing, the model can read the conventions with note_rules and then file the note.
  • Root directory: switched inside the page, effective immediately and remembered (the host stores the current path in <DSH_HOME>/dsh-notes/.notes-root; an explicit rootDir in the config file takes precedence).
  • Agent tools:
    • note_root — view / switch the root directory;
    • note_list — list the group overview, or list the notes inside one group;
    • note_rules — read the root rules (plus a given group's rules) as writing context;
    • note_create — create / update a note (the group is created automatically; update: true overwrites);
    • note_read — read one note in full;
    • note_delete — delete one note (removes only that md, never the group directory).
  • Chinese UI; the sidebar entry DOM and visual language follow the skill center (36px rounded row + 24px icon box, shell --dsw-alias-* tokens, collapsible sidebar).

Layout

PathPurpose
index.jsHost half: group/note/rule read-write + agent tools + guarded routes
cordis.patch.ymlBundle layer: host row notes
src/client/*Browser half: sidebar entry + notes page overlay (React)
lib/client.jsBuilt client artifact (exports["./client"])
tsdown.config.tsClient build (closure-factory __ModuleLoader__ format)
scripts/smoke-host.mjsHost-half smoke (md parsing/CRUD/rules/tools, isolated DSH_HOME)
scripts/loader-boot.mjsReal Loader + webServer HTTP route smoke
scripts/smoke-client.mjsClient artifact smoke (executes the closure in a stub browser)

Build

The client half needs a build; the host half ships as plain ESM:

npm run build:client   # tsdown → lib/client.js (+ map)

The tsdown binary comes from the DeepSeek Harness checkout. React is resolved through the shell's module table (react, react-dom/client) and is never bundled. The smoke scripts need @deepseek-ai/* to be resolvable locally (a temporary ln -s ~/.dsh/profiles/node_modules node_modules, removed afterwards, is enough).

Install

dsh plugin --profile web add ./dsh-notes

This appends a dsh-notes layer; restart the profile afterwards (both host and client changes require a restart):

pnpm dsh web

After the restart a「笔记」entry appears in the left sidebar. The default root directory is <DSH_HOME>/dsh-notes (created automatically); use "switch directory" in the page to point it at any absolute local path (~ is supported; leave it empty to restore the default).

Plugin config

All optional (defaults shown); override in the profile's own cordis.patch.yml:

- id: notes
  config:
    rootDir: ''          # explicit root dir (absolute path / ~/…); empty = use the remembered one
    maxRuleBytes: 524288     # single rule-file read limit
    maxNoteBytes: 2097152    # single note read limit
    maxBodyBytes: 1048576    # submitted note body limit

Host routes (all loopback + same-origin guarded)

RouteMethodPurpose
/api/notes/stateGETRoot state (current path / config-pinned / exists)
/api/notes/rootPUTSwitch the root (empty = restore default)
/api/notes/groupsGETGroup overview (note count + rule file names in the group)
/api/notes/groupPOSTCreate a group directory
/api/notes/rules?group=GETRoot (or group) rule file list
/api/notes/rule?group=&file=GETRead one rule file in full
/api/notes/notes?group=GETNote list of one group
/api/notes/note?group=&file=GET / DELETERead / delete a note
/api/notes/note/createPOSTCreate a note (group created automatically; duplicate name 409)
/api/notes/note/updatePOSTUpdate a note (keeps created, refreshes updated)
/api/notes/note/renamePOSTRename a note file

Security boundaries

The browser reaches data only through the guarded routes above and never touches the disk directly; group and note names are sanitized first (path-traversal characters and hidden files rejected) and then, after resolve, checked to still be inside the root; switching the root writes a dedicated pointer file; every Markdown write goes through a temp file + atomic rename with a single-writer queue against concurrent corruption; a missing directory is created automatically. Rule and note reads are byte-capped (413 when exceeded).

Remove

dsh plugin --profile web remove dsh-notes

Verification record

  • scripts/smoke-host.mjs (isolated DSH_HOME + temp root, no network) — all passed: front matter / note parsing and idempotent round-trips, tolerant parsing of hand-written md, a pasted whole md file stored verbatim (no double wrapping), name sanitizing and rejection of reserved rule names (AGENTS/CLAUDE/*rules/*规则), rule-file detection (root/group), group CRUD (duplicate name 409, auto-creation), note add/read/duplicate-name 409/in-place update (keeps created)/rename (implicit title follows)/delete/repeat-delete 404, over-limit body 413, note_list / note_rules (root + group rule text) / note_create (auto-creates the group) / note_read / note_delete / note_root.
  • scripts/loader-boot.mjs (real Cordis Loader + dsh-host-webserver, isolated DSH_HOME) — all passed: row loading, webServer binding, state/root switching and persistence, HTTP CRUD for groups/rules/notes, rule text reading, foreign-host 403, wrong method 405, unknown route 404, malformed JSON 400, invalid group name 400, deleting a missing note 404.
  • scripts/smoke-client.mjs — all passed: lib/client.js registers dsh-notes as a __ModuleLoader__ closure and exports name: notes-ui / inject / apply; no machine paths leak; only module-table externals (the react family) are resolved.
  • Static preflight: node …/dsh-plugin-development/scripts/check-artifact.mjs bundle . → PASS, 0 warnings.