Chuyển đến nội dung chính

dsh-writing-workbench

Đã xác minh

dsh-writing-workbench · v0.1.0 · MIT · Giao diện web

Chinese writing workbench for DeepSeek Harness Web, with AI drafting, revision review, source materials and version history.

Cài đặt

dsh plugin add dsh-writing-workbench

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.

Thẻ

Tác giả

Readme

创作工作台 v0.1

可运行的 React + TypeScript + Tiptap 写作工作区,支持作为 DeepSeek Harness Web 外部插件加载,也可独立在本机运行。

安装发行版

需要 Node.js 24 或更新版本。兼容版本为 @deepseek-ai/[email protected],当前支持本机 Web 模式。

npm install -g pnpm@10 @deepseek-ai/[email protected]
dsh plugin --profile web add [email protected]
dsh web

安装会自动启用插件,无需下载源码、手动构建或指定 --patch。打开 dsh 输出的地址,完成 Harness 的首次设置,点击左侧「创作工作台」。AI 模型和 API Key 在 Harness 设置中配置。

文章默认保存在用户目录下的 .dsh/writing-data/writing.json;设置 DSH_HOME 时改为该目录下的 writing-data/writing.json。该路径不随启动目录或插件更新变化。请备份整个 writing-data 目录;同一目录只应由一个服务进程使用。

已有用户若原来使用 D:/writing-data 或其他自定义目录,请保留原来的 --patch 参数,或在 Harness 的 $DSH_HOME/profiles/web/cordis.patch.yml 中配置:

- id: writing-workbench
  config:
    dataDir: D:/writing-data
    maxOutputTokens: 4096

这会继续读取原文章,发行版不会自动搬移既有数据。尚未验证 Desktop/Electron 或远程多人使用。

已实现

  • 「生成全文正文」按标题、正式章节结构、选用素材和文风起草完整候选稿,点击「替换全文正文」后保存。目标长度在文章资料中独立设置。

  • 正式大纲来自正文标题,改名和调序后同步 AI 上下文。采用 AI 大纲直接建立可起草章节,并保留未分节正文、已有章节正文、素材和证据关联;未匹配章节明确列出并保留。旧文字大纲只作为导入参考,先预览再采用。

  • 空章节显示「起草本节」;已有正文显示「重写本节/续写本节」。接受按钮明确区分填入、替换和末尾追加,续写不改动已有正文和下一节。

  • 标题旁提供拟标题和优化标题入口,支持三个候选逐个选用;长标题自然换行,采用后定位标题。

  • 文章编辑后提前标明旧建议过期并禁用接受;重试使用最新文章。过期选区操作要求重新选择。旧大纲导入只重新预览,不隐式调用模型。

  • 本次要求按操作隔离,返回同一操作可恢复要求;在未选择操作时新填写的要求用于下一次选择。文章长度、读者和文风属于文章设置,独立于本次要求。

  • 历史版本可查看本次修改或与当前稿比较,以删除线/新增标记展示变化。每篇保留最近 5 个不同版本,切换不新增历史记录,同一批 AI 建议逐处接受合并为一个版本。

  • 首次整理旧历史时,将原数据备份为数据目录下的 writing.before-history-limit.json。内部更新序号用于防止旧建议覆盖新稿,与历史条目数量无关。

  • AI 操作先选择再执行,补充要求置于操作列表上方,显示真实范围和素材名称。主动选择的范围不会在取消选区后扩大为全文;选区失效时提示重新选择。选区工具栏保留快捷执行。

  • Ctrl+K 和空段落 / 菜单支持搜索、方向键、Enter 和 Esc,只显示当前可用操作,关闭后回到正文。

  • 逐处审阅支持进度、前后跳转、定位和自动前进;默认在正文显示差异,完整对比按需展开,底部保留进度和接受剩余修改入口。

  • 保存失败显示重试和最后成功保存时间;失败时保留当前编辑,切换文章失败明确说明仍停留在哪篇文章。

  • 知乎热点导入为素材卡片,旧文本素材可无损转换;生成上下文、章节关联、数量和发布来源共用素材数据。

  • 版本可以命名,任意两版比较,或另存为独立文章。命名快照也计入最近 5 个版本,不额外永久保留。

  • 正文论点可关联素材原文摘录,区分有出处、待人工核验和来源不足;修改论点提示核验,移除来源降级,Markdown/发布 HTML 导出对应引用。

  • 观点文章、教程、热点评论模板预设读者、结构、文风和长度;通过选题、大纲、章节、审稿、发布步骤推进,每步可修改。

  • 热点选题支持收藏、备注、受众痛点/反向观点/案例角度后创建文章;保留最近 5 次成功获取的历史榜单,收藏上限 100 个。

  • 两侧栏可拖动或使用方向键调整宽度,并保存本机偏好。根据插件容器宽度收起侧栏,窄屏使用遮罩抽屉;章节默认紧凑显示,选中后展开设置。

  • 顶部文档菜单统一文章库和版本,发布与导出合并入口;辅助文字提高可读性,窄屏保持保存状态可见。

  • 新建、打开、编辑文章;约 1 秒后自动保存,Ctrl+S 手动保存。

  • 标题、目标读者、核心观点、表达风格、大纲、文本素材。

  • Tiptap 富文本:标题、加粗、斜体、列表、撤销。

  • 12 个配置化 Skills,覆盖标题、大纲、全文/章节起草、章节追加、续写、润色和检查。

  • 选中文字显示操作栏;Ctrl+K 打开指令菜单;空段落输入 / 打开指令菜单。

  • 原内容 / 建议修改预览、接受、拒绝、重新生成、取消生成。

  • 版本检查:生成后发生任何已保存的编辑,旧建议不能直接覆盖新文章。

  • 版本历史、恢复旧版本、Markdown 导出。

  • Harness 模式复用已注册的模型及凭据;不改 Harness 核心源码。

