dsh-writing-desk
No description
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 24, 2026
- Updated
- Aug 24, 2026
Introduction
dsh-writing-desk · 写作工作台
面向 DeepSeek Harness(DSH)的本地优先写作工作台插件:把工作区 .dsh-notes/ 目录里的 Markdown 笔记当作写作资料,随时查看并调用;并内置正文编辑器 + 卷/章文件管理。
工作台以半窗面板呈现:打开后占窗口右半边,DSH 对话窗口自动让位到左半边,两边可同时操作。
侧边栏底部新增「写作工作台」入口,打开后内含两个标签页:
「写作」标签 —— 卷/章文件管理 + 直接写正文
- 卷/章文件管理:正文按「卷 → 章」两级组织在
<工作区>/写作/下:- 新建卷:自动得到
第一卷、第二卷……(已有最大卷号 +1); - 新建章:在某个卷下自动得到
第一章、第二章……,每一卷都从第一章重新开始; - 默认章节名「第 X 章」(X 为中文数字,兼容阿拉伯数字),点 ✎ 可重命名章节或卷。
- 示例:
写作/第一卷/第一章.md、写作/第一卷/第二章.md、写作/第二卷/第一章.md。
- 新建卷:自动得到
- 输入文本框:点击章节即在编辑器写正文,
Ctrl/Cmd+S保存、停顿自动保存。 - 边写边调用本地资源:编辑器下方「插入资料」搜索框,点「全文」整篇插入光标处、点「引用」插入
[标题](路径)。
「资料」标签 —— 侧栏预览 + 选中即引用
- 列表 + 预览双栏:左侧是资料列表(按工作区分组、可全文搜索),右侧是选中资料的实时预览(Markdown 渲染)。
- 选中一段话 → 添加到正文:在预览中用鼠标选中一段文字,会在选区上方弹出「添加到正文中」,点击即以引用块(
> …)形式直接写入当前章节的正文,无需切换标签。 - 预览区顶部保留:调用到会话(把整篇资料发给 AI 续写)、插入到输入框、复制全文 / 复制引用。
设计
| 半 | 作用 |
|---|---|
host(lib/index.js) | 通过 webServer 注册回环 HTTP API。资料:list/read/search(只读 .dsh-notes/*.md);正文:tree/readChapter/writeChapter/createVolume/createChapter/renameVolume/renameChapter(读写 <工作区>/写作/<卷>/<章>.md)。不注册额外 agent 工具——模型本身就有文件工具可读这些文件。 |
client(lib/client.js) | 浏览器半:半窗覆盖层(portal + 给对话 frame 让位)+ 双标签,纯 React.createElement、无构建步骤。 |
目录约定:资料在 <工作区>/.dsh-notes/,正文在 <工作区>/写作/。
安装
前置:已安装 dsh CLI,目标 profile 为 web。
dsh plugin --profile web add dsh-writing-desk
本地开发(用绝对路径安装):
dsh plugin --profile web add <本目录绝对路径>
然后重启 dsh web(bundle 层与 client 元数据缓存在进程内,必须重启才生效)。
卸载:
dsh plugin --profile web remove dsh-writing-desk
功能一览
- 书籍管理:多本书独立保存(
写作/<书籍>/<卷>/<章>.md),新建 / 切换 / 重命名书籍 - 正文编辑器:字号 / 中英文字体 + Markdown 格式工具栏(加粗 / 斜体 / 标题 / 引用 / 列表 / 代码)
- 字数统计 + 写作目标:实时字数,每日目标打卡
- 章节大纲:计划章节 + 情节走向,与已成稿分开
- 导出:全书合并导出 Markdown / TXT / Word / PDF
- 资料导入:输入路径或文件选择器,把外部文档导入笔记
- 输出目录:一键打开 / 自定义正文储存目录
- 布局预设:工作区尺寸多存档 + 双击重命名
- 数据安全:原子写入、自动保存、切换防丢、草稿崩溃恢复、请求竞态防护
权限与数据
- 文件系统:只读各工作区
.dsh-notes/下的.md资料;读写各工作区写作/下的卷目录与.md章节(名称强制 basename、禁目录穿越)。 - 网络:仅本机回环 HTTP API(浏览器 ↔ 本地 dsh 服务)与同源图标请求;无外部网络、无遥测。
- 凭据:不收集、不传输任何凭据。