DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@mars.liu/dsh-rich-editor

Rich Editor

第三方 dsh Web 插件:用于撰写区域的富 Markdown 笔记本——工具行切换按钮,以及带有 Codex 风格列表编辑功能的 CodeMirror 编辑器卡片,通过 conversation service 提交

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

npx -y @deepseek-ai/dsh plugin --profile web add @mars.liu/dsh-rich-editor@0.7.1
README兼容性版本

兼容性与来源证明

Rich Editor 以 @mars.liu/dsh-rich-editor 发布,当前版本为 0.7.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.7.1stable
2026/10/10
0.7.0stable
2026/10/9
0.6.0stable
2026/9/24
查看其余 7 个版本收起版本
0.5.1stable
2026/9/11
0.5.0stable
2026/9/9
0.4.0stable
2026/9/8
0.3.1stable
2026/9/6
0.3.0stable
2026/8/29
0.2.0stable
2026/8/24
0.1.0stable
2026/8/20

相关插件

正在加载相关插件…

最新版
0.7.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
1.1 MB
文件数
21
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 2
周下载
261
安全扫描
✓ v0.7.1 扫描通过
最近提交
2026/10/10
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

README

@mars.liu/dsh-rich-editor

English | 中文

Markdown notebook open above the plain composer

Third-party DeepSeek Harness web plugin: a rich Markdown notebook for the composer region. Its browser half contributes two entries to the composer region that dsh-client-ui-conversation owns: a tool-row toggle (conversation.input.left) and an editor card in the composer context stack (conversation.input.dock). Both entries share one per-session store handle, so the in-progress draft survives closing and reopening the panel, surface remounts, and — because the engine scopes session stores by session id — each session keeps its own notebook.

The editor is a CodeMirror 6 instance over the Markdown language: syntax highlighting for the draft (GFM tables included), native undo/redo and selection, and Enter-key list editing in the Codex style — pressing Enter on a non-empty list item opens the next item (ordered markers increment 1. → 2., checkbox items reopen unchecked, indentation is preserved, and a mid-line caret splits the item), while Enter on an empty item drops the marker and returns the line to plain-text editing. Enter on a non-list line falls through to a plain newline. Tab and Shift-Tab steer list depth: Tab on a list item indents it one level, Shift-Tab outdents one level, and Shift-Tab on a top-level item exits the list (marker and checkbox drop, the text stays); both decline on non-list lines to the editor defaults. Mod+Enter submits.

An Edit / Preview pair of tabs sits at the card's top edge. Preview renders the live draft through marked and sanitizes the result with DOMPurify before it touches the DOM — a read-only look at the formatted Markdown (GFM tables, task lists, fenced code, blockquotes), never a modification of what gets submitted: the draft text rides the send path verbatim. Toggling to Preview hides the CodeMirror host instead of unmounting it, so undo history and caret survive the round-trip.

Enter-key list editing: next item, unchecked checkbox, marker dropped

Submission rides the scope-addressed conversation service's send verb — the same path the plain composer's submit rides — so adjudication, queueing, and prompt-error reporting behave exactly like a typed prompt. A failed send surfaces on the session's composer notice channel and the panel keeps its draft.

