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

实时写作面板 MathieuPortmann/dsh-edit-panel

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

AI 逐节写入文件,你可在侧栏同步编辑并审阅改写提议

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 9 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

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

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

读写/删除本地文件
查看扫描证据(共 24 处,展示前 19 条)
  • 读取本地文件
    index.js:33
    const editorBundle = () => (bundle ??= readFileSync(join(HERE, 'web', 'editor.js'), 'utf8'));
  • 读取本地文件
    lib/draft.js:79
    const read = (_d, f) => readFileSync(f, 'utf8');
  • 写入本地文件
    lib/draft.js:80
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    lib/draft.js:82
    const load = sid => { try { return JSON.parse(readFileSync(file(sid), 'utf8')); } catch { return undefined; } };
  • 写入本地文件
    lib/draft.js:83
    const save = d => writeFileSync(file(d.sessionId), JSON.stringify(d, null, 1));
  • 删除本地文件
    lib/draft.js:84
    const drop = sid => rmSync(file(sid), { force: true });
  • 写入本地文件
    lib/draft.js:86
    writeFileSync(d.work, render(d));
  • 读取本地文件
    lib/draft.js:93
    if (!existsSync(d.work)) return [];
  • 读取本地文件
    lib/draft.js:162
    const exists = existsSync(abs);
  • 写入本地文件
    lib/draft.js:166
    mkdirSync(dirname(abs), { recursive: true });
  • 读取本地文件
    lib/draft.js:247
    if (!existsSync(abs)) throw new Error(`no file ${abs}`);
  • 写入本地文件
    lib/draft.js:249
    mkdirSync(backups, { recursive: true });
  • 写入本地文件
    lib/draft.js:251
    copyFileSync(abs, backup);
  • 删除本地文件
    lib/draft.js:279
    if (d.existed) rmSync(d.work, { force: true });
  • 读取本地文件
    lib/draft.js:280
    else if (existsSync(d.work)) {
  • 写入本地文件
    lib/docs.js:7
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    lib/docs.js:9
    const read = sessionId => { try { return JSON.parse(readFileSync(file(sessionId), 'utf8')); } catch { return []; } };
  • 写入本地文件
    lib/docs.js:10
    const write = (sessionId, list) => writeFileSync(file(sessionId), JSON.stringify(list, null, 1));
  • 读取本地文件
    lib/docs.js:20
    list(sessionId) { return read(sessionId).map(x => ({ ...x, name: basename(x.path), exists: existsSync(x.path) })); },
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件:实时写作面板——AI 在侧边编辑器里逐段写文本或 Markdown 文件,你可以直接在里面打字;重写会变成建议稿

README

由 DeepSeek 最新模型翻译生成
dsh-edit-panel 为 DeepSeek Harness(DSH)实时写入文本文件:AI 把文本或 Markdown 文件逐节写进右侧边栏的编辑器,你可以同时在同一个文件里打字。 维护:尽力而为。 Issue 可能无人回复;欢迎 fork。 新增内容 - 五个工具供模型使用,每个对话都可用: - edit_begin(path, outline, title?) 创建文件并写入标题,同时打开面板; - edit_write_section(section, content) 写入一节,立即保存到磁盘; - edit_status() 说明已写了什么、你改了什么、下一步做什么; - edit_finish() 结束草稿; - edit_open(path) 在面板中显示已有文件,不做修改。 - 面板(右侧边栏标签页,Live writing):每节一个小型文字处理器编辑器(加粗、斜体、标题、列表、引用、链接、撤销;以 Markdown 读写)。你输入的内容在短暂停顿后保存,你正在某节打字时 AI 无法覆盖该节。 - 用提议代替覆盖:AI 重写已有文字的节时,文件不变;面板逐词显示它的提议(新增为绿色,删除为红色删除线),你可以逐条保留或拒绝,也可以全部保留或全部拒绝。
展开完整文档(README 剩余 1 节)
dsh-edit-panel

为 DeepSeek Harness(DSH)实时写入文本文件:AI 把文本或 Markdown 文件逐节写进右侧边栏的编辑器,你可以同时在同一个文件里打字。

维护:尽力而为。 Issue 可能无人回复;欢迎 fork。

新增内容

- 五个工具供模型使用,每个对话都可用:
- edit_begin(path, outline, title?) 创建文件并写入标题,同时打开面板;
- edit_write_section(section, content) 写入一节,立即保存到磁盘;
- edit_status() 说明已写了什么、你改了什么、下一步做什么;
- edit_finish() 结束草稿;
- edit_open(path) 在面板中显示已有文件,不做修改。
- 面板(右侧边栏标签页,Live writing):每节一个小型文字处理器编辑器(加粗、斜体、标题、列表、引用、链接、撤销;以 Markdown 读写)。你输入的内容在短暂停顿后保存,你正在某节打字时 AI 无法覆盖该节。
- 用提议代替覆盖:AI 重写已有文字的节时,文件不变;面板逐词显示它的提议(新增为绿色,删除为红色删除线),你可以逐条保留或拒绝,也可以全部保留或全部拒绝。
- 已有文件安全:已有文件先写入 <file>.draft,只有你按 Finish 才替换原文件(原文件先复制到备份文件夹);Cancel 丢弃草稿。用 edit_open 打开的文件先备份,再原地编辑。
- 就某段文字问 AI:选中文字,点 ✦ Ask the AI 胶囊按钮(或 Ctrl+K),这段文字连同所在节一起放进消息框,并附快捷操作(缩短、改写、修正、翻译)。
- 对话的文档:消息框上方的抽屉列出本对话打开过的文件,点一下即可重新打开。点击对话中的文本文件链接 name,会在面板中打开它。
- 你给每节的指令和你的决定会作为运行时上下文回传给模型,压缩后依然保留。

支持文件:.md、.markdown、.txt、.text、.tex、.org、.rst、.qmd、.rmd,位于你的主目录内,且不在隐藏文件夹中。Markdown 文件中,节就是 ## 标题。

界面为英文;DSH 语言为法语时显示法语(client.js 顶部的 en 和 fr 表)。

安装

dsh plugin --profile web add github:MathieuPortmann/dsh-edit-panel

之后重启配置档。需要 Node ^22.19.0 || >=24 和 DSH >=0.2.0-rc.2 <0.3.0(见兼容性)。包发布到 npm 后,dsh plugin --profile web add dsh-edit-panel 也可用。

配置

edit-panel 行的选项:

| 选项 | 默认值 | 含义 |
| dataDir | <DSH_HOME>/edit-panel | 草稿状态(每个会话一个 JSON)和文档列表 |
| backupDir | <DSH_HOME>/backups/edit-panel | 文件被替换或打开前的副本 |
| announce | true | 在每个会话里加一行,告诉模型文本文件通过面板写入;设为 false 则只在被要求时使用工具 |

工作原理

- lib/draft.js 管理草稿:按分节渲染文件,再读回来查看你改了什么(每节一个指纹),让提案排队等待,在你输入时锁定某一节 30 秒,替换或恢复文件时带上备份。lib/docs.js 维护文档列表。两者都是纯 Node.js,由 tests/ 覆盖。
- index.js(宿主侧)注册工具,把草稿状态作为运行时上下文发送,并通过 /edit-api/<method> 上的 RPC 通道提供面板,位于 DSH 自身的连接检查之后。
- client.js(页面侧)绘制标签页、抽屉和编辑器。编辑器本身(web/editor.js)是 ProseMirror 和 markdown-it 的打包产物,由 web-src/editor.js 构建;页面从宿主接收它,只加载一次。

兼容性

| 组件 | 支持范围 |
| Node.js | ^22.19.0 \|\| >=24.0.0(engines.node) |
| DSH | >=0.2.0-rc.2 <0.3.0;声明为 @deepseek-ai/dsh-tools 和 @deepseek-ai/schemastery 上的可选 peerDependencies,这是宿主侧唯一导入的 DSH 包 |
| 平台 | Linux(已测试);纯 JavaScript,无原生插件 |
| 页面 | 带右侧边栏的 DSH Web UI;抽屉通过可编辑区域定位消息框,页面变化时可能需要更新 |

已在 Node 22.23 上用 DSH 0.2.0-rc.2 测试(见验证)。

权限与外部服务

插件能触及的一切,以及失败时的表现:

| 能力 | 位置 | 用途 | 失败时 |
| 文件 | lib/draft.js、lib/docs.js | 写入模型起草的文本文件,以及你在面板中打开的文件,仅限你的主目录内,绝不在隐藏文件夹中,仅限上述文本扩展名;<file>.draft 工作副本;backupDir 中的备份副本;dataDir 中的状态 | 工具或面板显示错误;不写入任何内容 |
| 网络 | 无 | 数据不离开本机 | 不适用 |
| 命令 | 无 | 不启动子进程,不调用 shell | 不适用 |
| 供模型使用的工具 | index.js | edit_open、edit_begin、edit_write_section、edit_status、edit_finish(见上文) | 向模型返回错误文本 |
| HTTP 路由 | index.js(ctx.webServer.register) | 面板使用的 POST /edit-api/<method>,位于 ctx.connection.admit()(DSH 的 Host/Origin 防护和 token)之后;仅接受 JSON 请求体,上限 1 MiB | 未通过校验的请求返回 401/403;其他错误在 RPC 信封中返回 |
| 动态模块加载 | index.js(importFromDsh) | 从运行插件的 DSH 安装中加载 @deepseek-ai/dsh-tools 和 @deepseek-ai/schemastery。不下载任何内容 | 插件加载失败 |
| 页面内代码求值 | client.js(loadLib) | 宿主从本包的 web/editor.js 读取编辑器 bundle,用 new Function 转成代码,只执行一次(或在严格内容策略下,作为 blob 脚本加载)。除此之外不再求值任何文本,也不从网络获取任何内容 | 面板显示「Editor unavailable」,各区块以纯文本显示 |
| 界面 | client.js | 右侧边栏标签页、消息框上方的抽屉、会话中文本文件链接的点击处理器、保存在浏览器 localStorage 中的字体选择;向 DSH 的 locale 服务注册法语词典和语言条目 | 无面板 |

验证

在一次性配置档上验证过(DSH_HOME 指向临时文件夹,绝不触碰真实配置档):

npm pack
dsh plugin --profile t add file:$PWD/dsh-edit-panel-0.1.0.tgz # install
dsh t --port 3095 --no-open # start: plugin loads, no error
dsh plugin --profile t remove dsh-edit-panel # uninstall

npm test 运行 9 个独立测试(草稿:新建和已有文件、用户的编辑、锁、保留的提案、合并或拒绝、原地打开、取消、重复标题、路径规则;文档列表),无需安装 DSH。

web/editor.js 可复现:cd web-src && npm ci && npm run build 会逐字节重建它,版本锁定在 web-src/package-lock.json 中(esbuild 0.28.2)。打包的库及其许可证列在 THIRD_PARTY_NOTICES.md。

开发

npm test
cd web-src && npm ci && npm run build # after changing web-src/editor.js

许可证

本插件采用 MIT。打包的库保留各自的许可证(MIT,entities 为 BSD-2-Clause),见 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓MathieuPortmann/dsh-edit-panel
分享 · DeepSeek Harness Hub
MathieuPortmann/dsh-edit-panel

AI 逐节写入文件,你可在侧栏同步编辑并审阅改写提议

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部