把检索到制卡的论文处理流程串成可暂停续跑的流水线
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ysl289/dsh-literature-workflow该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · search
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 36 处,展示前 27 条)
- 读取本地文件packages/knowledge-cards/client.js:279
try { entries = fs.readdirSync(dir, { withFileTypes: true }); } catch { return out; } - 读取本地文件packages/knowledge-cards/client.js:292
if (!fs.existsSync(CARDS)) fs.mkdirSync(CARDS, { recursive: true }); - 读取本地文件packages/knowledge-cards/client.js:297
const raw = fs.readFileSync(p, 'utf8'); - 读取本地文件packages/knowledge-cards/client.js:312
mtime: fs.statSync(p).mtimeMs, - 读取本地文件packages/knowledge-cards/client.js:324
const raw = fs.readFileSync(hit.path, 'utf8'); - 读取本地文件packages/knowledge-cards/client.js:342
try { dirs = fs.readdirSync(LIT, { withFileTypes: true }); } catch { } - 执行外部命令来自配置/变量packages/knowledge-cards/client.js:414
const p = spawn(PY, [path.join(SKILL, script), ...args], { windowsHide: true, env: CHILD_ENV }); - 写入本地文件packages/knowledge-cards/client.js:466
fs.mkdirSync(bak, { recursive: true }); - 写入本地文件packages/knowledge-cards/client.js:468
fs.writeFileSync(path.join(bak, path.basename(hit.path) + '.' + stamp + '.bak'), raw, 'utf8'); - 写入本地文件packages/knowledge-cards/client.js:471
fs.writeFileSync(hit.path, next, 'utf8'); - 写入本地文件packages/knowledge-cards/client.js:472
fs.utimesSync(hit.path, st.atime, st.mtime); - 写入本地文件packages/knowledge-cards/client.js:494
fs.writeFileSync(hit.path, head + '\n\n' + String(payload.body || '').trim() + '\n', 'utf8'); - 写入本地文件packages/knowledge-cards/client.js:504
fs.renameSync(hit.path, path.join(trash, path.basename(hit.path))); - 发起网络请求packages/knowledge-cards/client.js:572
r = await globalThis.fetch(url, { - 执行外部命令来自配置/变量packages/knowledge-cards/host.mjs:320
const p = spawn(PY, [path.join(SKILL, script), ...args], { windowsHide: true, env }); - 发起网络请求packages/knowledge-cards/host.mjs:636
async fetch(request, url) { - 发起网络请求packages/lit-learning/host.mjs:61
async fetch(request) { - 发起网络请求packages/literature-workflow/host-api.mjs:43
async fetch(request) { - 读取本地文件packages/literature-workflow/install.mjs:21
const manifest = JSON.parse(readFileSync(path.join(directory, 'package.json'), 'utf8')); - 读取密钥环境变量packages/literature-workflow/lib/engine.mjs:151
let token=saved.tencentToken||process.env.TENCENT_DOCS_MCP_TOKEN,scheme=saved.tencentAuthScheme||'bearer'; - 读取密钥环境变量packages/literature-workflow/lib/engine.mjs:153
return {blogAccount:saved.blogAccount||process.env.BLOG_ACCOUNT||'',blogPassword:saved.blogPassword||process.env.BLOG_PASSWORD||'',tencentToken:token| - 执行外部命令来自配置/变量packages/literature-workflow/lib/engine.mjs:319
const p=spawn(this.config.python,['-X','utf8',path.join(packageRoot,'bridge.py'),action],{windowsHide:true,env:{...process.env,PYTHONUTF8:'1'},stdio:[ - 读取本地文件packages/literature-workflow/lib/task-deletion.mjs:102
for await (const chunk of createReadStream(file)) hash.update(chunk); - 写入本地文件packages/literature-workflow/lib/transport-tap.mjs:33
writeFileSync(FILE, JSON.stringify({ ...state, file: FILE }, null, 1)); - 读取本地文件packages/literature-workflow/lib/zotero.mjs:142
const info = await stat(filePath); - 读取本地文件packages/literature-workflow/lib/zotero.mjs:149
for await (const chunk of createReadStream(filePath)) { - 读取本地文件packages/literature-workflow/lib/zotero.mjs:973
for await (const chunk of createReadStream(filePath)) yield chunk;
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 的文献工作流:检索、PDF 转 Markdown、Zotero 归档、知识卡片、学习层。
README
由 DeepSeek 最新模型翻译生成DSH 文献套件
把「读一篇论文」变成一条可暂停、可续跑、有产物的流水线。
一套文献工作插件集,给 DeepSeek Harness(下称 DSH)用:检索、PDF→Markdown、结构化抽取、Zotero 归档、Excel 表、知识卡片、学习层复习、发布登记——四个插件各管一段,边界清晰,互不越权。
为什么做这个
做一篇论文的「可交付材料」,重复劳动是这样的:找 PDF → 转 Markdown → 把摘要/理论/贡献填进固定字段 → 放进 Zotero 分类 → 生成 Excel → 写知识卡片 → 做演示页 → 登记发布。每一步都在换工具、换格式、换目录。
这套插件把它们串成一条流水线,并且坚持三件事:
- 每一步都有明确的输入输出——不是「AI 帮我搞定」,而是看得见产物落在哪。
- 每一步都能停下来——任务可暂停、可续跑,长流程不用一次熬完。
- 每个插件都有只读边界——学习层永远不写卡片库,卡片库永远不改工作流产物。
展开完整文档(README 剩余 1 节)
DSH 文献套件 把「读一篇论文」变成一条可暂停、可续跑、有产物的流水线。 一套文献工作插件集,给 DeepSeek Harness(下称 DSH)用:检索、PDF→Markdown、结构化抽取、Zotero 归档、Excel 表、知识卡片、学习层复习、发布登记——四个插件各管一段,边界清晰,互不越权。 为什么做这个 做一篇论文的「可交付材料」,重复劳动是这样的:找 PDF → 转 Markdown → 把摘要/理论/贡献填进固定字段 → 放进 Zotero 分类 → 生成 Excel → 写知识卡片 → 做演示页 → 登记发布。每一步都在换工具、换格式、换目录。 这套插件把它们串成一条流水线,并且坚持三件事: - 每一步都有明确的输入输出——不是「AI 帮我搞定」,而是看得见产物落在哪。 - 每一步都能停下来——任务可暂停、可续跑,长流程不用一次熬完。 - 每个插件都有只读边界——学习层永远不写卡片库,卡片库永远不改工作流产物。 四个插件 | 包 | 一句话 | 形态 | | literature-workflow | 主流程:检索 → PDF→Markdown → 抽取 → Zotero → Excel → 制卡任务书 → 演示页 → 发布 | Host 工具 + 原生页面 + Python bridge | | knowledge-cards | 卡片库:按「形态 × 书架」浏览、查重、编辑、导出,内置 2D/3D 关系网 | Host 工具 + 原生页面 | | lit-learning | 学习层:只读上游产物,生成复述、准备度评级、引用草稿、复习题与领域地图 | Host 工具 + 原生页面 | | @ysl289/dsh-plugin-hub | 入口中心:把上面三个(及任何面板)的侧边栏图标收进一个启动台 | 纯前端面板 | 配套技能(可选但推荐):skills/knowledge-card-library、skills/literature-pipeline。 流水线长什么样 检索/导入 → PDF→Markdown → 抽取(extract.json) → Zotero 落盘 → Excel 表 → 制卡任务书 → 演示页(HTML) → 发布(可选) ↘ 知识卡片库(独立插件) ↘ 学习层(独立插件,只读) 十步流程在页面上可拖动排序、可单独配置每步提示词、可在任意一步之后暂停。产物落在工作流根目录的 .plugin-state/,退出再进来接着跑。 快速开始 环境 | 依赖 | 版本 | 必需性 | | DeepSeek Harness | 0.2.x(验证于 0.2.1-rc.3) | 必需 | | Node.js | ≥ 22 | 必需 | | Python | ≥ 3.10(验证于 3.13) | 必需(PDF 转换、Excel、腾讯文档桥接) | | Python 包 | openpyxl、requests、PyMuPDF | 必需 | | Zotero | 7.x,开启本地 API | 可选(不装则跳过落盘/回执) | | 腾讯文档 | 账号 + 官方授权 | 可选(不装则跳过发布) | 安装 方式一:从 npm 装(最简单) 打开 侧栏 → 插件 → 添加插件,粘贴包名: @ysl289/dsh-literature-workflow @ysl289/dsh-knowledge-cards @ysl289/dsh-lit-learning @ysl289/dsh-plugin-hub 或命令行: <profile> 换成你的 profile 名(Web 端通常是 desktop 或 web) dsh plugin --profile <profile> add @ysl289/dsh-literature-workflow dsh plugin --profile <profile> add @ysl289/dsh-knowledge-cards dsh plugin --profile <profile> add @ysl289/dsh-lit-learning dsh plugin --profile <profile> add @ysl289/dsh-plugin-hub # 可选 注意包名都带 @ysl289/ 作用域。npm 上未加作用域的 dsh-plugin-hub 是另一位作者的插件市场,与本项目无关。 方式二:从源码装(想改代码时用) git clone https://github.com/ysl289/dsh-literature-workflow.git cd dsh-literature-workflow python -m pip install -r requirements.txt dsh plugin --profile <profile> add ./packages/literature-workflow dsh plugin --profile <profile> add ./packages/knowledge-cards dsh plugin --profile <profile> add ./packages/lit-learning dsh plugin --profile <profile> add ./packages/plugin-hub 没有全局 dsh 命令时,在 DSH 源码 checkout 里用 pnpm dsh plugin --profile <profile> add <路径>,或在 插件 → 添加插件 里粘贴目录的绝对路径。 装完重启 DSH 才会加载新的 Host 模块。 Python 依赖:literature-workflow 需要 Python 3.10+ 与 openpyxl、requests、PyMuPDF。 从 npm 安装时不会自动装这些,请自行 pip install(见 requirements.txt)。 literature-workflow 已内置 assets/(PDF→Markdown、Excel、HTML 演示页、卡片、发布脚本与模板),不需要另外准备原工作流目录;workflowRoot 只用于 input/、.plugin-state/ 和产物。 若该目录里也有 src/ 或 templates/,会优先用你本地的版本。 配置 所有包默认不写死路径:优先读环境变量,其次用 home 目录下的默认位置。 | 环境变量 | 作用 | 默认 | | DSH_LIT_WORKFLOW | 工作流根目录(PDF、状态、产物) | ~/Downloads/文献积累工作流 | | DSH_CARDS_HOME / KCARD_HOME | 知识卡片库根目录 | ~/Desktop/知识卡片库 | | DSH_LIT_LEARNING | 学习层输出目录 | ~/Desktop/文献学习层 | | DSH_PYTHON | Python 解释器 | python / python3(PATH 查找) | 完整字段见 docs/configuration.md。 用它做什么 1. 重启 DSH,从侧栏 文献工作流 进入。 2. 在 设置 → 文献代理模型 选择模型(默认跟随 Harness 默认模型)。 3. 首次落盘 Zotero 时 Zotero 会弹授权窗;选「始终允许」可自动入库。 4. 发布模式默认 preview:只生成预览,不写 Zotero / 腾讯文档。确认无误后再切 auto。 5. 卡片库、学习层在侧栏对应入口打开;装了 @ysl289/dsh-plugin-hub 的话,三个入口收在一个启动台里。 安全与边界 这不是「把 API Key 存在插件里」的那类工具。设计上: - 不保存 API Key:模型调用走 Harness 自己的 provider 配置。 - 授权归客户端:Zotero 授权由 Zotero 完成;腾讯文档走官方 OAuth,token 只落在工作流状态目录,不写日志。 - 只读是硬约束:学习层对卡片库与工作流产物只读,唯一可写的是学习层目录与只追加的 review/log.jsonl。 - 发布默认预览:auto 只对流程中显式保留的 blog / 腾讯文档卡生效。 - 删除有确认:模板与任务的删除都是二次确认 + 清单预览,不是一点就没。 开发 node scripts/check.mjs # 全部 Host 模块与 Client bundle 语法检查 node scripts/test.mjs # 四个包的 Node 测试 python -m pytest packages/literature-workflow/tests -q - 纯 ESM,无构建步骤;client.js 是提交进仓库的预构建 Client bundle。 - 改 Client 页面需重新生成 bundle,见 docs/architecture.md。 - 提交前跑 node --check 与对应包的测试。 已知限制 - Windows 优先:Zotero 本地 API、腾讯文档授权、路径大小写/联接处理都按 Windows 验证。Linux/macOS 理论可用但未逐一验证。 - Python 集成测试有 5 项与渲染器版本绑定(design/lecture 页码自检、自定义 deck 的 cols 布局、Excel 路径联动)。CI 里按 informational 处理,Node 测试与包结构检查才是门禁。 - Zotero 未安装时落盘与回执阶段跳过,不阻塞其它阶段。 - 腾讯文档接口变动时需要适配。 - 检索依赖外部数据源;离线环境只能走「导入已有文件」入口。 目录结构 packages/ literature-workflow/ 主流程(Host 工具 + 页面 + Python bridge) knowledge-cards/ 卡片库(Host 工具 + 页面) lit-learning/ 学习层(Host 工具 + 页面) plugin-hub/ 入口中心(纯前端面板) skills/ knowledge-card-library/ 卡片库技能 literature-pipeline/ 流水线技能 docs/ 架构、配置、排障、截图 examples/ 配置示例 requirements.txt Python 依赖 贡献 欢迎提 Issue 和 PR。改代码前先看 CONTRIBUTING.md,变更记录见 CHANGELOG.md。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ysl289/dsh-literature-workflow
把检索到制卡的论文处理流程串成可暂停续跑的流水线
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,379已汉化DSH
72
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,228已汉化DSH
71.3
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 695已汉化DSH
69.8
动画花园资源检索yjl9903/AnimeGarden
動漫花園 镜像站 | 动画 BT 资源聚合站 | 动画 BT 资源开放接口
★ 1,391已汉化DSH
69.2
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 510已汉化MCP
67.9
这是你的仓库?认领条目