Skip to content
dsh.fish
Bundle

dsh-writing-desk

写作工作台:在 DeepSeek Harness 中随时查看并调用本地 .dsh-notes 笔记资料进行写作

Source
nousag
stars
2 stars
License
MIT
Updated
Updated 4 days ago

Readme

# dsh-writing-desk · 写作工作台

面向 [DeepSeek Harness](https://github.com/deepseek-ai/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`。

```sh
dsh plugin --profile web add dsh-writing-desk
```

本地开发(用绝对路径安装):

```sh
dsh plugin --profile web add <本目录绝对路径>
```

然后**重启 dsh web**(bundle 层与 client 元数据缓存在进程内,必须重启才生效)。

卸载:

```sh
dsh plugin --profile web remove dsh-writing-desk
```

## 功能一览

- **书籍管理**:多本书独立保存(`写作/<书籍>/<卷>/<章>.md`),新建 / 切换 / 重命名书籍
- **正文编辑器**:字号 / 中英文字体 + Markdown 格式工具栏(加粗 / 斜体 / 标题 / 引用 / 列表 / 代码)
- **字数统计 + 写作目标**:实时字数,每日目标打卡
- **章节大纲**:计划章节 + 情节走向,与已成稿分开
- **导出**:全书合并导出 Markdown / TXT / Word / PDF
- **资料导入**:输入路径或文件选择器,把外部文档导入笔记
- **输出目录**:一键打开 / 自定义正文储存目录
- **布局预设**:工作区尺寸多存档 + 双击重命名
- **数据安全**:原子写入、自动保存、切换防丢、草稿崩溃恢复、请求竞态防护

## 权限与数据

- **文件系统**:只**读**各工作区 `.dsh-notes/` 下的 `.md` 资料;**读写**各工作区 `写作/` 下的卷目录与 `.md` 章节(名称强制 basename、禁目录穿越)。
- **网络**:仅本机回环 HTTP API(浏览器 ↔ 本地 dsh 服务)与同源图标请求;无外部网络、无遥测。
- **凭据**:不收集、不传输任何凭据。

Install

dsh plugin --profile web add github:nousag/dsh-writing-desk

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source