方式 A:先独立运行

安装 Node 24,然后在本目录执行:

npm ci --legacy-peer-deps
npm run build
npm start

浏览器打开 http://127.0.0.1:4317 。不配置 Key 也能编辑、保存、导出;生成操作会明确提示模型未配置,不会显示伪造结果。

要使用 AI,复制 .env.example 为 .env,填入自己的 LLM_API_KEY,然后重启。

LLM_BASE_URL=https://api.deepseek.com
LLM_API_KEY=填入自己的Key
LLM_MODEL=填入你实际可用的模型ID

独立模式使用 OpenAI 兼容的 Chat Completions 接口。LLM_BASE_URL 填到 /chat/completions 的上一层,例如兼容服务的 https://example.com/v1。Key 只由 Node 服务读取,不发送给网页。MiniMax 的兼容地址、模型和套餐权限需按你的实际账号配置,本项目不预设这些值。

Windows 可以双击 START-WINDOWS.cmd,或在 PowerShell 中执行上面的命令。默认数据位于 .data/writing.json,请备份该目录。

方式 B:作为 Harness 插件

本地源码接入方式:已实测 npm 发行版 @deepseek-ai/[email protected] 的 Web 模式。请先完成上述依赖安装和构建,再执行:

npm install -g @deepseek-ai/[email protected]
dsh plugin --profile web add /你的绝对路径/dsh-writing-workbench
dsh web --no-open

Windows 路径有空格时加双引号:

dsh plugin --profile web add "D:\projects\dsh-writing-workbench"
dsh web --no-open

包内 cordis.patch.yml 由安装命令自动启用,默认使用用户的 Harness home 保存文章。writing.overlay.yml 保留现有本机目录 D:/writing-data;需要继续使用该目录时,通过 dsh web --patch "插件目录/writing.overlay.yml" --no-open 加载。其他用户应按实际目录修改 overlay,不要直接使用此 Windows 路径。

打开 dsh 输出的本机地址,完成 Harness 自身的首次提示,点击左侧「创作工作台」。AI 模型凭据在 Harness 设置中配置;此模式不会读取独立运行的 .env Key。

当前仅支持 host=127.0.0.1 的本机 Web 使用。使用其他版本的 Harness 前应重新验证插件接口;Electron 尚未验证。

知乎热点

