🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

所见即所得编辑器 yadnuses/dsh-md-editor

DeepSeek Harness
yadnuses3 天前有提交已提供中文文档扫描:含敏感能力

在预览区点击段落就地修改 Markdown 源码

31.3/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yadnuses/dsh-md-editor
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
  • 写入本地文件
    lib/index.js:45
    mkdirSync(dirname(DIAG), { recursive: true });
  • 写入本地文件
    lib/index.js:46
    appendFileSync(DIAG, `[${new Date().toISOString()}] ${message}\n`);
  • 读取本地文件
    lib/index.js:122
    info = lstatSync(target);
  • 写入本地文件
    lib/index.js:147
    writeFileSync(temporary, content, { encoding: "utf8", mode });
  • 写入本地文件
    lib/index.js:148
    renameSync(temporary, target);
  • 删除本地文件
    lib/index.js:151
    unlinkSync(temporary);
  • 读取本地文件
    lib/index.js:162
    const content = readFileSync(target.path, "utf8");
  • 读取本地文件
    lib/index.js:163
    const info = statSync(target.path);
  • 读取本地文件
    lib/index.js:184
    const current = statSync(target.path);
  • 读取本地文件
    lib/index.js:190
    const next = statSync(target.path);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

在 DeepSeek Harness 右侧边栏直接编辑 Markdown 的插件:点哪改哪,源码零漂移

README

由 DeepSeek 最新模型翻译生成
dsh-md-editor 在 DeepSeek Harness 的右侧边栏直接编辑 Markdown —— 点哪改哪,源码零漂移。 演示 完整演示视频:docs/demo.mp4(30 秒) 这是什么 DSH 的文档预览是只读的 —— 官方包自己写着 "Preview, not editing",浏览器端的 workspace-files 服务也明确不提供任何写操作。想改一篇刚打开的 Markdown,只能切到别的编辑器。 这个插件补上这段路:在文档预览头部加一个铅笔按钮,点开后编辑器精确覆盖在预览区上,直接在渲染后的文档里点任意一段就能改。 功能 | 能力 | 说明 | | 按块原地编辑 | 点渲染结果里的任意一块(标题 / 段落 / 列表 / 代码块),它就地在原地变成编辑框 | | 源码零漂移 | 改的是这一块的 Markdown 源码,不做 HTML → Markdown 回写,不会把你的 * 列表变成 -、不会丢转义、不会重排表格 | | 实时预览 | 复用 DSH 内置的 MarkdownText 组件(与官方预览同一套渲染),边改边看 | | 整篇源码模式 | 头部「源码」按钮切换成纯文本整篇编辑,适合大改 | | 原子写入 | 同目录临时文件 + rename 替换,保留原文件权限位 |
展开完整文档(README 剩余 1 节)
dsh-md-editor

在 DeepSeek Harness 的右侧边栏直接编辑 Markdown —— 点哪改哪,源码零漂移。

演示

完整演示视频:docs/demo.mp4(30 秒)

这是什么

DSH 的文档预览是只读的 —— 官方包自己写着 "Preview, not editing",浏览器端的 workspace-files 服务也明确不提供任何写操作。想改一篇刚打开的 Markdown,只能切到别的编辑器。

这个插件补上这段路:在文档预览头部加一个铅笔按钮,点开后编辑器精确覆盖在预览区上,直接在渲染后的文档里点任意一段就能改。

功能

| 能力 | 说明 |
| 按块原地编辑 | 点渲染结果里的任意一块(标题 / 段落 / 列表 / 代码块),它就地在原地变成编辑框 |
| 源码零漂移 | 改的是这一块的 Markdown 源码,不做 HTML → Markdown 回写,不会把你的 * 列表变成 -、不会丢转义、不会重排表格 |
| 实时预览 | 复用 DSH 内置的 MarkdownText 组件(与官方预览同一套渲染),边改边看 |
| 整篇源码模式 | 头部「源码」按钮切换成纯文本整篇编辑,适合大改 |
| 原子写入 | 同目录临时文件 + rename 替换,保留原文件权限位 |
| 冲突保护 | 请求带 mtimeMs,文件被外部改动过会返回 409 并询问是否覆盖 |
| 快捷键 | ⌘/Ctrl + S 保存(块内按会先提交当前块)、Esc 关闭 / 取消当前块 |

支持 .md / .markdown / .txt。

安装

需要 DeepSeek Harness 桌面端(当前适配 0.2.x)。

1. 把仓库放到本机

git clone https://github.com/yadnuses/dsh-md-editor.git ~/Downloads/dsh-md-editor
ln -sfn ~/Downloads/dsh-md-editor ~/.dsh/plugins/dsh-md-editor

2. 在 profile 里登记

编辑 ~/.dsh/profiles/desktop/package.json:

