dsh-stealth-reader:在 DSH 会话区伪装成日志流读小说

前言

DeepSeek Harness(DSH)的 Web 客户端里,右侧消息区往往长时间占满屏幕:工具输出、模型回复、命令摘要一行接一行。若想在同一块区域读本地 txt/epub,常见做法是另开窗口或阅读器——窗口一多,和「正在跑长任务」的视觉印象就对不上。

dsh-stealth-reader 是 Tonited 维护的 DSH 客户端插件(纯前端,宿主侧不做额外逻辑)。它只覆盖右侧会话消息区:导入书后,正文与当前会话真实历史里的工作痕迹交错、逐字流出;顶部 Tab、底部输入框、左侧栏仍是 DSH 本体。鼠标移动或点击即回到真实界面,适合需要「屏幕看起来像在工作」、又要在本机浏览器里读小说的场景。社区目录将其归类为「趣味换装」;仓库当前版本为 0.2.0,许可证 MIT。

下面介绍定位、能力、安装与用法,以及安装前需要理解的权限与风险。

这是什么

一句话:在 DSH 会话界面里,把小说伪装成一股正在流式输出的日志。

  • 维护者:Tonited(GitHub:Tonited/dsh-stealth-reader)
  • 形态:挂 shell.overlay 与 conversation.input.dock 等客户端槽位,不修改官方 @deepseek-ai/* 包
  • 书源:用户主动拖入的 .txt / .epub,解析与进度均在浏览器本地完成

章节标题在消息流里伪装成一次 Read 工具调用;正文约七成以带左侧细竖线的「工具输出」样式出现,其余以 AI 回复正文样式出现——DSH 消息流本身没有「章节标题」这一 UI 原语。

核心功能

日志流式阅读

进入阅读态后,右侧会话区呈现类似下面的交错输出(示意来自项目 README):

> Read 第一章 山雨                                     [1/3]

  沈砚背着书箱走到半山腰时,雨已经落下来了。

                    check why the deploy script is slow

  沈砚抬头。雾气正从谷底涌上来,把山路吞掉了一半。

中间插入的 check why the deploy script is slow 一类行来自你当前会话的真实消息历史,不是插件编造的假日志;路径等信息会脱敏,但内容仍是你的会话数据。

退出与交互

  • 进入 / 退出阅读态(切换):默认 Ctrl+Shift+Alt+Z(可在源码中改键,见下文「手感旋钮」)
  • 从流式阅读回到工作界面:鼠标移动 1px 或点击即退出;键盘不会因此退出(避免翻页、跳章时误关)
  • 书单界面例外:书单需用鼠标点选,此时鼠标不触发退出;离开书单仍靠快捷键。ADR-0007 记录了该取舍

插件 deliberately 没有「书页模式」(衬线、居中、大留白),避免一眼像独立阅读器;只有一种形态:伪装成日志流。

导入与进度

格式 行为
.txt 自动识别 UTF-8 / GBK
.epub 插图保留为占位图;DRM 加密会报错且不入库

书与进度存在浏览器 IndexedDB(库名 dsh-stealth-reader),不上传、不写入工作区目录。进度按「已输出字符占全章比例」记录,重开后会从上次位置继续「长出来」。

任务列表 UI 伪装成「最近的任务」,以百分比展示阅读进度。

与 DSH 0.1.7 的适配

0.2.0 按实际安装产物对齐 0.1.7 客户端插件契约(如 MarkdownText.labels 必填、会话 id 获取方式、图标命名等)。对更旧 DSH 仍有降级链;细节见仓库 CHANGELOG 与 README 中的兼容表。使用前请确认本机 DSH 版本与插件说明一致。

安装与启用

需要已安装 dsh CLI,以及启用了 Web 客户端的 profile(下文以 web 为例)。三种安装方式均会通过 dsh plugin add 自动写入 profile 的 dsh.profile.bundles,无需手工登记。

从 GitHub 安装(推荐)——固定到具体 commit,便于复现:

dsh plugin --profile web add 'github:Tonited/dsh-stealth-reader#<40 位 commit>'

将 <40 位 commit> 替换为仓库目标提交的完整 hash。

从 npm 安装:

dsh plugin --profile web add dsh-stealth-reader

从本地目录安装(改源码时):

dsh plugin --profile web add 'file:/path/to/dsh-stealth-reader'

装完后重启 dsh web(新增插件 bundle 需重启;之后改插件多为热替换,刷新页面即可)。

卸载时 dsh plugin 会从 profile 中移出对应 bundle;清除浏览器站点数据会删掉 IndexedDB 里的书与进度。

典型用法

目的 操作
开始看书 / 再次藏起 Ctrl+Shift+Alt+Z
回到工作界面 动一下鼠标或点一下(书单内除外)
翻页 滚轮 / 空格 / PageDown
上下微调 ↑ ↓(默认一次约十行正文)
快于逐字输出 按住 Shift + ↓ / →,松开恢复常速
跳章 ← → 或 [ ]
书架 / 换书 / 导入 L 打开任务列表;把 txt/epub 拖进窗口 添加;点行右侧 ≡ 可展开步骤清单跳章

DSH 客户端插件没有统一的快捷键仲裁 API;若其他插件也监听同一组合键,可能同时响应。需要改默认快捷键时,见仓库 src/client/keys.ts 中的 DEFAULT_SHORTCUT,改完执行 pnpm run check && pnpm run deploy(开发环境)。

适用场景与注意

适合谁

  • 已在用 DSH Web 客户端,希望阅读区与「长任务日志」视觉一致的用户
  • 接受等宽字体、行间穿插工作痕迹——README 明确这是为「像在工作」牺牲阅读舒适度

权限与数据(安装前请通读 README「权限与风险」)

项目 说明
网络 插件不发起网络请求,无遥测
文件 只读用户拖入的书;不写工作区、不改 profile 文件
会话 只读当前会话消息历史,仅本地渲染
依赖 零运行时依赖;无 preinstall / install 等生命周期脚本

务必理解的限制

  • 这是遮屏式体验,不是访问控制:任务栏、浏览器标签、DSH 外窗口均不受插件管理,不宜当作对抗技术审计的手段
  • stream 态下鼠标一动就退出,包括无意挪动指针;书单勿长时间敞屏(书名明文)
  • 共享屏幕时,工作痕迹行会暴露你真实会话内容(虽已脱敏路径)

插件以当前 DSH Web 进程与浏览器权限运行;安装前可在 GitHub 仓库 查看源码、LICENSE(MIT)及 CI 状态。社区插件目录 skillhub.cn 条目 与 GitHub 无 DeepSeek / 幻方官方从属关系,属社区生态收录。

结尾

dsh-stealth-reader 把 txt/epub 与真实会话痕迹织进 DSH 右侧消息区,用鼠标即可秒回工作界面;适合需要界面「始终像在处理任务」、又要在本机读小说的 DSH 用户。目录与源码:

  • 社区目录:https://www.skillhub.cn/plugins/Tonited/dsh-stealth-reader
  • GitHub:https://github.com/Tonited/dsh-stealth-reader
羽毛球分组比赛记分
小程序二维码

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

小夜