🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

本地书架 hulibuld/dsh-reading

DeepSeek 客户端
hulibuld3 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

导入多种格式电子书,分页阅读并划线记笔记

31.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/hulibuld/dsh-reading.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/06·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 3 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 19 处,展示前 19 条)
  • 发起网络请求
    client.js:2405
    res = await fetch(`${API_BASE}/${method}`, {
  • 写入剪贴板
    client.js:9330
    navigator.clipboard.writeText(value).catch(() => {})
  • 写入剪贴板
    client.js:11985
    await navigator.clipboard.writeText(answer)
  • 发起网络请求
    lib/store.js:810
    const response = await fetch(target, {
  • 读取本地文件
    lib/routes.js:915
    iconCache = await readFile(new URL('../icon.svg', import.meta.url))
  • 发起网络请求
    lib/routes.js:1105
    response = await fetch(url, {
  • 发起网络请求
    lib/routes.js:1159
    response = await fetch(url, {
  • 读取本地文件
    lib/coachskill.js:71
    const text = readFileSync(join(dir, 'SKILL.md'), 'utf8')
  • 读取本地文件
    client/build.mjs:299
    if (!existsSync(VENDOR_FILE)) {
  • 读取本地文件
    client/build.mjs:303
    const vendorCode = readFileSync(VENDOR_FILE, 'utf8')
  • 读取本地文件
    client/build.mjs:496
    const missing = MODULES.filter((name) => !existsSync(join(SRC_DIR, name)))
  • 读取本地文件
    client/build.mjs:535
    const code = readFileSync(filePath, 'utf8')
  • 读取本地文件
    client/build.mjs:675
    if (!existsSync(OUT_FILE)) {
  • 读取本地文件
    client/build.mjs:680
    const current = readFileSync(OUT_FILE, 'utf8')
  • 写入本地文件
    client/build.mjs:716
    writeFileSync(TEMP_FILE, output)
  • 写入本地文件
    client/build.mjs:717
    renameSync(TEMP_FILE, OUT_FILE)
  • 写入剪贴板
    client/src/annotate.js:1090
    await navigator.clipboard.writeText(answer)
  • 发起网络请求
    client/src/api.js:131
    res = await fetch(`${API_BASE}/${method}`, {
  • 写入剪贴板
    client/src/reader.js:505
    navigator.clipboard.writeText(value).catch(() => {})
扫描于 2026/11/6(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-reading 在 DeepSeek 里读书的插件。导入 EPUB、MOBI、AZW3、TXT、PDF,分页读,翻目录,记住读到哪,划线做笔记。没有账号,没有服务器,书和笔记都在你自己的磁盘上。 装 桌面版 DSH 在插件管理里装这个目录。配置档是应用独占的,命令行 dsh plugin 会拒绝写 desktop。 命令行版: dsh plugin --profile web add /path/to/dsh-Reading --profile 要放在 add 前面,写后面会被当成 pnpm 参数。装完重启 DSH,插件清单在启动时定。重启后左侧栏底部图标条里多一本打开的小册子,点它进书架。 卸载不会删书和笔记。 书和笔记在哪 默认 ~/.dsh-reading/,配置项 libraryDir 可以改。全是 JSON 和 JSONL,没有数据库。备份就是复制这个目录。 删掉一条标注不是把行删掉,是标成已删除,那一行还在。多设备合并要靠它。解不开的位置单独记在一个只增不减的文件里,不进渲染,但记录留着。 能做什么 书架。封面、进度圈、最近在读。点封面进阅读。导入可以选文件也可以直接拖进窗口。卡片右键是编辑:书名、作者、简介、分类、系列、标签、珍藏、换封面。 左上角两级下拉筛书架:全部、珍藏、系列、作者、分类、标签。筛选只在前面算,不动书的数据。
展开完整文档(README 剩余 1 节)
dsh-reading

在 DeepSeek 里读书的插件。导入 EPUB、MOBI、AZW3、TXT、PDF,分页读,翻目录,记住读到哪,划线做笔记。没有账号,没有服务器,书和笔记都在你自己的磁盘上。

装

桌面版 DSH 在插件管理里装这个目录。配置档是应用独占的,命令行 dsh plugin 会拒绝写 desktop。

命令行版:

dsh plugin --profile web add /path/to/dsh-Reading

--profile 要放在 add 前面,写后面会被当成 pnpm 参数。装完重启 DSH,插件清单在启动时定。重启后左侧栏底部图标条里多一本打开的小册子,点它进书架。

卸载不会删书和笔记。

书和笔记在哪

默认 ~/.dsh-reading/,配置项 libraryDir 可以改。全是 JSON 和 JSONL,没有数据库。备份就是复制这个目录。

删掉一条标注不是把行删掉,是标成已删除,那一行还在。多设备合并要靠它。解不开的位置单独记在一个只增不减的文件里,不进渲染,但记录留着。

能做什么

书架。封面、进度圈、最近在读。点封面进阅读。导入可以选文件也可以直接拖进窗口。卡片右键是编辑:书名、作者、简介、分类、系列、标签、珍藏、换封面。

左上角两级下拉筛书架:全部、珍藏、系列、作者、分类、标签。筛选只在前面算,不动书的数据。

导入面板三段:从电脑选文件、粘贴下载直链、用自己填的书源搜关键词。插件不带任何站点,也不带默认书源。

五种格式。EPUB 原样渲染,插图版式都留。MOBI 和 AZW3 重排成纯文字,书架上标「重排」。TXT 重排,自动认 UTF-8 / UTF-16 / GB18030,按「第 X 章」切章。PDF 只读文字版,扫描件和加密件打不开。重排书的划线、笔记、进度和 EPUB 一样。

阅读。分栏分页,翻页点正文两侧窄边、键盘左右、滚轮、两指横滑,一次手势只翻一页。字号、行高、栏宽、明暗在阅读视图的设置里调,改完立刻生效也立刻落盘。

目录。章节树,当前章节高亮,点一下跳。三种来源会在面板上标明:真目录、自动识别(按「第 X 章」认出来)、这本书没有目录。正文里那页手打目录,章节名是链接的也能点,跨文件锚点认,脚注留本章,外链问要不要用浏览器打开。

进度。关书存位置,重开回到原处,不是回到某个百分比。

划线和笔记。选中正文出菜单,五色高亮,一条高亮可以再挂笔记,书签不依赖选中。侧栏列出本书全部标注,按章节、按颜色筛,点一条跳回去。

划过的线能点。点一下已有高亮进入选中态,浮出操作条:换颜色、写笔记、问 AI、删除(5 秒内还能撤销)、双击复制整条。键盘也能用,Tab 聚焦,Enter 选中,Delete 删除,Esc 收起。

同一段不许划第二次。重叠时会亮出已有那条并提示「这段已经划过线了」,老数据叠了也只画一层。

问 AI。圈一段话,点问 AI,在输入框写问题,回答显示在下面,同时带着这段原文的位置存进这本书的问答记录。下次翻回来还能找到问过什么、答了什么、问的是哪一段。回答只用这段原文和通识,不确定就说不确定;小说会刻意不剧透后面。要走宿主自己的子代理,所以得先在 DSH 里选一个模型。

书源。支持 Legado 书源,填自己的源,抓目录、按章取正文。

配置

装完就能用。要改在配置档的 cordis.patch.yml 里按行 id 覆盖:

- id: reading
name: 'dsh-reading'
config:
libraryDir: /Volumes/books/dsh-reading
maxImportBytes: 209715200

改完重启。

已知限制

PDF 只读文字版,表格、分栏、公式会退化成流水文字。扫描件读不了,加密 PDF 打不开。

MOBI 的复杂排版没还原,个别书段落顺序可能不完美。加密 EPUB 打不开,会报错不会白屏。

竖排和 RTL 能读,跨页选区的高亮会降级成整段。

没有全文搜索、没有朗读、没有阅读统计。

单用户,没有账号,也就没有共享书库。跨端同步还没做,数据只在本机,自己备份 ~/.dsh-reading/。

开发

npm install --no-save --ignore-scripts jsdom@30 ajv@8
node golden/run.mjs
node test/run.mjs
node client/build.mjs
npm run verify

改界面后要在 DSH 里实际点一遍。node 测试只覆盖逻辑和产物形状,布局和滚动靠眼睛。

已知问题与修复记录

累计的修复、现象、原因与修法记在 docs/FIXES.md。以后每修一次加一行,别攒着。

许可

GPL-3.0-or-later。client/vendor/epubcfi.foliate.js 是 foliate-js 的原样副本,MIT,随仓库分发。运行时不依赖任何 npm 包。
预览分享卡片长什么样 ↓hulibuld/dsh-reading
分享 · DeepSeek Harness Hub
hulibuld/dsh-reading

导入多种格式电子书,分页阅读并划线记笔记

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部