The notebook and the native composer are two editing surfaces over one draft: opening the panel adopts whatever the native editor already holds (an empty composer instead receives the notebook's kept draft); while the panel is open, every edit on either side mirrors live to the other — notebook edits ride the session input facade's single setDraft write path, native edits flow back through a subscription on the facade's InputState store applied as a minimal-diff splice (an equality guard breaks the echo loop and preserves a caret outside the edited range); closing leaves the final text in the native editor, and a successful submit clears both surfaces.

How the pieces connect: two composer slots, one session store, one send verb

Install

dsh plugin --profile web add @mars.liu/dsh-rich-editor

The package carries its own bundle patch (cordis.patch.yml adds the ui-rich-editor row); list the bundle in the profile's dsh.profile.bundles if you compose profiles by hand. From a checkout:

pnpm install && pnpm run build && pnpm test

Requires the dsh family at ^0.1.2-alpha.5 (published on npm; the 0.1.2 line removed dsh-client-runtime / dsh-client-web-react, whose APIs now come from dsh-client-store, dsh-client-ui-renderer, dsh-api-session-controller and dsh-session) and a dsh web composition that mounts dsh-client-ui-conversation.

⚠️ Compatibility notice (read before installing on 0.1.5-rc.x)

Installing this plugin re-resolves the profile's shared @deepseek-ai/* dependency tree. On DSH 0.1.5-rc.1 / 0.1.5-rc.2, this can land the profile on a mutually incompatible pair of @deepseek-ai/* builds of the same version line — the core dsh-api-session-controller entry may then fail to import from dsh-attachment and dsh web will not boot at all (#4).

  • Try it in a dedicated profile first (e.g. a scratch web-test profile), not your daily-driver one.
  • Disabling the plugin is NOT a rollback. The breakage lives in the resolved package versions under node_modules, not in the plugin manifest; toggling plugin entries or safe mode never rewrites them. Only a pnpm-level operation re-resolves the tree.
  • Recovery: removing the package re-resolves the dependency tree and restores a consistent pair immediately:
dsh plugin --profile web remove @mars.liu/dsh-rich-editor
dsh web   # boots normally again

This project does not pin the @deepseek-ai/* range for now (pinning would fight other plugins in the same profile). Instead, every release is smoke-tested against the 5 most recent versions published on npm at or after the current latest tag of the dsh family, and the README states the verified compatibility range for each release. If your installed versions fall outside that range, prefer a dedicated profile for the first install.

Development notes

The npm 0.0.1-rc.1 dsh snapshot ships browser loader bundles only — its node halves export almost nothing, and several pre-rename dependency names (dsh-compact, dsh-user-interaction, dsh-type-meta, dsh-client-ui-slash) were never published. This repo works around both:

  • package.json > overrides points the missing names at empty stubs under vendor/stubs/ (nothing in this plugin's surface imports them);
  • vitest.config.ts resolves every @deepseek-ai/* specifier through the paths map of a local harness checkout's tsconfig.base.json (DSH_CHECKOUT, default ../deepseek-harness) and inlines all @deepseek-ai/dsh-client-* packages, mirroring how in-repo dsh tests reach client APIs.

Drop both workarounds when the dsh family republishes a complete, installable closure.

Known Limitations and Deferred Work

  • Ordered renumbering is deferred — continuing an ordered list increments the new item's marker, but editing or removing earlier items does not renumber the following ones.
  • No / and @ trigger integration yet — the notebook does not participate in the slash-command and file-mention pipeline; those gestures belong to the plain composer below it.
  • Draft is session-lifetime only — the store keeps the draft across remounts and tab switches, but a full page reload discards it (no persistence key).
  • No attachment intake (drop/paste) — the notebook panel itself does not accept dropped or pasted files; attachments go through the paperclip button in the panel footer, which opens the native composer's file picker — picked files become composer-rail attachments and ride out with the next notebook submit as one submission (file-picker entry only; dropping/pasting directly into the notebook still does nothing).
  • The browser bundle inlines ~268 kB gzip of CodeMirror — @codemirror/lang-markdown statically depends on @codemirror/lang-html (which pulls the JavaScript and CSS parsers) even with embedded code highlighting off (codeLanguages: []), and the client bundler inlines the whole chain; a deferred trim would split the editor mount behind a dynamic import.

License

MIT

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包Ab Ocrdsh-ab-ocr--- description: "外部 ocr 工具:逐页识别扫描的 PDF 或图像,仅在处理完最后一页后按顺序合并页面,并使用模型确定的标题级别保存为一个 Markdown 文档。" kind: "package-reference" ---Ds Harness Remoteds-harness-remote通过桌面端、网页端和 Android 端,端到端加密远程访问 DeepSeek Harness 和实验性 Codex 工作区,并支持 dsh-TUI Host。