点击顶部右侧「知乎热点」打开选题面板,支持分类筛选、搜索标题与摘要、刷新热榜、打开知乎原题。

  • 「加入当前素材」保留当前文章,把热点标题、原题链接、热度、获取时间和摘要追加到素材;同一原题不会重复加入。
  • 「以此新建文章」先保存当前编辑,再创建以热点为标题的空白文章,同时保存来源素材。可继续用「写大纲」「继续写」等支持素材上下文的 Skill 创作。
  • 「AI 分类」使用 AI 助手中当前所选模型,点击后才调用模型。未配置模型时仍可抓取热榜、使用关键词分类和选题。

实现迁自 D:/code/爆款文章生成器/backend/app/services/zhihu_service.py 和 frontend/src/components/workspace/canvas/HotTopicsDrawer.vue,改为当前项目的 Node + React 实现,不依赖旧项目的 Python/Java 服务。保留移动端优先、Web 备用、10 分钟缓存、限流退避及关键词分类;增加并发抓取合并、完整字符串问题 ID 和旧榜提示。缓存过期后在下次获取时更新;刷新失败时保留原获取时间和上次热榜。知乎 API 受限且无缓存时会明确提示错误。

对应接口为 POST /writing-api/zhihu-hot-topics({ "forceRefresh": false })和 POST /writing-api/zhihu-classify({ "provider": "...", "model": "..." }),同时用于独立运行和 Harness 插件。

验证:npm test 包含 9 项新增热点测试;npm run test:zhihu:browser 验证筛选、素材去重、新建、持久化、错误重试和 390px 窄屏。浏览器脚本沿用 Playwright,支持 CODEX_PRIMARY_RUNTIME_NODE_MODULES 和 CHROMIUM_PATH;Windows 可自动使用已安装的 Chrome/Edge。设置 ZHIHU_LIVE=1 可改用真实知乎数据;AI 响应仍来自本机测试模型,不消耗实际模型额度。

已安装的 Harness 插件使用安装副本时,需要将本项目的新构建更新到该副本并重启 Harness;仅刷新网页不会更新已经加载的服务端代码。请先保存当前文章。

Skill 配置

修改 skills/*.yml 即可更改提示词、允许范围和上下文。服务端每次执行都会重新读取配置;新增 Skill 后刷新界面即可显示。

  • target: body:替换正文或在光标处插入。
  • target: title:只修改标题。
  • target: outline:只修改左侧大纲。
  • target: analysis:只显示检查意见,不提供直接写入正文的按钮。

模型只生成新文字。文章 ID、版本、选区、操作类型由服务端确定,不由模型填写。

全文操作暂支持 18000 字以内;局部操作使用选区和有限邻近上下文,避免每次发送整篇文章。逻辑检查不联网核实事实。

验证

npm run typecheck
npm test
npm run build

45 项自动测试覆盖章节结构与正文保留、追加和替换、标题候选、过期保护、版本、并发保存、数据兼容、热点选题、证据校验、导出和发行版数据目录。

可选浏览器验证:先安装 Playwright(npm install --no-save --legacy-peer-deps playwright),执行 npx playwright install chromium,再运行 npm run test:browser。此测试会启动本机测试模型服务,不需要真实 Key。

npm run test:zhihu:browser 验证热点操作;npm run test:workspace:browser 验证范围、生成准备、逐处导航、命令菜单、保存重试、证据、模板、版本命名和容器布局。生成使用独立测试模型服务,未消耗真实模型额度。

npm run test:creation:browser 验证采用大纲后起草、章节追加、结构同步、要求隔离、标题候选选用、生成期间编辑和最新稿重试,以及长标题和窄屏布局。

Harness 实际加载验证:/writing-api/bootstrap 返回 200、12 个 Skills 和已注册模型。真实模型生成质量、各供应商兼容性、Windows 打包和 Electron 未实测。

本版范围

本版不包含 AI Chat、自动长文 Agent、PDF 素材解析、Electron 打包和联网事实核查。“有出处”表示已关联素材原文,不代表事实已经独立核实。

文章、修改提案和历史版本保存在原子写入的 JSON 文件中,并在单个 Node 进程内串行提交。暂未接 Harness Storage/SQLite;同一数据目录只应由一个服务进程使用。每篇历史保留最近 5 个不同版本。

第一版为中文固定界面;后续可接 Harness Locale。npm 包包含预构建产物、Skill 配置和使用文档;源码目录不进入 npm 包。