{
"dependencies": {
// 路径换成你自己的绝对路径 "dsh-md-editor": "link:/Users/你的用户名/.dsh/plugins/dsh-md-editor" },
"dsh": {
"profile": {
"bundles": [
// ……原有 bundles 保持不变……
"dsh-md-editor"
]
}
}
}

3. 用 DSH 自带的 pnpm 安装

cd ~/.dsh/profiles/desktop

ELECTRON_RUN_AS_NODE=1 "/Applications/DeepSeek Harness.app/Contents/MacOS/DeepSeek Harness" \
--expose-internals "/Applications/DeepSeek Harness.app/Contents/Resources/runtime/primary-runtime/dependencies/pnpm/bin/pnpm.mjs" \
install

装完回到 DSH 刷新一次窗口即可(profile 开了 HMR 时通常会自动生效)。

改完配置前建议先备份 package.json / cordis.patch.yml / pnpm-lock.yaml。

使用

1. 用文件树(⌘P)打开一个 .md,它会在右侧边栏预览;
2. 点预览头部的铅笔按钮;
3. 点你想改的那一段 → 就地变成编辑框(内容是这一块的 Markdown 源码);
4. 失焦 / ⌘+Enter 提交并渲染回去,Esc 取消这一块;
5. ⌘/Ctrl + S 保存;保存后 DSH 的预览会因文件监听自动刷新。

安全边界

插件刻意把能力收得很小:

- 路由只接受回环地址(127.0.0.1 / ::1)的请求;
- 只写已存在的普通文件,拒绝符号链接、目录、设备;
- 扩展名白名单 .md / .markdown / .txt,单文件上限 4 MiB;
- 写入是原子替换,保留权限位;冲突不静默覆盖;
- 不注册工具、不注入提示词、不读写会话数据、不改 DSH 内核。

实现原理

两半组成,全部走 DSH 的公开扩展点:

┌───────────────────────── 浏览器端 lib/client.js ─────────────────────────┐ │ window.__ModuleLoader__.load(...) │ │ ctx.slots.inject("sidebar.right.tab.document.actions", ...) │ │ └─ 在文档预览头部挂「编辑」按钮 │ │ EditorPanel(portal 到 body) │ │ ├─ 按空行分块 → 每块用 @deepseek-ai/dsh-client-ui-primitives │ │ │ 的 MarkdownText 渲染(与官方预览同源) │ │ └─ 点块 → 换成该块源码的 textarea → 提交后拼回全文 │ └─────────────────────────────────────────────────────────────────────────┘ │ fetch /md-editor/{read,write} ┌───────────────────────── 宿主端 lib/index.js ───────────────────────────┐ │ ctx.inject(["webServer"]) │ │ webServer.register({ kind: "exact", path: "/md-editor/read", ... }) │ │ webServer.register({ kind: "exact", path: "/md-editor/write", ... }) │ │ └─ 校验 → 原子写 → 返回 mtime │ └─────────────────────────────────────────────────────────────────────────┘

几个关键点(也是踩过的坑):

- MarkdownText 是 React.memo(...) 返回的对象,判断可用性不能只认 function;
- 桌面端页面 origin 是 dsh-app://app/,非静态路径由 Electron 主进程转发到宿主,所以相对路径 fetch 可用;
- 分块要照顾围栏代码块内部的空行、松散列表和缩进嵌套,否则会把一块切碎。

为什么不做富文本 WYSIWYG

富文本编辑要把 HTML 反序列化回 Markdown,必然悄悄改写你的写法。这个插件改的是这一块的原始源码,源文件除你实际改动外一个字符都不变 —— 对笔记/文档仓库来说这比"看着爽"重要。

目录结构

dsh-md-editor/
├── package.json # dsh.bundle.patch + dsh.client(platform: web)
├── cordis.patch.yml # loader 行:id md-editor / name dsh-md-editor ├── lib/ │ ├── index.js # 宿主端:/md-editor 回环路由(read / write / health) │ └── client.js # 浏览器端:头部按钮 + 原地编辑器 ├── docs/ # 演示视频、动图、截图 ├── README.en.md # English README └── README.md

开发

插件是纯 JavaScript、零构建——lib/client.js 直接按 DSH 的 window.__ModuleLoader__ 格式手写,改完让 DSH 热重载即可。

本地自测(不需要跑起整个 DSH):

宿主路由逻辑
node --check lib/index.js && node --check lib/client.js

客户端部分用 jsdom + React 18 覆盖了:槽位注册、按钮渲染、打开面板、分块、点块编辑、提交、块内 ⌘S、409 冲突覆盖、CRLF 还原等用例。

已知限制

- 分块渲染:跨块的引用式链接/脚注定义([x]: url 写在别的块里)可能不生效;
- 块内看到的是源码,不是富文本;
- 预览与编辑区滚动不同步;
- 适配 DSH 0.2.x 客户端内部结构,DSH 大版本升级后需要跟进。

卸载

1. 从 ~/.dsh/profiles/desktop/package.json 里删掉 dsh-md-editor (dependencies 与 dsh.profile.bundles 各一行)
2. 重新安装
cd ~/.dsh/profiles/desktop && pnpm install
3. 删掉软链
rm ~/.dsh/plugins/dsh-md-editor

License

MIT

社区插件,非 DeepSeek 官方产品。使用前请自行评估风险并备份你的 profile 配置。
预览分享卡片长什么样 ↓yadnuses/dsh-md-editor
分享 · DeepSeek Harness Hub
yadnuses/dsh-md-editor

在预览区点击段落就地修改 Markdown 源码

这是你的仓库?认领条目

回到顶部