dsh-novel-reader:在 DeepSeek Harness 对话里读本地 txt 小说

前言

DeepSeek Harness(DSH)的主界面是对话窗口。若你想在熟悉的聊天布局里看本地的 .txt 小说,常见做法是另开阅读器或把大段文本贴进会话——既不省事,也不利于摸鱼时把界面伪装成正常 AI 对话。dsh-novel-reader 走另一条路:在输入框旁选一本书,每条用户消息对应输出一章(或按字数切段),进度落在本地目录,正文可走 DSH 的「思考」折叠块与翻页阅读器,可见回复则是一段结构化的固定总结,外观接近真实模型答复。

下面介绍插件定位、能力与从安装到日常阅读的步骤。

这是什么

dsh-novel-reader(仓库 ukkyo1/dsh-novel-reader)由 ukkyo1 维护,在 SkillHub 上归类为客户端插件。它是标准 DSH bundle:package.json 中声明 dsh.bundle.patch 与 dsh.client,无需构建、无第三方运行时依赖;当前包版本为 0.9.4(MIT 许可证)。

核心思路:把本地 txt 放进指定目录,在会话工具栏进入「阅读模式」选书,之后内容全部来自本地文件,不联网、不调用模型;渲染仍走 DSH 正常的助手消息管线。

核心功能

书库与选书

  • 默认小说目录为 DSH 主目录下的 novels(即 <DSH_HOME>\novels,Windows 上常见为 C:\Users\<你的用户名>\.dsh\novels)。目录不存在时插件首次加载会自动创建;也可在 设置 → 小说阅读 中修改(手动路径或「选择文件夹…」)。
  • 仅扫描目录下的 .txt,不扫描子目录。建议 UTF-8 编码。
  • 输入框底部工具栏、模型选择器左侧有「阅读模式」按钮:点开后列出书名与进度(有章节时显示「第 3/120 章」),选中后会话绑定该书;按钮上会显示「书名 · 第 x/y 章」。
  • 换目录等于换书库:进度与显示名按目录保存在该目录下的 .reader-state.json;设置页所选目录记在 <DSH_HOME>\novel-reader.settings.json。

一条消息一章

  • 阅读模式下随便发一句(如「继续」),助手会流式输出下一章正文。
  • 章节自动识别:扫描 txt 中单独成行的标题,支持 第一章 …、第1章 …、第 12 节、第 3 回、Chapter 1,以及 楔子/序章/引子/番外/尾声/后记 等。第一个标题之前的内容并入第 1 章。若无任何章节标题,退回按 chunkChars(默认 420)切段。
  • 数字跳章:发纯数字 1、2、3… 跳到对应序号章节并立刻读出(楔子/序章为 1 号);超出范围会提示总章数。可通过配置 numberedJump: false 关闭。

展示与翻页

  • 默认 display: thinking:正文在「思考」折叠块内,展开后为左右点击翻页的阅读器(无滚动条),页脚显示章节与「第 x/y 页」;同一正文翻页位置会记住。本章最后一页可点「下一章 ›」在同页载入下一章;全书读完显示「全书完」。
  • 可见助手回复为内置较长的结构化总结(处理范围、进度等),可自定义 summaryTemplate。若希望正文直接作为可见回复,将 display 改为 answer。
  • 设置 → 小说阅读 → 阅读样式 可调字号、行距、字间距、段间距、页高、页边距、最大宽度、字体与翻页动画;生成速度 支持瞬间生成、整段固定秒数、按字/秒。

进度记忆

  • 进度按书保存,最小单位为全书字符偏移;与会话无关,多会话读同一本书共享进度。
  • 数据写在小说目录 .reader-state.json;每读完一段写盘,停止时已显示部分也算读过。设置页可「重置进度」。

安装与启用

本插件以当前 DSH 进程权限访问本地文件,安装前请自行查看仓库源码与 MIT 许可证。

方式一:离线包(Release tgz)

在插件管理器中选择本地包安装(是否支持 tgz 取决于管理器版本),使用 Release 中的包:

https://github.com/ukkyo1/dsh-novel-reader/releases/download/v0.9.4/dsh-novel-reader-0.9.4.tgz

方式二:本地目录

若你已有插件源码目录,在 设置 → 插件 → 添加插件 中选择「从本地目录安装」,目录指向仓库根目录,安装并启用。插件管理器若支持 Git 地址,也可直接填仓库地址 https://github.com/ukkyo1/dsh-novel-reader(以管理器实际能力为准)。

方式三:自行打包

在仓库根目录执行:

pnpm pack

将生成的 tgz 按本地包流程安装。

启用后刷新 Web GUI(Ctrl+R),输入框旁会出现「阅读模式」按钮。升级时在插件管理器中禁用再启用(或重启 DSH)并刷新页面。

典型用法

  1. 确认或创建小说目录(默认 <DSH_HOME>\novels),把 .txt 放入该目录。
  2. 打开任意会话,点「阅读模式」,在列表中选一本书。
  3. 发一条消息继续阅读;在思考块内左右翻页,末页可点「下一章 ›」。
  4. 需要跳章时,在阅读模式下直接发送章节序号数字。
  5. 再点「阅读模式」按钮,面板底部选「退出阅读模式」恢复普通对话。

目录为空时,面板会提示无 txt,并可点「创建示例小说」将插件自带的 samples/sample-story-1.txt、samples/sample-story-2.txt 写入目录(同名已存在则跳过)。

高级配置

在 DSH 配置目录的 cordis.patch.yml 中,novel-reader 一行可调整目录、切段字数、出字方式、正文展示位置、章节与跳章开关、阅读样式默认值等。修改后需重新加载插件(禁用/启用或重启 DSH)。常用字段示例:

- id: novel-reader
  name: dsh-novel-reader
  config:
    directory: ""          # 留空 = <DSH_HOME>/novels,设置页可改
    chunkChars: 420
    display: thinking      # thinking | answer
    chapters: true
    numberedJump: true

若在 cordis.patch.yml 中显式写了 directory,设置页目录不可编辑。思考块折叠时机受 DSH 全局 ui-chat.collapseTiming 影响;默认多为「下次输入时」才收起。

适用场景与注意

  • 适合:已在用 DSH Web 界面、希望用对话形态读本地 txt、需要章节识别、跳章与跨会话进度的人。
  • 不适合:需要扫描子目录书库、非 txt 格式、或依赖在线书源的场景。
  • 权限:插件读写你配置的小说目录与状态文件;勿将不可信 txt 路径指向敏感系统目录。
  • 依赖:package.json 要求 Node >=22(主要影响开发与测试脚本;bundle 安装以 DSH 运行时为准)。

结尾

dsh-novel-reader 把本地小说嵌进 DSH 会话:选书、发消息读章、数字跳章、进度与样式可配置,默认还把正文藏在思考里的翻页阅读器中。更多说明见仓库 README。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye