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

书籍转技能 omdsh-dev/dsh-book2skill

DeepSeek Harness
omdsh-dev48 天前有提交已提供中文文档扫描:含敏感能力

把电子书自动拆解成可安装的 SKILL.md 技能包

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add omdsh-dev/dsh-book2skill
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 48 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-book2skill(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 18:53:06

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
  • 发起网络请求
    src/client/rpc.ts:84
    const response = await fetch(path, {
  • 读取本地文件
    src/install.ts:45
    if (existsSync(skillDir) && !request.overwrite) {
  • 删除本地文件递归
    src/install.ts:48
    rmSync(skillDir, { recursive: true, force: true })
  • 写入本地文件
    src/install.ts:49
    mkdirSync(join(skillDir, 'references', bookKey), { recursive: true })
  • 写入本地文件
    src/install.ts:50
    writeFileSync(join(skillDir, 'SKILL.md'), draft, 'utf8')
  • 读取本地文件
    src/install.ts:51
    if (existsSync(sourceChapters)) {
  • 写入本地文件
    src/jobs.ts:100
    mkdirSync(dir, { recursive: true })
  • 读取本地文件
    src/ocr.ts:107
    const bytes = readFileSync(pdfPath)
  • 发起网络请求
    src/ocr.ts:250
    const response = await ctx.web.fetch({ url }, signal)
  • 读取本地文件
    src/parse.ts:59
    for (const name of readdirSync(dir).sort()) {
  • 读取本地文件
    src/parse.ts:62
    const content = readFileSync(file, 'utf8')
  • 读取本地文件
    src/parse.ts:163
    return readFileSync(join(dir, 'toc.md'), 'utf8')
  • 读取本地文件
    src/parse.ts:171
    const full = readFileSync(join(outDir, file), 'utf8')
  • 读取本地文件
    src/parse.ts:179
    return statSync(path).size
  • 读取本地文件
    src/routes.ts:113
    if (!ASSET_NAMES.has(name) || !existsSync(join(ASSETS_DIR, name))) {
  • 读取本地文件
    src/routes.ts:118
    const body = readFileSync(join(ASSETS_DIR, name))
  • 读取本地文件
    src/service.ts:105
    if (!existsSync(input.bookPath)) throw new Book2SkillError(`书籍文件不存在:${input.bookPath}`)
  • 读取本地文件
    src/service.ts:304
    if (!existsSync(inputDir)) throw new Book2SkillError(`导入目录不存在:${inputDir}`)
  • 读取本地文件
    src/service.ts:305
    const files = readdirSync(inputDir).filter(name => name.endsWith('.md') && name !== 'toc.md').sort()
  • 写入本地文件
    src/service.ts:308
    mkdirSync(outDir, { recursive: true })
  • 写入本地文件
    src/service.ts:314
    copyFileSync(source, target)
  • 读取本地文件
    src/service.ts:315
    const content = readFileSync(target, 'utf8')
  • 写入本地文件
    src/service.ts:320
    writeFileSync(join(outDir, 'toc.md'), tocLines.join('\n'), 'utf8')
  • 读取本地文件
    src/zlib.ts:45
    if (!existsSync(ZLIB_COOKIE_FILE)) return undefined
  • 读取本地文件
    src/zlib.ts:46
    const cookies = JSON.parse(readFileSync(ZLIB_COOKIE_FILE, 'utf8')) as Array<{
  • 写入本地文件
    src/zlib.ts:50
    mkdirSync(JAR_DIR, { recursive: true })
  • 写入本地文件
    src/zlib.ts:60
    writeFileSync(jar, lines.join('\n'), 'utf8')
  • 读取本地文件
    src/zlib.ts:128
    if (!existsSync(destFile) || bytes < 10_000) {
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-directory-picker@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-shell@deepseek-ai/dsh-storage-domain@deepseek-ai/dsh-tools@deepseek-ai/dsh-web
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 电子书拆解为技能包
  • 五阶段长任务流程
  • 三处人工确认关卡

DSH book-to-skill 插件:5 阶段长任务(抓取 → 解析 → 理解 → 生成 → 安装),含 3 个人工确认关卡、给智能体用的宿主工具,以及浏览器时间线面板

README

由 DeepSeek 最新模型翻译生成
dsh-book2skill 作者 / 维护者: @Zacklinkk 书籍转技能(Book → Skill):DSH 插件包,把一个 5 阶段长任务工作流带进 DeepSeek Harness——获取书籍 → 解析分章 → 深度阅读 → 生成 SKILL.md → 安装,中途有 3 个人类门控。 确定性步骤(EPUB 解析 / PDF 提取 / OCR / 安装复制)是宿主工具;理解与生成(浅读建地图、设计方向问题、深读核心章、撰写 SKILL.md 与自检)由 agent 执行;浏览器面板负责 5 阶段时间线展示与门控审批。任务状态存宿主存储域,跨会话、跨重启可恢复,可随时取消。 架构 | 平面 | 内容 | | 宿主(src/index.ts) | book2skill 存储域(jobs 表)、/book2skill HTTP 面板路由、10 个 book2skill_ 工具 | | 浏览器(src/client/) | conversation.view 时间线面板(React),纯 fetch 轮询宿主路由 | | 脚本(scripts/) | parse_epub.py(修复版:标题行不再丢失、>5000 字章节按 ## 拆分)、pdf_parse.py(PyPDF2 探测/分块) | 5 阶段 + 3 门控
展开完整文档(README 剩余 1 节)
dsh-book2skill

作者 / 维护者: @Zacklinkk

书籍转技能(Book → Skill):DSH 插件包,把一个 5 阶段长任务工作流带进 DeepSeek Harness——获取书籍 → 解析分章 → 深度阅读 → 生成 SKILL.md → 安装,中途有 3 个人类门控。

确定性步骤(EPUB 解析 / PDF 提取 / OCR / 安装复制)是宿主工具;理解与生成(浅读建地图、设计方向问题、深读核心章、撰写 SKILL.md 与自检)由 agent 执行;浏览器面板负责 5 阶段时间线展示与门控审批。任务状态存宿主存储域,跨会话、跨重启可恢复,可随时取消。

架构

| 平面 | 内容 |
| 宿主(src/index.ts) | book2skill 存储域(jobs 表)、/book2skill HTTP 面板路由、10 个 book2skill_ 工具 |
| 浏览器(src/client/) | conversation.view 时间线面板(React),纯 fetch 轮询宿主路由 |
| 脚本(scripts/) | parse_epub.py(修复版:标题行不再丢失、>5000 字章节按 ## 拆分)、pdf_parse.py(PyPDF2 探测/分块) |

5 阶段 + 3 门控

1. 获取书籍:本地路径(目录选择器,browse 能力)/ z-lib 搜索下载(复用 book-downloader 的 cookies,无硬编码密钥)
2. 解析分章:EPUB → 按章 md + toc.md(5000 字拆分);PDF → PyPDF2 先探测(=0.1.0-rc.3 =24.0.0
- Profile Bundle:package.json#dsh.bundle.patch 自动应用 cordis.patch.yml

构建与安装

1. 用当前 DSH rc.3 npm 运行时链接类型依赖并完整验收
npm ci
DSH_NODE_MODULES_ROOT=/path/to/dsh-rc3/node_modules npm run setup:dsh-workspace
npm run typecheck
npm test
npm run build

2. 打包并通过插件命令安装到目标 profile
npm pack
dsh plugin --profile web add file:/absolute/path/dsh-book2skill-0.1.2.tgz

3. 重启 dsh web(宿主行需要进程重启),浏览器刷新后对话区出现「书籍转技能」标签

不要再把 book2skill 行手工写进 profile:插件包已经声明 Profile Bundle,手工追加会形成重复 loader entry。发布到 npm 时 publishConfig.access 固定为 restricted。

宿主半的代码改动需要重启 dsh web 生效;浏览器半重建 lib/client.js 后,HMR 会自动重载该插件(页面无需刷新;未开 pnpm run dev:web 时手动 npm run build 即可触发)。

红线自查

- 不硬编码任何密钥:z-lib 登录态读 ~/.claude/skills/book-downloader/auth/zlib-cookies.json(用户已有),OCR token 由 dsh-paddle-ocr 的凭据保险箱管理
- 生成内容可溯源:SOP 步骤必须来自 references 章节(自检1 强制回读校验),references 索引与触发词均有自检项

许可

BSD-3-Clause。面板素材(assets/.svg)由 Codex 生成。
预览分享卡片长什么样 ↓omdsh-dev/dsh-book2skill
分享 · DeepSeek Harness Hub
omdsh-dev/dsh-book2skill

把电子书自动拆解成可安装的 SKILL.md 技能包

这是你的仓库?认领条目

回到顶部